【发布时间】:2019-04-28 12:25:09
【问题描述】:
假设我有以下DecisionTreeClassifier 模型:
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_breast_cancer
bunch = load_breast_cancer()
X, y = bunch.data, bunch.target
model = DecisionTreeClassifier(random_state=100)
model.fit(X, y)
我想遍历这棵树中的每个节点(叶节点和决策节点),并确定预测值在遍历树时如何变化。基本上,对于给定的样本,我希望能够告诉最终预测(.predict 返回的内容)是如何确定的。所以也许样本最终会被预测为1,但是会遍历四个节点,并且在每个节点上,它的“常量”(scikit 文档中使用的语言)预测从1 到0 再到0 到1 .
目前还不清楚我是如何从model.tree_.value 获得这些信息的,它被描述为:
| value : array of double, shape [node_count, n_outputs, max_n_classes]
| Contains the constant prediction value of each node.
在这个模型的情况下看起来像:
>>> model.tree_.value.shape
(43, 1, 2)
>>> model.tree_.value
array([[[212., 357.]],
[[ 33., 346.]],
[[ 5., 328.]],
[[ 4., 328.]],
[[ 2., 317.]],
[[ 1., 6.]],
[[ 1., 0.]],
[[ 0., 6.]],
[[ 1., 311.]],
[[ 0., 292.]],
[[ 1., 19.]],
[[ 1., 0.]],
[[ 0., 19.]],
有谁知道我怎么能做到这一点?上面 43 个节点中每个节点的类预测是否只是每个列表的 argmax?那么1、1、1、1、1、1、0、0、...,从上到下?
【问题讨论】:
标签: python machine-learning scikit-learn