使用python训练贝叶斯模型预测贷款逾期

朴素贝叶斯(Naive Bayes)是一种简单的分类预测模型,本篇文章将使用机器学习库scikit-learn中的Gaussian Naive Bayes算法对贷款历史数据进行建模。并通过模型对新贷款用户的逾期情况进行模拟预测。

cropped-datawave-1024x768

准备工作

首先是开始前的准备工作,导入所需的库文件。依次为数值计算库numpy,科学计算库pandas,交叉验证库cross_validation和朴素贝叶斯算法库GaussianNB。

#导入数值计算库
import numpy as np
#导入科学计算库
import pandas as pd
#导入交叉验证库
from sklearn import cross_validation
#导入GaussianNB库
from sklearn.naive_bayes import GaussianNB

读取并查看数据表

读取并创建名为loan_status的贷款历史数据。这里我们只包含了两个特征和极少的数据用于说明计算的过程。在真实的环节中要预测贷款的逾期情况所需数据量要大得多。按宜人贷公布的信息,他们的风控系统包含了250个特征和超过100万条的历史贷款数据,并且还有一个黑名单系统。

#读取历史贷款状态数据并创建loan_status数据表
loan_status=pd.DataFrame(pd.read_excel('loan_status.xlsx'))

以下是贷款数据表中具体的内容,两个特征分布为借款人的年龄,借款天数。结果显示了这笔贷款最终的状态。

#查看数据表内容
loan_status.head()

loan_status

使用columns获得数据表的列名称。

#查看数据表列标题
loan_status.columns
Index(['age', 'day', 'status'], dtype='object')

设置模型特征X及目标Y

将借款人的年龄和借款天数设置为特征X,将贷款的最终还款状态设置为目标Y。

#设置特征X
X=np.array(loan_status[['age','day']])
#设置目标Y
Y=np.array(loan_status['status'])

分布查看特征和目标数据的维度。

#查看数据集的维度
X.shape,Y.shape
((823, 2), (823,))

将数据分割为训练集和测试集

使用交叉检验库通过随机方式将特征数据和目标数据分为测试集和训练集,其中训练集为原数据集的60%,测试集为40%。

#将数据集拆分为训练集和测试集
X_train,X_test,y_train,y_test=cross_validation.train_test_split(X,Y,test_size=0.4,random_state=0)

再次查看训练集和测试集数据的维度。

#查看训练集维度
X_train.shape,y_train.shape
((493, 2), (493,))
#查看测试集维度
X_test.shape,y_test.shape
((330, 2), (330,))

建立高斯朴素贝叶斯模型。

#建立模型
clf=GaussianNB()

使用训练集数据对模型进行训练。

#使用训练集对模型进行训练
clf.fit(X_train,y_train)
GaussianNB(priors=None)

使用测试集数据对训练后的模型进行测试,模型预测的准确率为69%。

#使用测试集数据检验模型准确率
clf.score(X_test,y_test)
0.68787878787878787

使用模型进行分类预测

使用训练后的高斯朴素贝叶斯模型对新贷款用户的数据进行分类预测。首先查看分类的结果。与之前的目标Y一样,结果为Charged Off和Fully Paid。

clf.classes_
array([‘Charged Off’, ‘Fully Paid’], dtype='<U11′)

[/code]

输入一组贷款用户特征,年龄为25岁,借款天数30天。模型预测这笔贷款的结果为Fully Paid。

clf.predict([[25,30]])
array([‘Fully Paid’], dtype=’蓝鲸网站分析博客”。】—

Speak Your Mind

*