当前位置:首页 > 文章列表 > 文章 > python教程 > Python中如何查看Scikit-learn随机森林的特征重要性_调用feature_importances_

Python中如何查看Scikit-learn随机森林的特征重要性_调用feature_importances_

2026-05-24 22:05:18 0浏览 收藏

哈喽!今天心血来潮给大家带来了《Python中如何查看Scikit-learn随机森林的特征重要性_调用feature_importances_》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!

训练后直接访问 feature_importances_ 属性即可获取归一化特征重要性,其值和为1.0、长度等于特征数,需确保已调用 fit() 且结合原始列名排序解读。

Python中如何查看Scikit-learn随机森林的特征重要性_调用feature_importances_

训练后直接访问 feature_importances_ 属性

Scikit-learn 的 RandomForestClassifier 和 RandomForestRegressor 在调用 fit() 后会自动计算并存储特征重要性,存放在 feature_importances_ 这个一维 numpy.ndarray 中。它不依赖额外参数或方法调用,只要模型已拟合,该属性就可用。

常见错误是:未调用 fit() 就尝试访问,会报 AttributeError: 'RandomForestClassifier' object has no attribute 'feature_importances_';或者在 fit() 前打印该属性,得到空值。

  • 确保模型已完成训练:rf.fit(X_train, y_train)
  • feature_importances_ 是只读属性,不能手动赋值
  • 长度恒等于输入特征数:len(rf.feature_importances_) == X_train.shape[1]

特征重要性数值含义与归一化行为

feature_importances_ 返回的是“基于不纯度减少的归一化重要性”,即所有值之和为 1.0(浮点精度范围内)。它不是原始 Gini 减少总和,也不是 p 值或统计显著性指标,仅反映该特征在所有树中平均贡献的相对权重。

注意:这个归一化是 scikit-learn 内部自动完成的,无需手动除以总和;但若你对比多个模型(如不同 n_estimators),其绝对值不可跨模型比较——因为单棵树的分裂增益尺度会随树结构变化而浮动。

  • 值越接近 0 表示该特征对当前模型预测几乎无区分作用
  • 即使某特征在业务上关键,若数据中它与标签无统计关联,feature_importances_ 仍可能极低
  • 类别型特征需先用 OneHotEncoder 或 OrdinalEncoder 处理,否则会被当作连续变量误算

把重要性映射回原始特征名并排序

原始 feature_importances_ 只是数字数组,没有列名信息。要可读性强的结果,必须结合你传入训练的 X_train 的列名(如 pandas DataFrame 的 .columns)手动配对。

容易踩的坑是:用 np.argsort() 时方向弄反(默认升序),导致输出的是最不重要的排前面;或忽略 DataFrame 列顺序是否与 fit() 时一致(尤其做过 drop()、reindex() 等操作后)。

import numpy as np
import pandas as pd

假设 X_train 是 DataFrame,有列名

importance_df = pd.DataFrame({ 'feature': X_train.columns, 'importance': rf.featureimportances }).sort_values('importance', ascending=False)

print(importance_df.head(5))

多输出或多任务场景下不支持 feature_importances_

如果你用的是 MultiOutputRegressor 或 MultiOutputClassifier 包裹随机森林,内层的 feature_importances_ 不会自动暴露到外层对象上。此时访问 multi_rf.feature_importances_ 会报错 AttributeError。

真正起作用的是底层每个单输出模型的 feature_importances_,但它们彼此独立、不可直接合并——因为每个子模型可能基于不同目标优化,重要性无法简单加总或平均。

  • 必须显式遍历 multi_rf.estimators_ 列表获取各子模型
  • 各子模型的 feature_importances_ 长度相同,但数值分布可能差异极大
  • 没有官方推荐的聚合方式;强行取均值会掩盖任务特异性,慎用

实际应用中,最容易被忽略的是:特征重要性高度依赖训练数据分布和超参(尤其是 max_features)。同一份数据,max_features='sqrt' 和 'log2' 下排前三位的特征可能完全不同。别把它当金标准,而是作为初步筛选线索。

今天关于《Python中如何查看Scikit-learn随机森林的特征重要性_调用feature_importances_》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

为什么CSS Flex布局中的z-index层级失效_检查position定位与层叠上下文为什么CSS Flex布局中的z-index层级失效_检查position定位与层叠上下文
上一篇
为什么CSS Flex布局中的z-index层级失效_检查position定位与层叠上下文
使用Golang中的benchstat对比性能波动 Go语言基准测试数据可信度分析
下一篇
使用Golang中的benchstat对比性能波动 Go语言基准测试数据可信度分析
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    460次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    522次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    541次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    488次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    307次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码