在matlab中用k表示质心计算的误差

时间:2012-01-09 10:11:56

标签: matlab k-means

我在matlab中实现了一个奇怪的kMeans输出。 我在维度d x n的输入矩阵 F 中的所有条目都在0和1之间。当我使用以下matlab命令运行kmeans算法时,它会创建50个簇。

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')

这里IDX是返回的标签,B是创建的集群的质心。由于您的所有数据点都在[0,1] ^ d中,因此您希望计算的质心也在[0,1] ^ d中,其中d是该点的维数。

然而,我在几次不同的初始化后从kmeans得到的结果质心包含值。

有谁能让我知道它的原因?

1 个答案:

答案 0 :(得分:1)

如果没有实际的数据矩阵“F”,我真的无法回答你的问题。但是,我注意到,如果size(F)== [d,n]则代码

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')

将F视为一组d个点,每个n个变量。所以所有d点都属于[0,1] ^ n。

另外

  1. 你真的需要可选参数吗?如果删除它们会发生什么?
  2. 如果减少输入矩阵F中的数据点数,会发生什么?
  3. 如果减少群集的数量,比如10,而不是50,会发生什么?