Eu estou tentando fazer alguns gráficos que ilustrama diferença entre RandomForestClassifier e ExtraTreeClassifier no scikit-learn. Eu acho que eu poderia ter descoberto, mas não tenho certeza. Aqui está o meu código para ajustar e representar graficamente o conjunto de dados da íris com ambos:
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)
Os gráficos que isso produz parecem corretos, o gráfico ET é muito "mais" do que o gráfico da árvore de decisão.
Estou correto que o DecisionTreeClassifier é o mesmo que uma única árvore em um RandomForestClassifier e o ExtraTreeClassifier é o mesmo que uma única árvore em um ExtraTreeClassifier?
Existe alguma maneira de fazer isso com todas as árvores em um classificador RDF ou ET real? Eu tentei usar o .estimators_ nas florestas, mas eles não têm o método de exportação que parece.
Respostas:
1 para resposta № 1export_graphviz
não é um método, é uma função. Nenhuma das árvores "tem" isso. Você pode usá-lo com o estimators_
. Você está certo sobre ExtraTreeClassifier
sendo uma única árvore em ExtraTreesClassifier
e DecisionTreeClassifier
sendo uma única árvore em RandomForestClassifier
. No entanto, isso realmente não cobre isso, porque:
RandomForestClassifier
bootstraps o conjunto de dados separadamente para cada árvore,ExtraTreesClassifier
não inicializa (por padrão).max_features=n_features
para árvores únicas por padrão, ou seja, todos os recursos podem ser usados em cada divisão.