matlab中kmeans的质心计算中的错误
问题描述:
我在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在几次不同的初始化之后所得到的质心包含负值的值。
任何人都可以让我知道它的原因吗?
答
如果没有实际的数据矩阵“F”,我无法真正回答你的问题。然而,我注意到,如果尺寸(F)== [d中,n],则码
[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')
将把˚F作为一组d的点,每一个n-变量。所以所有的d点都属于[0,1]^n。
而且
- 你真的需要可选参数?如果你删除它们会发生什么?
- 如果减少输入矩阵F中数据点的数量,会发生什么情况?
- 如果你减少簇的数量,比如说10而不是50,会发生什么?
我无法用'F = rand(1000,5);'重现负值。给我们代码来重现它。 – cyborg 2012-01-09 23:08:48
你解决了这个问题吗?你能回答这些问题吗? – Royi 2017-07-20 18:31:39