前言
介绍一个超级、超级、超级强大的评分卡模型开发库 。很多从业者都知道信贷风控界有一个库叫做Scorecardpy。作者是谢士晨博士。今天为读者介绍另一个同样用于开发评分卡的库,名为toad。
⭐️toad是由厚本金融风控团队内部孵化,后开源并坚持维护的标准化评分卡库。其功能全面、性能稳健、运行速度快、问题反馈后维护迅速、深受同行喜爱。如果有些小伙伴没有一些标准化的信用评分开发工具或者企业级的定制化脚本,toad应该会极大的节省大家的时间。
本文以一个不能分享的数据为例,演示一下toad包的功能,同时为读者讲解一下评分卡的构建方法。没有真实数据又对此感兴趣的胖友,其实可以随便从网上找个二分类项目,或者使用一些风控竞赛的开源数据。
正文
⭐️首先加载本文所需的库。
import pandas as pd
from sklearn.metrics import roc_auc_score,roc_curve,auc
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import GridSearchCV as gscv
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
import glob
import math
import xgboost as xgb
import toad
⭐️加载数据。
#加载数据path = "D:/风控模型/data/"
data_all = pd.read_csv(path+"data.txt",engine='python',index_col=False)
data_all_woe = pd.read_csv(path+"ccard_all_woe.txt",engine='python',index_col=False)
#指定不参与训练列名
ex_lis = ['uid','obs_mth','ovd_dt','samp_type','weight',
'af30_status','submit_time','bad_ind']
#参与训练列名
ft_lis = list(data_all.columns)
for i in ex_lis:
ft_lis.remove(i)
⭐️划分训练集与测试集。
#训练集与跨时间验证集合
dev = data_all[(data_all['samp_type'] == 'dev') |
(data_all['samp_type'] == 'val') |
(data_all['samp_type'] == 'off1') ]
off = data_all[data_all['samp_type'] == 'off2']
⭐️EDA,探索性数据分析 同时处理数值型和字符型。
a = toad.detector.detect(data_all)
a.head(8)
⭐️特征筛选empty:缺失率上限
iv:信息量
corr:相关系数大于阈值,则删除IV小的特征
return_drop:返回删除特征
exclude:不参与筛选的变量名
dev_slct1, drop_lst= toad.selection.select(dev,dev['bad_ind'], empty = 0.7,
iv = 0.02, corr = 0.7, return_drop=True, exclude=ex_lis)
print("keep:",dev_slct1.shape[1],
"drop empty:",len(drop_lst['empty']),
"drop iv:",len(drop_lst['iv']),
"drop corr:",len(drop_lst['corr']))
keep: 584
drop empty: 637
drop iv: 1961