【问题标题】:Why am I not getting points around clusers in this kmeans implementation?为什么在这个 kmeans 实现中我没有得到围绕集群的分数?
【发布时间】:2013-07-03 23:46:00
【问题描述】:

在下面的 kmeans 分析中,我分配 1 或 0 来指示单词是否与用户相关联:

cells = c(1,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,1)
rnames = c("a1","a2","a3","a4","a5","a6","a7","a8","a9")
cnames = c("google","so","test")

x <- matrix(cells, nrow=9, ncol=3, byrow=TRUE, dimnames=list(rnames, cnames))

# run K-Means
km <- kmeans(x, 3, 15)

# print components of km
print(km)

# plot clusters
plot(x, col = km$cluster)
# plot centers
points(km$centers, col = 1:2, pch = 8)

这是图表:

为什么我没有在每个集群周围收到多个积分?这张图说明了什么。我想根据其他用户是否配置了相同的词向用户建议一个词。

【问题讨论】:

    标签: r k-means


    【解决方案1】:

    您看不到多个点,因为您的数据是离散的分类观察。 K-means 实际上只适用于对连续观察进行分组。您的数据只能出现在您显示的图上的三个点上,而三个点并不能构成一个漂亮的数据“云”。

    这表明 k-means 可能不适合您的特定问题。

    顺便说一句,当我运行上面的代码时,我得到了下面的图,这与您向我们展示的不同。也许这更像你所期待的?绿色绿色数据点属于(“周围”)由黑色星号指示的右上方聚类中心。

    【讨论】:

    • 发生了一些奇怪的事情,因为当我重新运行时,我得到了与上面相同的结果,除了右上角的黑色圆圈而不是绿色
    • 好吧,k-means 算法是随机的:它依赖于对聚类中心位置的随机初始猜测,因此多次运行相同的代码可能会产生略微不同的结果,这并不奇怪中心。不过,在这种情况下,您可能仍想重新考虑使用 k-means。我已经编辑了我的答案,以明确表明我认为这种方法不是您想要的。
    猜你喜欢
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 2020-06-13
    • 2017-03-24
    • 2023-01-12
    相关资源
    最近更新 更多