训练有素的 sklearn DecisionTreeClassifier 中树节点的预测分类概率

Predicted classification probability from a tree node in trained sklearn DecisionTreeClassifier

我已经拟合了 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, ....])

这可能吗?

我发现值是属于每个 class 的样本数,而我的 "prediction probability" 可以被认为是属于给定 class 的样本比例。因此我可以使用以下方法计算它:

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