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.
Réponses:
1 pour la réponse № 1export_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.