Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Sklearn plot_tree plot is too small

Tags:

I have this simple code:

clf = tree.DecisionTreeClassifier() clf = clf.fit(X, y)  tree.plot_tree(clf.fit(X, y)) plt.show() 

And the result I get is this graph: enter image description here

How do I make this graph legible? I'm using PyCharm Professional 2019.3 as my IDE.

like image 416
Artur Avatar asked Dec 22 '19 19:12

Artur


2 Answers

I think the setting you are looking for is fontsize. You have to balance it with max_depth and figsize to get a readable plot. Here is an example

from sklearn import tree from sklearn.datasets import load_iris import matplotlib.pyplot as plt  # load data X, y = load_iris(return_X_y=True)  # create and train model clf = tree.DecisionTreeClassifier(max_depth=4)  # set hyperparameter clf.fit(X, y)  # plot tree plt.figure(figsize=(12,12))  # set plot size (denoted in inches) tree.plot_tree(clf, fontsize=10) plt.show() 

enter image description here

If you want to capture structure of the whole tree I guess saving the plot with small font and high dpi is the solution. Then you can open a picture and zoom to the specific nodes to inspect them.

# create and train model clf = tree.DecisionTreeClassifier() clf.fit(X, y)  # save plot plt.figure(figsize=(12,12)) tree.plot_tree(clf, fontsize=6) plt.savefig('tree_high_dpi', dpi=100) 

Here is an example of how it looks like on the bigger tree.

enter image description here

enter image description here

like image 63
Renard Korzeniowski Avatar answered Oct 01 '22 17:10

Renard Korzeniowski


What about setting the size of the image before hand:

clf = tree.DecisionTreeClassifier() clf = clf.fit(X, y)  fig, ax = plt.subplots(figsize=(10, 10))  # whatever size you want tree.plot_tree(clf.fit(X, y), ax=ax) plt.show() 
like image 20
glemaitre Avatar answered Oct 01 '22 17:10

glemaitre