我有以下疑问: 我正在使用Matlab的k-means函数,而我只想使用香草劳埃德(Lloyd)算法以及所需的初始化点集。我使用以下代码,其中“ start”是我的初始化向量。
kmeans(data,[],'Start',start, 'OnlinePhase', 'off');
假设我的数据是(-2,-1)X(2,1)范围内的2-D,并且我将起始点初始化为(-10,0)和(0,0)。理想情况下,我应该将所有点集中在一个群集中,而没有一个在其他群集中,但是我将在答案中得到两个群集(因为(-10,0)确实相距甚远,因此应该在一次迭代中收敛)。那怎么可能?我在Matlab网站上阅读了有关k-means算法的说明,看来这不是答案。
答案 0 :(得分:0)
没有点最靠近错误选择的中心。因此, 无法重新计算,并将被新的中心替换(请参见文档)。首先将所有点分配给0,0群集。某些算法甚至会因除以0而严重失败,或者丢弃该中心并减小为k = 1。在Matlab中,您可以选择处理-默认情况下,它将选择距离所有中心最远的点作为替换。
恕我直言,将空的聚类中心保留在一个相当合理的位置,因为它不会改变您选择初始中心时考虑的任何聚类枚举,并且(当初始中心选择得当时)它甚至可能变成最终,当其他中心继续移动时(虽然不是在此位置),再次变为非空。