首页 文章

无法获得集群输出Mahout

提问于
浏览
0

我在Mahout中运行kmeans,作为输出,我得到文件夹clusters-x,clusters-x-final和clusteredPoints .

如果我理解得很好,cluster-x是每次迭代中的质心位置,cluster-x-final是最终的质心位置,clusteredPoints应该是聚类的簇,其中簇ID和权重代表属于簇的概率(取决于点与其质心之间的距离) . 另一方面,cluster-x和clusters-x-final包含聚类质心,元素数量,质心的特征值和聚类的半径(质心与其最远点之间的距离) .

我该如何检查这些输出?

我成功地将群集转储器用于终端的clusters-x和clusters-x-final,但是当我使用clusteredPoints时,我得到了一个空文件?什么似乎是问题?

我怎样才能从代码中获取这些值?我的意思是,质心值和属于集群的点?

FOr clusteredPoint我在一个while循环中使用IntWritable作为键,使用WeightedPropertyVectorWritable作为值,但它传递循环,就像clusteredPoints中没有元素一样?

这更奇怪,因为我使用clusterDumper获取的文件是空的?

可能是什么问题呢?

任何帮助将不胜感激!

2 回答

  • 0

    我相信你对这些数据的解释是正确的(我只和Mahout一起工作了大约3个星期,所以经验丰富的人应该对此有所了解) .

    至于将点链接回创建它们的输入,我使用了NamedVector,其中名称是向量的键 . 当您读取其中一个生成的点文件(clusteredPoints)时,您可以将每一行(点向量)转换回NamedVector并使用.getName()检索名称 .

    更新以回应评论

    当您最初将数据读入Mahout时,将其转换为矢量集合,然后使用该集合将其写入文件(点)以便稍后在聚类算法中使用 . Mahout为您提供了几种可以使用的Vector类型,但它们还允许您访问名为NamedVector的Vector包装类,它允许您识别每个向量 .

    例如,您可以按如下方式创建每个NamedVector:

    NamedVector nVec = new NamedVector(
        new SequentialAccessSparseVector(vectorDimensions), 
        vectorName
        );
    

    然后你将NamedVectors的集合写入文件,例如:

    SequenceFile.Writer writer = new SequenceFile.Writer(...);
    VectorWritable writable = new VectorWritable();
    
    // the next two lines will be in a loop, but I'm omitting it for clarity
    writable.set(nVec);
    writer.append(new Text(nVec.getName()), nVec);
    

    您现在可以将此文件用作其中一个聚类算法的输入 .

    在使用您的点文件运行其中一个聚类算法之后,它将生成另一个点文件,但它将位于名为clusteredPoints的目录中 .

    然后,您可以读入此点文件并提取与每个向量关联的名称 . 它看起来像这样:

    IntWritable clusterId = new IntWritable();
    WeightedPropertyVectorWritable vector = new WeightedPropertyVectorWritable();
    
    while (reader.next(clusterId, vector))
    {
        NamedVector nVec = (NamedVector)vector.getVector();
        // you now have access to the original name using nVec.getName()
    }
    
  • 0

    检查名为“clusterClassificationThreshold”的参数 .

    clusterClassificationThreshold应为0 .

    你可以查一下http://mail-archives.apache.org/mod_mbox/mahout-user/201211.mbox/%3C50B62629.5020700@windwardsolutions.com%3E

相关问题