gpt4 book ai didi

python - 将证据权重 (WoE) 替换为相应的值

转载 作者:行者123 更新时间:2023-11-30 09:40:16 26 4
gpt4 key购买 nike

我有一个名为 x 的变量,其最小值为零,最大值为 200 万。所以我将值切成像这样的代码:

bins = [0,1,10000,20000,50000,60000,70000,100000,2000000]
df_input['X_bins'] = pd.cut(df_input['X'], bins,right=False)

enter image description here

目前,我正在使用 for 循环将每个垃圾箱替换为其证据权重值:

def flag_dfstd(df_input):
if (df_input['X'] >=0) & (df_input['X'] <100) :
return '-0.157688'
elif (df_input['X'] >=100) & (df_input['X'] < 10000) :
return '-0.083307'
elif (df_input['X'] >=10000) & (df_input['X'] < 20000) :
return '0.381819'
elif (df_input['X'] >=20000) & (df_input['X'] < 50000):
return '0.364365'
else:
return '0'
df_input['X_WOE'] = df_input.apply(flag_dfstd, axis = 1).astype(str)

有没有办法可以在不使用 for 循环的情况下替换证据权重?

最佳答案

我认为你需要cut使用参数 labels 并替换缺失值,需要添加 cat.add_categories替换前:

df_input = pd.DataFrame({'X':[0,20,100, 10000, 30000, 1000000]})

b = [-np.inf, 100, 10000, 20000, 50000]
l = ['-0.157688', '-0.083307', '0.381819', '0.364365']

df_input['X_WOE'] = pd.cut(df_input['X'], bins=b, labels=l,right=False)
df_input['X_WOE'] = df_input['X_WOE'].cat.add_categories(['0']).fillna('0')
print (df_input)
X X_WOE
0 0 -0.157688
1 20 -0.157688
2 100 -0.083307
3 10000 0.381819
4 30000 0.364365
5 1000000 0

关于python - 将证据权重 (WoE) 替换为相应的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59233409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com