使用决策树进行个人信用风险评估代码

使用决策树进行个人信用风险评估

第一步,导入csv文件的数据集

使用UCI上的德国信用数据集。该数据集包含了1000个贷款信息,每一个贷款有20个自变量和一个类变量记录该笔贷款是否违约。

我们将使用该数据集构建模型来预测贷款是否违约。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

credit = pd.read_csv("data/german_credit.csv")

第二步,观察数据集

可根据一些函数来观察数据集的特征和大小。

第三步,划分训练集和测试集

在正式建模之前,我们需要将数据集分为训练集和测试集两部分。其中训练集用来构建决策树模型,测试集用来评估模型性能。

我们将使用70%数据作为训练数据,30%作为测试数据。

from sklearn import model_selection

y = credit['default']
X  = credit.loc[:,'account_check_status':'foreign_worker']
X_train, X_test, y_train, y_test = model_selection.train_test_split(X, y, test_size=0.3, random_state=1)

第四步,模型训练

我们将使用Scikit-learn中的DecisionTreeClassifier算法来训练决策树模型。

DecisionTreeClassifier算法位于sklearn.tree包,首先将其导入,然后调用fit()方法进行模型训练。

from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
credit_model = DecisionTreeClassifier(min_samples_leaf = 6,random_state=1)
credit_model.fit(X_train, y_train)

第五步,模型性能评估

为了将我们训练好的决策树模型应用于测试数据,我们使用predict()函数,代码如下:

credit_pred = credit_model.predict(X_test)

第六步,优化模型性能评估

在实际应用中,模型的预测正确率不高,很难将其应用到实时的信贷评审过程。

在本案例中,如果一个模型将所有的贷款都预测为“未违约”,此时模型的正确率将为72%,而该模型是一个完全无用的模型。

上节中我们建立的模型,正确率为70%,但是对于违约贷款的识别性能很差。

我们可以通过创建一个代价矩阵定义模型犯不同错误时的代价。

假设我们认为一个贷款违约者给银行带来的损失是银行错过一个不违约的贷款带来损失的4倍,则未违约和违约的代价权重可以定义为:

class_weights = {0:1, 1:4}
credit_model_cost = DecisionTreeClassifier(max_depth=6,class_weight = class_weights)
credit_model_cost.fit(X_train, y_train)
credit_pred_cost = credit_model_cost.predict(X_test)

print (metrics.classification_report(y_test, credit_pred_cost))
print (metrics.confusion_matrix(y_test, credit_pred_cost))
  • 2
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值