老饼讲解:一步一步上手学习
本文展示due30变量(逾期30天的次数)的详细分箱过程,以及代码实现示例。
due30变量是"客户逾期30天的次数",它是一个整数数值变量,下面详细讲解due30变量的分箱过程。
在正式分箱前,先对due30变量粗略分箱,试探due30变量的取值分布与badrate趋势。
由于due30的取值是不太大的整数,因此我们直接枚举出它所有的取值可能,统计结果如下:

我们将badrate较连续相似的划分为一箱,最终以0、1、2、(3,4)、>4作为分箱,分箱结果如下:

可以看到,badrate单调增长。
下面我们使用卡方分箱与ks分箱,看看两种算法对due30变量的分箱结果。
卡方自动分箱结果如下:

ks自动分箱结果如下:

可以看到,卡方分箱和手动分箱效果类似,而KS分箱则略差,手动分箱的区分度更明显和合理。
本节展示due30变量分箱过程中每一步的详细代码。
上述分箱的每一步过程,所对应的具体代码实现如下:
import bbbrisk as br
from bbbrisk import bins
# 加载数据
data = br.datasets.load_bloan() # 加载数据
x = data['due30'] # 变量
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 = [0,1,2,(3,4),[4,'+']]
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)
# 自动分箱-卡方分箱
bin_set = bins.merge.chi2(x,y)
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)
# 自动分箱-KS分箱
bin_set = bins.merge.ks(x,y)
bin_stat = bins.Bins(bin_set).binStat(x,y)
print(bin_stat)运行上述代码,每一步都会打印出如下的结果:

从结果中就可以看到每组的样本数、badrate和IV等等信息。
好了,以上就是due30变量的详细分箱过程,以及代码实现了~
due30是一个整数变量,这里我们展示了due30的分析过程,其实也就是展示了整数变量的分析过程,其它的整数变量也是类似的分析就可以了,在分析时需要注意"0"的特殊意义,因为它背后代表的是"没有",相对其它数值,在业务意义上它可以算是独立的一类。
评论