假设我有以下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,…,从上到下?你知道吗
一种解决方案是直接走到树中的决策路径。 您可以调整this solution,它像打印子句一样打印整个决策树。 下面是一个简单的例子:
相关问题 更多 >
编程相关推荐