为什么在MATLAB中通过汉明距离进行聚类会得到十进制的质心?

时间:2013-03-09 19:34:08

标签: matlab cluster-computing hamming-distance

    X=[1 0 1 0 0 1 1 1;
       0 0 0 1 1 0 1 0;
       1 1 0 1 0 1 0 1;
       1 0 1 0 1 0 1 0;
       0 0 0 0 1 1 1 0;  
       1 1 1 0 0 0 1 1;
       1 0 1 0 1 1 1 0;
       0 1 0 1 1 0 1 1];

    [IDX,C] = kmeans(X,3, 'distance', 'hamming')

我想测试如何使用汉明距离聚类二进制数据所以在上面的代码中,我随机分配了X二进制值矩阵。但问题是,我的质心是十进制值。就像我在下面所示。

C=
    1.0000    1.0000    1.0000         0         0    1.0000    1.0000    1.0000
         0    0.5000         0    1.0000    1.0000         0    1.0000    0.5000
    1.0000         0    0.5000         0    1.0000    1.0000    1.0000         0

为什么答案中有0.5?我希望质心也是二进制的。由于二进制数据,还可以绘制没有重叠的簇吗?

1 个答案:

答案 0 :(得分:1)

centroid是一个虚点(虚构,因为它不一定是数据点之一),它是相应数据集群的几何中心。把它想象成它的“质量中心”。

质心通常落在群集中的点之间。因此,如果您的数据点是二进制的,则期望质心的坐标不是整数。

如果您希望质心坐标也是二进制的,最简单的解决方案将涉及应用舍入函数,例如roundceilfloorfix