MATLAB:K意味着聚类具有不同的质心

时间:2014-01-13 15:33:59

标签: matlab k-means voronoi

我创建了一个基于k-means聚类算法的代码簿。但是算法没有收敛到最佳代码簿,每次聚类质心都是变化的(因为随机选择了初始种子)。 Matlab中有一个选项可以为K-Means提供初始矩阵。但是我们如何从大型数据集中选择初始代码簿呢?有没有其他方法可以使用K-means获得唯一的代码簿?

2 个答案:

答案 0 :(得分:1)

使用不同的初始状态(例如,初始种子)多次运行k-means是有些标准的,并选择具有最低误差的结果作为最佳结果。

通过随机选择数据集中的k个元素作为初始种子来播种k-means也是典型的。

答案 1 :(得分:0)

默认情况下,MATLAB的K-Means使用K-MEans ++算法进行初始化,这意味着它使用随机数。

因此,对K-Means的每次调用(对于顺序调用)可能会产生不同的结果。

您有3个选项可以确定这一点:

  1. 在调用K-Means之前,将MATLAB的随机数生成器状态设置为特定状态。
  2. 使用K-Means选项中的stream选项在K-Means中设置流。
  3. 编写您自己的K-Means版本,它使用确定性方法初始化K-Means。