随机数生成40对点,每一个点2维,聚成4类,并且画出聚类图形!
Kmeans算法原理
K均值法先指定聚类数,目标是使每个数据到数据点所属聚类中心的总距离的平方和最小,规定聚类中心点时则是以该类数据点的平均值作为聚类中心。 步骤
- 随机选取K个数据点作为(起始的)聚类中心点;
- 按照距离最近原则分配数据点到对应类;
- 计算每类的数据点平均值,找到新的聚类中心;
- 计算数据点到聚类中心的总距离;
- 如果与上一次相比总距离下降,聚类中心替换;
- 直到总距离不再下降或者达到指定计算次数。
解决过程
- 随机生成两个长度为40的向量,并将其转化为矩阵,则为2*40的矩阵
- 执行Kmeans分类
- 查看分类之后的信息
- 作图
实现代码
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)
聚类之后的图
|
请发表评论