【发布时间】:2022-11-25 10:57:24
【问题描述】:
我有下表。
id col1 col2 col3 col4 target
1 A B A 101 1
2 B B A 191 1
3 A B A 81 0
4 C B C 67 1
5 B C C 3 0
我想对除col4 之外的每一列进行目标编码。
预期输出:
e1 e2 e3 target
0.5 0.75 0.667 1
0.5 0.75 0.667 1
0.5 0.75 0.667 0
1.0 0.75 0.5 1
0.5 0.00 0.5 0
编辑:对于 col1、col2、col3 的每一列,我都想获取目标编码。
例如,在 col3 中,A 出现 3 次,目标为 1 的 2/3 次。因此 A 的编码将为 0.667。类似地,对于 C,它在 col3 中为 0.5。
我已经为一个专栏尝试过这样的事情:
encodings = df.groupby('col1')['target'].mean().reset_index()
df = df.merge(encodings, how = 'left', on = 'col1')
df.drop('col1', axis = 1, inplace = TRUE)
【问题讨论】:
-
道歉 - 我已经更新了输出。希望它更有意义。
-
对于 col3,A 出现了 3/5 次,因此对于 e3,它将计算为 0.6。 C 出现了 2/5 次,因此对于 e3 它将计算为 0.4。相同的逻辑适用于 col2 和 col1。
-
请注意,计算完全独立于
target;) -
很抱歉我问错了问题并更新了示例输出。它实际上取决于目标。