【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、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LDO线性稳压器与开关电源的原理

线性稳压器LDO典型代表:LM7805 ,AMS1117,还有一下性能比较好的LDO: 开关稳压器典型代表:LM2596,MP1584,TPS5430,MP2315S LDO靠发热分散能量,纹波较小一般在30mv以下;DCDC通过开关开断…

HikvisionCamera开发-萤石云RTMP协议获取视频流

RTMP/RTSP(实时流传输协议)是一种网络协议,旨在用于传输音频和视频数据。本文将介绍如何在HikvisionCamera二次开发中如何通过RTMP协议获得实时视频流,使用到的摄像头为POE供电的海康威视-臻全彩款,以及套餐内配套录像…

机器学习系列--R语言随机森林进行生存分析(1)

随机森林(Breiman 2001a)(RF)是一种非参数统计方法,需要没有关于响应的协变关系的分布假设。RF是一种强大的、非线性的技术,通过拟合一组树来稳定预测精度模型估计。随机生存森林(RSF&#xff0…

游戏任务系统实现思路

文章目录 一、需求介绍二、数据库设计3、代码部分实现 一、需求介绍 1、首先任务的类型不同,可以分为:日常任务、成长任务、活动任务等等。 2、当达到任务目标时,自动发放任务奖励。 3、任务需要后台可配置,例如:任务…

深度学习框架Pytorch学习笔记

由于工作原因,需要使用到深度学习pytorch框架,所以,跟随视频学习了深度学习框架的使用方法 1、安装pytorch 在windows下使用pytorch,首先找到anaconda官网,安装64位windows版本,然后使用清华的源替换掉an…

FileZilla的使用及主动模式与被动模式[FileZilla]

目录 一.FileZilla的简介 二.FileZilla的安装及准备工作 三.FileZilla使用 四.主动模式与被动模式 主动模式(Active Mode): 被动模式(Passive Mode): 如何在FileZilla中选择模式: 今天的到…

C++初阶(类中的默认成员函数)

呀哈喽,我是结衣 今天给大家带来的是类里面的默认成员函数,一共有六个默认的成员函数哦,包括构造函数,析构函数,拷贝构造函数,运算符重载函数,const成员函数,那么正篇开始。 文章目…

Qt QAction添加图片

QAction用的时候,时常需要添加图片,如上图所示,代码如下所示: 测试的图片格式包含png,jpg,bmp,svg,其他未测试

CSS 动态提示框

​​ <template> <div class"terminal-loader"><div class"terminal-header"><div class"terminal-title">提示框</div><div class"terminal-controls"><div class"control close"…

如何快速通过PMP考试?

2024年的第一次PMP考试时间暂定在3月10日&#xff0c;有备考计划的考生们都在如火如荼的展开备考学习&#xff0c;那么对于一部分工作公交忙抽不出时间来学习的考生来说&#xff0c;能够快速高效的通过PMP考试是身份重要的。 想要快速通过PMP考试需要有的条件最少要满足两个&a…

公司电脑文件防泄密|防止内部终端核心文件数据 \ 资料外泄

PC端访问地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 为了防止公司电脑文件泄密&#xff0c;可以采取以下措施&#xff1a; 文件加密&#xff1a;对重要文件进行加密是一种有效的防泄密方法。通过使用加密算法&#xff0c;…

在电脑上恢复删除 Word 文档文件的 7 个有效方法

最近遇到系统崩溃不要惊慌&#xff0c;向下滚动以了解克服这种情况的有效解决方案。 在现代社会&#xff0c;数据恢复领域发展令人惊叹&#xff0c;我们可以使用令人难以置信的工具免费恢复已删除的Word文档&#xff0c;而无需任何技术技能。Geekersoft公司的奇客数据恢复是轻…

intellij IDEA开发工具的使用(打开/关闭工程;删除类文件;修改类/包/模块/项目名称;导入/删除模块)

1&#xff0c;打开工程 打开IDEA&#xff0c;会看到如下界面 1栏目里是自己曾经打开过的project&#xff08;工程&#xff09;&#xff0c;直接点击就好。如果需要打开其他工程&#xff0c;则点击open&#xff0c;会出下以下界面。 选择需要加载的project&#xff08;工程&…

2023年终总结:耕辍断续应犹在,碌而不暇仍少年

Author&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…

Atlas 2.2.0 安装部署

Apache Atlas 是一套可扩展、可延伸的核心基础治理服务&#xff0c;使企业能够切实有效地满足 Hadoop 中的合规性要求&#xff0c;并允许与整个企业数据生态系统集成。 Apache Atlas 提供开放的元数据管理和治理功能&#xff0c;使企业能够建立数据资产目录&#xff0c;对这些…

【华为机试】2023年真题B卷(python)-冠亚军排名-奖牌榜排名

一、题目 题目描述&#xff1a; 2012伦敦奥运会即将到来&#xff0c;大家都非常关注奖牌榜的情况&#xff0c;现在我们假设奖牌榜的排名规则如下. 1.首先gold medal数量多的排在前面 2.其次silver medal数量多的排在前面 3.然后bronze medal数量多的排在前面 4.若以上三个条…

2024主流的免费电脑数据恢复软件EasyRecovery

EasyRecovery绿色版是一款非常专业的电脑数据恢复工具。它可以全面恢复删除丢失数据&#xff0c;能对电脑误删文件恢复、格式化硬盘数据恢复、手机U盘数据恢复等&#xff0c;能恢复包括文档、表格、图片、音视频等各种文件&#xff0c;此版本经过处理&#xff0c;可永久免费使用…

Unity关于动画混合树(Blend Tree)的使用

在动画与动画的切换过程中&#xff0c;常因为两个动画之间的差距过大&#xff0c;而显得动画的切换很不自然。 这时候就需要动画混合树Blend Tree这个功能。使用混合树可以将多个动画混合在一起&#xff0c;例如在处理角色的移动中&#xff0c;走动画与跑动画切换的时候&#x…

【docker】—— Docker 简介

目录 &#xff08;一&#xff09;容器技术发展史 1、Jail 时代 2、云时代 3、云原生时代 &#xff08;二&#xff09;编排与容器的技术演进之路 1、DockerClient 2、RUNC&Shim 3、CRI-Containerd 4、CRI-O 5、Containerd &#xff08;三&#xff09;Docker 简介…

前后台分离开发

前后台分离开发 简介 前后台分离开发&#xff0c;就是在项目开发过程中&#xff0c;对于前端代码的开发由专门的前端开发人员负责&#xff0c;后端代码则由后端开发人员负责&#xff0c;这样可以做到分工明确、各司其职&#xff0c;提高开发效率&#xff0c;前后端代码并行开…