在分类编码器中,证据的权重是如何计算的?

2024-04-28 23:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图手动计算WoE,但我无法得到与category_编码器计算结果相同的结果。这是我要计算分数的数据帧:

df = pd.DataFrame({'cat': ['a', 'b', 'a', 'b', 'a', 'a', 'b', 'c', 'c'], 'target': [1, 0, 0, 1, 0, 0, 1, 1, 0]})

这是我用来计算灾难分数的代码

woe = WOEEncoder(cols=['cat'], random_state=42)
X = df['cat']
y = df.target
encoded_df = woe.fit_transform(X, y)

同样的结果是:

0   -0.538997
1   0.559616
2   -0.538997
3   0.559616
4   -0.538997
5   -0.538997
6   0.559616
7   0.154151
8   0.154151

所以, “a”编码为-0.538997 “b”的编码为0.559616 “c”编码为0.154151

当我手工计算分数时,它们是不同的,我取

ln(% of non events / % of events).

比如说,为了计算一个国家的灾难

% of non events = targets which are 0 for 'a'/ total targets for group 'a'

因此,非事件的百分比=3/4=0.75

% of events = targets which are 1 for 'a' / total targets for group 'a'
So, % of events = 1/4 = 0.25

Now, 0.75/0.25 = 3

因此,WoE(a)=ln(3)=1.09,这与上述编码器不同


Tags: oftarget编码dffor编码器events分数