具有预定义质心的 K 均值聚类

K-means clustering with pre-defined centroids

我正在尝试 运行 具有预定义质心的 K 均值算法。我看过以下帖子:

1.

2.

然而,每次我运行命令:

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)]

请问系统为什么会报以上错误? 如有任何帮助,我们将不胜感激!

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

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

我在对话中发现了以下 link:

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

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

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

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

上面分享的link让我意识到我的代码中有一个错误。希望对和我情况类似的人有所帮助!

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

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