1. StringIO + export_graphviz + 命令行dot
from sklearn.externals.six import StringIO
with open("iris.dot", 'w') as f:
f = export_graphviz(dtc, out_file=f)
$ dot -Tps tree.dot -o tree.ps (PostScript format)
$ dot -Tpng tree.dot -o tree.png (PNG format)
2. StringIO+export_graphviz+pydotplus
dot_data = StringIO()
export_graphviz(dtc,out_file = dot_data)
import pydotplus
graph = pydotplus.graph_from_dot_data(dot_data.getvalue())
graph.progs = {'dot': u"F:/Anaconda3/Graphviz2.38/bin/dot.exe"}
graph.write_pdf("DecisionTree.pdf")
print('Visible tree plot saved as pdf.')
3. export_text()
>>> from sklearn.datasets import load_iris
>>> from sklearn.tree import DecisionTreeClassifier
>>> from sklearn.tree.export import export_text
>>> iris = load_iris()
>>> X = iris['data']
>>> y = iris['target']
>>> decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2)
>>> decision_tree = decision_tree.fit(X, y)
>>> r = export_text(decision_tree, feature_names=iris['feature_names'])
>>> print(r)
|--- petal width (cm) <= 0.80
| |--- class: 0
|--- petal width (cm) > 0.80
| |--- petal width (cm) <= 1.75
| | |--- class: 1
| |--- petal width (cm) > 1.75
| | |--- class: 2
...