Hadoop 解释mahout clusterdumper的输出

Hadoop 解释mahout clusterdumper的输出,hadoop,cluster-analysis,k-means,mahout,Hadoop,Cluster Analysis,K Means,Mahout,我对爬网页面(超过25K个文档;个人数据集)进行了聚类测试。 我做了一个集群转储: $MAHOUT_HOME/bin/mahout clusterdump --seqFileDir output/clusters-1/ --output clusteranalyze.txt 运行集群转储程序后的输出显示为25个元素“VL-xxxxx{}”: 如何解释这个输出 简而言之:我正在寻找属于特定集群的文档ID 以下是什么意思: VL-x n=yc=[z:z',…] r=[z':z',…] 0:0.

我对爬网页面(超过25K个文档;个人数据集)进行了聚类测试。 我做了一个集群转储:

$MAHOUT_HOME/bin/mahout clusterdump --seqFileDir output/clusters-1/ --output clusteranalyze.txt
运行集群转储程序后的输出显示为25个元素“VL-xxxxx{}”:

如何解释这个输出

简而言之:我正在寻找属于特定集群的文档ID

以下是什么意思:

  • VL-x
  • n=yc=[z:z',…]
  • r=[z':z',…]
0:0.017是否表示“0”是属于此群集的文档id

我已经在mahout wiki页面上读到了CL、n、c和r的含义。但是,有人能更好地向我解释一下,或者指向一个资源,在那里可以更详细地解释一下吗


抱歉,如果我问了一些愚蠢的问题,但我是一个新手,拥有apache mahout,并将其作为集群课程作业的一部分。

我认为您需要阅读源代码——从下载<代码>VL-24130只是聚合集群的集群标识符

  • 默认情况下,kmeans集群使用不包含数据点名称的WeightedVector。因此,您希望自己使用NamedVector创建一个序列文件。seq文件的数量与映射任务之间存在一对一的对应关系。因此,如果您的映射容量是12,那么在创建文件时,您希望将数据分成12个部分 NamedVector:

    vector=newnamedvector(newsequentialaccesssparsevector(基数),arrField[0]);
    
  • 基本上,您需要从HDFS系统下载clusteredPoints并编写自己的代码来输出结果。下面是我为输出集群点成员身份而编写的代码

    import java.io.*;
    导入java.util.ArrayList;
    导入java.util.HashMap;
    导入java.util.List;
    导入java.util.Map;
    导入java.util.Set;
    导入java.util.TreeMap;
    导入org.apache.hadoop.conf.Configuration;
    导入org.apache.hadoop.fs.FileSystem;
    导入org.apache.hadoop.fs.Path;
    导入org.apache.hadoop.io.IntWritable;
    导入org.apache.hadoop.io.SequenceFile;
    导入org.apache.mahout.clustering.WeightedVectorWritable;
    导入org.apache.mahout.common.Pair;
    导入org.apache.mahout.common.iterator.sequencefile.PathFilters;
    导入org.apache.mahout.common.iterator.sequencefile.PathType;
    导入org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
    导入org.apache.mahout.math.NamedVector;
    公共类ClusterOutput{
    /**
    *@param args
    */
    公共静态void main(字符串[]args){
    //TODO自动生成的方法存根
    试一试{
    缓冲写入器bw;
    Configuration conf=新配置();
    FileSystem fs=FileSystem.get(conf);
    文件点文件夹=新文件(args[0]);
    文件文件[]=pointsFolder.listFiles();
    bw=新的BufferedWriter(新的FileWriter(新文件(args[1]));
    HashMap簇;
    clusterIds=newhashmap(5000);
    用于(文件:文件){
    
    如果(file.getName().indexOf(“part-m”)您可以使用mahoutclusterdump
    要完成答案:

    • VL-x:集群的标识符
    • n=y:是群集中的元素数
    • c=[z,…]:是簇的质心,具有 z是不同维度的权重
    • r=[z,…]:是簇的半径
    更多信息请点击此处:

    请阅读问题。OP已经使用了clusterdumper。c=[monkey:0.7,0.7意味着什么?这是平均术语权重吗?如果我使用单词计数,这是平均单词计数吗?按顺序排列,此集群中的文档平均有70%的时间使用monkey?
    VL-24130{n=1312 c=[0:0.017, 10:0.007, 11:0.005, 14:0.017, 31:0.016, 35:0.006, 41:0.010, 43:0.008, 52:0.005, 59:0.010, 68:0.037, 72:0.056, 87:0.028, ... ] r=[0:0.442, 10:0.271, 11:0.198, 14:0.369, 31:0.421, ... ]}
    ...
    VL-24868{n=311 c=[0:0.042, 11:0.016, 17:0.046, 72:0.014, 96:0.044, 118:0.015, 135:0.016, 195:0.017, 318:0.040, 319:0.037, 320:0.036, 330:0.030, ...] ] r=[0:0.740, 11:0.287, 17:0.576, 72:0.239, 96:0.549, 118:0.273, ...]}