logo资料库

个人贷款违约预测模型.docx

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
个人贷款违约预测模型
1 项目介绍
业务理解
2 数据处理
2.1 导入数据
2.2 生成被解释变量bad_good
2.3 数据整理
3 构建Logistic模型
4 模型验证
5 测试模型
6 参考文献
个人贷款违约预测模型 VIP 文章 2018 年 10 月 08 日 15:10:26 xjpcsdn 阅读数 6160 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/xjpcsdn/article/details/82966630 1 项目介绍 本项目通利用 Kaggle 平台 predict-loan-defaulters (网盘下载提取码: tkup)贷款数据,通过逻辑回归模型来对这些数据进行预测 判断,构建贷款违约预测模型,建立预测模型,预测正处于贷款期间的人的违约的概率 。 业务理解 在贷款管理方面,如果可以通过构建量化模型对客户的信用等级进行一定的区分。得知了每个账户的违约概率后,可以预估一下未来 的坏账比例,及时做好资金安排。也可以对违约概可能性较高的客户进行更加频繁的“关怀”,及时发现问题,以避免损失。 在这个量化模型中,被解释变量为二分类变量,因此需要构建一个排序类分类模型。而排序类分类模型中常使用的算法是逻辑回归。 1.2 数据介绍 实际业务中的一个人可以拥有多个账户号(account_id),一个账户号(account_id)可以对应有多个顾客(client_id),即多个顾 客共享一个账户号(account_id),但是每个帐户号(account_id)的所有者(即最高权限者)只能是一人。 账户号(account_id)与客户号(client_id)的对应关系,在表“disposition”中进行列示; 表“Loan”为银行提供给账户号(account_id)的服务; 表“Credit card”为银行提供给的顾客(client_id)的服务,每个客户可以申请一张信用卡; 贷款为基于账户的服务,一个账户(account_id)在一个时点最多只能有一笔贷款。
本次数据建模分析共用了八个数据表: 2 数据处理
2.1 导入数据 import pandas as pd import os os.chdir("data") loanfile = os.listdir() createVar = locals() for i in loanfile: # 数据文件存放在"data"文件夹里 if i.endswith("txt"): createVar[i.split('.')[0]] = pd.read_csv(i, encoding = 'gbk',sep=';') print(i.split('.')[0])          1 2 3 4 5 6 7 8 9 accounts card clients
disp district loans order trans         1 2 3 4 5 6 7 8  预览数据 loans.head()  1
loans.info()  1
2.2 生成被解释变量 bad_good 贷款表(loans)中的还款的状态可分为 A:代表合同终止,没问题 B:代表合同终止,贷款没支付 C:代表合同处于执行期,至今正常; D:代表合同处于执行期,欠债状态。对数据进行转换,使 A=0,B、D=1,C=2 bad_good = {'B':1, 'D':1, 'A':0, 'C': 2} loans['bad_good'] = loans.status.map(bad_good) loans.head()    1 2 3 2.3 数据整理
 借款人的年龄、性别 data2 = pd.merge(loans, disp, on = 'account_id', how = 'left') data2 = pd.merge(data2, clients, on = 'client_id', how = 'left') data2=data2[data2.type=='所有者'] data2.head()     1 2 3 4  借款人居住地的经济状况 data3 = pd.merge(data2, district, left_on = 'district_id', right_on = 'A1', how = 'left') data3.head()
  1 2  变异系数的计算:先计算每个账户余额的平均值和标准差,然后用标准差/均值。 data_4temp1 = pd.merge(loans[['account_id', 'date']], trans[['account_id','type','amount','balance','date']], on = 'account_id') data_4temp1.columns = ['account_id', 'date', 'type', 'amount', 'balance', 't_date'] data_4temp1 = data_4temp1.sort_values(by = ['account_id','t_date'])
分享到:
收藏