信贷违约风险评估模型(上篇):探索性数据分析

这篇博客探讨了利用机器学习预测信贷违约风险的案例,重点在于对Home Credit提供的客户借贷历史数据进行探索性数据分析,包括目标变量分布、缺失值检查、列类型分析、类别变量编码等。数据集包括7个不同来源的文件,目标是预测客户能否按时偿还贷款。作者发现数据不平衡,存在大量缺失值,并进行了异常值处理和相关性分析,强调了EXT_SOURCE变量的重要性。
摘要由CSDN通过智能技术生成

机器学习训练营——机器学习爱好者的自由交流空间(入群联系qq:2279055353)

案例介绍

由于不良或缺少信用记录,很多人难以获得贷款。Home Credit是一家金融服务机构,致力于向无银行账户的人群提供积极且安全的借贷经历。Home Credit利用多种来源的数据,例如,电话费、消费交易信息,预测客户的偿还能力。本案例使用Home Credit提供的客户借贷历史数据,预测该申请人是否有能力还贷,从而决定是否向他发放贷款。这是一个标准的有监督分类问题。

  • 有监督:训练数据带有类标签,目标任务是训练一个模型预测特征的标签。

  • 分类:标签是0-1二值变量。1代表重新放贷有困难;0代表按时重新放贷。

数据描述

该案例包括7个不同来源的数据文件:

  • application_train/application_test: 包括每一笔贷款的信息,每行包括一笔贷款,由特征SK_ID_CURR识别。训练集的TARGET是二值变量,1表示不能放贷;0表示能放贷。

  • bureau: 客户以前的信用情况。每一行表示以前的一次贷款,在application数据里的每一个贷款申请可能有多个以前的信贷记录。

  • bureau_balance: bureau里以前贷款的月数据。每行表示以前贷款的月记录,所以一笔以前的贷款可能有多行记录。

  • previous_application: Home Credit客户以前的贷款申请记录。每一笔当前的申请都有多个以前的贷款。每一笔以前的申请由特征SK_ID_PREV标识。

  • POS_CASH_BALANCE: 以前的销售或现金贷款客户的月数据。

  • credit_card_balance: 以前的信用卡客户月余额。

  • installments_payment: Home Credit客户以前贷款的支付历史,每一行对应一笔支付记录。

我们用一张图表示这些数据集的关系。

在这里插入图片描述
首先,我们导入一个数据科学任务必需的4个Python库:numpy, pandas, sklearn, matplotlib.

# numpy and pandas for data manipulation
import numpy as np
import pandas as pd 

# sklearn preprocessing for dealing with categorical variables
from sklearn.preprocessing import LabelEncoder

# File system manangement
import os

# Suppress warnings 
import warnings
warnings.filterwarnings('ignore')

# matplotlib and seaborn for plotting
import matplotlib.pyplot as plt
import seaborn as sns

我们列出所有可用的9个数据文件:一个训练集(with target), 一个检验集(without target), 一个例子提交文件,6个贷款信息文件。

# List files available
print(os.listdir("../input/"))
# Training data
app_train = pd.read_csv('../input/application_train.csv')
print('Training data shape: ', app_train.shape)
app_train.head()

训练集有307511行(每行对应一笔贷款),122个特征(包括预测变量target)。再看看检验集。

# Testing data features
app_test = pd.read_csv('../input/application_test.csv')
print('Testing data shape: ', app_test.shape)
app_test.head()

Testing data shape: (48744, 121)

探索性数据分析

在这个阶段,我们计算统计量、作图显示数据的结构、趋势、变量间的关系。EDA对下面的建模有指示性的作用,例如,提示我们选用哪些变量。

Target的分布

预测变量target取0, 1两个值。0表示按时放贷,1表示客户有还款困难。我们先看看这两类的个数,并用频数直方图表示。

print(app_train['TARGET'].value_counts())

0 282686
1 24825
Name: TARGET, dtype: int64

app_train['TARGET'].astype(int).plot.hist()
plt.show()

在这里插入图片描述
1值明显少于0值,这是一个不平衡类问题。我们将考虑复杂的机器学习模型,给类赋予权值反映这种不平衡性。

检查缺失值

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值