2014-08-28 48 views
0

当我在Mahoot中运行kmeans集群时,我得到两个文件夹clusters-x和clusteredPoints。Mahout集群点

我已经阅读了使用群集翻转器的群集中心,但我无法获取clusteredPoints?具体来说,我需要从代码中完成。

奇怪的是我在clusteredPoints中的文件大小总是128字节,当我试图循环遍历结果时,使用下一个代码,它只是走出循环,就像没有结果一样,但是我得到了聚类中心,这导致假设聚点。

IntWritable key = new IntWritable(); 
    WeightedPropertyVectorWritable value = new WeightedPropertyVectorWritable(); 
    while (reader.next(key, value)) { 
     System.out.println(
     value.toString() + " belongs to cluster " + key.toString()); 
    } 

它刚刚退出循环?

这真的很奇怪,任何帮助都会很棒,谢谢。

回答

1

你需要打开你的最终集群文件( 'clusteredPoints /一部分-M-0')其中:

Configuration conf = new Configuration(); 
FileSystem fs = FileSystem.get(conf); 
SequenceFile.Reader reader = new SequenceFile.Reader(fs, new Path("output/clusteredPoints/part-m-0"), conf); 

然后,假设你的钥匙是INT的,遍历它(因为你已经做了) ,与:

IntWritable key = new IntWritable(); 
    WeightedPropertyVectorWritable value = new WeightedPropertyVectorWritable(); 
    while (reader.next(key, value)) { 
     LOG.info("{} belongs to cluster {}", value.toString(), key.toString()); 
    } 
    reader.close(); 

我可以发布一个完整的工作示例,如果你仍然有麻烦这样做。