kmeans在R中给出错误的簇

时间:2015-02-02 07:36:53

标签: r k-means

我在R中有一个2列的数据集,我正在尝试使用kmeans来聚类数据集。我使用的命令是

kk <- kmeans(ageincome, center=4, iter.max=500, nstart=100)

当我绘制结果时,我从图中观察到的是,R仅通过使用收入而不是年龄和收入来对数据集进行聚类。我尝试了不同的algorithmiter.maxnstart,但无论我使用哪种参数组合,R都会得到相同的结果。

有人可以帮我吗? dput(ageincome)可在http://pastebin.com/2EQx1SwQ

获得

1 个答案:

答案 0 :(得分:2)

您需要在调用kmeans之前“规范化”您的数据。例如,参见下面的代码,我有意应用了一个缩放,以便收入和年龄都有相似的范围

ageincome2=ageincome
ageincome2[,1]=scale(ageincome2[,1])
ageincome2[,2]=scale(ageincome2[,2])

center=4
kk <- kmeans(ageincome2, center=center)
plot(ageincome2, col = kk$cluster)
points(kk$centers, col = 1:center, pch = 8, cex = 2)

这只是一种正常化的建议。您可能应该进行一些理论研究,以找出在聚类之前如何规范化数据。

其他参考文献:
hereherehere