我正在尝试聚集以下示例坐标集:
(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]
我想知道哪个坐标在哪个群集中?我没有得到它。
答案 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聚类算法。