2013-03-09 67 views
1
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個二進制值的矩陣。但問題是,我的質心是十進制值。就像我在下面顯示的那樣。爲什麼在MATLAB中使用海明距離進行聚類會給出十進制的質心?

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

centroid是虛點(在這個意義上假想,它不一定是數據點中的一個),其是用於將相應的數據簇的幾何中心。把它想成它的「質量中心」。

質心通常落在叢集中的點之間。因此,如果您的數據點是二進制的,則預計質心的座標不會是整數。

如果你想質心座標爲二進制爲好,最簡單的解決方案會涉及將一個舍​​入函數如roundceilfloorfix

+1

解決了這個問題。謝謝。 – user2152280 2013-03-10 08:33:43

+0

你知道在使用漢明距離的情況下matlab如何進行更新步驟嗎? – Dror 2015-04-20 13:10:32

+0

@Dror我不確定你在問什麼。它只決定數據空間中距離的計算方式;如果使用漢明距離,則距離(引自[官方文檔](http://www.mathworks.com/help/stats/kmeans.htm):'......不同位的比例。每個質心是該組中點的分量平均值。)。 – 2015-04-20 13:22:43

相關問題