我是靠谱客的博主 虚幻摩托,最近开发中收集的这篇文章主要介绍信用卡违约客户的预测模型的选择(二)验证过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

验证过程

该数据集包含23个输入变量(input variable)和一个响应变量(response variable)。该数据集来源于UCI machine learning repository,为某银行的信用卡客户信息数据,共有30000个样本,包括过去六个月的账单还款情况。

 

Y:下个月还款违约情况(1=逾期,0=未逾期)

X1:信用额度,包括其个人和家庭补充信用。

X2:性别(1=male;2=female)

X3:教育(1=研究生,2=大学,3=高中,4=其他)

X4:婚姻状况(1=已婚,2=单身,3=其他)

X5:年龄,age

X6-X11:过去六个月的还款情况。X6(2005年九月还款情况)。。。X11(2005年四月还款情况)。其中XN=-1,代表按时还款,XN=1,代表延时一个月还款,XN=2,代表延时两个月还款,。。。,XN=n,代表延时n个月还款,

X12-X17:过去六个月的账单数额情况。X12(2005年九月账单数额情况)…X11(2005年四月账单数额情况)。

X18-X23:过去六个月的还款数额情况。X18(2005年九月还款数额情况)…X23(2005年四月还款数额情况)。

环境配置

操作系统:windows7+64位

内存:4G

Cpu: intel core i5@2.6GHz2.6GHz

Python version: python 3.6.0

Python平台:pycharm


首先获取数据,将原始csv文件转化为txt文件,逐行读取数据,为利于后期回归运算将变量格式的数据统一转化为float格式。在变量选取中我们本着类别变量均等,训练矩阵随机,训练与测试矩阵28原则。

如下:

float(listFromLine[i])

分别定义标签矩阵和变量矩阵,读入客户数据。

此模型预测变量为01。其中类别为1的变量6636个,类别为0的变量23364个。我们选择相等的两类样本数01分别6600个。

首先进行数据集进行拆分,使用sklearncross_validation进行数据拆分。

from sklearn.cross_validationimport train_test_split

X_train,X_test, y_train, y_test=train_test_split(ran_M,rand_V)

(正例1662个,负例1638个。)

我们选择13200个样本,为了使得选取的样本具有随机性,由于原始样本按照账户号输入,可能存在一定的序列关联性,打破原始顺序的方法函数如下:

dataIndex = list(range(randM))
for j in range(randM):
   
randIndex = int(random.uniform(0, len(dataIndex)))
   
retm[j, :] =retm1[dataIndex[randIndex]]
    classV[j] =classV1[dataInde[randIndex]]
    del (dataIndex[randIndex])

首先定义一个list序列,然后利用随机数函数,对序列取值,将取得的样本值顺序赋予新的序列矩阵。

变量筛选

计算输入变量之间的相关系数,输入变量与预测之间的相关关系。当数据量较大时,在进行corrcoef进行相关性计算时,超过了内存容量,出现memory error.我们只是为了大概掌握变量之间的相关程度,为避免memory error需进行矩阵的缩减,在这里选取前5000行进行相关性计算。

从预测变量与输入变量之间的相关系数可见,预测变量与大多数输入变量之间的相关性较小,选取相关系数绝对值大于0.1的变量为LIMIT_BALPAY_1PAY_2PAY_3PAY_4PAY_5PAY_6

Corrcoef

default of credit account

LIMIT_BAL

-0.100

SEX

-0.013

EDUCATION

0.037

MARRIAGE

-0.039

AGE

0.020

PAY_1

0.293

PAY_2

0.220

PAY_3

0.203

PAY_4

0.175

PAY_5

0.172

PAY_6

0.140

BILL_AMT1

-0.004

BILL_AMT2

0.000

BILL_AMT3

0.001

BILL_AMT4

0.004

BILL_AMT5

0.001

BILL_AMT6

0.003

PAY_AMT1

-0.078

PAY_AMT2

-0.081

PAY_AMT3

-0.039

PAY_AMT4

-0.066

PAY_AMT5

-0.037

PAY_AMT6

-0.049

在进行变量处理时,可选择归一化、标准化、特征化处理,也可根据变量大小进行类别化处理。LIMIT_BAL数值较大,求其百分位数,使用函数np.percentile(LIMIT_BAL),对变量进行重新设置,选择分位数80,50,30,0对应的值设置为(4,3,2,1)。

Percentile

Value

100

1000000

90

360000

80

270000

70

210000

60

180000

50

140000

40

100000

30

70000

20

50000

10

30000

0

10000

首先我们来验证逐步增加变量的方法。首先选取LIMIT_BALPAY_1PAY_2PAY_3PAY_4PAY_5PAY_6以及常量系数

 


最后

以上就是虚幻摩托为你收集整理的信用卡违约客户的预测模型的选择(二)验证过程的全部内容,希望文章能够帮你解决信用卡违约客户的预测模型的选择(二)验证过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部