R语言 k均值算法(k-means)

k均值算法针对聚类所得簇划分求得最小平方误差,k均值算法采用了贪心策略,通过迭代优化来近似求解
算法如下:
kmeans的计算方法如下:

1 随机选取k个中心点

2 遍历所有数据,将每个数据划分到最近的中心点中

3 计算每个聚类的平均值,并作为新的中心点

4 重复2-3,直到这k个中线点不再变化(收敛了),或执行了足够多的迭代


使用iris数据集完成kmeans聚类实验
首先预处理数据集,聚类的时候,去掉种类标记

newiris <- iris  
newiris$Species <- NULL

可以打印种类标记来选择聚类簇的个数

print(iris$Species)

得知有三个种类,执行kmeans函数,格式:kmeans(数据集,聚类簇数)

kc <- kmeans(newiris, 3) #分类模型训练  
fitted(kc) #查看具体分类情况  
table(iris$Species, kc$cluster)#查看分类概括 

聚类图可视化

png(file = "./R/png/kmeans.png")
plot(newiris[c("Sepal.Length", "Sepal.Width")], col = kc$cluster, pch = as.integer(iris$Species))
points(kc$centers[,c("Sepal.Length", "Sepal.Width")], col = 1:3, pch = 8, cex=2);
dev.off()

这里写图片描述
根据聚类之后簇的编号划分颜色。不同形状对应数据集不同的类型
从图中可以看出,基本上不同的形状都归于了不同的颜色

猜你喜欢

转载自blog.csdn.net/weixin_36372879/article/details/80498587