Python实现xgboost分类模型(XGBClassifier算法)项目实战

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
简介: Python实现xgboost分类模型(XGBClassifier算法)项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

随着大数据时代的到来,具备大数据思想至关重要,人工智能技术在各行各业的应用已是随处可见。金融机构因车辆贷款违约而遭受重大损失。这导致汽车贷款承销收紧,汽车贷款拒收率上升。这些机构也提出了建立更好的信用风险评分模式的必要性。这值得进行一项研究,以估计车辆贷款违约的决定因素。金融机构想要准确预测贷款人/借款人在到期日第一个 EMI(等同于每月分期付款)中拖欠车辆贷款的概率。

数据集中提供了有关贷款和贷款人的信息:

贷款人信息(人口数据,如年龄、身份证明等)

贷款信息(付款详情、贷款与价值比率等)

统计局数据与历史(局分数、活跃账户数、其他贷款状况、信用记录等)

这样做将确保能够还款的客户不会被拒绝,并可以确定重要的决定因素,这些决定因素可以进一步用于将违约率降至最低。

2.数据获取 

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

编号 

变量名称

描述

0

UniqueID

客户标识符

1

loan_default

到期日第一个 EMI 中的付款违约;1 = 违约,0 = 不违约

2

disbursed_amount

已支付的贷款金额

3

asset_cost

资产成本

4

ltv

资产价值贷款

5

branch_id

发放贷款的分行

6

supplier_id

贷款发放地的车辆经销商

7

manufacturer_id

汽车制造商(Hero, Honda, TVS 等)

8

Current_pincode_ID

客户当前的引脚码

9

Date.of.Birth

客户的出生日期

10

Employment.Type

客户的就业类型(受薪/自雇)

11

DisbursalDate

付款日期

12

State_ID

付款状态

13

Employee_code_ID

记录付款的组织员工

14

MobileNo_Avl_Flag

如果Mobile no.被客户共享,然后标记为 1

15

Aadhar_flag

如果 aadhar 被客户共享, 则标记为 1

16

PAN_flag

如果pan被客户共享,则标记为 1

17

VoterID_flag

如果voter被客户共享, 然后标记为 1

18

Driving_flag

如果 DL 由客户共享,则标记为 1

19

Passport_flag

如果passport由客户共享,则标记为 1

20

PERFORM_CNS.SCORE

局分数

21

PERFORM_CNS.SCORE.DESCRIPTION

局分数描述

22

PRI.NO.OF.ACCTS

客户在付款时获得的贷款总额(主要帐户是客户为个人用途而使用的客户帐户)

23

PRI.ACTIVE.ACCTS

客户在付款时获得的主动贷款计数

24

PRI.OVERDUE.ACCTS

付款时违约账户计数

25

PRI.CURRENT.BALANCE

付款时主动贷款的本金未偿总额

26

PRI.SANCTIONED.AMOUNT

付款时所有贷款所批准的总额

27

PRI.DISBURSED.AMOUNT

支付时支付的所有贷款总额

28

SEC.NO.OF.ACCTS

客户在付款时获得的贷款总额(次要帐户是指客户作为共同申请人或gaurantor的账户)

29

SEC.ACTIVE.ACCTS

客户在付款时获得的主动贷款计数

30

SEC.OVERDUE.ACCTS

付款时违约账户计数

31

SEC.CURRENT.BALANCE

付款时主动贷款的本金未偿总额

32

SEC.SANCTIONED.AMOUNT

付款时所有贷款所批准的总额

33

SEC.DISBURSED.AMOUNT

支付时支付的所有贷款总额

34

PRIMARY.INSTAL.AMT

初级贷款的EMI金额

35

SEC.INSTAL.AMT

次级贷款的EMI金额

36

NEW.ACCTS.IN.LAST.SIX.MONTHS

客户在付款前的最后 6 个月内获得的新贷款

37

DELINQUENT.ACCTS.IN.LAST.SIX.MONTHS

过去6个月拖欠的贷款

38

AVERAGE.ACCT.AGE

平均贷款年租期

39

CREDIT.HISTORY.LENGTH

自第一次贷款以来的时间

40

NO.OF_INQUIRIES

客户为贷款而进行的查询

数据详情如下(部分展示): 

image.png

3.数据预处理 

