【问题标题】:Predicted classification probability from a tree node in trained sklearn DecisionTreeClassifier从经过训练的 sklearn DecisionTreeClassifier 中的树节点预测的分类概率
【发布时间】:2018-02-15 11:15:08
【问题描述】:

我已经拟合了一个 DecisionTreeClassifier 实例,并且我正在尝试提取每个节点的预测概率。我需要这个来创建类似于下图所示的自定义决策树可视化。

我可以导出每个节点的特征和阈值。

dtc.tree_.feature
Out[72]: array([93, 36, 92, 51, 84, -2, 20, -2, -2, -2, -2, -2,  6, -2, -2])

dtc.tree_.threshold
Out[73]: 
array([ 50.5       ,   0.5       ,  85.50991821,   0.5       ,
         5.5       ,  -2.        ,   0.5       ,  -2.        ,
        -2.        ,  -2.        ,  -2.        ,  -2.        ,
         0.5       ,  -2.        ,  -2.        ])

理想情况下,我会使用类似的方法导出每个节点的预测概率。

dtc.tree_.probability
Out[xx]:
array([0.50, 0.42, 0.21, 0.45, 0.62, ....])

这可能吗?

【问题讨论】:

  • 该示例帮助我找到了特征和阈值,但除了基于每个决策路径人为地创建样本之外,我没有看到提取每个节点概率的方法。那只会让我得到终端节点:/

标签: python scikit-learn decision-tree


【解决方案1】:

我发现 values 是属于每个类的样本数,我的“预测概率”可以被认为是属于给定类的样本的比例。因此我可以使用以下方法计算它:

samples = dtc.tree_.n_node_samples
class1_positives = dtc.tree_.value[:,0,1]
probs = (class1_positives/samples).tolist()

【讨论】:

  • 嗨!我遇到了预测概率在“平衡”DecisionTreeClassifier 类中为正的问题。我无法理解它是如何在这种“模式”下计算的(在 predict_proba() 方法中)
猜你喜欢
  • 2019-06-19
  • 2018-04-19
  • 2016-01-04
  • 2022-06-28
  • 1970-01-01
  • 2021-01-03
  • 2019-08-07
  • 2017-08-29
  • 2019-09-16
相关资源
最近更新 更多