在 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 计算排列重要性 的相关文章

  • 抑制数组列表添加方法管道输出

    我正在使用数组列表来构建日志项序列以供稍后记录 工作起来很不错 但是 Add 方法将当前索引发送到管道 我可以通过将其发送到 null 来解决这个问题 如下所示 strings Add junk gt null 但我想知道是否有某种机制可以
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • Python:随时接受用户输入

    我正在创建一个可以做很多事情的单元 其中之一是计算机器的周期 虽然我将把它转移到梯形逻辑 CoDeSys 但我首先将我的想法放入 Python 中 我将进行计数 只需一个简单的操作 counter 1 print counter 跟踪我处于
  • 行为:如何从另一个文件导入步骤?

    我刚刚开始使用behave http pythonhosted org behave 一个Pythonic BDD框架 使用小黄瓜语法 http docs behat org guides 1 gherkin html 行为需要一个特征 例
  • Python 中的这种赋值方式叫什么? a = b = 真

    我知道关于元组拆包 http docs python org tutorial datastructures html tuples and sequences但是当一行中有多个等号时 这个赋值被称为什么 阿拉a b True 它总是让我有
  • Python unicode 字符代码?

    有没有办法将 Unicode 字符 插入 Python 3 中的字符串 例如 gt gt gt import unicode gt gt gt string This is a full block s unicode charcode U
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 字典中列表中仅有的几个索引的总和

    如果我有这种类型的字典 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
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • 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 我想杀死那个进程
  • 使用 Doc2vec 后如何解释 Clusters 结果?

    我正在使用 doc2vec 将关注者的前 100 条推文转换为矢量表示形式 例如 v1 v100 之后 我使用向量表示来进行 K 均值聚类 model Doc2Vec documents t size 100 alpha 035 windo
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • Pandas 在特定列将数据帧拆分为两个数据帧

    I have pandas我组成的 DataFrameconcat 一行由 96 个值组成 我想将 DataFrame 从值 72 中分离出来 这样 一行的前 72 个值存储在 Dataframe1 中 接下来的 24 个值存储在 Data
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 使用 Keras 和 fit_generator 绘制 TensorBoard 分布和直方图

    我正在使用 Keras 使用 fit generator 函数训练 CNN 这似乎是一个已知问题 https github com fchollet keras issues 3358TensorBoard 在此设置中不显示直方图和分布 有
  • 使用决策树

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

    我有以下格式的路径的 x y 数据 示例仅用于说明 seq p1 p2 0 20 2 3 1 20 2 4 2 20 4 4 3 22 5 5 4 22 5 6 5 23 6 2 6 23 6 3 7 23 6 4 每条路径都有多个点 它们

随机推荐

  • 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