【问题标题】:K-means clustering with pre-defined centroids具有预定义质心的 K 均值聚类
【发布时间】:2018-12-20 03:57:21
【问题描述】:

我正在尝试使用预定义的质心运行 K-means 算法。我看过以下帖子:

1.R k-means algorithm custom centers

2.Set static centers for kmeans in R

但是,每次我运行命令时:

km = kmeans(df_std[,c(10:13)], centers = centroids)

我收到以下错误:

**Error: empty cluster: try a better set of initial centers**

我将质心定义为:

centroids = matrix(c(140.12774, 258.62615, 239.36800, 77.43235,
                      33.37736, 58.73077,  68.80000,  12.11765,
                     0.8937264, 0.8118462, 0.8380000, 0.8052941,
                     11.989858, 12.000000, 8.970000,  1.588235),
ncol = 4, byrow = T)

我的数据是数据框的一个子集,比如:df_std。它已经被缩放了

df_std[,c(10:13)]

我想知道为什么系统会出现上述错误? 对此的任何帮助将不胜感激!

【问题讨论】:

  • 确定这就是你想要的吗?集群会移动(如果它们没有变空)。您很可能希望进行最近邻 分类 而不是 custering...
  • @Anony-Mousse 是的,我绝对想要基于质心的聚类!我正在复制我在一个数据集上所做的一些工作。现在,对于新数据集,我不想要无监督聚类,而是要提取相似的组。
  • @Anony-Mousse 我也看到有很多人,根据自己的需要,一定要经过centroid based clustering,请看:tolstoy.newcastle.edu.au/R/e9/help/10/01/0906.html
  • 您希望中心移动还是不移动?这些集群中至少有一个是空的,并且会消失。
  • 更详细地解释我的问题。我之前所做的工作假设有 4 个集群 A、B、C 和 D。集群 A 和 B 人口密集,而 C 和 D 稀疏。该分类基于包含八个特征(X = 8)的集合。如果我想基于相同的八个特征对我的观察进行类似的分布,我不应该使用具有预定义质心的 K 均值吗?

标签: r classification cluster-analysis k-means centroid


【解决方案1】:

仅使用中心使用最近邻分类器,不要重新聚类。

这意味着每个点都被标记为最近的中心。这类似于 k-means 你不改变中心,你不需要迭代,每个新的数据点都可以独立地以任何顺序处理。一次只处理一个点时不会出现问题(在您的情况下,k-means 失败是因为一个集群变空了!)

【讨论】:

    【解决方案2】:

    在浏览我上面发布的特定错误时:

    Error: empty cluster: try a better set of initial centers
    

    我找到了以下对话链接:

    http://r.789695.n4.nabble.com/Empty-clusters-in-k-means-possible-solution-td4667114.html

    一般来说,当质心与数据不匹配时,就会产生上述错误。

    它可能发生在 k 是一个数字: 由于 k-means 算法的随机开始,中心可能与数据不匹配

    它也可能发生在 k 代表质心(我的情况)。问题是:我的数据已缩放,但我的质心未缩放。

    上面的共享链接让我意识到我的代码中存在错误。希望对和我有类似情况的人有所帮助!

    【讨论】:

      猜你喜欢
      • 2017-09-24
      • 2012-07-28
      • 2017-11-04
      • 2020-02-21
      • 2017-12-30
      • 2018-09-19
      • 2017-09-12
      • 2014-06-05
      • 2023-03-30
      相关资源
      最近更新 更多