/ / Gráfico de scikit-learn ExtraTreeClassifier e RandomForestClassifier - gráfico, scikit-learn, floresta aleatória

Gráfico de scikit-learn ExtraTreeClassifier e RandomForestClassifier - gráfico, scikit-learn, random-forest

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.

Gráfico extra de árvores

Gráfico RDF

Respostas:

1 para resposta № 1

export_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.