2017-08-07 44 views
-3

我有以下輸入整數向量(例如):的java - K-means聚類

4 138 233 461 610 621 669 742 814 827 
89 138 334 656 697 810 
138 
138 196 738 
659 738 
4 461 
138 337 756 810 
8 138 196 337 468 663 664 756 809 810 

它們都包含整數值[1-850]和都存儲在CSV文件。

我想根據向量中的相似性將它們分成多個羣集,但我對如何在java中爲我的輸入數據實現k-means算法感到困惑。任何人願意幫助提示或代碼?

在此先感謝。對於k-means聚類

假設你有一個指標

+0

,我們可以幫助你,如果你確實有代碼。但我們不會爲你寫代碼。 –

+0

您有具體問題嗎? SO的幫助太廣泛了。 – Cedias

+0

Ehm,使用搜索引擎是不可能的? – AKSW

回答

0

僞代碼(我們稱之爲M),可以比較輸入對象(在你的情況載體)和輸出的相似程度。

和功能(我們稱之爲A),它是能夠計算輸入集合的平均的對象

  1. 隨機從您的數據集選擇N項。他們是集羣的新中心(稱爲質心)。
  2. 對於不是質心的每個項目X,計算它到每個質心的距離(使用M),並將其標記爲屬於質心C,其中X和C之間的距離(使用M)最小。
  3. 每個項目現在分配給質心。
  4. 使用平均功能(A)來計算新的重心
  5. 要麼使用直接輸出作爲新的重心,或者找到的最接近A(使用M)的輸出
  6. 重複實際項目步驟2至5直至收斂(或直到你的計算預算已用完)

還檢查了https://en.wikipedia.org/wiki/K-means_clustering