如何计算sklearn中交叉验证的每个模型中的特征重要性

2024-02-23

我在用RandomForestClassifier() with 10 fold cross validation如下。

clf=RandomForestClassifier(random_state = 42, class_weight="balanced")
k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=42)
accuracy = cross_val_score(clf, X, y, cv=k_fold, scoring = 'accuracy')
print(accuracy.mean())

我想确定我的特征空间中的重要特征。获得单一分类的特征重要性似乎很简单,如下所示。

print("Features sorted by their score:")
feature_importances = pd.DataFrame(clf.feature_importances_,
                                   index = X_train.columns,
                                    columns=['importance']).sort_values('importance', ascending=False)
print(feature_importances)

但是,我找不到如何执行feature importance for cross validation在sklearn中。

总之,我想确定最有效的功能(例如,通过使用average importance score)在10倍交叉验证中。

如果需要,我很乐意提供更多详细信息。


cross_val_score()不返回训练测试折叠的每个组合的估计量。

你需要使用cross_validate() https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.cross_validate.html并设置return_estimator =True.

这是一个工作示例:

from sklearn import datasets
from sklearn.model_selection import cross_validate
from sklearn.svm import LinearSVC
from sklearn.ensemble import  RandomForestClassifier
import pandas as pd

diabetes = datasets.load_diabetes()
X, y = diabetes.data, diabetes.target

clf=RandomForestClassifier(n_estimators =10, random_state = 42, class_weight="balanced")
output = cross_validate(clf, X, y, cv=2, scoring = 'accuracy', return_estimator =True)
for idx,estimator in enumerate(output['estimator']):
    print("Features sorted by their score for estimator {}:".format(idx))
    feature_importances = pd.DataFrame(estimator.feature_importances_,
                                       index = diabetes.feature_names,
                                        columns=['importance']).sort_values('importance', ascending=False)
    print(feature_importances)

Output:

Features sorted by their score for estimator 0:
     importance
s6     0.137735
age    0.130152
s5     0.114561
s2     0.113683
s3     0.112952
bmi    0.111057
bp     0.108682
s1     0.090763
s4     0.056805
sex    0.023609
Features sorted by their score for estimator 1:
     importance
age    0.129671
bmi    0.125706
s2     0.125304
s1     0.113903
bp     0.111979
s6     0.110505
s5     0.106099
s3     0.098392
s4     0.054542
sex    0.023900
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算sklearn中交叉验证的每个模型中的特征重要性 的相关文章

