【Python特征工程系列】教你利用XGBoost模型分析特征重要性(源码)

这是Python特征工程系列原创文章,我的第186篇原创文章。

一、问题

应用背景介绍:      

       如果有一个包含数十个甚至数百个特征的数据集,每个特征都可能对你的机器学习模型的性能有所贡献。但是并不是所有的特征都是一样的。有些可能是冗余的或不相关的,这会增加建模的复杂性并可能导致过拟合。特征重要性分析可以识别并关注最具信息量的特征,从而带来以下几个优势:

    • 改进模型性能

    • 能减少过度拟合

    • 更快训练和推理

    • 增强可解释性

前期相关回顾:

【Python特征工程系列】利用梯度提升(GradientBoosting)模型分析特征重要性(源码)

【Python特征工程系列】8步教你用决策树模型分析特征重要性(源码)

【Python特征工程系列】利用随机森林模型分析特征重要性(源码)

本期相关知识:

       XGBoost(eXtreme Gradient Boosting)极致梯度提升,是一种基于GBDT的算法或者说工程实现。XGBoost通过集成多个决策树模型来进行预测,并通过梯度提升算法不断优化模型的性能。XGBoost的基本思想和GBDT相同,但是做了一些优化,比如二阶导数使损失函数更精准;正则项避免树过拟合;Block存储可以并行计算等。XGBoost可以计算每个特征的重要性得分,帮助我们理解哪些特征对模型预测的贡献最大。

二、实现过程

导入第三方库

import pandas as pd
from sklearn.model_selection import train_test_split
import xgboost as xgb
import matplotlib.pyplot as plt
import seaborn as sns

2.1 准备数据

data = pd.read_csv(r'dataset.csv')
df = pd.DataFrame(data)

图片

2.2 目标变量和特征变量

target = 'target'
features = df.columns.drop(target)

 特征变量如下:

图片

2.3 划分训练集和测试集

X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

 X_train如下:

图片

2.4 训练模型

model = xgb.XGBRegressor(n_estimators=100, max_depth=10)
model.fit(X_train, y_train)

2.5 提取特征重要性

feature_importance = model.feature_importances_
feature_names = features

 feature_importance如下:

图片

2.6 创建特征重要性的dataframe

importance_df = pd.DataFrame({'Feature': feature_names, 'Importance': feature_importance})

 importance_df如下:

图片

2.7 对特征重要性进行排序

importance_df = importance_df.sort_values(by='Importance', ascending=False)

排序后的 importance_df如下:

图片

2.8 可视化特征重要性

plt.figure(figsize=(10, 6))
sns.barplot(x='Importance', y='Feature', data=importance_df)
plt.title('Feature Importance')
plt.xlabel('Importance')
plt.ylabel('Feature')
plt.show()

 可视化结果如下:

图片

本期内容就到这里,我们下期再见!需要数据集和源码的小伙伴可以关注底部公众号添加作者微信!

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/310842.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全—认证技术

文章目录 加密认证对称密钥体制公钥密码体制公钥的加密公钥身份认证和加密 鉴别码认证MAC鉴别码 报文摘要认证认证 加密只认证数字签名 通过了解以前前辈们使用的消息认证慢慢渐进到现代的完整的认证体系。所以在学习的时候也很蒙圈,因为前期的很多技术都是有很严重…

数据结构:单调栈

1.单调栈 单调栈是一种数据结构,其中存放的数据应该是有序的,所以单调栈也有单调递减栈和单调递增栈 单调递增栈:栈顶到栈底的元素大小是从小到大 单调递减栈:栈顶到栈底的元素大小是从大到小 单调栈主要就是用来求一个给定序列中…

GenerateBlocks Pro插件 构建更好的WordPress网站

GenerateBlocks Pro插件 构建更好的WordPress网站 GenerateBlocks Pro插件是一个 WordPress 插件,几乎可以完成任何事情,可让您创建轻量级和多功能的网站。由与流行且快速的 GeneratePress 主题相同的创作者构建,该插件不负众望。使用 Genera…

数字孪生技术的未来预测

这种二维地图与摄像头关联,从实用角度来说,是不是比那些VRGIS和三维实景效果要好的多?也更能够还原现场情况,最重要的是成本也会低很多!​​​ 那些用预先采集数据的方式(比如倾斜摄影和3D建模)来还原真实现…

springboot定时执行某个任务

springboot定时执行某个任务 要定时执行的方法加上Schedule注解 括号内跟 cron表达式 “ 30 15 10 * * ?” 代表秒 分 时 日 月 周几 启动类上加上EnableScheduling 注释

【ROS2】MOMO的鱼香ROS2(一)ROS2入门篇——从Ubuntu操作系统开启

从Ubuntu操作系统开启 引言1 术语汇总2 Ubuntu (操作系统)2.1 Ubuntu权限管理2.2 Ubuntu安装软件2.2.1 使用apt命令安装2.2.2 dpkg安装deb包2.2.3 make install源代码安装 2.3 Ubuntu之常用指令2.3.1 ls命令(查看文件)2.3.2 cd 命…

C语言编程入门 – main()函数

C语言编程入门 – main()函数 C Programming Language Essentials - main() function By JacksonML 初见C语言&#xff0c;总被一个全球闻名的”Hello, world!”打印输出所惊讶。 1. 开启Hello, world!的C程序 代码如下&#xff1a; # include <stdio.h> int main(…

<JavaEE> TCP 的通信机制(四) -- 流量控制 和 拥塞控制

目录 TCP的通信机制的核心特性 五、流量控制 1&#xff09;什么是“流量控制”&#xff1f; 2&#xff09;如何做到“流量控制”&#xff1f; 3&#xff09;“流量控制”的作用 六、拥塞控制 1&#xff09;什么是“拥塞控制”&#xff1f; 2&#xff09;如何做到“拥塞…

OSPF的DR与BDR-新版(16)

目录 整体拓扑 操作步骤 1.基本配置 1.1 配置R1的IP 1.2 配置R2的IP 1.3 配置R3的IP 1.4 配置R4的IP 1.5 检测R1与R4连通性 1.6 检测R1与R2连通性 1.7 检测R1与R3连通性 2.搭建基本的OSPF网络 2.1 配置R1 OSPF 2.2 配置R2 OSPF 2.3 配置R3 OSPF 2.4 配置R4 OSPF…

Python+OpenGL绘制3D模型(九)完善插件功能: 矩阵,材质,法线

系列文章 一、逆向工程 Sketchup 逆向工程&#xff08;一&#xff09;破解.skp文件数据结构 Sketchup 逆向工程&#xff08;二&#xff09;分析三维模型数据结构 Sketchup 逆向工程&#xff08;三&#xff09;软件逆向工程从何处入手 Sketchup 逆向工程&#xff08;四&#xf…

免费的云服务器推荐~三丰云

对于许多初创企业和小型公司来说&#xff0c;寻找一个经济实惠且可靠的云服务提供商是至关重要的。在这方面&#xff0c;三丰云以其免费虚拟主机和云服务器吸引了大量用户。 1. 注册与界面 注册三丰云的账户过程简单明了&#xff0c;只需按照步骤填写必要信息即可。其界面设计…

C语言中灵活多变的动态内存,malloc函数 free函数 calloc函数 realloc函数

文章目录 &#x1f680;前言&#x1f680;管理动态内存的函数✈️malloc函数✈️free函数✈️calloc函数✈️realloc函数 &#x1f680;在使用动态内存函数时的常见错误✈️对NULL指针的解引用✈️ 对动态开辟空间的越界访问✈️对非动态开辟内存使用free释放✈️使用free释放一…