Я пытаюсь сделать несколько графиков, которые иллюстрируют разницу между RandomForestClassifier и ExtraTreeClassifier в scikit-learn. Думаю, я мог бы это понять, но я не уверен. Вот мой код, чтобы соответствовать и графику РОГ набор данных с обеими:График scikit-learn ExtraTreeClassifier и RandomForestClassifier
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 много «более густой», чем дерево решений графа.
Я исправлю, что DecisionTreeClassifier такой же, как одно дерево в RandomForestClassifier, а ExtraTreeClassifier - то же самое, что и одно дерево в ExtraTreeClassifier?
Есть ли способ сделать это со всеми деревьями в реальном RDF или ET классификаторе? Я попытался использовать .estimators_ в лесах, но у них нет метода экспорта.
Так что, если я сам создам образец начальной загрузки для DecisionTreeClassifier и передаю подмножество функций, это будет эквивалент. – denson
Подвыборку глобальных возможностей не эквивалентно. Но вы можете установить max_features на дереве: http://scikit-learn.org/dev/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier (они выбираются отдельно для каждого разбиения) –
Спасибо. .. Я получаю то, что я хотел, это сравнение того, как разные деревья «смотрят». – denson