2011-05-14 35 views
2

在我的數據中,我有一些喜歡的用戶,我已經將這些喜歡傾倒到每個用戶的單個文件中,並希望對它們進行聚類。除了輸出在多個羣集中具有相同的喜歡之外,一切正在工作。我的理解是k-means應該是排他性的。我認爲問題可能在於我如何傾銷數據。我也暫時拋棄了所有沒有空格的喜歡,直到我可以編寫自定義標記器。以下是我正在運行的內容(來自ruby腳本)。Mahout上的K-means返回非獨佔集羣

system("#{MAHOUT_CMD} seqdirectory -c UTF-8 -i data/users -o data/kmeans/converted") 
system("#{MAHOUT_CMD} seq2sparse -i data/kmeans/converted -o data/kmeans/vectors") 
system("#{MAHOUT_CMD} kmeans -i data/kmeans/vectors/tfidf-vectors -c data/kmeans/initial_clusters -o data/kmeans/kmeans_clusters -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -cd 0.1 -k 20 -x 20") 

last_cluster_folder = Dir["data/kmeans/kmeans_clusters/*"].last.gsub("data/kmeans/kmeans_clusters/", "") 

system("#{MAHOUT_CMD} clusterdump -s data/kmeans/kmeans_clusters/#{last_cluster_folder}/ -d data/kmeans/vectors/dictionary.file-0 -dt sequencefile -o data/kmeans/clusters.txt -n 1000") 

輸出列出了每個羣集中的「頂級術語」,但是每個羣集中都出現了許多類似的問題(雖然權重不同)。是clusterdumper的正常輸出,我需要通過它的權重找出每個單詞屬於哪個羣集?

感謝

+1

這可能會在[email protected]上更成功 – 2011-05-16 21:05:42

回答

0

亨利馬烏大概只完成近似 k均值。此外,可能有與多個羣集具有相同距離的對象。

然而,你應該能夠採取k的方法,然後做一個1最近鄰居分類,以獲得每個對象的唯一結果(這是平行並且非常快)。