2012-01-09 157 views
0

我在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在幾次不同的初始化之後所得到的質心包含負值的值。

任何人都可以讓我知道它的原因嗎?

+0

我無法用'F = rand(1000,5);'重現負值。給我們代碼來重現它。 – cyborg 2012-01-09 23:08:48

+0

你解決了這個問題嗎?你能回答這些問題嗎? – Royi 2017-07-20 18:31:39

回答

1

如果沒有實際的數據矩陣「F」,我無法真正回答你的問題。然而,我注意到,如果尺寸(F)== [d中,n],則碼

[IDX, B] = kmeans(F,50,'MaxIter',1000,'EmptyAction','singleton') 

將把˚F作爲一組d的點,每一個n-變量。所以所有的d點都屬於[0,1]^n。

而且

  1. 你真的需要可選參數?如果你刪除它們會發生什麼?
  2. 如果減少輸入矩陣F中數據點的數量,會發生什麼情況?
  3. 如果你減少簇的數量,比如說10而不是50,會發生什麼?