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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*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-EAS一键部署ChatGLM及LangChain应用
本场景中主要介绍如何使用模型在线服务(PAI-EAS)部署ChatGLM的AI-Web应用以及启动WebUI进行模型推理,并通过LangChain集成自己的业务数据。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
9天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能社交媒体内容分析
使用Python实现深度学习模型:智能社交媒体内容分析
135 70
|
9天前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
18 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
12天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
24 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
10天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能新闻生成与校对
使用Python实现深度学习模型:智能新闻生成与校对
32 10
|
8天前
|
机器学习/深度学习 数据采集 网络安全
使用Python实现深度学习模型:智能网络安全威胁检测
使用Python实现深度学习模型:智能网络安全威胁检测
33 5
|
7天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护
17 1
|
11天前
|
机器学习/深度学习 数据采集 自然语言处理
使用Python实现深度学习模型:智能广告创意生成
使用Python实现深度学习模型:智能广告创意生成
27 4
|
9天前
|
大数据 UED 开发者
实战演练:利用Python的Trie树优化搜索算法,性能飙升不是梦!
在数据密集型应用中,高效搜索算法至关重要。Trie树(前缀树/字典树)通过优化字符串处理和搜索效率成为理想选择。本文通过Python实战演示Trie树构建与应用,显著提升搜索性能。Trie树利用公共前缀减少查询时间,支持快速插入、删除和搜索。以下为简单示例代码,展示如何构建及使用Trie树进行搜索与前缀匹配,适用于自动补全、拼写检查等场景,助力提升应用性能与用户体验。
27 2
|
10天前
|
数据挖掘 Python
Python随机效应模型
Python随机效应模型
20 2
|
11天前
|
算法 程序员 Python
程序员必看!Python复杂度分析全攻略,让你的算法设计既快又省内存!
在编程领域,Python以简洁的语法和强大的库支持成为众多程序员的首选语言。然而,性能优化仍是挑战。本文将带你深入了解Python算法的复杂度分析,从时间与空间复杂度入手,分享四大最佳实践:选择合适算法、优化实现、利用Python特性减少空间消耗及定期评估调整,助你写出高效且节省内存的代码,轻松应对各种编程挑战。
23 1
下一篇
无影云桌面