我在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得到的结果质心包含负值。
有谁能让我知道它的原因?
答案 0 :(得分:1)
如果没有实际的数据矩阵“F”,我真的无法回答你的问题。但是,我注意到,如果size(F)== [d,n]则代码
[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton')
将F视为一组d个点,每个n个变量。所以所有d点都属于[0,1] ^ n。
另外