R做评分卡模型-实战

样本表现定义

这里写图片描述
这里写图片描述

变量含义
这里写图片描述


EDA与数据描述

读入数据

x<-read.csv('/Users/cc/Downloads/评分卡模型——具体举例/data1.csv',header=T,sep=',',fileEncoding = 'GBK')
n <- length(x$order_id)
data <- subset (x,x$BILL_CNT_L6M > 0)
m <- length(data$order_id)
paichu = n-m #排除项
data1<- subset(data,data$overdue==0|data$overdue>7)
k <- length(data1$order_id)
zhongjian <- m-k
#定义
y <- data1$overdue
y[which(data1$overdue==0)]=0
y[which(data1$overdue>7)]=1

m01<-data1$APP_MOBILE_STATUS
m02<-data1$APP_REG_MONTH
m03<-data1$AUDIT_RJCT_CNT_L90D
m06<-data1$BILL_BANK_LIMIT_L1M
m07<-data1$BILL_BANK_MAX_L6M
m10<-data1$BILL_CASHOUT_CNT_L12M
m11<-data1$BILL_CNT_L12M
m12<-data1$BILL_CNT_L6M
m13<-data1$BILL_MOB
m16<-data1$DLQ_CNT_GT0_L3M
m17<-data1$DLQ_CNT_GT0_L6M
m18<-data1$DLQ_MAX_L6M
m20<-data1$DLQ_OD_MAX_L3M
m21<-data1$GENDER
m22<-data1$ID_PROV
m23<-data1$LMT_BANK_MAX_MAX_L3M
m24<-data1$LMT_CNT_UTI_ASC_CONSEC_L12M
m25<-data1$LMT_MEAN_L6M
m26<-data1$LMT_MTNSNC_MIN_L12M
m27<-data1$LMT_UTI_MEAN_L3M
m28<-data1$LMT_UTI_MEAN_L6M
m29<-data1$MOBILE_PROV
m35<-data1$PUR_PUR2LMT_L12M
m37<-data1$PUR_PUR2LMT_L6M
m38<-data1$PUR_RTL_CNT_GT0_CONSEC_L12M
m40<-data1$RULE_AGE
m44<-data1$RVNU_INT_CNT_GT0_CONSEC_L12M
m45<-data1$BILL6
m46<-data1$REPAY6
m47<-data1$register_appid
m48<-data1$is_reloan

datanew<-data.frame(y,m01,m02,m03,m06,m07,m10,m11,m12,m13,m16,m17,m18,m20,m21,m22,m23,m24,m25,m26,m27,m28,m29,m35,m37,m38,m40,m45,m46,m47,m48)

#包的准备
install.packages('caret')
install.packages('rlang')
library(caret)
install.packages(c("VIM","mice")) 
matrixplot(datanew)
library(VIM)
library(mice)
install.packages('tibble')
library(ggplot2)

抽样:

library(caret)
train1 <-createDataPartition(y=datanew$y,p=0.75,list=FALSE)
train <- datanew[train1, ]
test <- datanew[-train1, ]

评估变量的分布
连续变量-直方图
名义/顺序变量-饼图,条形图

先看一下近6个月最大单月持卡银行数的分布情况
这里写图片描述
大部分都在12张以内,银行卡持卡书最多的是5张

再看一下51App注册账龄的分布情况
这里写图片描述
大部分都在60个月内

最后再来看一下违约人数在总人数的占比
这里写图片描述
坏用户很少,只占0.8%左右

#datanew$m07的分布情况-直方图
require(caret)
ggplot(datanew, aes(x = m07,y = ..count..,)) + geom_histogram(fill = "blue", colour = "grey60", size = 0.2,alpha = 0.2,binwidth = 3)
#m02的分布
ggplot(datanew, aes(x = m02,y = ..count..,)) + geom_histogram(fill = "blue", colour = "grey60", size = 0.2,alpha = 0.2,binwidth = 5)

#y的分布
ggplot(datanew, aes(x =datanew$y,y = ..count..,)) + geom_histogram(fill = "blue", colour = "grey60" , alpha = 0.2,stat="count")

缺失值处理

缺失值处理

#缺失值分析
require(VIM)
matrixplot(train)
require(mice)
md.pattern(train)

这里写图片描述
利用matrixplot函数对缺失值部分进行可视化展示,上图中浅色表示值小,深色表示值大,而默认缺失值为红色。具体确实情况可以见下表,m45,m46列共有缺失值1个,m47有113个。

这里写图片描述

对于缺失值的处理方法非常多,例如基于聚类的方法,基于回归的方法,基于均值的方法,其中最简单的方法是直接移除,但是在本文中因为缺失值所占比例较高,直接移除会损失大量观测,因此并不是最合适的方法。在这里,我们使用KNN方法对缺失值进行填补。


https://blog.csdn.net/jinruoyanxu/article/details/51969556

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值