我正在尝试使用预定义的质心运行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)]
我想知道为什么系统会出现上述错误? 任何帮助,将不胜感激!
答案 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 代表质心(我的情况)。问题是:我的数据已缩放,但我的质心未缩放。
上面的共享链接使我意识到我的代码中有一个错误。希望它能帮助和我类似的人!