Mahout使用命令行创建集群 - 问题

时间:2014-02-07 09:59:44

标签: command-line mahout canopy

我正在尝试聚集以下示例坐标集:

(1,1) , (2,1) , (1,2), (2,2), (3,3), (8,8), (8,9), (9,8), (9,9)

这些坐标应形成两个集群:

(1,1) , (2,1) , (1,2), (2,2), (3,3)

(8,8), (8,9), (9,8), (9,9)

这就是我的进展:

步骤 1:将此文件存储为hadoop上的文件中以制表符分隔的数据:

1 1

2 1

1 2

2 2

3 3

8 8

8 9

9 8

9 9

步骤 2:将此文件转换为序列文件:

$mahout seqdirectory --input my.data --output kdraft -c UTF-8

步骤 3:创建稀疏数据文件:

$mahout seq2sparse -i kdraft -o kfinal -wt tf

步骤 4: Ran Canopy alogrithm生成聚类为:

$mahout canopy -i kfinal/tf-vectors --clustering -o xz -t1 5 -t2 2 -ow

步骤 4:转储输出

$mahout clusterdump --input xz/clusters-0-final --pointsDir xz/clusteredPoints/ --output /home/ashokharnal/data/c.txt

输出显示在c.txt中:

C-0 {n = 1 c = [4.000,2.000,4.000,4.000,4.000] r = []}重量:[道具 - 可选]:点:     1.0:[4.000,2.000,4.000,4.000,4.000]

我想知道哪个坐标在哪个群集中?我没有得到它。

2 个答案:

答案 0 :(得分:0)

聚类分配信息应该在xz / clusteredPoints

试试这个: mahout seqdumper -i xz / clusteredPoints / part-m-00000

它应该给出输出,其中每一行是数据点到集群的分配。当我处理我的工作时,首先出现簇编号,然后是一个表示可能性的值,一个数据点的文件标识符,最后是坐标信息

抱歉,我不能更具体,我无法获得运行并重现您粘贴的输出的示例。

在此示例中提到了clusteredPoints目录: https://cwiki.apache.org/confluence/display/MAHOUT/Quick+tour+of+text+analysis+using+the+Mahout+command+line

祝你好运!

答案 1 :(得分:-1)

你的方法不正确!通过这样做,你只得到一个向量!因此,您应该首先编写一个hadoop程序,将每行作为值和任何唯一键。 hadoop程序的输出格式必须是顺序输出格式。然后,使用Seqsparse将结果(顺序文件)转换为mahout向量。最后应用Kmeans或任何你的mahout聚类算法。