使用R完成Kmeans聚类需要调用kmeans方法,使用数据集iris完成一个小的聚类实验,代码如下:
newiris <- iris;
newiris$Species <- NULL; #对训练数据去掉分类标记
kc <- kmeans(newiris, 3); #分类模型训练
fitted(kc); #查看具体分类情况
table(iris$Species, kc$cluster); #查看分类概括
#聚类结果可视化
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);
聚类结果可视化图如下
R帮助文档中有一个非常好的例子,如下,特别留意kmeans方法满足的条件:
require(graphics)
# a 2-dimensional example
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
col