Mahout聚集点

时间:2014-08-28 09:06:23

标签: cluster-analysis mahout

当我在Mahoot中运行kmeans聚类时,我得到两个文件夹:clusters-x和clusteredPoints。

我已经使用群集转储程序读取了群集中心,但我不知道怎样才能访问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 个答案:

答案 0 :(得分:1)

您需要打开最终的群集文件(' clusteredPoints / part-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();

如果您仍然无法执行此操作,我可以发布一个完整的示例。