训练有素的 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()
我已经拟合了 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()