讲师中心 微信公众号
AI工具推荐 视频效率加速

怎样在Python中利用XGBoost进行特征重要性排序和筛选?

冬瑶大大_9242

冬瑶大大_9242

发布时间:2026-06-16 09:14:00

|

709人浏览过

|

来源于php中文网

原创

XGBoost的feature_importances_默认为weight型(分割频次),不能反映真实贡献;应改用importance_type='gain'(损失下降均值),并结合相关性分析、累计增益曲线和CV稳定性评估特征重要性。

怎样在python中利用xgboost进行特征重要性排序和筛选?

为什么 feature_importances_ 不能直接信?

XGBoost 训练后返回的 feature_importances_ 默认是“权重(weight)”类型,即每个特征在所有树中被用作分割点的总次数。它不反映该特征对模型输出的实际影响大小,尤其在特征量纲差异大、或存在强相关特征时,排序容易失真。比如一个高频离散特征可能压倒一个低频但信息量高的连续特征。

实操建议:

立即学习“Python免费学习笔记(深入)”;

python-parallelization
python-parallelization

将顺序 Python 代码转换为并行/并发实现,用于在需要并行化 Python 代码、提升性能时使用。

下载
  • 显式指定 importance_type='gain' —— 它基于每个分割带来的损失下降均值,更贴近真实贡献
  • 若用 xgboost.XGBClassifier 或 .XGBRegressor,初始化时加参数 importance_type='gain';若用原生 API(xgb.train),需在 booster.get_score(importance_type='gain') 中指定
  • 避免混用:同一模型不要一会儿看 weight,一会儿看 gain,二者数值不可比

如何用 plot_importance 快速可视化并提取排序?

xgboost.plot_importance 是最省事的入口,但它默认画图且返回的是 matplotlib.Axes 对象,不直接给你排序后的特征名和值。想拿数据做后续筛选,得绕一下。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 先调用 booster.get_score(importance_type='gain'),返回 dict:{'f0': 12.4, 'f1': 8.9, ...}
  • 用 sorted(..., key=lambda x: x[1], reverse=True) 排序,再解包成两个 list(特征名、重要性值)
  • 如果原始特征有名字(比如用了 pandas.DataFrame 输入),确保训练时传入 feature_names,否则 XGBoost 会默认叫 f0, f1…,后期难对应

筛选阈值怎么定?别硬设 0.01 或 top-10

固定取前 N 个或卡绝对值阈值,在不同数据集上泛化很差。有些任务里,第 15 个特征的 gain 可能只比第 14 个低 0.3%,但去掉它模型 AUC 就掉 0.008——说明边际效应非线性。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 用递归特征消除(RFE)思路:从全量特征开始,每次剔除最低分特征,重训模型,记录验证集指标变化
  • 观察“重要性衰减曲线”:画出累计 gain 占比(类似帕累托图),常能看到明显拐点,比如前 7 个特征占总 gain 的 82%,之后斜率骤平
  • 警惕高相关特征簇:用 np.corrcoef 或 seaborn.clustermap 看特征间相关性,若 f3 和 f7 相关系数 >0.9,而 gain 接近,优先留业务可解释性更强的那个

用 select_from_model 做自动化筛选要注意什么?

sklearn.feature_selection.SelectFromModel 支持 XGBoost,但它底层依赖 threshold 参数,而 XGBoost 没有内置的统计显著性检验,所以这个 threshold 实际只是个“重要性截断值”,不是 p 值。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 别直接写 SelectFromModel(xgb_model, threshold=0.05),先用 xgb_model.feature_importances_ 看分布,选 percentile(如 np.percentile(importances, 70))更稳健
  • 务必在筛选后重新训练模型:SelectFromModel 只返回 mask,不自动 refit,漏这步会导致你用旧模型的特征重要性去筛,但实际跑的是新特征子集
  • 交叉验证下测试稳定性:对每折 CV 训练的 XGBoost 分别做重要性排序,统计每个特征入选 top-K 的频率,低频特征大概率是噪声驱动
实际落地时,最常被忽略的是特征缩放与重要性计算的关系:XGBoost 本身不需要标准化,但如果你在前后混用了 StandardScaler 或 OneHotEncoder,要确认重要性是在编码后空间计算的——否则 f0 可能对应原始列名,也可能对应 one-hot 拆分后的某个 dummy 列,错位一丁点,筛选就全偏了。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1771

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

4644

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1749

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

27437

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3307

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3327

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1203

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

596

2023.08.10

Playwright 测试失败怎么办
Playwright 测试失败怎么办

Playwright测试失败专题汇集超时、定位器匹配、浏览器提前关闭、依赖与插件配置、文件上传、SSL及Docker启动等故障文章,并介绍通过截图、报告和Trace定位错误。

0

2026.10.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn