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

时间:2018-07-12 03:18:32

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

我正在尝试使用预定义的质心运行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)]

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

2 个答案:

答案 0 :(得分:0)

仅使用中心使用最近的邻居分类器,请勿重新聚集。

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

答案 1 :(得分:-1)

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

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 代表质心(我的情况)。问题是:我的数据已缩放,但我的质心未缩放。

上面的共享链接使我意识到我的代码中有一个错误。希望它能帮助和我类似的人!