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