随机推荐

  • 从 1.5 更新到 Android Studio 2.0 后,ndk 语法高亮不起作用或可能被破坏

    编辑器窗口中 C C 代码的语法突出显示在 AS 1 5 中运行良好 但从 AS 1 5 更新到 2 0 后 即使使用示例 HelloJNI 项目也无法正常工作 尝试使用保存的设置 重置默认设置以及全新下载和安装 AS 2 0 但没有任何效
  • 如何将 Assetic 用于 requireJs

    我正在尝试在 synfony2 项目中使用 require js 这是主树枝文件中的代码 文件vendor js require js已正确加载 但对于文件bundles web js main js我收到消息 未捕获的错误 模块加载超时
  • NextJS 动态路由与模态重新加载导致覆盖背景消失

    我有一个非常简单的 NextJS 应用程序 打开页面将更新 URL 但不会触发导航 而是在模式中显示内容 URL 仍然反映实际页面位置 任何刷新都会将用户带到那里 当模式打开时 我仍然希望保留页面上的原始内容在背景中淡出 并且模式应该出现在
  • 可以根据另一个单元格的值锁定单元格范围吗?

    我正在使用跟踪器来测试新的更改以及何时测试 如果新更改不适用 我不想删除它 我想禁用 并变灰 所有可用于选择完成日期的单元格 但仅限于该行 我尝试过使用以下方法 但没有任何运气 工作表上的条件格式 进行更改时执行的 VBA 代码 数据验证
  • BABEL:未知选项:base.Children

    我刚刚做了一个npm update并获得了一些新的软件包版本 这破坏了我的构建 使我无法使用默认值updateSchema js from https github com relayjs relay starter kit blob ma
  • 使用 nutch REST api 的 Nutch 弹性索引器中的未知问题

    我试图使用 REST 端点公开 nutch 但在索引器阶段遇到了问题 我正在使用 elasticsearch 索引编写器将文档索引到 ES 我使用了 NUTCH HOME runtime deploy bin nutch startserv
  • 如何通过Webpack和6to5使用带有es6模块的npm包?

    假设我想在我的项目 或任何给定的 npm 包 中使用 Immutable 我有npm install编辑了它 所以它在node modules 当然 它有 CommonJS 导出 然而 我想在我的项目中使用 es6 模块 我使用 Webpa
  • 如何在 AssemblyResolve 事件之前在运行时加载程序集?

    实际上 我尝试在我的解决方案中实现某种 静态链接 程序集 所以我尝试了以下方法 使用 CopyLocal false 添加对我的程序集的引用 使用 添加为链接 将 dll 文件本身添加到我的解决方案中 使用 添加资源 添加现有文件 将 dl
  • 尝试根据当前 URL 中的当前字符串向属性添加类

    我整个早上都在努力让它发挥作用 但没有成功 如果我执行以下代码 persist header a each function var this this if window location href indexOf signage 1 t
  • 使用 JInternalFrame 和一些按钮

    我们可以使用一个JInternalFame https docs oracle com javase tutorial uiswing components internalframe html主框架中有一个按钮 该框架包含一个JDeskt
  • 如何让 CMake 在生成 Visual Studio 解决方案后执行一些脚本

    我正在使用 CMake 来构建一个项目 我想在 CMake 生成解决方案后执行一些脚本 比如 python 脚本 这样我就不必每次都手动执行它 我正在使用 Cmake 2 8 有谁知道 Cmake 为此目的提供的任何 userhook 或其
  • 在 Java 中读取和写入同一个文件

    我想读自criteria txt文件 以标记化并在同一文件的末尾附加标记 程序抛出异常 No file found 我不知道我的错误在哪里 任何建议都会对我有帮助 先感谢您 这是我的代码 import java io import java
  • 如何以 HTML 格式发送 PUT/DELETE 请求?

    我正在 PHP 中制作 REST API 我知道我可以通过以下方式捕获请求方法 SERVER REQUEST METHOD 但是 如何在浏览器中触发 PUT DELETE 请求 我无法想象更改表单标记的方法属性以指定除 GET 或 POST
  • 线程只运行一次

    当线程完成后 您无法使用 start 方法再次运行它 它会抛出异常 谁能解释一下 为什么 这样的架构决策背后的原因是什么 因为在单独的线程中执行代码的方法不是创建一个线程 这与什么是线程的系统视图相关 关于绿色线程和系统线程之间的区别有无穷
  • 防止刷新时插入重复记录而不重定向

    我有这样的脚本 if isset POST comment posted user comment mysql real escape string POST user comment add user comment Event addU
  • 如何获取Unity中正在注入的对象的类型?

    我有一个类型在其构造函数中接收另一个类型 该类型通常是创建它的对象的类型 例如 public class Logger public Logger Type parent 我想指示Unity解决Logger将需要它的对象的类型作为参数传递给
  • WCF Rest 4.0 中不带尾部斜杠的简单 URL 路由

    我有一个基于 WCF REST 服务模板 40 CS 的 WCF REST 4 0 项目 我想公开简单的服务端点 URLwithout尾部斜杠 例如 CarService cs http www domain com cars http w
  • 工具箱 Visual Studio 2015 中缺少报告查看器标记

    我最近安装了 Visual Studio 2015 Community 现在我的工具箱没有报表查看器标签 我的 ASP NET 项目中所有现有的报表查看器都显示 创建控件时出错 我已经检查了所有参考文献 它们似乎没问题 当我运行项目时 报告
  • 如何使用 swt 向表中添加行

    我正在学习 swing 并对将行插入到表格有一个疑问 我的要求是我必须通过按添加按钮添加新行 但我无法继续 请找到下面的代码 如果有人知道请帮助我 public class TableShellExample Display d Shell
  • 如何计算sklearn中交叉验证的每个模型中的特征重要性

    我在用RandomForestClassifier with 10 fold cross validation如下 clf RandomForestClassifier random state 42 class weight balanc