scikit-learn ExtraTreeClassifier 和 RandomForestClassifier 的图表
Graph of scikit-learn ExtraTreeClassifier and RandomForestClassifier
我正在尝试制作一些图表来说明 scikit-learn 中 RandomForestClassifier 和 ExtraTreeClassifier 之间的区别。我想我可能已经弄明白了,但我不确定。这是我的代码,用于拟合和绘制 iris 数据集:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.externals.six import StringIO
from sklearn import tree
import pydot
iris = load_iris()
X = iris.data
y = iris.target
clf = tree.ExtraTreeClassifier()
clf = clf.fit(iris.data, iris.target)
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
file_name = "et_iris.pdf"
graph.write_pdf(file_name)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
file_name = "rdf_iris.pdf"
graph.write_pdf(file_name)
这生成的图表似乎是正确的,ET 图比决策树图 "bushier" 多。
DecisionTreeClassifier 与 RandomForestClassifier 中的单个树相同,而 ExtraTreeClassifier 与 ExtraTreeClassifier 中的单个树相同,我是否正确?
有没有办法对实际的 RDF 或 ET 分类器中的所有树执行此操作?我尝试在森林中使用 .estimators_,但他们似乎没有导出方法。
export_graphviz
不是方法,是函数。 None大树"has"吧。您可以将它与 estimators_
一起使用。
关于 ExtraTreeClassifier
是 ExtraTreesClassifier
中的一棵树,DecisionTreeClassifier
是 RandomForestClassifier
中的一棵树,你是对的。然而,这并没有真正涵盖它,因为:
RandomForestClassifier
bootstraps为每棵树单独设置数据,ExtraTreesClassifier
没有bootstrap(默认)。
max_features=n_features
默认为单树,即所有特征都可以在每次分割中使用。
我正在尝试制作一些图表来说明 scikit-learn 中 RandomForestClassifier 和 ExtraTreeClassifier 之间的区别。我想我可能已经弄明白了,但我不确定。这是我的代码,用于拟合和绘制 iris 数据集:
import numpy as np
from sklearn.datasets import load_iris
from sklearn.externals.six import StringIO
from sklearn import tree
import pydot
iris = load_iris()
X = iris.data
y = iris.target
clf = tree.ExtraTreeClassifier()
clf = clf.fit(iris.data, iris.target)
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
file_name = "et_iris.pdf"
graph.write_pdf(file_name)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(iris.data, iris.target)
dot_data = StringIO()
tree.export_graphviz(clf, out_file=dot_data)
graph = pydot.graph_from_dot_data(dot_data.getvalue())
file_name = "rdf_iris.pdf"
graph.write_pdf(file_name)
这生成的图表似乎是正确的,ET 图比决策树图 "bushier" 多。
DecisionTreeClassifier 与 RandomForestClassifier 中的单个树相同,而 ExtraTreeClassifier 与 ExtraTreeClassifier 中的单个树相同,我是否正确?
有没有办法对实际的 RDF 或 ET 分类器中的所有树执行此操作?我尝试在森林中使用 .estimators_,但他们似乎没有导出方法。
export_graphviz
不是方法,是函数。 None大树"has"吧。您可以将它与 estimators_
一起使用。
关于 ExtraTreeClassifier
是 ExtraTreesClassifier
中的一棵树,DecisionTreeClassifier
是 RandomForestClassifier
中的一棵树,你是对的。然而,这并没有真正涵盖它,因为:
RandomForestClassifier
bootstraps为每棵树单独设置数据,ExtraTreesClassifier
没有bootstrap(默认)。max_features=n_features
默认为单树,即所有特征都可以在每次分割中使用。