【发布时间】:2015-08-17 14:02:56
【问题描述】:
我有以下代码,但我只是不明白如何解释来自 RandomForestClassifier 的树输出数据,例如如何计算 gini、给定样本以及“值”列表中的总数如何更高比初始样本 3.
我将此输出与我可以理解和解释的 DecisionTreeClassifier 进行比较。
感谢任何帮助,谢谢!
from sklearn.ensemble import RandomForestClassifier
from sklearn import tree
import numpy as np
from sklearn.externals.six import StringIO
import pydot
# Data
X = np.array([[0, 0],
[0, 1],
[1, 0],
[1, 1]])
Y = np.array([0, 1, 1, 0])
# Create object classifiers
clf = RandomForestClassifier()
clf_tree = tree.DecisionTreeClassifier()
# Fit data
clf_tree.fit(X,Y)
clf.fit(X, Y)
# Save data
dot_data = StringIO()
tree.export_graphviz(clf_tree, out_file = dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
graph.write_pdf("orig_tree.pdf")
i_tree = 0
for tree_in_forest in clf.estimators_:
dot_data = StringIO()
tree.export_graphviz(tree_in_forest, out_file = dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
f_name = 'tree_' + str(i_tree) + '.pdf'
graph.write_pdf(f_name)
i_tree += 1
决策树: http://i.stack.imgur.com/XZ7vU.png
来自 RandomForestClassifier 的树: http://i.stack.imgur.com/Bb5t9.png
【问题讨论】:
-
我查看了链接,这就是为什么我包含一个普通决策树作为比较,它与 RandomForestClassifier 中使用的类相同。在我上面的示例中,来自 RandomForestClassifier 的树中的节点并不多,而且输入样本很小,因此应该很容易计算出树中的数字是如何派生的,就像在 DecisionTreeClassifier 中一样。看看图片链接,你就会明白我是从哪里来的。
标签: python-2.7 tree scikit-learn random-forest decision-tree