2014-03-25 89 views
0

我經歷的K-means算法在象夫和調試時,我注意到,創建第一個羣集時,它這樣做下面的代碼:聚類分類和聚類政策

ClusteringPolicy policy = new KMeansClusteringPolicy(convergenceDelta); 
ClusterClassifier prior = new ClusterClassifier(clusters, policy); 
prior.writeToSeqFiles(priorClustersPath); 

我讀的說明這些類和我不清楚...

我想知道這些聚類分類和政策是什麼意思? 它與分層聚類,基於質心的聚類,基於分佈的聚類等相關嗎?

因爲我不知道使用K-means mahout實現時使用此聚類分類器和策略的好處或原因。

回答

0

實現與k-means的其他變體以及Canopy預聚類和GMM等類似算法共享代碼。

這些類只對這些算法之間的差別進行編碼。

Mahout不是研究k-means算法的好地方,實現起來相當麻煩。它也很慢。真的很慢。大多數情況下,單個CPU的實現將徹底打敗Mahout的任何適合內存的東西。甚至可能在單臺機器的磁盤上。由於所有的map-reduce開銷。

+0

非常感謝! Anony-Mousse,現在我看到了這個政策的原因。 然後,我將讀取其他K-means實現,例如R和Weka。 你能解釋更多關於這張地圖嗎?請減少開銷? –

+0

順便說一句,在之前的文章中,您推薦使用ELKI或單個CPU的scipy實現。 但是你知道一些其他的平行k-means實現嗎? 謝謝 –

+0

我不知道一個。我不認爲k-means對於這一點足夠有趣。請參閱:這是一種統計方法。在較大的數據上,結果仍然是一樣的,除了一點精度。 **大數據k-means完全沒用。** –