随机森林分类器的决策路径

2023-12-30

这是我在您的环境中运行它的代码,我正在使用RandomForestClassifier我正在尝试找出decision_path对于选定的样本RandomForestClassifier.

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from sklearn.ensemble import RandomForestClassifier

X, y = make_classification(n_samples=1000,
                           n_features=6,
                           n_informative=3,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)

# Creating a dataFrame
df = pd.DataFrame({'Feature 1':X[:,0],
                                  'Feature 2':X[:,1],
                                  'Feature 3':X[:,2],
                                  'Feature 4':X[:,3],
                                  'Feature 5':X[:,4],
                                  'Feature 6':X[:,5],
                                  'Class':y})


y_train = df['Class']
X_train = df.drop('Class',axis = 1)

rf = RandomForestClassifier(n_estimators=50,
                               random_state=0)

rf.fit(X_train, y_train)

我得到的最远的是:

#Extracting the decision path for instance i = 12
i_data = X_train.iloc[12].values.reshape(1,-1)
d_path = rf.decision_path(i_data)

print(d_path)

但输出没有多大意义:

(' 的稀疏矩阵 以压缩稀疏行格式存储 486 个元素>, array([ 0, 133, 282, 415, 588, 761, 910, 1041, 1182, 1309, 1432, 1569、1728、1869、2000、2143、2284、2419、2572、2711、2856、2987、 3128、3261、3430、3549、3704、3839、3980、4127、4258、4389、4534、 4671、4808、4947、5088、5247、5378、5517、5640、5769、5956、6079、 6226, 6385, 6524, 6655, 6780, 6925, 7046], dtype=int32))

我试图找出数据框中粒子样本的决策路径。谁能告诉我该怎么做?

这个想法是有类似的东西this http://scikit-learn.org/stable/auto_examples/tree/plot_unveil_tree_structure.html.


RandomForestClassifier.decision_path方法返回一个tuple of (indicator, n_nodes_ptr)。 请参阅文档:here http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html#sklearn.ensemble.RandomForestClassifier.decision_path

所以你的变量node_indicator是一个元组,而不是您想象的那样。 元组对象没有属性“索引”,这就是为什么您这样做时会收到错误:

node_index = node_indicator.indices[node_indicator.indptr[sample_id]:
                                    node_indicator.indptr[sample_id + 1]]

try :

(node_indicator, _) = rf.decision_path(X_train)

您还可以为单个样本 id 绘制森林中每棵树的决策树:

X_train = X_train.values

sample_id = 0

for j, tree in enumerate(rf.estimators_):

    n_nodes = tree.tree_.node_count
    children_left = tree.tree_.children_left
    children_right = tree.tree_.children_right
    feature = tree.tree_.feature
    threshold = tree.tree_.threshold

    print("Decision path for DecisionTree {0}".format(j))
    node_indicator = tree.decision_path(X_train)
    leave_id = tree.apply(X_train)
    node_index = node_indicator.indices[node_indicator.indptr[sample_id]:
                                        node_indicator.indptr[sample_id + 1]]



    print('Rules used to predict sample %s: ' % sample_id)
    for node_id in node_index:
        if leave_id[sample_id] != node_id:
            continue

        if (X_train[sample_id, feature[node_id]] <= threshold[node_id]):
            threshold_sign = "<="
        else:
            threshold_sign = ">"

        print("decision id node %s : (X_train[%s, %s] (= %s) %s %s)"
              % (node_id,
                 sample_id,
                 feature[node_id],
                 X_train[sample_id, feature[node_id]],
                 threshold_sign,
                 threshold[node_id]))

请注意,在您的例子中,您有 50 个估算器,因此读起来可能有点无聊。

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

随机森林分类器的决策路径 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 如何在 Python 中检索 for 循环中的剩余项目?

    我有一个简单的 for 循环迭代项目列表 在某些时候 我知道它会破裂 我该如何退回剩余的物品 for i in a b c d e f g try some func i except return remaining items if s
  • 如何从网页中嵌入的 Tableau 图表中抓取工具提示值

    我试图弄清楚是否有一种方法以及如何使用 python 从网页中的 Tableau 嵌入图形中抓取工具提示值 以下是当用户将鼠标悬停在条形上时带有工具提示的图表示例 我从要从中抓取的原始网页中获取了此网址 https covid19 colo
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • 如何加速Python中的N维区间树?

    考虑以下问题 给定一组n间隔和一组m浮点数 对于每个浮点数 确定包含该浮点数的区间子集 这个问题已经通过构建一个解决区间树 https en wikipedia org wiki Interval tree 或称为范围树或线段树 已经针对一
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • async/await 是否适合同时受 IO 和 CPU 限制的方法?

    MSDN 文档似乎指出async and await适用于 IO 密集型任务 而Task Run应该用于 CPU 密集型任务 我正在开发一个应用程序 该应用程序执行 HTTP 请求来检索 HTML 文档 然后对其进行解析 我有一个看起来像这
  • JSP中的编码问题

    我有一个带有几个文本字段的 html 表单 当我尝试提交非英文字符 在我的例子中是俄语 时 服务器收到 不可读 字符串 不是问题 而是一些奇怪的字符 我简化了我的代码以在此处显示
  • Cookie 在 ASP.NET 中如何工作?

    我工作的网站由多个项目组成 用多种语言编写 现在 我们必须在查询字符串和会话变量中使用一些笨拙的代码 以使人们在从一个项目转到另一个项目时保持登录状态 由于 cookie 是特定于域的 因此我们尝试将它们转换为它们 因为它们可以使用一种语言
  • 如何根据区域设置获取带有时区的数据时间模式?

    以下代码是我已经拥有的代码 DateFormat f DateFormat getDateTimeInstance DateFormat SHORT DateFormat SHORT Java Locale SimpleDateFormat
  • 如何配置 nginx 与 Jetty6 网络服务器一起工作?

    看来nginx是和php ruby python一起使用的 有人有如何设置 nginx 与后端 jetty tomcat 一起使用的示例吗 Thanks 正确的 我想我有资格成为一名自学者 不是吗 只需在 nginx conf 文件的 ht
  • 在项目创建时自动加载库。安卓、日食

    我已经弄清楚如何在桌面上获得我想要的效果 窗口 gt 首选项 gt Java gt 安装的 JRE gt jre7 编辑 gt 添加外部 JAR 但我无法在 Android 上获得相同的效果 在桌面项目中 我可以看到文件夹 JRE Syst
  • 在 MongoEngine 中过滤嵌入列表

    如果我有这些模型 class Sub EmbeddedDocument name StringField class Main Document subs ListField EmbeddedDocumentField Sub 我想要一个返
  • 从地图中写入和读取时的竞争条件

    跟进旧帖子here https stackoverflow com questions 71562369 add unique values in an array as a value in concurrent map golang 我
  • C# 中如何检查字符串是否包含字符?

    是否有一个函数可以应用于字符串 如果字符串包含字符 该函数将返回 true 或 false 我有带有一个或多个字符选项的字符串 例如 var abc s var def aB var ghi Sj 例如 我想做的是有一个函数 如果上面包含小
  • 树/差异算法

    我目前正在编写一个差异算法来检测树的两个修订版之间的插入 删除 更新和移动 而每个节点都有一个唯一的 ID 该 ID 不会因修订而改变 我将按预序遍历每棵树 并动态生成两个节点之间的差异 然后移动cursors相应地 例如 在遇到删除的节点
  • 在 SPARQL 查询中使用条件

    我有一个 SPARQL 查询 如下所示 SELECT informationPath businessEntitylabel path sourced mastered delivered WHERE businessEntity dd h
  • 是否可以检查数学表达式字符串?

    我想检查所有括号的正确开始和结束 并检查它是否是给定字符串中的数学表达式 ex str1 A1 A2 A3 A5 B3 B5 C1 A3 C2 B2 C1 str2 A1 A2 A3 A5 C1 B3 B5 C1 A3 C2 B2 C1 s
  • SYSDATETIME() 的成本是否比 GETDATE() 的成本高?

    有什么理由让我每次都停止使用 SYSDATETIME 而不是 GETDATE 难道他们都没有询问CPU 现在是什么时间 或者 sysdatetime 是否需要更多指令来计算分数 Getdate 可以四舍五入吗 sysdatetime 可以更
  • 当字段名称与局部变量相同时如何访问字段?

    我有一个字段和一个同名的局部变量 如何访问该字段 Code String s Global private void mx String s Local lblB setText s i want global 在 C 中使用 运算符 如下
  • 获取嵌入的 YouTube 视频的标题和描述

    在我正在开发的网站上 我嵌入了来自 YouTube 的视频 并希望获取视频标题及其描述 我如何获取该信息 你可以这样做oembed http www oembed com 例子 http www youtube com oembed url
  • WooCommerce 中允许非结帐客人重定向

    After 仅允许访客在 WooCommerce 中结帐特定产品 https stackoverflow com questions 64322204 allow guest checkout for specific products o
  • 具有包含 的复杂类型的 XML 架构?

    我想定义一个复杂类型 其中包含可能存在或不存在的元素 并且还允许其他未定义的元素 所以我有这样的东西
  • 在 ggplot2 中的转换数据上标记重新缩放的值

    问题 当我尝试热图时 这是一个循环问题 其答案可能令人沮丧 我回答了一个问题使用不同的数据绘制热图 https stackoverflow com q 10859858 1290420使用fields and ggplot2包 它基本上允许
  • 从服务生成链接

    如何从服务生成链接 我已在我的服务中注入 路由器 但是生成的链接是 view 42代替 app dev php view 42 我该如何解决这个问题 我的代码是这样的 服务 yml services myservice class My M
  • 随机森林分类器的决策路径

    这是我在您的环境中运行它的代码 我正在使用RandomForestClassifier我正在尝试找出decision path对于选定的样本RandomForestClassifier import numpy as np import p