解释mahout clusterdumper的输出

| 我对爬网的页面(超过25K个文档;个人数据集)进行了集群测试。 我已经完成了clusterdump:
$MAHOUT_HOME/bin/mahout clusterdump --seqFileDir output/clusters-1/ --output clusteranalyze.txt
运行集群转储程序后的输出显示为25个元素\“ VL-xxxxx {} \”:
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, ...]}
如何解释此输出? 简而言之:我正在寻找属于特定集群的文档ID。 的意义是什么 : VL-x n = y c = [z:z \',...] r = [z \'\':z \'\'\',...] 0:0.017是否表示\“ 0 \”是属于此群集的文档ID? 我已经在mahout维基页面上阅读过CL,n,c和r的含义。但是,有人可以向我更好地向他们解释,还是可以指向对它进行更详细解释的资源? 抱歉,如果我要问一些愚蠢的问题,但是我是新手,是apache mahout,并将其用作我的课程分配的一部分。     
已邀请:
默认情况下,kmeans集群使用不包含数据点名称的WeightedVector。因此,您想使用NamedVector自己制作一个序列文件。 seq文件的数量与映射任务之间存在一对一的对应关系。因此,如果您的映射容量为12,则在制作seqfile时要将数据分成12个部分 命名为Vecotr:
vector = new NamedVector(new SequentialAccessSparseVector(Cardinality),arrField[0]);
基本上,您需要从HDFS系统下载clusteredPoints,并编写自己的代码以输出结果。这是我编写的用于输出聚类点成员资格的代码。
import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.mahout.clustering.WeightedVectorWritable;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathFilters;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.NamedVector;

public class ClusterOutput {

/**
 * @param args
 */
public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
                BufferedWriter bw;
                Configuration conf = new Configuration();
                FileSystem fs = FileSystem.get(conf);
                File pointsFolder = new File(args[0]);
                File files[] = pointsFolder.listFiles();
                bw = new BufferedWriter(new FileWriter(new File(args[1])));
                HashMap<String, Integer> clusterIds;
                clusterIds = new HashMap<String, Integer>(5000);
                for(File file:files){
                        if(file.getName().indexOf(\"part-m\")<0)
                                continue;
                        SequenceFile.Reader reader = new SequenceFile.Reader(fs,  new Path(file.getAbsolutePath()), conf);
                        IntWritable key = new IntWritable();
                        WeightedVectorWritable value = new WeightedVectorWritable();
                        while (reader.next(key, value)) {
                                NamedVector vector = (NamedVector) value.getVector();
                                String vectorName = vector.getName();
                                bw.write(vectorName + \"\\t\" + key.toString()+\"\\n\");
                                if(clusterIds.containsKey(key.toString())){
                                        clusterIds.put(key.toString(), clusterIds.get(key.toString())+1);
                                }
                                else
                                        clusterIds.put(key.toString(), 1);
                        }
                        bw.flush();
                        reader.close(); 
                }
                bw.flush();
                bw.close();
                bw = new BufferedWriter(new FileWriter(new File(args[2])));
                Set<String> keys=clusterIds.keySet();
                for(String key:keys){
                        bw.write(key+\" \"+clusterIds.get(key)+\"\\n\");
                }
                bw.flush();
                bw.close();
                } catch (IOException e) {
                        e.printStackTrace();
                }
        }
}
    
完成答案: VL-x:是集群的标识符 n = y:是集群中元素的数量 c = [z,...]:是簇的质心,其中 z是不同维度的权重 r = [z,...]:是簇的半径。 更多信息在这里: https://mahout.apache.org/users/clustering/cluster-dumper.html     
我认为您需要阅读源代码-从http://mahout.apache.org下载。 “ 4”只是聚合集群的集群标识符。     
您可以使用mahout clusterdump https://cwiki.apache.org/MAHOUT/cluster-dumper.html     

要回复问题请先登录注册