from https://zhuanlan.zhihu.com/p/609163039
westat 是一个pyminer开源项目的衍生产品,也可以作为一个独立的开源项目,核心功能是风控评分卡模型开发,功能与Scorecardpy和toad类型,可以实现数据描述统计、基本分箱、决策树分箱、WOE、IV计算,评分卡快速开发、,KS、ROC-AUC计算、模型排序性评估,LIFT计算,模型稳定性评估,PSI计算,模型应用分析,决策树画图等功能。
更多功能演示,可以查看github对应的examples目录——从这里开始.ipynb。
westat/从这里开始.ipynb at main · stat-fit/westat (github.com)
如有使用问题可随时联系作者
邮箱:statfit@hotmail.com
QQ: 454017698
微信:lixianglong9
一、安装
pip install westat
westat 已经上传到pypi官网和github,源码地址:stat-fit/westat: a python package for stat,caculate woe,iv, ks,auc,roc,psi and plot. (github.com)。
PyPi地址:westat · PyPI
二、功能模块
自带UCI数据集
westat自带了数据集uci_credit_card.csv数据集,方便快速上手进行学习和功能验证。
from westat import *
data=credit_card()
data.head()
数据探索
get_data_desc(data)
数据分布
get_data_dist(data)
数据分区
data_train,data_test = get_data_partition(data,0.25)
特征分箱
先大致分箱并检查变量的badRate趋势
get_woe_iv(data_train,col='AGE',qcut=5)
使用默认的决策树方法进行分箱
get_woe_iv(data_train,col='AGE')
按照指定的切分点分箱
get_woe_iv(data_train,'AGE',[-inf,20,30,40,50,inf])
查看WoE 和 IV
按照默认的决策树方法,计算WoE 和 IV,并查看WoE的分布
view_woe_iv(data,'AGE')
计算WOE 并绘图
plot_woe(data,'AGE')
计算 IV 并绘图
plot_iv(data_train,'PAY_0')
计算 IV 绘图,并返回数据
WOE 转换
data_train_woe = get_woe_transform(data_train_discrete)
data_train_woe.head()
批量计算全部特征的IV
# 使用默认的决策树分箱方法,批量计算数据集所有变量的IV
data_iv = get_data_iv(data_train)
data_iv
通过最小IV >= 0.02 和最大相关性 <=0.6 筛选特征
get_feature_by_ivcorr(data_train,col_iv=data_iv,keep=[],drop=[],min_iv = 0.02,max_corr=0.5,return_drop=False)
逐步回归筛选特征
col_result = stepwise_lr(data_train)
col_result
查看特征相关性图
plot_corr(data_train[col_keep])
评分卡开发
get_scorecard(data_train[col_keep + ['y']] ,data_bins_adjust)
检查模型共线性
通过方差膨胀系数 VIF可以检查模型的共线性,一般认为VIF取值大于7,则表示模型存在较为严重的共线性问题
get_vif(data_train_woe,data_train_woe.columns,return_data=True)
预测模型分数
data_train_score = get_predict_score(data_train,scorecard)
data_train_score
计算AUC 和 KS
plot_roc_ks(data_train,scorecard)
AUC 计算
get_auc(data_train_score)
KS 计算
get_ks(data_train_score)
KS计算并返回数据
查看评分卡分数分布 和 提升度
绘制提升度图
模型稳定型 PSI计算
get_psi(data_train_score,data_test_score)
批量计算所有特征的PSI
get_data_psi(data_train_score,data_test_score,precision=4)
模型应用分析-决策树分析
plot_tree(data_train_score[['Score','y']],max_depth=3,criterion='gini')
导出决策树图片
通过以下命令,可以导出决策树为图片文件 test.svg
plot_tree(data_train_score[['Score','y']],max_depth=3,criterion='gini',out_file='test.svg')