在 SciKit-Learn 中使用 Pipeline 计算排列重要性

2024-05-10

我正在使用来自的确切示例SciKit https://scikit-learn.org/stable/auto_examples/inspection/plot_permutation_importance.html#sphx-glr-auto-examples-inspection-plot-permutation-importance-py,比较permutation_importance with tree feature_importances

如您所见,使用了 Pipeline:

rf = Pipeline([
    ('preprocess', preprocessing),
    ('classifier', RandomForestClassifier(random_state=42))
])
rf.fit(X_train, y_train)

permutation_importance:

现在,当您安装Pipeline, 它会依次拟合所有变换并变换数据,然后使用最终估计器拟合变换后的数据。

在后面的例子中,他们使用了permutation_importance在拟合模型上:

result = permutation_importance(rf, X_test, y_test, n_repeats=10,
                                random_state=42, n_jobs=2)

Problem:我不明白的是,其中的功能result仍然是原始的未转换的特征。为什么会这样呢?这工作正常吗?目的是什么Pipeline then?

tree feature_importance: 在同一个例子中,当他们使用feature_importance,结果变换为:

tree_feature_importances = (
    rf.named_steps['classifier'].feature_importances_)

我显然可以改变我的功能,然后使用permutation_importance,但示例中提出的步骤似乎是故意的,并且应该有一个原因permutation_importance不改变特征。


这是预期的行为。排列重要性的工作方式是对输入数据进行混洗并将其应用到管道(或模型,如果这是您想要的)。事实上,如果您想了解初始输入数据如何影响模型,那么您应该将其应用于管道。

如果您对预处理步骤生成的每个附加特征的特征重要性感兴趣,那么您应该生成带有列名称的预处理数据集,然后将该数据直接应用于模型(使用排列重要性),而不是管道。

在大多数情况下,人们对了解管道生成的次要特征的影响不感兴趣。这就是为什么他们在这里使用管道来包含预处理和建模步骤。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 SciKit-Learn 中使用 Pipeline 计算排列重要性 的相关文章

  • Matplotlib 标准化颜色条 (Python)

    我正在尝试使用 matplotlib 当然还有 numpy 绘制轮廓图 它有效 它绘制了它应该绘制的内容 但不幸的是我无法设置颜色条范围 问题是我有很多图 并且需要所有图都具有相同的颜色条 相同的最小值和最大值 相同的颜色 我复制并粘贴了在
  • 用 Python 编写一个无操作或虚拟类

    假设我有这样的代码 foo fooFactory create 由于种种原因 fooFactory create 可能无法创建实例Foo 如果可以的话我想要fooFactory create 返回一个虚拟 无操作对象 这个对象应该是完全惰性
  • 如何用 python 和 sympy 解决多元不等式?

    我对使用 python 和 Sympy 还很陌生 并且遇到了使用 sympy 解决多元不等式的问题 假设我的文件中有很多函数 如下所示 cst sqrt x 2 cst exp sqrt cst x 1 4 log log sqrt cst
  • 获取单个方程的脚本

    在文本文件中输入 a 2 8 b 3 9 c 4 8 d 5 9 e a b f c d g 0 6 h 1 7 i e g j f h output i j 期望的输出 输出 2 8 3 9 0 6 4 8 5 9 1 7 如果输入文件名
  • 类属性在功能上依赖于其他类属性

    我正在尝试使用静态类属性来定义另一个静态类属性 我认为可以通过以下代码来实现 f lambda s s 1 class A foo foo bar f A foo 然而 这导致NameError name A is not defined
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • Python 中 genfromtxt() 的可变列数?

    我有一个 txt具有不同长度的行的文件 每一行都是代表一条轨迹的一系列点 由于每条轨迹都有自己的长度 因此各行的长度都不同 也就是说 列数从一行到另一行不同 据我所知 genfromtxt Python 中的模块要求列数相同 gt gt g
  • Sorted(key=lambda: ...) 背后的语法[重复]

    这个问题在这里已经有答案了 我不太明白背后的语法sorted 争论 key lambda variable variable 0 Isn t lambda随意的 为什么是variable在看起来像的内容中陈述了两次dict 我认为这里的所有
  • 使用 glmnet 纠正 n 个数据集上的 n 个 LASSO 回归的输出(严格来说是所选的特征/变量)

    注意 这是对上一个问题 https stackoverflow com questions 75006466 how to replicate my results from running n lassos iteratively usi
  • 如何为多组精灵创建随机位置?

    我尝试使用 blit 和 draw 方法进行 for 循环 并为 PlayerSprite 和 Treegroup 使用不同的变量 for PlayerSprite in Treegroup surface blit PlayerSprit
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 a dictionary dog white 3 5 black 6 7 Brown 23 1 cat gray 5 6 brown 4 9 bird blue 3 5 green 1 2 yellow 4 9 mo
  • FastText - 由于 C++ 扩展未能分配内存,无法加载 model.bin

    我正在尝试使用 FastText Python APIhttps pypi python org pypi fasttext https pypi python org pypi fasttext虽然 据我所知 此 API 无法加载较新的
  • Python Flask 是否定义了路由顺序?

    在我看来 我的设置类似于以下内容 app route test def test app route
  • Python 矩阵每一行的总和

    lista 1 2 3 4 5 6 7 8 9 print lista def filas lista res for elemento in lista x sum lista elemento res append x print re
  • WindowsError:[错误 5] 访问被拒绝

    我一直在尝试终止一个进程 但我的所有选项都给出了 Windows 访问被拒绝错误 我通过以下方式打开进程 一个python脚本 test subprocess Popen sys executable testsc py 我想杀死那个进程
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb
  • 使用决策树

    我知道 tl dr 我将尝试解释我的问题 而不会用大量蹩脚的代码来打扰您 我正在做一项学校作业 我们有蓝精灵的图片 我们必须通过前景背景分析来找到它们 我有一个 Java 决策树 其中包含所有数据 HSV 直方图 1 一个节点 然后尝试找到

