老饼讲解:一步一步上手学习
本文展示marital变量(婚姻状态)的详细分箱过程,以及代码实现示例。
marital变量是"客户的婚姻状态",它是一个枚举变量,0为未婚,1为已婚,2为离异,本节展示marital变量的详细分箱过程。
在正式分箱前,先对marital变量粗略分箱,试探marital变量的取值分布与badrate趋势,由于marital的枚举值不多,因此我们直接枚举出它所有的取值可能,统计结果如下:

按badrate升序来调整分组,结果如下:

已婚的由于有家庭,更为稳重,所以badrate会更低些,而离异的则可能本身就人品有问题,甚至可能是因为负债过重才导致离异,因此,已婚人群是最好的,其次是未婚的,最差的是离异的。
下面我们使用卡方分箱与ks分箱,看看两种算法对marital变量的分箱结果。
卡方自动分箱结果如下:

ks自动分箱结果如下:

可以看到,卡方分箱和手动分箱的IV都为0.064,KS分箱则只有0.043。
本节展示marital变量分箱过程中每一步的详细代码。
上述分箱的每一步过程,所对应的具体代码实现如下:
import bbbrisk as br
from bbbrisk import bins
# 加载数据
data = br.datasets.load_bloan() # 加载数据
x = data['marital'] # 变量
y = data['is_bad'] # 标签
br.display.pd.set(width=300,max_colwidth=30,max_rows=30) # 美化pandas的显示方式
# 枚举所有的取值可能
bin_set = bins.merge.allEnum(x)
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)
# 最终的分箱结果
bin_set = [1,0,2]
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)
# 自动分箱-卡方分箱
bin_set = bins.merge.chi2Enum(x,y)
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)
# 自动分箱-KS分箱
bin_set = bins.merge.ksEnum(x,y)
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)运行上述代码,每一步都会打印出如下的结果:

从结果中就可以看到每组的样本数、badrate和IV等等信息。
好了,以上就是marital变量的详细分箱过程,以及代码实现了~
这里展示了婚姻状态的分析代码,它的特点是"只有几个枚举值",这种情况我们只需要把所有枚举的badrate打印出来,然后结合业务背景,把相近的分为一组就可以了。
评论