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:

评分卡模型

信用标准评分卡模型开发及实现

评分卡模型之数据预处理相关推荐

  1. 机器学习之金融信贷风控(二)申请评分卡中的数据预处理和特征衍生(未完待续)

    申请评分卡中的数据预处理和特征衍生 模型处理的一般流程: 构建信用风险模型的特征 获取数据 链接:https://pan.baidu.com/s/1CsY11ArZ6YK3o1icghWj2w 提取码 ...

  2. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  3. (信贷风控八)行为评分卡模型(B卡)的介绍

    (八)行为评分卡模型(B卡)的介绍 在信贷业务中,评分卡分为三种: 申请评分卡(A卡) 行为评分卡(B卡) 催收评分卡(C卡) 本篇我们来学习一下行为评分卡(B卡),首先什么是行为评分卡呢,行为评分卡 ...

  4. (信贷风控九)行为评分卡模型python实现

    python信用评分卡建模(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_ca ...

  5. (信贷风控九)行为评分卡模型python实现(详细代码+注释+讲解)

    (九)行为评分卡模型python实现(详细代码+注释+讲解) 浅谈行为评分卡 我们知道行为评分卡只要用在信贷的贷中环节,贷中指的是贷款发放之后到期之前的时间段,其实行为评分卡和申请评分卡在实现上没有太 ...

  6. 申请评分卡模型数据预处理

    一.获取数据 2.1 数据获取 数据的获取途径主要有两个: 金融机构自身字段:例用户的年龄,户籍,性别,收入,负债比,在本机构的借款和还款行为等: 第三方机构的数据:如用户在其他机构的借贷行为,用户的 ...

  7. 玩转大数据风控—利用评分卡模型实现信用评级

    玩转大数据风控-利用评分卡模型实现信用评级 一.算法介绍 1. 什么是逻辑回归? 2. 逻辑回归为何逻辑 ? 3. 逻辑回归怎么回归? 二.构建流程 1.数据处理 1.1 数据清理 1.2 缺失值处理 ...

  8. 信用评分卡模型开发及评估指标

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.信用风险评级模型的类型 信用风险计量体系包括主体评级模型和债项评级两部分.主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用&qu ...

  9. 分类任务如何用逻辑回归实现_如何用逻辑回归构建金融评分卡模型?(上)

    虽然现在出现了很多性能优秀的分类算法,包括svm,RF,GBDT,DNN等,作为最简单的分类算法,lr依然是工业界主流的分类算法之一.那么lr到底有什么魔力,即使面对如此众多的 "高手&qu ...

  10. 信贷风控评分卡模型(上)_Give Me Some Credit(技术实现过程)

    本帖是在2019年5月初入门python之时,选取的较为系统的练手案例,主要内容是信用风险计量体系之主体评级模型的开发过程(可用"四张卡"来表示,分别是A卡.B卡.C卡和F卡). ...

最新文章

  1. 小H和游戏(无根树转有根树,思维)难度⭐⭐⭐★
  2. 华为开源数据虚拟化引擎HetuEngine;全球超算500强:中国上榜数量增加;谷歌收购云计算公司CouldSimple ……...
  3. 在matlab中安装命令窗口,安装完后发现命令窗口有这个?怎么回事?
  4. erp故障处理流程图_ERP业务处理流程及运行管理制度
  5. 计算机共享文件怎样添加,怎么添加另一台电脑的共享文件夹
  6. rocketmq linux环境下载地址,Linux下RocketMQ下载安装教程
  7. Linux 的 ps 命令 查看系统进程
  8. 项目管理之成熟度模型
  9. x64技术之SSDT_Hook
  10. 安装linux取消硬盘密码设置,Linux Deepin安装到硬盘图文过程
  11. PDF--变清晰方法
  12. DELL win10插入耳机后声音仍然外放(亲测有效)
  13. PHP将uncode转utf8,一行代码解决问题
  14. 小园丁与老司机_疲倦的园丁
  15. java超大数整除7,Java编写程序:求1-100之间可以被7整除的数的个数,并输出这些数。求大佬...
  16. 鲁宾逊微积分与“知识共享”,携手相伴进入中国
  17. reghdfe:多维面板固定效应估计
  18. Ceph Octopus新版新功能:图形化Dashboard
  19. 在线测试c语言程序代码,C语言在线测评系统的使用
  20. 解析Sers微服务-NetCore之Serslot

热门文章

  1. Java基础知识——JNI入门介绍
  2. Scott Mitchell 的ASP.NET 2.0数据教程之三十一::使用DataList来一行显示多条记录
  3. 概率论与数理统计——贝塞尔校正(Bessel‘s Correction)
  4. cpp存储类型说明符(storage class specifier)
  5. 数据-第10课-循环链表
  6. python之通过thread来实现多进程
  7. windows库的创建和使用:静态库+动态库
  8. 二叉树遍历算法之三:后序遍历
  9. 关于“绞刑架和职业发展”问题带来的思考
  10. 【转】requests、BeautifulSoup使用总结