[在数据帧df中,我有一列my_category
,其中有不同的值,可以使用以下方法查看值计数:
df.groupBy("my_category").count().show()
value count
a 197
b 166
c 210
d 5
e 2
f 9
g 3
现在,我想在此列上应用一次热编码(OHE),但仅对顶部的N
频繁值(例如N = 3
)进行设置,并将所有其余的不频繁值放入虚拟列中(例如,“默认”)。例如,输出应类似于:
a b c default
0 0 1 0
1 0 0 0
0 1 0 0
1 0 0 0
...
0 0 0 1
0 0 0 1
...
如何在Spark / Scala中执行此操作?
注意:我知道如何在Python中执行此操作,例如,首先为每个唯一值建立一个基于频繁度的字典,然后通过逐个检查值并将不经常出现的值放在“默认”列中来创建OHE向量。] >
[在数据框df中,我有一列my_category,其中具有不同的值,可以使用以下方法查看值计数:df.groupBy(“ my_category”)。count()。show()值计数为197 b ...
一个自定义函数可以写为在一个特定的列上应用一次热编码(OHE),仅用于前N个频繁值(例如N = 3)。