真实数据中可能包含了大量的缺失值和噪音数据或人工录入错误导致有异常点存在,非常不利于算法模型的训练。数据清洗的结果是对各种脏数据进行对应方式的处理,得到标准的、干净的、连续的数据,提供给数据统计、数据挖掘等使用。数据预处理通常包含数据清洗、归约、聚合、转换、抽样等方式,数据预处理质量决定了后续数据分析挖掘及建模工作的精度和泛化价值。以下简要介绍数据预处理工作中主要的预处理方法:

3.1 去除挖掘无关重要的特征

一些ID标识类的数据参与机器建模没有意义,所以在此进行去掉,主要包括:

image.png

关键代码:

image.png

3.2特征文本数据转换

1.数据项:PERFORM_CNS.SCORE.DESCRIPTION

PERFORM_CNS.SCORE.DESCRIPTION此数据项为文本类型的分数级别描述,需要转换成数值型的信用风险等级:

处理前:

image.png

处理后:

image.png

2.数据项:Employment.Type

Employment.Type此数据项为文本类型的客户的就业类型(受薪/自雇),需要转换成数值型:

处理前:

image.png

处理后:

image.png

3.3客户年龄计算

通过客户的付款日期减去客户的出生日期来计算客户的当前年龄,关键代码如下:

image.png

输出结果如下:

image.png

3.4文本数据处理

AVERAGE.ACCT.AGE 平均贷款年租期

CREDIT.HISTORY.LENGTH 自第一次贷款以来的时间

本次主要是针对这两个数据项的处理,原始数据如下:

image.png

处理后如下:

image.png

关键代码如下:

image.png

4.探索性数据分析

4.1数值型特征变量T检验与特征选择

T检验图如下:

image.png

为了更好地进行展示,所以用图表以显示 T 测试的"替代假设"的接受度。因此,那些跨越红线的人显示出统计学意义。但对于汽车贷款和教育贷款,据观察,银行不想妥协,以透露任何细节的二级账户持有人,因为他们也是贷款的担保人,以防违约。但是,此 T 测试中有一个问题,如下一个单元格中将观察到的问题

image.png

上述观察是列的标准偏差(即默认值与非默认值)。T 独立性测试的假设是,观测下的样本应具有等于标准偏差。虽然上面观察到的差异似乎较小,但似乎仍然不能接受。因此,我们将进行非参数测试。

我们将使用 SelectKest 库来缩小功能选择的范围。这将利用Annova 测试。

image.png

该图显示二级帐户信息微不足道。当然,银行也不能放弃二级账户信息,因此我们必须将初级账户和次级账户信息结合起来。

关键代码如下:

image.png

image.png

4.2分类特征变量的卡方检验

Categorical特征常被称为分类特征,数据类型通常是object类型,而我们的机器学习模型通常只能处理数值数据,所以需要对Categorical数据转换成Numeric特征。如下图:

image.png

在这里,图表也显示了对替代假设的接受。同样,我们可以观察到credit scorePAN Card之间的一些多重共线性,因为PAN Card是获得信用评分的必修课。因此,卡方检验认为它认为它对我们的研究有盈余。但为了争论,我们会保留它。

5.特征工程

5.1 建立特征数据和标签数据

loan_default为标签数据,除 loan_default之外的为特征数据。关键代码如下:

image.png

5.2数据集拆分

训练集拆分,分为训练集和验证集,70%训练集和30%验证集。关键代码如下:

image.png

6.构建逻辑回归和xgboost分类模型 

主要使用使用LogisticRegressionXGBClassifier算法,用于目标分类。

6.1 建立逻辑回归模型

模型名称

指标名称

指标值

验证集

逻辑回归模型

准确率

78.27%

查准率

0.00%

查全率

0.00%

F1分值

0.00%

逻辑回归分类模型报告:

image.png

首先通过建立逻辑回归模型看到查准率、查全率、F1分值都是0,说明这是一个无效的模型;可能的原因目标变量分布不均衡,接下来咱们查看一下标签变量的分布:

image.png

通过上图可以清晰地看到,标签变量的数据分布确实不均衡。

那么接下来在查看一下信用历史特征的分布情况:所包含的特征:

image.png

image.png

首次申请贷款的客户数量最多,这解释了为什么上述所有列都有如此多的零值。此外,还有许多值得注意的离群值。

6.2 离群值处理

让我们处理离群值。我们将尝试保留离群值记录,而不是删除它们。我们将使用RobustScaler使观测值更接近中值

关键代码:

image.png

现在,对于零观测,我们将制作一个新功能,计算零的功能。这将作为有信用记录的人和没有信用记录的人之间的标准。当然,没有信用记录的人可能会有超过9个特征为零,在客户有信用记录的情况下这种情况是不太可能的

