【问题标题】:kmeans gives wrong cluster in Rkmeans 在 R 中给出了错误的簇
【发布时间】:2015-02-02 07:36:52
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你想使用什么样的数据?只有数字?
  • @user1537085 您应该使用示例数据集发布可重现的示例,例如使用dput。否则,您将无法获得问题的准确答案。
  • @RockScience 我将数据上传到 pastebin
  • @user1537085 你能把dput(ageincome) 的输出粘贴到你的pastebin 中吗?否则,我们需要时间和精力才能将其放入 R 中。谢谢
  • @RockScience 我将 dput(ageincome) 的输出粘贴到了 pastebin 中。感谢您指出。

标签: r k-means


【解决方案1】:

在调用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

【讨论】:

    猜你喜欢
    • 2017-03-25
    • 2013-08-03
    • 2018-04-17
    • 2017-10-13
    • 1970-01-01
    • 2014-01-01
    • 2015-06-05
    • 2020-01-20
    • 2014-05-09
    相关资源
    最近更新 更多