我已经使用 scikit-learn 训练了一个随机森林模型,现在我想将它的树结构保存在一个文本文件中,以便我可以在其他地方使用它。根据此链接,树对象由许多并行数组组成,每个数组都保存有关树的不同节点的一些信息(例如,左孩子、右孩子、它检查的特征……)。但是似乎没有关于每个叶节点对应的类标签的信息!在上面链接中提供的示例中甚至没有提到它。
有谁知道存储在 scikit-learn 决策树结构中的类标签在哪里?
我已经使用 scikit-learn 训练了一个随机森林模型,现在我想将它的树结构保存在一个文本文件中,以便我可以在其他地方使用它。根据此链接,树对象由许多并行数组组成,每个数组都保存有关树的不同节点的一些信息(例如,左孩子、右孩子、它检查的特征……)。但是似乎没有关于每个叶节点对应的类标签的信息!在上面链接中提供的示例中甚至没有提到它。
有谁知道存储在 scikit-learn 决策树结构中的类标签在哪里?
查看以下文档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_)
) 对应于 index-to-index clf.classes_
。
有关(几乎)更多详细信息,请参见此答案。