评分卡模型之数据预处理
1. 简要介绍
评分卡是信用风险评估和互联网金融领域常用的建模方法. 评分卡模型通常适用于信用评估领域, 例如信用卡风险评估和贷款发放业务.
在银行借贷场景中, 评分卡就可以用来衡量客户的风险大小. 一般来说, 评分卡分数越高, 客户的信用越好, 风险越小.
评分卡开发流程:
2. 数据处理
首先我们的数据是.csv形式, 包含150000个样本, 10个特征, 1个标签, 第一列为索引.
data = pd.read_csv(r"rankingcard.csv", index_col=0)
SeriousDlqin2yrs:出现90天或更长时间的逾期行为 (标签 )
RevolvingUtilizationOfUnsecuredLines:贷款以及信用卡可用额度与总额度比例
age:借款人借贷年龄
NumberOfTime30-59DaysPastDueNotWorse:过去两年内出现30-59天逾期但是没有发展的坏的次数
DebtRatio:每月偿还债务,赡养费,生活费用除以月收入
MonthlyIncome:月收入
NumberOfOpenCreditLinesAndLoans:开放式贷款和信贷数量
NumberOfTimes90DaysLate:过去两年内出现90天逾期或更坏的次数
NumberRealEstateLoansOrLines:抵押贷款和房地产贷款数量,包括房屋净值信贷额度
NumberOfTime60-89DaysPastDueNotWorse:过年两年内出现60-89天逾期但是没有发展得更坏的次数
NumberOfDependents:家庭中不包括自身的家属人数(配偶,子女等)
data.info:
2.1 去除重复值
在现实中我们难免会存在重复的数据样本, 即存在两个或两个以上样本中的所有特征值都一样, 这可能是人为失误, 也可能是机器失误. 对于两个人来说, 名字、性别、工资这些特征, 确实是存在相同的可能性, 但再加上借贷数量、家属人数等特征完全相同, 这大概率是不可能的.
利用dataframe.duplicated()查看一下数据中是否存在相同样本.
flag = data.duplicated()
函数返回的是一个布尔序列. <class 'pandas.core.series.Series'>
False代表跟上面样本不重复, True则代表重复.
由于样本数量太多, 这样看不明显, 再利用.sum()对其计数.
print("sum:{}".format(flag.sum()))
得到:
sum:609
我们知道, True =1 , Flase =0, 那么就存在609个重复样本, 删去.
data.drop_duplicates(inplace=True)
然后我们再查看数据的信息:
重复值就删掉了. 当然你可以不必检查, 直接使用 .drop_duplicates()函数
不要忘了重置数据的索引:
data.reset_index(drop=True)
或者:
data.index = range(data.shape[0])
2.2 填补缺失值
从上面的data.info得知, "MonthlyIncome" 以及 "NumberOfDependents" 这两个特征缺失了一些数据, 特别是 "MonthlyIncome".
利用 .isnull()函数, 我们发现 "NumberOfDependents"仅缺失了2.5%, 我们可以考虑使用均值来进行填补.
这里我们使用 .fillna函数(), 同时恢复索引
data["NumberOfDependents"].fillna(data["NumberOfDependents"].mean(), inplace=True)
data.reset_index(drop=True)
而 "MonthlyIncome", 收入, 缺失了大约有20%, 并且对于评分卡模型来说, 收入是一个非常重要的评分因素, 所以不能简单得采取均值去填补.
我们可采取这样的思想, “既然我们能使用A, B , C去预测 D, 那也可使用A, C, D去预测B ”.
对于一个拥有n个特征的数据来说, 若其特征X有缺失值, 我们就把特征X作为标签, 其他n-1个特征和原本的标签组成新的特征矩阵. 那么X中没有缺失的部分, 就作为Y_train, 缺失的部分, 就是需要我们预测的部分, 作为Y_test.
这里我们可以采用随机森林算法来对缺失部分进行预测. 随机森林介绍
from sklearn.ensemble import RandomForestRegressorX = data.iloc[:, 1:]
y = data.iloc[:, 0]fill = X.loc[:, "MonthlyIncome"] # 获取有缺失值的那一列特征矩阵X_new = pd.concat([X.loc[:, X.columns != "MonthlyIncome"], y], axis=1) # 将其他特征和标签重新组合成新矩阵Ytrain = fill[fill.notnull()]
Ytest = fill[fill.isnull()] # 利用notnull()和isnull()返回的索引得到Yrain, YtestXtrain = X_new.loc[Ytrain.index, :]
Xtest = X_new.loc[Ytest.index, :] # 同样得到Xtrain, Xtestrgr = RandomForestRegressor(n_estimators=100)
rgr = rgr.fit(Xtrain, Ytrain)
Ypredict = rgr.predict(Xtest)
最后, 将得到的预测值对特征 “MonthlyIncome”缺失的地方进行填充.
data.loc[data.loc[:, "MonthlyIncome"].isnull(), "MonthlyIncome] = Ypredict
data.info:
2.3 小结
往往我们从生活中获取到的数据都是不完整, 存在错误的数据, 这样的数据不能直接被拿来使用. 为了保证数据的完整性和准确性, 我们则需要采取一系列手段对原始数据进行处理. 如上文所述.
关于处理数据异常值, 由于银行数据的特殊性, 举个例子, 月收入很高很高这样的情况, 它是可以存在的, 是合理的. 那么我们要处理的应该是不符合现实的数据, 例如收入为负数等等. 若异常的数据样本的量少, 可以考虑直接删除.
另外数据还可能存在样本不均衡问题, 由于本人能力有限, 这里就不再阐述.
More information:
评分卡模型
信用标准评分卡模型开发及实现
评分卡模型之数据预处理相关推荐
- 机器学习之金融信贷风控(二)申请评分卡中的数据预处理和特征衍生(未完待续)
申请评分卡中的数据预处理和特征衍生 模型处理的一般流程: 构建信用风险模型的特征 获取数据 链接:https://pan.baidu.com/s/1CsY11ArZ6YK3o1icghWj2w 提取码 ...
- python信用评分卡_基于Python的信用评分卡模型分析(二)
上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...
- (信贷风控八)行为评分卡模型(B卡)的介绍
(八)行为评分卡模型(B卡)的介绍 在信贷业务中,评分卡分为三种: 申请评分卡(A卡) 行为评分卡(B卡) 催收评分卡(C卡) 本篇我们来学习一下行为评分卡(B卡),首先什么是行为评分卡呢,行为评分卡 ...
- (信贷风控九)行为评分卡模型python实现
python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...
- (信贷风控九)行为评分卡模型python实现(详细代码+注释+讲解)
(九)行为评分卡模型python实现(详细代码+注释+讲解) 浅谈行为评分卡 我们知道行为评分卡只要用在信贷的贷中环节,贷中指的是贷款发放之后到期之前的时间段,其实行为评分卡和申请评分卡在实现上没有太 ...
- 申请评分卡模型数据预处理
一.获取数据 2.1 数据获取 数据的获取途径主要有两个: 金融机构自身字段:例用户的年龄,户籍,性别,收入,负债比,在本机构的借款和还款行为等: 第三方机构的数据:如用户在其他机构的借贷行为,用户的 ...
- 玩转大数据风控—利用评分卡模型实现信用评级
玩转大数据风控-利用评分卡模型实现信用评级 一.算法介绍 1. 什么是逻辑回归? 2. 逻辑回归为何逻辑 ? 3. 逻辑回归怎么回归? 二.构建流程 1.数据处理 1.1 数据清理 1.2 缺失值处理 ...
- 信用评分卡模型开发及评估指标
版权声明:本文为博主原创文章,未经博主允许不得转载. 一.信用风险评级模型的类型 信用风险计量体系包括主体评级模型和债项评级两部分.主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用&qu ...
- 分类任务如何用逻辑回归实现_如何用逻辑回归构建金融评分卡模型?(上)
虽然现在出现了很多性能优秀的分类算法,包括svm,RF,GBDT,DNN等,作为最简单的分类算法,lr依然是工业界主流的分类算法之一.那么lr到底有什么魔力,即使面对如此众多的 "高手&qu ...
- 信贷风控评分卡模型(上)_Give Me Some Credit(技术实现过程)
本帖是在2019年5月初入门python之时,选取的较为系统的练手案例,主要内容是信用风险计量体系之主体评级模型的开发过程(可用"四张卡"来表示,分别是A卡.B卡.C卡和F卡). ...
最新文章
- 小H和游戏(无根树转有根树,思维)难度⭐⭐⭐★
- 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
- 在matlab中安装命令窗口,安装完后发现命令窗口有这个?怎么回事?
- erp故障处理流程图_ERP业务处理流程及运行管理制度
- 计算机共享文件怎样添加,怎么添加另一台电脑的共享文件夹
- rocketmq linux环境下载地址,Linux下RocketMQ下载安装教程
- Linux 的 ps 命令 查看系统进程
- 项目管理之成熟度模型
- x64技术之SSDT_Hook
- 安装linux取消硬盘密码设置,Linux Deepin安装到硬盘图文过程
- PDF--变清晰方法
- DELL win10插入耳机后声音仍然外放(亲测有效)
- PHP将uncode转utf8,一行代码解决问题
- 小园丁与老司机_疲倦的园丁
- java超大数整除7,Java编写程序:求1-100之间可以被7整除的数的个数,并输出这些数。求大佬...
- 鲁宾逊微积分与“知识共享”,携手相伴进入中国
- reghdfe:多维面板固定效应估计
- Ceph Octopus新版新功能:图形化Dashboard
- 在线测试c语言程序代码,C语言在线测评系统的使用
- 解析Sers微服务-NetCore之Serslot
热门文章
- Java基础知识——JNI入门介绍
- Scott Mitchell 的ASP.NET 2.0数据教程之三十一::使用DataList来一行显示多条记录
- 概率论与数理统计——贝塞尔校正(Bessel‘s Correction)
- cpp存储类型说明符(storage class specifier)
- 数据-第10课-循环链表
- python之通过thread来实现多进程
- windows库的创建和使用:静态库+动态库
- 二叉树遍历算法之三:后序遍历
- 关于“绞刑架和职业发展”问题带来的思考
- 【转】requests、BeautifulSoup使用总结