我正在使用Matlab的常規kmeans算法與'距離','餘弦','EmptyAction','下降'在L2規範化的功能矩陣,我有一個問題。 Matlab生成的輸出只需將EVERY數據點分配到集羣1.00000
即使k = 20,並且C中的所有質心都是NaN
。有沒有人有什麼建議可能會導致這種情況?Matlab的k-均值餘弦分配一切到一個羣集
矩陣的佈局是([0,1,...,1,0,1],[...],[0,1,...,1,0,1])。在將文件傳遞給Matlab之前,我已經使用Python的numpy.linalg.norm
完成了L2規範化。這是我運行k均值的確切方式:
m=importdata('matrix.txt');
data=m'; % transpose, because kmeans treats columns as features instead of rows
[L, C]=kmeans(data, 20, 'Distance', 'cosine', 'EmptyAction', 'drop')
這裏是我的歸一化數據集的樣本:
10.3440804328
12.6885775404
15.5884572681
15.9059737206
17.4355957742
17.0
17.3493515729
17.3205080757
18.6279360102
19.7230829233
21.400934559
22.0
22.5831795813
23.0
24.0416305603
25.2388589282
26.8141753556
22.5388553392
9.2736184955
13.5277492585
15.2970585408
任何幫助或建議,將不勝感激。如果您需要更多信息,請告訴我!
根據我對他們在doc中顯示的示例的理解,kmeans使用x-y座標集合,而每行僅提供一個特性,您是否與應包含的數據有關聯的值? – Smash
我假設在這種情況下,他只有一個功能 – Matt
也許增加1秒的第二列? – Smash