比如在支付领域,通过挖掘商户的交易数据,分析商户是否有欺诈、盗刷、赌博、套现等风险。
对于有风险的商户,及时进行关闭处理,或者实时中断交易,从而保护个人的资金安全。
在金融领域,通过客户的历史还款和多头借贷等数据,挖掘客户的还款能力和还款意愿,进行贷前评估。
本文和你一起探索数据挖掘常用的函数toad.metrics.KS_bucket。
安装toad包
导入数据
KS_bucket函数参数详解
应用KS_bucket函数计算变量的KS值
4.1 等频分割
4.2 等距分割
循环计算所有变量的KS值

首先打开cmd,安装toad包,安装语句如下:
pip install toad

背景:现需分析7252个客户的多头、关联风险、法院执行、风险名单和逾期信息,用于构建客户的贷前评分卡A卡。
在进行评分卡搭建之前需要对客户的信息进行筛选,挑选出和客户逾期信息相关性高的变量。
抽取部分指标用于本文的统计指标展示,具体分析如下。
#[1]读取数据import osimport toadimport numpy as npimport pandas as pdos.chdir(r'F:\公众号\70.数据分析报告')date = pd.read_csv('testtdmodel1.csv', encoding='gbk')date.head(3)


有时我们知道一个函数,但是记不清楚这个函数有哪些参数和具体的使用方法。
可以使用Python中自助查看帮助文档的方法,很方便就可以看到这个函数里面有哪些参数,这些参数需要填什么值。
具体语句如下:
help(toad.metrics.KS_bucket)Help on function KS_bucket in module toad.metrics:KS_bucket(score, target, bucket=10, method='quantile', return_splits=False, **kwargs)calculate ks value by bucketArgs:score (array-like): list of score or probability that the model predicttarget (array-like): list of real targetbucket (int): n groups that will bin intomethod (str): method to bin score. `quantile` (default), `step`return_splits (bool): if need to return splits of bucketReturns:DataFrame
参数详解:
score:模型预测出来的分数或概率列表,可以推广到自变量x。
target:真实的目标变量列表。
bucket:分箱的箱数,默认是10箱。
method:分箱的方法,包含等频分箱和等距分箱。
return_splits:是否返回分箱的分割点,如果值等于True则返回,否则不返回,默认不返回。

1 等频分割
接着,调用toad库下的KS_bucket函数,设置10等分等频分箱,进行数据统计分析,语句如下:
d1=toad.metrics.KS_bucket(date['7天内申请人在多个平台申请借款'], date['y'],bucket=10,method='quantile',return_splits=True)d1[0]

第二个数据具体展示如下:

d1[0].to_csv('d1.csv', encoding='gbk')
常用指标详解:
min列展示分箱区间的左端点。
2 等距分割
为了对比,调用toad库下的KS_bucket函数,设置10等分等距分箱,进行数据统计分析,语句如下:
d1=toad.metrics.KS_bucket(date['7天内申请人在多个平台申请借款'], date['y'],bucket=10,method='step')d1


最后,挑选需要统计KS值的变量,先展示全体变量,语句如下:
columns = list(date.columns)columns
得到结果:
['input_time','申请状态','历史最高逾期天数.x','原始分','历史最高逾期天数.y','y','Ratio','7天内申请人在多个平台申请借款','1个月内申请人在多个平台申请借款','3个月内申请人在多个平台申请借款','7天内借款人手机申请借款平台数','1个月内借款人手机申请借款平台数','3个月内借款人手机申请借款平台数','7天内借款人身份证申请借款平台数','1个月内借款人身份证申请借款平台数','3个月内借款人身份证申请借款平台数','7天内关联P2P网贷平台数','1个月内关联P2P网贷平台数','3个月内关联P2P网贷平台数','7天内申请人关联融资租赁平台数','1个月内申请人关联融资租赁平台数','3个月手机号关联身份证数','1个月内申请人关联一般消费分期平台数','3个月内申请人关联一般消费分期平台数','风险名单占比','一度关联节点个数','二度关联节点个数','一度风险名单个数','二度风险名单个数','一度风险名单占比','二度风险名单占比','X3个月内申请人手机号作为第二联系人手机号出现的次数','X3个月内申请人手机号作为前三联系人手机号出现的次数','是否命中法院执行模糊名单','是否命中法院结案模糊名单','是否命中手机风险关注名单','是否命中身份证风险关注名单','命中中风险关注名单笔数','客户异常借款笔数','信用异常笔数','执行标的','申请人执行标的是否超过100000','3个月内申请人关联融资租赁平台数','3个月身份证关联手机号数','三个月银行相关平台数']
从第七变量开始,就是我们想分析的自变量,写循环一次性统计所有需要分析的变量,语句如下:
d1=toad.metrics.KS_bucket(date[columns[7]], date['y'],bucket=10,method='quantile')d1['name'] = columns[7]all_woe = d1for i in columns[8:]:#print('变量为:', i)d1=toad.metrics.KS_bucket(date[i], date['y'], bucket=10,method = 'quantile')d1['name'] = iall_woe = all_woe.append(d1)all_woe.to_csv('all_woe_10deg.csv', encoding='gbk')
得到结果如下:

至此,在Python中应用toad.metrics.KS_bucket进行数据挖掘已经讲解完毕,感兴趣的同学可以自己实现一遍
。


扫一扫关注我
19967879837
联系微信号、手机号