2012-01-09 158 views
0

我在matlab中实现了kMeans的奇怪输出。 所有我在我的输入矩阵F维D x n的所有条目都介于0和1之间。当我运行kmeans算法使用以下matlab命令创建50个群集。matlab中kmeans的质心计算中的错误

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

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

但是,由于kmeans在几次不同的初始化之后所得到的质心包含负值的值。

任何人都可以让我知道它的原因吗?

+0

我无法用'F = rand(1000,5);'重现负值。给我们代码来重现它。 – cyborg 2012-01-09 23:08:48

+0

你解决了这个问题吗?你能回答这些问题吗? – Royi 2017-07-20 18:31:39

回答

1

如果没有实际的数据矩阵“F”,我无法真正回答你的问题。然而,我注意到,如果尺寸(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,会发生什么?