如果我的数据包含5个类别(a、b、c、d、e)和一个客户数据集,其中每个客户可以属于一个、多个或不属于任何类别。如何获取这样的数据集:
id, categories
1 , [A,C]
2 , [B]
3 , []
4 , [D,E]
并将categories列转换为一个热编码向量,如下所示
id, categories, encoded
1 , [A,C] , [1,0,1,0,0]
2 , [B] , [0,1,0,0,0]
3 , [] , [0,0,0,0,0]
4 , [D,E] , [0,0,0,1,1]
有没有人在spark找到了一个简单的方法?
2条答案
按热度按时间clj7thdc1#
为了获得所需的输出,您可以使用spark的udf(用户定义函数)扩展stephen carman answer:
这将给你想要的输出
mw3dktmi2#
一些非常容易做的事情,这在某种程度上是相同的是使用countvectorizermodel
这与您想要的并不完全相同,但是特征向量将告诉您数据中存在哪些类别。例如,在第1行中,[0,2]对应于字典的第一个和第三个元素,或者这里写的“a”和“c”。