kmeans 在 R 中给出了错误的集群
kmeans gives wrong cluster in R
我在 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
可用
在调用 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)
这只是规范化的一个建议。您也许应该进行一些理论研究,以了解在对数据进行聚类之前如何对其进行归一化。
我在 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
可用在调用 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)
这只是规范化的一个建议。您也许应该进行一些理论研究,以了解在对数据进行聚类之前如何对其进行归一化。