/ / Graphique de scikit-learn ExtraTreeClassifier et RandomForestClassifier - graphique, scikit-learn, random-forest

ExtraTreeClassifier et RandomForestClassifier - Graphique, scikit-learn, random-forest

J'essaie de faire des graphiques qui illustrentla différence entre RandomForestClassifier et ExtraTreeClassifier dans scikit-learn. Je pense que je pourrais l'avoir compris mais je ne suis pas sûr. Voici mon code pour adapter et représenter graphiquement le jeu de données iris avec les deux:

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)

Les graphiques que cela produit semblent corrects, le graphique ET est beaucoup plus "épais" que le graphique de l'arbre de décision.

Ai-je raison de dire que DecisionTreeClassifier est identique à un seul arbre dans RandomForestClassifier et que ExtraTreeClassifier est identique à un seul arbre dans ExtraTreeClassifier?

Est-il possible de faire cela avec tous les arbres d'un classificateur RDF ou ET réel? J'ai essayé d'utiliser les .estimators_ dans les forêts, mais ils n'ont apparemment pas la méthode d'exportation.

Extra Tree Graph

Graphique RDF

Réponses:

1 pour la réponse № 1

export_graphviz n'est pas une méthode, c'est une fonction. Aucun des arbres "a" cela. Vous pouvez l'utiliser avec le estimators_. Vous avez raison à propos de ExtraTreeClassifier être un seul arbre dans ExtraTreesClassifier et DecisionTreeClassifier être un seul arbre dans RandomForestClassifier. Cependant, cela ne couvre pas vraiment, parce que:

  • RandomForestClassifier amorce le jeu de données séparément pour chaque arbre, ExtraTreesClassifier ne pas bootstrap (par défaut).

  • max_features=n_features pour les arbres simples par défaut, toutes les fonctionnalités peuvent être utilisées dans chaque division.