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

Where does scikit-learn hold the decision labels of each leaf node in its tree structure?

我已经使用 scikit-learn 训练了一个随机森林模型,现在我想将其树结构保存在一个文本文件中,以便我可以在其他地方使用它。 根据 this link 一棵树 object 由许多并行数组组成,每个数组包含有关树的不同节点的一些信息(例如左 child、右 child、什么它检查的功能,...)。但是好像没有关于每个叶子节点对应的class标签的信息!在上面 link 中提供的示例中甚至没有提到它。

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

查看 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 "contains the constant prediction value of each node," (help(clf.tree_)) 中的每一行对应索引到索引 clf.classes_.

有关(几乎)更多详细信息,请参阅 this answer