关键代码:

image.png

6.3模型调优

本项目主要是对XGBClassifier分类算法使用GridSearchCV (网格搜索)进行参数的调优,找出模型模型最优的参数,然后进行建模。

关键代码如下:

image.png

image.png

6.4模型参数 

编号

模型名称

参数

1

Xgboost分类模型

learning_rate=0.01

2

n_estimators=5000

3

max_depth=9

4

min_child_weight=1

5

gamma=0.4

6

subsample=0.8

7

colsample_bytree=0.8

8

reg_alpha=0.005

9

objective='binary:logistic'

10

nthread=4

11

scale_pos_weight=1

12

seed=27

关键代码如下:

image.png

7.模型评估

7.1评估指标及结果 

评估指标主要包括准确率、查准率、查全率、F1分值等等。

模型名称

指标名称

指标值

验证集

Xgboost分类模型

准确率

99.82%

查准率

99.87%

查全率

99.30%

F1分值

99.58%

从上表可以看出, xgboost分类模型比较优秀,效果非常好。

关键代码如下:

image.png

7.2 混淆矩阵

xgboost分类模型混淆矩阵:

image.png

7.3 模型特征重要性

image.png

从上图可以看到特征变量对此模型的重要性依次为:PAN_flag、No of AccountsMissing Features等等。

7.4 ROC曲线

image.png

从上图可以看出AUC值为1,模型非常棒。

8.结论与展望

综上所述,本文采用了xgboost分类模型,最终证明了我们提出的模型效果良好。准确率达到了99%,在实际贷款过程中可以应用此模型进行预测,使之后续的贷款业务做得更好。

# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1NtTDi5sNI7vn3lB2P8NYHw 
提取码:zxu1


相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
10天前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
110 26
|
14天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于WOA鲸鱼优化的XGBoost序列预测算法matlab仿真
基于WOA优化XGBoost的序列预测算法,利用鲸鱼优化算法自动寻优超参数,提升预测精度。结合MATLAB实现,适用于金融、气象等领域,具有较强非线性拟合能力,实验结果表明该方法显著优于传统模型。(238字)
|
18天前
|
机器学习/深度学习 并行计算 算法
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
【CPOBP-NSWOA】基于豪冠猪优化BP神经网络模型的多目标鲸鱼寻优算法研究(Matlab代码实现)
|
18天前
|
机器学习/深度学习 资源调度 算法
遗传算法模型深度解析与实战应用
摘要 遗传算法(GA)作为一种受生物进化启发的优化算法,在复杂问题求解中展现出独特优势。本文系统介绍了GA的核心理论、实现细节和应用经验。算法通过模拟自然选择机制,利用选择、交叉、变异三大操作在解空间中进行全局搜索。与梯度下降等传统方法相比,GA不依赖目标函数的连续性或可微性,特别适合处理离散优化、多目标优化等复杂问题。文中详细阐述了染色体编码、适应度函数设计、遗传操作实现等关键技术,并提供了Python代码实现示例。实践表明,GA的成功应用关键在于平衡探索与开发,通过精心调参维持种群多样性同时确保收敛效率
|
17天前
|
机器学习/深度学习 数据采集 算法
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
独家原创 | CEEMDAN-CNN-GRU-GlobalAttention + XGBoost组合预测研究(Python代码实现)
|
18天前
|
机器学习/深度学习 边缘计算 人工智能
粒子群算法模型深度解析与实战应用
蒋星熠Jaxonic是一位深耕智能优化算法领域多年的技术探索者,专注于粒子群优化(PSO)算法的研究与应用。他深入剖析了PSO的数学模型、核心公式及实现方法,并通过大量实践验证了其在神经网络优化、工程设计等复杂问题上的卓越性能。本文全面展示了PSO的理论基础、改进策略与前沿发展方向,为读者提供了一份详尽的技术指南。
粒子群算法模型深度解析与实战应用
|
18天前
|
机器学习/深度学习 运维 算法
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于D*算法的机器人路径规划(Python代码实现)
|
18天前
|
机器学习/深度学习 算法 机器人
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
【机器人路径规划】基于改进型A*算法的机器人路径规划(Python代码实现)
|
机器学习/深度学习 并行计算 算法
第113天: Python XGBoost 算法项目实战
第113天: Python XGBoost 算法项目实战
576 0

热门文章

最新文章

推荐镜像

更多