我在R中有一个2列的数据集,我正在尝试使用kmeans来聚类数据集。我使用的命令是
kk <- kmeans(ageincome, center=4, iter.max=500, nstart=100)
当我绘制结果时,我从图中观察到的是,R仅通过使用收入而不是年龄和收入来对数据集进行聚类。我尝试了不同的algorithm
,iter.max
和nstart
,但无论我使用哪种参数组合,R都会得到相同的结果。
有人可以帮我吗? dput(ageincome)可在http://pastebin.com/2EQx1SwQ
获得答案 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)
这只是一种正常化的建议。您可能应该进行一些理论研究,以找出在聚类之前如何规范化数据。