我有下面的代码,但我只是不明白如何解释从RandomForestClassifier的树输出数据,像基尼系数是如何计算的,给定的样本和"值"列表中的总数如何可以高于3的初始样本。
我将此输出与我可以理解和解释的decisiontreecclassifier进行比较。
任何帮助都是感激的,谢谢!
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
决策树:https://i.stack.imgur.com/XZ7vU.png
来自RandomForestClassifier的树:https://i.stack.imgur.com/Bb5t9.png
给定样本基尼系数是如何计算的?
基尼系数的计算方法与随机森林和决策树完全相同。基尼值或方差对应于节点的杂质。
"值"列表中的总数如何高于初始样本3?
在分类的情况下,value属性对应于到达叶子的样本数。
在随机森林的情况下,样本是自举的,因此样本总数平均为原始样本的2/3,但样本总数没有变化。