Python语言实现信用评分卡建模分析
- 背景介绍
信用评分技术是一种应用统计模型,其作用是为信用卡申请人计算一个风险评估分值的方法。 而这种用途的统计模型就称为信用评分卡。信用评分卡可以根据客户提供的资料、客户的历史数据以及第三方平台(支付宝蚂蚁信用、京东小白信用、苏宁分等)的数据,对客户的信用进行评估。信用评分卡的建立是以对大量数据的统计结果为基础,具有相当之高的准确性和可靠性。
本文通过对kaggle上的Give Me Some Credit数据的挖掘分析,结合信用评分卡的建立原理,从数据的预处理、建模分析、创建信用评分卡到建立自动评分系统,创建了一个简单的信用评分系统。并对建立基于AI 的机器学习评分卡系统的路径进行推测。 - 1.工作原理
客户申请评分卡是一种统计模型,它可基于对当前申请人的各项资料进行评估并给出一个分数,该评分能定量对申请人的偿债能力作出预判。
客户申请评分卡由一系列特征项组成,每个特征项相当于申请表上的一个问题(例如,年龄、银行流水、收入等)。每一个特征项都有一系列可能的属性,相当于每一个问题的一系列可能答案(例如,对于年龄这个问题,答案可能就有30岁以下、30到45等)。在开发评分卡系统模型中,先确定属性与申请人未来信用表现之间的相互关系,然后给属性分配适当的分数权重,分配的分数权重要反映这种相互关系。分数权重越大,说明该属性表示的信用表现越好。一个申请的得分是其属性分值的简单求和。如果申请人的信用评分大于等于金融放款机构所设定的界限分数,此申请处于可接受的风险水平并将被批准;低于界限分数的申请人将被拒绝或给予标示以便进一步审查。 - 流程:
导入数据
数据预处理
探索分析
特征选择
模型训练
模型评估
模型结果转评分
计算用户总分 - 2.数据处理
- 2.1数据导入
在anaconda下打开jupyter notebook处理数据,把一些必要的数据导入。
import numpy as np
import pandas as pd
data = pd.read_csv('./cs-training.csv')
data = data.iloc[:,1:]
data.head() #默认显示前五行数据
预览数据
可见,特征量MonthlyIncome有29731个缺失值,NumberOfDependents有3924个缺失值。
为方便理解,将英文字段转换成中文字段
states={'SeriousDlqin2yrs':'好坏客户','RevolvingUtilizationOfUnsecuredLines':'可用额度比值','age':'年龄','NumberOfTime30-59DaysPastDueNotWorse':'逾期30-59天笔数','DebtRatio':'负债率','MonthlyIncome':'月收入','NumberOfOpenCreditLinesAndLoans':'信贷数量','NumberOfTimes90DaysLate':'逾期90天笔数','NumberRealEstateLoansOrLines':'固定资产贷款量','NumberOfTime60-89DaysPastDueNotWorse':'逾期60-89天笔数','NumberOfDependents':'家属数量'}
df.rename(columns=states,inplace=True)
df.head() #修改英文字段名为中文字段名
# 0对应好客户,1对应坏客户
- 2.2数据预处理
- 2.2.1去除重复值
print("重复值的数量:", data.shape[0] - data.drop_duplicates().shape[0])
data = data.drop_duplicates()
- 2.2.2缺失值处理
数据缺失会导致一些不能处理缺失值的分析方法无法应用,因此在信用风险评级模型开发的第一步就需要进行缺失值处理。
for var in data.columns:print("%s缺失值的占比为%.2f%%" % (var, 100*(df[var].isnull().sum()/df.shape[0])))
SeriousDlqin2yrs缺失值的占比为0.00%
RevolvingUtilizationOfUnsecuredLines缺失值的占比为0.00%
age缺失值的占比为0.00%
NumberOfTime30-59DaysPastDueNotWorse缺失值的占比为0.00%
DebtRatio缺失值的占比为0.00%
MonthlyIncome缺失值的占比为19.56%
NumberOfOpenCreditLinesAndLoans缺失值的占比为0.00%
NumberOfTimes90DaysLate缺失值的占比为0.00%
NumberRealEstateLoansOrLines缺失值的占比为0.00%
NumberOfTime60-89DaysPastDueNotWorse缺失值的占比为0.00%
NumberOfDependents缺失值的占比为2.56%
月收入MonthlyIncome的缺失率比较大,所以采用随机森林法进行填补。
def set_missing(df):# 把已有的数值型特征取出来process_df = df.ix[:,[5,0,1,2,3,4,6,7,8,9]]# 分成已知该特征和未知该特征两部分known = process_df[process_df.MonthlyIncome.notnull()].as_matrix()unknown = process_df[process_df.MonthlyIncome.isnull()].as_matrix()# X为特征属性值X = known[:, 1:]# y为结果标签值y = known[:, 0]# fit到RandomForestRegressor之中rfr = RandomForestRegressor(random_state=0, n_estimators=200,max_depth=3,n_jobs=-1)rfr.fit(X,y)# 用得到的模型进行未知特征值预测predicted = rfr.predict(unknown[:, 1:]).round(0)print(predicted)# 用得到的预测结果填补原缺失数据df.loc[(df.MonthlyIncome.isnull()), 'MonthlyIncome'] = predictedreturn df
家庭成员NumberOfDependents变量缺失值比较少,可以直接删除,对总体模型不会造成太大影响。
# 缺失值删除
data=data.dropna()
- 2.2.3异常值处理
异常值是指明显偏离大多数抽样数据的数值,比如个人客户的年龄大于100或小于0时,通常认为该值为异常值。找出样本总体中的异常值,通常采用离群值检测的方法。 离群值检测的方法有单变量离群值检测、局部离群值因子检测、基于聚类方法的离群值检测等方法。
在本数据集中,采用单变量离群值检测来判断异常值,采用箱线图。
对于age变量而言,我们认为大于100岁小于等于0岁的为异常值,由箱线图可知,异常值样本不多,故直接删除。
# 选出 3,7,9做箱线图,选出年龄来做图观察
import matplotlib.pyplot as plt#导入图像库
%matplotlib inline
data_box = data.iloc[:,[3,7,9]]
data_box.boxplot()
Python语言实现信用评分卡建模分析相关推荐
- 数据挖掘项目:银行信用评分卡建模分析(上篇)
kaggle上的Give Me Some Credit一个8年前的老项目,网上的分析说明有很多,但本人通过阅读后,也发现了很多的问题.比如正常随着月薪越高,违约率会下降.但对于过低的月薪,违约率却为0 ...
- 数据挖掘项目:银行信用评分卡建模分析(下篇)
以下是银行信用评分卡建模分析下篇的内容,包括特征工程,构建模型,模型评估,评分卡建立这四部分.其中如果有一些地方分析的不正确,希望大家多多指正,感谢! 上篇文章的链接:数据挖掘项目:银行信用评分卡建模 ...
- 基于Python的信用评分卡建模分析
1.背景介绍 信用评分技术是一种应用统计模型,其作用是对贷款申请人(信用卡申请人)做风险评估分值的方法.信用评分卡模型是一种成熟的预测方法,尤其在信用风险评估以及金融风险控制领域更是得到了比较广泛的使 ...
- python信用评分卡_基于Python的信用评分卡模型分析(二)
上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...
- 超详细用Python进行信用评分卡建模【kaggle的give me some credit数据集】【风控建模】
1 信用评分卡模型简介 信用评分卡是一个通过个人数据对其还款能力.还款意愿进行定量评估的系统.在消费金融行业,信用评分卡主要有三种(A.B.C卡): A卡:申请评分卡,贷前阶段使用,在客户获取期,建立 ...
- python金融应用的好书推荐卡_【荐书】智能风控:Python金融风险管理与评分卡建模(梅子行 毛鑫宇 著)...
原标题:[荐书]智能风控:Python金融风险管理与评分卡建模(梅子行 毛鑫宇 著) 图书简介 风险管理是金融的核心,信贷场景下的风险,很大程度上取决于贷款人的信用风险.因此,如何对贷款用户的信用风险 ...
- 银行信用评分卡建模原理
今天学习了一下评分卡的内容,博主自己也对这个不了解,由于业务的需求,今天自学了下相关的内容.我把自己学习的一些东西整理下,发到这个博客里面. 背景 1.先讲一下背景内容,什么是评分卡:其实评分卡呢,就 ...
- 基于Python的信用评分卡模型分析
目录 一.项目流程 二.数据获取 三.数据预处理 3.1 缺失值处理 3.2 异常值处理 3.3 数据切分 信用风险计量体系包括主体评级模型和债项评级两部分.主体评级和债项评级均有一系列评级模型组成, ...
- python风险评分卡系统_智能风控:Python金融风险管理与评分卡建模(梅子行毛鑫宇著)...
推荐序 前言 第1章 信用管理基础 /1 1.1 信用与管理 /2 1.2 风控术语解读 /3 1.2.1 信贷基础指标 /4 1.2.2 信贷风险指标 /5 1.3 企业信贷风控架构 /7 1.4 ...
最新文章
- linux snmp更改端口号,snmpd服务无法更改默认端口
- linux 单用户模式 救援模式 忘记root密码的两种解决办法
- python list列表排序的两种方法及实例讲解
- 拒绝不靠谱的需求:怎样确定需求才是正确的?
- 路由选择协议笔记ripv1、ripv2、ripng
- OAuth 2.0 扩展协议之 PKCE
- FEIM Studios 团队欢迎您加入
- Avro 数据格式和命令行
- canvas绘制字体
- ORACLE startup报错之ORA-01154ORA-01155ORA-01033ORA-03113
- Java -- AWT 画图,图像处理
- 一本书学会可视化设计 pdf_【推荐给设计师看的11本书】电子版PDF
- ARM-Linux 交叉编译工具链安装
- 宏基笔记本linux系统安装图解,宏基Aspire 4738ZG在linpus linux下安装XP系统教程
- 爬虫练习案例:交通路况
- Linux下的Samba学习(二)------用实验快速学习Samba服务器设置
- [上海博物馆全集列表]
- 漏电开关跳闸,把火线和零线对换就不跳了,这是什么原因?
- 建网站论坛需要多大服务器,论坛搭建如何选择服务器
- 要想成为一个开发组长,我个人认为要注意一下几点
热门文章
- 怎么解释有些拆机料的EMMC的容量明显减少的情况(通常是减半)!
- opencv学习 Resize and Crop
- 如何将本图族保存为一个rfa文件?
- Zabbix与乐维监控对比分析(一)——架构、性能篇
- 【el-table在表格外的input输入框输入内容实时查询出表格相应数据】
- 吃鸡一直显示服务器维护发生了错误,吃鸡一直显示BE服务器错误怎么办 | 手游网游页游攻略大全...
- 网上书店系统毕业设计
- 此平台不支持虚拟化的 AMD-V/RVI
- DEM 提取高程点(自动批量)
- POJ - 2528 Mayor's posters (浮水法+线段树/离散化+线段树)