R语言Kmeans聚类实例

版权声明:转载请声明出处,谢谢! https://blog.csdn.net/qq_31468321/article/details/83479547

随机数生成40对点,每一个点2维,聚成4类,并且画出聚类图形!

Kmeans算法原理
K均值法先指定聚类数,目标是使每个数据到数据点所属聚类中心的总距离的平方和最小,规定聚类中心点时则是以该类数据点的平均值作为聚类中心。
步骤

  1. 随机选取K个数据点作为(起始的)聚类中心点;
  2. 按照距离最近原则分配数据点到对应类;
  3. 计算每类的数据点平均值,找到新的聚类中心;
  4. 计算数据点到聚类中心的总距离;
  5. 如果与上一次相比总距离下降,聚类中心替换;
  6. 直到总距离不再下降或者达到指定计算次数。

解决过程

  1. 随机生成两个长度为40的向量,并将其转化为矩阵,则为2*40的矩阵
  2. 执行Kmeans分类
  3. 查看分类之后的信息
  4. 作图

实现代码

n<-runif(40,10,100)
n2<-runif(40,100,200)
c3<-cbind(n,n2)
c3
plot(n,n2)
#在一个矩阵上执行K均值聚类
kc<-kmeans(c3,4)
#查看信息
summary(kc)
#查看聚类的结果,也就是每个点聚到了那个类
kc$cluster
#查看中心点(聚类点)
kc$centers
#导入快速画图包
library(ggplot2)
#画图
qplot(n,n2,colour=kc$cluster)

结果展示

> summary(kc)
             Length Class  Mode   
cluster      40     -none- numeric
centers       8     -none- numeric
totss         1     -none- numeric
withinss      4     -none- numeric
tot.withinss  1     -none- numeric
betweenss     1     -none- numeric
size          4     -none- numeric
iter          1     -none- numeric
ifault        1     -none- numeric

> kc$cluster
 [1] 3 1 1 2 3 3 1 4 3 3 2 1 3 1 1 1 2 4 3 1 1 3 3 4 3 3 4 1 1 1 1 4 4 1 4 2 3 1 4 4
> kc$centers
         n       n2
1 38.61641 143.5943
2 73.16323 110.5277
3 75.97488 147.8338
4 72.60813 187.7726

plot(n,n2)
在这里插入图片描述

聚类之后的图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_31468321/article/details/83479547