kmeans 在 R 中给出了错误的集群

kmeans gives wrong cluster in R

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

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

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

有人可以帮我解决这个问题吗? dput(ageincome) 在 http://pastebin.com/2EQx1SwQ

可用

在调用 kmeans 之前,您需要 'normalize' 您的数据。例如,在下面的代码中,我故意应用了缩放比例,以便收入和年龄都有相似的范围

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)

这只是规范化的一个建议。您也许应该进行一些理论研究,以了解在对数据进行聚类之前如何对其进行归一化。

其他参考资料:
here, here or here