Mahout集群点
问题描述:
当我在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());
}
它刚刚退出循环?
这真的很奇怪,任何帮助都会很棒,谢谢。
答
你需要打开你的最终集群文件( '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();
我可以发布一个完整的工作示例,如果你仍然有麻烦这样做。