评分卡建模工具
说到评分卡建模工具,做过评分卡的应该都能想到谢博士的scorecardpy和专为工业界模型开发设计的Python工具包–Toad,两者相比,scorecardpy更加轻量级,且依赖较少,可以满足大多数场景下的评分卡构建。
为了使评分卡建模流程更加便捷,该Python包针对建模中各个关键步骤都提供了现成的函数,如下:
数据集划分 (split_df)
变量筛选(iv, var_filter)
变量分箱(woebin, woebin_plot, woebin_adj, woebin_ply)
分数转换(scorecard, scorecard_ply)
效果评估(perf_eva, perf_psi)
基于github主页上提供的案例,对每一步操作进行详细解读:
数据准备
import scorecardpy as sc
加载德国信用卡相关数据集
dat = sc.germancredit()
得到的数据集情况如下:
#通过 var_filter() 函数筛选后,数据集保留以下13个变量
'''默认的参数配置为:iv_limit=0.02, missing_limit=0.95, identical_limit=0.95,
即当某个变量的 IV 值小于0.02,或缺失率大于95%,或同值率(除空值外)大于95%,
则剔除掉该变量。
此外,该方法还内置了除上述以外的其他参数:
def var_filter(dt, y, x=None, iv_limit=0.02, missing_limit=0.95,
identical_limit=0.95, var_rm=None, var_kp=None, return_rm_reason=False, positive='bad|1')
其中各参数含义如下:
varrm可设置强制保留的变量,默认为空;
varkp可设置强制剔除的变量,默认为空;
return_rm_reason可设置是否返回剔除原因,默认为不返回(False);
positive可设置坏样本对应的值,默认为“bad|1”'''
#数据集划分,划分为训练集和测试集
train,test=sc.split_df(dt_s,'creditability').values()
'''split_df()函数包括以下参数:
def split_df(dt, y=None, ratio=0.7, seed=186)
默认的切分比例为7:3,也可自行修改参数ratio设置不同的切分比例。'''
'''变量分箱
可通过woebin()函数对全部变量进行自动分箱,并基于woe_bin的结果,
使用woebin_plot对各变量分箱的count distribution和bad pr