ShichenXie / scorecardpy

Scorecard Development in python, 评分卡
http://shichen.name/scorecard
MIT License
725 stars 301 forks source link

使用woebin分箱后,缺失值分箱WOE计算错误 #100

Closed 994218208yhl closed 1 year ago

994218208yhl commented 1 year ago

使用woebin分箱后,当Missing箱中的y = 1(bad)这个类别为计数0时,woe计算值不符合源代码中使用0.9代替频率0的计算公式,且对该变量其他分箱的woe计算值和自己用公式计算的值不一样;当Missing箱中的y = 1(bad)这个类别为计数不为0时,woe计算正确

ShichenXie commented 1 year ago

给个例子

994218208yhl commented 1 year ago

这个是我使用woebin分箱后计算输出的woe,以及我自己按照公式计算的woe,对比下来发现:当Missing箱中的y = 1(bad)这个类别为计数0时,woe计算值不符合源代码中使用0.9代替频率0的计算公式,且对该变量其他分箱的woe计算值和自己用公式计算的值不一样。

截屏2023-03-23 21 28 57
ShichenXie commented 1 year ago

你这里只在计算第一行时,用0替换为0.9了。包里是先将0替换成0.9之后,再统一计算所有的woe。

import numpy as np

bad = [0.9, 3, 13, 25, 37, 26]
good = [12, 97, 169, 304, 246, 125]

np.log(bad/np.sum(bad)) - np.log(good/np.sum(good))