scikit-learn在哪里保存树结构中每个叶节点的决策标签?

时间:2017-05-24 12:53:31

标签: python scikit-learn decision-tree tree-structure

我使用scikit-learn训练了一个随机森林模型,现在我想将它的树结构保存在文本文件中,以便我可以在其他地方使用它。 根据{{​​3}},一个树对象由许多并行数组组成,每个数组都包含有关树的不同节点的一些信息(例如,左子,右子,它检查的特征,......)。但是,似乎没有关于每个叶节点对应的类标签的信息!它甚至没有在上面链接中提供的示例中提及。

有没有人知道scikit-learn决策树结构中存储的类标签在哪里?

1 个答案:

答案 0 :(得分:5)

查看sklearn.tree.DecisionTreeClassifier.tree_.value的文档:

from sklearn.datasets import load_iris
from sklearn.cross_validation import cross_val_score
from sklearn.tree import DecisionTreeClassifier

clf = DecisionTreeClassifier(random_state=0)
iris = load_iris()

clf.fit(iris.data, iris.target)

print(clf.classes_)

[0, 1, 2]

print(clf.tree_.value)

[[[ 50.  50.  50.]]

 [[ 50.   0.   0.]]

 [[  0.  50.  50.]]

 [[  0.  49.   5.]]

 [[  0.  47.   1.]]

 [[  0.  47.   0.]]

 [[  0.   0.   1.]]

 [[  0.   2.   4.]]

 [[  0.   0.   3.]]

 [[  0.   2.   1.]]

 [[  0.   2.   0.]]

 [[  0.   0.   1.]]

 [[  0.   1.  45.]]

 [[  0.   1.   2.]]

 [[  0.   0.   2.]]

 [[  0.   1.   0.]]

 [[  0.   0.  43.]]]

clf.tree_.value中的每一行都包含每个节点的常量预测值,“(help(clf.tree_))对应索引到索引clf.classes_

请参阅this answer了解更多详情。