如何在Mahout中为K Means聚类的CSV文件中获取键和值

时间:2013-07-16 10:01:48

标签: machine-learning cluster-analysis mahout

我正在尝试在下面的数据集上运行Kmeans聚类,

Name,Gender,Age,Drinks,Country
John,M,30,Pepsi,US
Jack,M,25,Coke,US
David,M,34,Pepsi,UK
Ted,M,37,Limca,CAN
Robert,M,23,Limca,US
Adrian,M,31,Pepsi,US
Craig,M,37,Coke,UK
Katie,F,23,Limca,UK
Nancy,F,32,Pepsi,UK

我希望基于Drinks(百事可乐,可乐,Limca)对数据进行聚类,我能够做到这一点。但我想在群集数据的同时检索名称。

我得到的输出是

0
1
2 
Limca belongs to cluster:0
Cokde belongs to cluster:0
etc.

这里我想得到这些名字。

转换为序列文件时,我将键作为饮料和值作为其余文本并转换为sparsevector然后运行Kmeans聚类,不会打印名称。 任何人都可以指出我如何从值中的簇中提取名称。

2 个答案:

答案 0 :(得分:0)

K-Means在向量空间上运行。

绝对需要能够计算意味着

{Pepsi, Coke, Pepsi, Limca}的平均值是多少?

对不起,你正在尝试使用锤子,但你没有钉子!

如果您希望通过饮料分组数据,则这不是群集任务。

也许尝试基于Hadoop的SQL系统。因为显然您想要执行经典的SQL操作:GROUP BY Drinks

哦,你的问题是stackoverflow的主题。您正在使用 Hadoop,但您没有提出编程问题!

答案 1 :(得分:0)

您可能需要将{Pepsi,Coke,Pepsi,Limca}转换为{1001,1002,1001,1003}并再次转换回原始值。

但正如其中一个答案中所提到的,只是通过饮料获得一组可能不是一个集群工作,它只是一个SQL查询。如果您的问题比分组更复杂,那么您可以尝试我在上面的段落中提到的方法。