2014-08-28 114 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(); 

我可以發佈一個完整的工作示例,如果你仍然有麻煩這樣做。