python银行信贷风险分析_LendingClub贷款数据分析(python代码)

更新时间:2023-07-01 13:42:59 阅读: 评论:0

python银⾏信贷风险分析_LendingClub贷款数据分析(python
代码)
背景
⽬的
数据集获取
数据处理南通公积金
⼀、背景
公司背景
Lending Club 创⽴于2006年,主营业务是为市场提供P2P贷款的平台中介服务,公司总部位于旧⾦⼭。
公司在运营初期仅提供个⼈贷款服务,⾄2012年平台贷款总额达10亿美元规模。
2014年12⽉,Lending Club在纽交所上市,成为当年最⼤的科技股IPO。
2014年后公司开始为⼩企业提供商业贷款服务。
2015年全年Lending Club平台新设贷款⾦额达到了83.6亿美元。
2016年上半年Lending club爆出违规放贷丑闻,创始⼈离职,股价持续下跌,全年亏损额达1.46亿美元。
作为P2P界的⿐祖,Lending club跌宕起伏的发展历史还是挺吸引⼈的。
此处再顺便介绍⼀下什么是P2P。概括起来可以这样理解,“所有不涉及传统银⾏做媒介的信贷⾏为都是P2P”。简单点来说,P2P公司不会出借⾃有资⾦,⽽是充当“中间⼈”的⾓⾊,让借款⼈与出借⼈相亲相爱。
借款⼈⾼兴的是拿到了贷款,⽽且过程快速便利,免遭传统银⾏⼿续众多的折磨;出借⼈⾼兴的是借出资⾦的投资回报远⾼于存款利率;那么中间⼈⾼兴的是⽤服务换到了流⽔(拿的便是事成之后的抽成) 最后实现三赢。
贷款标准
借款⼈提交申请后,Lending Club 会根据贷款标准进⾏初步审查。贷款⼈需要满⾜以下标准才能借款:
日本幕府时代1.FICO 分数在660 分以上
FICO分数等级划分
2.债务收⼊⽐例低于40%
3.信⽤报告反应以下情况:⾄少有两个循环账户正在使⽤,最近6 个⽉不超过5 次被调查,⾄少36 个⽉的信⽤记录
贷款等级
贷款分为A、B、C、D、E、F、G 7 个等级,每个等级⼜包含了1、2、3、4、5 五个⼦级。
⼆、⽬的
研究影响贷款等级的相关因素,并探寻潜藏在数据背后的⼀些规律
三、数据集获取
选取2016年第⼀季度、第⼆季度的数据集以及特征变量的说明⽂档。
官⽹上下载数据集
已翻译的特征说明⽂档
说明:部分重要的特征变量似乎缺失,多次下载的数据集中缺少fico分数、fico_range_low、fico_range_high等与fico相关的特征,所以在形成结论进⾏总结的时候,这些特征的结论将从相关的报告中获取。
四、数据处理
在对数据进⾏处理前,我们需要对数据有⼀个整体的认识
lendData.info()
RangeIndex: 133891 entries, 0 to 133890
Columns: 110 entries, id to total_il_high_credit_limit
dtypes: float64(86), object(24)
memory usage: 100.1+ MB
从上述的信息中可以看出:
1.133891⾏数据,110个特征变量
2.110个特征变量中有86个是浮点数类型,24个是Object对象。
获取到的信息还是太少,接下来可以通过下⾯的⽅法,得到数值型数据和Object基类的数据分布。
关于奋斗的句子lendData.lect_dtypes(include=['O']).describe().T\
.assign(missing_pct=lendData.apply(lambda x : (len(x)-x.count())/len(x)))
筛选出object对象的对应信息,可分别得到⾮空值数量、unique数量,最⼤频数变量,最⼤频数,以及新添加⼀列特征变量missing_pct,表⽰值缺失的⽐重。
Object基类对象的数据分布情况
从图表中可以得到部分信息:
1.贷款共7个等级,占⽐最多的是B级
2.还款的形式有两种,占⽐最多的是36个⽉
3.贷款⼈中⼤多数⼈⼯龄10+年
4.贷款⼈的房屋状况⼤多是抵押贷款
5.⼤多数⼈贷款的⽬的是债务整合
6.id与desc特征的数据缺失率⾼达0.99,间接表明这两个特征可以删除掉。
同样可以按照这种⽅式对浮点型的数据进⾏数据预览,得到均值、标准差、四分位数以及数据的缺失⽐重等信息。
空值、异常值处理
得到上述的信息后,我们可以根据缺失⽐重进⾏数据的清洗。在这⾥按照60%的阈值删除数据。最后得到100个特征变量。
放炮子原始数据集存在异常值情况,如特征变量emp_length(⼯龄)数据中包含‘n/a’的数据,产⽣原因为公式应⽤的错误⽆法找到原值,⽽且占⽐较⼩,清除后剩余124947⾏数据。
除去异常值,还包括对空值的处理,对于较为重要的特征来说,如果缺失值占⽐较⼩,可以通过填补均值进⾏处理。
application_joint['il_util'] = application_joint['il_util'].replace('NaN',application_joint['il_util'].mean())
特征筛选
入职登记表免费下载特征筛选在数据预处理中是很关键的⼀步,这⼀步对后序的分析、挖掘有很⼤的影响。
经过初步的数据清洗后,我们得到了100个特征变量,这其中包括⼀些与最终研究⽬的完全⽆关的变量,⼀部分⽅差值很⼩、⽆法得到更多信息的变量。虽然100个特征变量不算多,但如果去掉⼀些⽆⽤的特征减少数据维度,且有⼀定的降噪效果,那么这⼀步是必须要做的。
这⾥的筛选标准如下:
1.与最终研究⽬的⽆关的特征
2.⽅差值太⼩,⽆法获取有⽤信息的特征
3.不可解释的特征
我们的研究⽬的是探讨影响贷款等级的众多因素,关键特征grade代表的就是不同的贷款等级,如果想剔除与grade⽆关的特征,那么可以⽤相关系数来处理。
相关系数:研究变量之间线性相关程度的量
具体要如何处理呢?特征grade中包含A、B、C、D等七个贷款等级,做数值计算之前,需要将Object类型转换为数值类型。
#贷款等级Object类型转为数值类型
grade = lendData['grade'].replace('A',1)
grade = place('B',2)
grade = place('C',3)
grade = place('D',4)
grade = place('E',5)
grade = place('F',6)
grade = place('G',7)
转换过后,我们可以将特征中所有的数值类型的数据与贷款等级进⾏相关系数计算。
dicti = {} #计算两组数的相关系数
for i in range(0,len(lendData.lect_dtypes(include=['float64']).columns)):
迎新年作文try:
lumns[i]] = np.corrcoef(lumns[i]].dropna(),grade)[0,1]
lumns[i],np.corrcoef(lumns[i]].dropna(),grade)[0,1])
except Exception as e:
continue
经过数据可视化得到下⾯的相关系数分布图。
数值型特征与贷款等级的相关系数分布
经过筛选后,得到54个特征(不包括未转换数据类型的其他Object类型特征),其中total_rec_int(⽬前为⽌收到的利息)、bc_util(银⾏卡流动余额与信贷限额⽐率)、acc_open_past_24mths(过去24个⽉内的交易量)、open_il_12m(过去12个⽉内开设的分期付款帐户数)等特征与贷款等级呈正相关关系。total_rev_hi_lim(总的周转信⽤额度)、total_rec_prncp(迄今收到的本⾦)、mths_since_recent_bc(⾃最近银⾏卡帐户开⽴以来的⼏个⽉)等特征与贷款等级呈明显的负相关关系。
同时,我们注意到这样的⼀个问题,在相关系数的分布中,有⼀部分相关系数较⾼的特征是由贷款等级来确定的(⽐如说贷款总⾦额、未偿还的本⾦、迄今收到的本⾦、利息等等,都是确定贷款等级之后才有的信息),⽽不是决定贷款等级的因素,因果关系不成⽴。这样的特征即使于贷款等级相关性⾼,也与最终的⽬的⽆关。
相关系数只是筛选的⼀种标准,具体的特征留存还需要根据对贷款业务的理解,有所保留的删减特征。
之后我们对上述的54个特征进⾏⽅差筛选,对于⽅差值较⼩、变化幅度较⼩的特征进⾏剔除,当然要综合考虑。
from sklearn.feature_lection import VarianceThreshold
#⽅差选择法,返回值为特征选择后的数据 #参数threshold为⽅差的阈值
lend = VarianceThreshold(threshold=2).fit_transform(lendData.lect_dtypes(include=['float64']))
特征、相关系数、⽅差信息⼀览图
针对上述的特征进⾏进⼀步的⽅差筛选。其中特征collections_12_mths_ex_med⽆法解释/与研究⽬标⽆关,delinq_2yrs、
acc_now_delinq很重要,其余特征⽆法判断,先保留看看。
特征重要性
经过初步特征筛选后,我们发现相关系数因素有些单⼀,并不能确定哪个特征更为重要,更需要进⾏深度探索。经过搜索得知GBDT算法可以算出变量的重要性。因为lending club贷款数据中并不包含“分类”变量target,所以GBDT通⽤的特征选择⽅法⽆法使⽤。
经过搜索找到了造好的轮⼦(取个巧),直接得到了算法计算后的结果,如下图所⽰。
差之毫厘谬以千里其中dti(借款⼈每⽉已还债务总额占总债务计算的⽐率)、bc_util(所有银⾏卡账户的总流动余额与信贷限额/信⽤额度的⽐率)、
mo_sin_old_rec_ti_op(⾃最早的周转帐户开⽴以来的⽉份)等特征较为重要。
Tip: 综上结合相关系数与特征重要性,去掉⽆因果关系的、重要性较低的特征,我们得到如下的筛选后的特征。
最终特征筛选结果(按特征重要性排序)
可能⼤家会注意到在筛选特征的过程中只针对数值型特征进⾏筛选,那么Object类型的特征呢?
关于孝的名言
根据前⾯得到的信息,共有24个Object类型的特征,其中有⼤部分特征是贷款后的才有的信息,并不能决定贷款等级。⽽且,在查看特征重要性中已包括Object类型的特征,如home_ownership(房屋所有权状态,包括租赁、拥有、贷款抵押三种类型的值),其余特征并不在考虑范围内。
数据的前期处理部分就到这⾥了,下⼀篇⽂章将主要对数据进⾏可视化分析、结论总结等。其实⼤部分的⼯作都在数据处理部分,可视化占较少的⼀部分时间。处理好了数据对后续的⼯作有很⼤的影响。
附上在数据分析的过程中遇到的很好的参考资料,包括特征⼯程(包括对特征的处理、筛选等)、已有的成型的数据分析⽂章等。

本文发布于:2023-07-01 13:42:59,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1072209.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:特征   数据   贷款
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图