我训练了一个sklearn决策树。在
from sklearn.tree import DecisionTreeClassifier
c=DecisionTreeClassifier(class_weight="auto")
c.fit([[0,0],
[0,1],
[1,1],
],[0,1,0])
现在我想检查每个节点有多少个正/负样本。因此一个图
^{pr2}$如何从一个经过训练的决策树中得到这个(左数)?在
我可以看到一个c.tree_
变量,但是内容似乎没有什么帮助。有零,权重。。。而且很难猜出怎样才能把计数恢复过来。在
每个类的样本数存储在
tree_.value
中,但是它只存储叶的节点值,所以我使用后序遍历来获取所有节点的值。在例如
^{pr2}$输出:
更新1
我想知道为什么
tree_.value
只存储叶节点的值,然后我找到了https://stackoverflow.com/questions/27417809/show-values-at-each-node-level-of-scikit-learn-decision-tree和{a2}。在原来在scikit learn 0.17.dev0中,
tree_.value
已经返回了所有节点的值。在更新2
虽然我认为当给定
class_weight
时“撤销权重”是有意义的,但实现这一点是有可能的。在class_weight
的计算公式为因此,您可以在
if node in leaves:
之后添加value[node, :] /= class_weight
,以重新计算叶节点的值。在相关问题 更多 >
编程相关推荐