Plot trees for a Random Forest in Python with Scikit-Learn

pydot, python, random-forest, scikit-learn, tree

Solution

Assuming your Random Forest model is already fitted, first you should first import the `export_graphviz` function:

from sklearn.tree import export_graphviz

In your for cycle you could do the following to generate the `dot` file

export_graphviz(tree_in_forest,
                feature_names=X.columns,
                filled=True,
                rounded=True)

The next line generates a png file

os.system('dot -Tpng tree.dot -o tree.png')

Problem

I want to plot a decision tree of a random forest. So, i create the following code: ``` clf = RandomForestClassifier(n_estimators=100) import pydotplus import six from sklearn import tree dotfile = six.StringIO() i_tree = 0 for tree_in_forest in clf.estimators_: if (i_tree <1): tree.export_graphviz(tree_in_forest, out_file=dotfile) pydotplus.graph_from_dot_data(dotfile.getvalue()).write_png('dtree'+ str(i_tree) +'.png') i_tree = i_tree + 1 ``` But it doesn't generate anything.. Have you an idea how to plot a decision tree from random forest?

Original source