2012-02-21 48 views
1

我想在Matlab中使用kmeans聚类中的汉明距离,但是我得到一个错误,说我的数据必须是二进制的。k-means聚类中的海明距离

反正有这个吗?我使用的数据矩阵不能是二进制的(它有一个物理解释,必须允许值为0,1,2,3),但重要的是我使用汉明距离。

回答

1

每MATLAB documentation,用于kmeans汉明距离度量只能与二进制数据使用,因为它是不同的位的百分比的量度。

在使用函数之前,您可以尝试将数据映射到二进制表示。如果可能的话,您也可以使用城市街区距离作为替代方案,因为它适用于非二进制输入。

+0

谢谢,我用matlab中的de2bi将距离矩阵映射为二进制表示。这使我可以使用kmeans的汉明距离,但现在距离矩阵的大小不同,从而导致聚类中的元素更多。我不能使用出租车的距离,不适合我对我的原始矩阵的解释... – 2012-02-21 19:17:17

+0

我的意思是:我将原始数据矩阵映射为二进制形式... – 2012-02-21 19:26:35

1

要群集的数据必须是逻辑类型。您可以通过一个命令转换您的0/1双,单,uintX数据:

x = logical(y); 

如果你想UINT8类型的数据转换成二进制,检查功能uint8tobit()。看看de2bi()和bi2de()函数。