随机推荐

  • C++ 中的比较技巧

    A class class foo public int data 现在我想向此类添加一个方法 进行一些比较 看看它的数据是否等于给定的数字之一 当然 我可以写if data num1 data num2 data num3 但说实话 我写
  • 确定第三方应用程序在 iPhone 上播放的歌曲

    我正在尝试确定 iPhone 上当前正在播放的歌曲的标题 我知道如果本机 Apple 应用程序正在播放音乐 我可以使用以下代码来找出正在播放的内容 但如果从 Spotify 或其他音乐播放应用程序播放歌曲 我如何找到歌曲的标题 MPMedi
  • QLineEdit:显示处理后的文本,而不是输入的文本,但保留它(自定义回显模式)

    我想要一个QLineEdit不显示输入的文本 而是显示经过处理的版本 同时保留原始文本并在通过请求时返回它text 就像密码回显模式一样 但我不希望每个字符都被屏蔽 我想虚拟化空间 例如什么时候some text with spaces i
  • 如何向类添加对十六进制函数的支持

    我写了一个类来实现 int 方法 以便实例可以表现得像整数 class MyClass def init self value self value value def int self return self value 使用int实例上
  • 有关于 VBScript 正则表达式对象 (RegExp) 的好文档吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们都知道每个正则表达式实现都有其自身的特点 我需要在使用 COM 自动化的应用程序中使用 Micros
  • 编程语言语法中尾随逗号的历史

    许多编程语言允许在其语法中在列表中的最后一项后面使用尾随逗号 据说这样做是为了简化自动代码生成 这是可以理解的 作为示例 以下是 Java 中完全合法的数组初始化 JLS 10 6 数组初始值设定项 http java sun com do
  • node_modules 显示为空,您可能需要运行 `npm install`

    我从 git 克隆了一个 Angular 4 项目 当我转到项目的根文件夹并执行时ng serve 我收到以下错误 node modules appears empty you may need to run npm install 我该如
  • Mysql:my.cnf中的修改不生效

    我已经更新了my cnf我的数据库文件包含以下行 max connections 200 之后我停止并启动 mysql 服务以使更改生效 但由于某种原因 此更改不会影响数据库 因为如果我运行 mysql gt select max conn
  • 在 Facebook 上分享链接。 Facebook 不获取描述和图像

    我正在开发sucsongmoi net 越南语 当浏览者从他们的墙上分享网站链接时 某些链接 facebook 会获取描述和图像 某些链接 facebook 无法获取描述和图像 例如 分享sucsognmoi netfacebook 没有得
  • 显示页面的背景颜色并将文本居中对齐

    我们的页面如下所示 link http websi career我们想要这样显示 1 我们需要显示文本和textfields在中心 2 我们需要为页面的某些部分添加背景颜色 career page box page title margin
  • 获取 SL 中的带宽数据

    我正在尝试使用 Softlayer 的 Java 客户端 API 获取带宽使用情况 下面API的结果就是带宽的吞吐量 有没有用java获取带宽使用数据的API List
  • 是否有可能通过 mmap 匿名内存“打孔”?

    考虑一个使用大量大致页面大小的内存区域 例如 64 kB 左右 的程序 每个内存区域的寿命都相当短暂 在我的特定情况下 这些是绿色线程的替代堆栈 如何最好地分配这些区域 以便一旦该区域不再使用 它 们的页面可以返回到内核 天真的解决方案显然
  • 如何在Windows Phone 7中获取Wi-Fi和移动网络参数?

    我的应用程序需要以下移动网络参数 MCC 移动国家代码 MNC 移动网络代码 LAC 位置区域代码 CID 小区标识符 细胞信号强度 对于 Wi Fi MAC地址 信号强度 我还需要两个变体的设备 IP 地址 Windows Phone 7
  • 可选的OptionsetField是SilverStripe 3.2

    在 SilverStripe 3 1 中 我使用了一些带有 OptionssetFields 的表单 这些表单是可选的 因此不需要做出选择 这运作良好 但自从我更新到 SilverStripe 3 2 0 后 该表单不再接受这一点 提交时
  • JavaScript:事件处理程序:在哪里声明变量 - 本地变量还是闭包(与开销)?

    我发现自己编写了各种包含事件处理程序的函数 感觉最好在父函数 闭包 的根部声明处理函数所需的变量 特别是如果它们是 jQuery 选择 多个处理程序所需的常量 或者需要一些我不想要的预计算每次触发事件时重复 一个简单的例子 var touc
  • 如何使用nodejs/aws-sdk将base64编码的pdf直接上传到s3?

    我正在尝试使用以下代码将 base64 编码的 pdf 上传到 S3 而无需将文件写入文件系统 const AWS require aws sdk exports putBase64 async object name buffer buc
  • ReverseProxy取决于golang中的request.Body

    我想构建一个 http 反向代理 它检查 HTTP 主体 然后将 HTTP 请求发送到它的上游服务器 你怎么能在 Go 中做到这一点 初始尝试 如下 失败 因为 ReverseProxy 复制传入请求 修改它并发送 但正文已被读取 func
  • Contenteditable - 从插入符号提取文本到元素末尾

    浏览完所有可能的问题和答案后 我会尝试这种方式 我正在编写 RTE 程序 但未能成功提取 contenteditable 元素中的文本 原因是 每个浏览器处理节点和按键 13 事件的方式略有不同 例如 一个浏览器创建 br 另一个浏览器创建
  • ASP.Net Web API 与 WCF,我的项目中应该选择哪一个

    到目前为止 我已经在网络上阅读了很多关于 WCF 和 ASP Net Web API 之间的差异的文章 不幸的是 我无法清楚地知道什么才能达到我的目的 我读过的大多数文章都强调了这两个 Web 服务的设计观点 但我很困惑什么最适合我的项目
  • 在 SciKit-Learn 中使用 Pipeline 计算排列重要性

    我正在使用来自的确切示例SciKit https scikit learn org stable auto examples inspection plot permutation importance html sphx glr auto