• R语言
  • 使用stats自带的kmeans函数,遇到奇怪的报错问题

使用stats自带的kmeans函数,遇到奇怪的报错问题,麻烦各位老师给看一下
使用环境如下:
R version 4.3.0 (2023-04-21 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)
使用以下数据集:
xx<-c(169,167,168,163,160,158,172,89,85,76,79,83,79,4,8,5,2,6)
问题描述:
当设置kmeans参数centers为c(2,172,160,81)时,可正常运行
kmeans(x,centers=c(2,172,160,81))
K-means clustering with 4 clusters of sizes 5, 4, 3, 6
但将centers设置为c(2,172,160,81,24)或更多初始点时,就报错了:
kmeans(x,centers=c(2,172,160,81,24))
Error: 空的群集: 请试试更精确一点的初始中心集
请看到问题的老师,能帮忙指导一下出现这种问题的原因是什么呀?感谢

首先,你自己观察一下你给的数据,2,172,160,81都有数据就在他们附近,而24显然是没有的,所以这样一个5中心的初始化很有可能导致其中会出现空的中心,也就是说实际最终聚类到的可能是4类或者更少。

其次,你再看一下kmeans自己的文档,里面写的很清楚:

it is possible that no point will be closest to one or more centres, which is currently an error for the Hartigan–Wong method.

说明HW方法下出现空中心是会报错的。然后你再去看看kmeans的文档,你会发现排在头一个的就是HW方法。你可以尝试后面支持的其他方法,会返回结果,但同时warning产生了空的中心。


另外,你给的例子里只给了变量xx,我也不知道你kmeans里用的x到底是啥,只能说假设是跟xx一样吧~

    fenguoerbian
    非常感谢,学习到很多东西。本来是要做kmeans初始样本点选取的研究,“突然出现”的报错给我整蒙了。