我正在尝试使用均值归一化计算数据集的归一化分数。当我写作时(X - np.mean(X))/np.std(X),它给我的分数与实际的分数不同((X - X.mean())/X.std()。
问题似乎来自标准差的计算。X.std()返回一个标准差值并np.std()返回不同的标准化值。为什么会发生这种情况?
我正在尝试手动计算 WoE,但无法获得与 Category_encoders WOEEncoder 计算的结果相同的结果。这是我想要计算分数的数据框:
df = pd.DataFrame({'cat': ['a', 'b', 'a', 'b', 'a', 'a', 'b', 'c', 'c'], 'target': [1, 0, 0, 1, 0, 0, 1, 1, 0]})
Run Code Online (Sandbox Code Playgroud)
这是我用来计算 WoE 分数的代码
woe = WOEEncoder(cols=['cat'], random_state=42)
X = df['cat']
y = df.target
encoded_df = woe.fit_transform(X, y)
Run Code Online (Sandbox Code Playgroud)
相同的结果是:
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
Run Code Online (Sandbox Code Playgroud)
因此,'a' 被编码为 -0.538997 'b' 被编码为 0.559616 'c' 被编码为 0.154151
当我手工计算分数时,它们是不同的,我取
ln(% of non events / % of …Run Code Online (Sandbox Code Playgroud)