我正在尝试在下面的数据集上运行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聚类,不会打印名称。 任何人都可以指出我如何从值中的簇中提取名称。
答案 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查询。如果您的问题比分组更复杂,那么您可以尝试我在上面的段落中提到的方法。