'Sklearn decision tree plot does not appear

I am trying to follow scikit learn example on decision trees:

from sklearn.datasets import load_iris
from sklearn import tree
X, y = load_iris(return_X_y=True)
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, y)

When I try to plot the tree:

tree.plot_tree(clf.fit(iris.data, iris.target))

I get

NameError                                 Traceback (most recent call last)
<ipython-input-2-e72b33a93ee6> in <module>
----> 1 tree.plot_tree(clf.fit(iris.data, iris.target))

NameError: name 'iris' is not defined


Solution 1:[1]

iris doesn't exist if you don't assign it. Use this line to plot:

tree.plot_tree(clf.fit(X, y))

You already assigned the X and y of load_iris() to a variable so you can use them.

Additionally, make sure the graphviz library's bin folder is in PATH.

enter image description here

Solution 2:[2]

Your problem was different, but I ended up here through googling this issue and you have also same-ish issue present.

At least on windows matplotlib (which is used to show the tree with tree.plot_tree) will not show anything if you don't have plt.show() somewhere.

from sklearn import tree
import matplotlib.pyplot as plt

sometree = ....

tree.plot_tree(sometree)

plt.show() # mandatory on Windows

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 Pasi Savolainen