Matlab 中的 k-means 算法给出了错误的答案?

k-means algorithm in Matlab giving wrong answer?

我有以下疑问: 我正在使用 Matlab 的 k-means 函数,我只想使用香草 Lloyd 算法,以及我想要的一组初始化点。我使用以下代码,其中 'start' 是我的初始化向量。

kmeans(data,[],'Start',start, 'OnlinePhase', 'off');

假设我的数据是 (-2,-1)X(2,1) 范围内的二维数据,并且我将起点初始化为 (-10,0) 和 (0,0)。理想情况下,我应该在一个集群中获得所有点,在另一个集群中获得 none,但我在答案中得到两个集群(因为(-10,0)真的很远,所以它应该在一次迭代中收敛).这怎么可能?我在Matlab网站上看了k-means算法的描述,看来这不应该是答案。

没有最接近错误选择中心的点。所以不能重新计算,并且将被新中心替换(见文档)。所有点首先分配给 0,0 簇。一些算法甚至会因被 0 除而严重失败,或者丢弃该中心并减少到 k=1。在 Matlab 中,您可以选择处理 - 默认情况下,它会选择距离所有中心最远的点作为替换。

保留一个空的聚类中心是相当合理的,恕我直言,因为它不会改变您在选择初始中心时想到的任何聚类枚举,并且(当初始中心选择得当时)它可能当其他中心继续移动时(虽然不是这里),最终甚至再次变得非空。