2011-05-14 33 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最近邻居分类,以获得每个对象的唯一结果(这是平行并且非常快)。