spark中的矢量索引器根据变量的频率索引分类特征。但我想用另一种方式索引分类特征。
例如,对于如下所示的数据集,如果我在spark中使用vectorindexer,“a”、“b”、“c”将被索引为0,1,2。但我想根据标签给它们编索引。共有4行数据被索引为1,其中3行具有特征“a”,1行具有特征“c”。所以这里我将索引'a'为0,'c'为1,'b'为2。
有什么方便的方法来实现这一点吗?
label|feature
-----------------
1 | a
1 | c
0 | a
0 | b
1 | a
0 | b
0 | b
0 | c
1 | a
1条答案
按热度按时间z9ju0rcb1#
如果我正确理解了您的问题,那么您希望在分组数据上复制stringindexer()的行为。这样做(用英语)
pySpark
),我们首先定义udf
它将在一个List
包含每个组的所有值的列。请注意,计数相等的元素将被任意排序。现在我们可以汇总
feature
按列分组的列表label
使用collect_list()
,并应用我们的udf
按行:因此,可以将
index
列以获取编码值而不是字母: