決定木の結果を可視化する際にgraphvizがうまくいかない件
「東京大学のデータサイエンティスト育成講座」
という本で機械学習について学習中ですが詰まった個所を忘備録として残します。
結論
結論から言うとpipでインストールされるgraphvizはラッパー
ハマリポイント①
import pydotplus from sklearn import tree from sklearn.externals.six import StringIO from IPython.display import Image dot_data = StringIO() tree.export_graphviz(model, out_file=dot_data) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) Image(graph.create_png())
以下のエラーが出る
ModuleNotFoundErrorTraceback (most recent call last) <ipython-input-27-6ce788850e43> in <module> 1 import pydotplus 2 from sklearn import tree ----> 3 from sklearn.externals.six import StringIO 4 from IPython.display import Image 5 ModuleNotFoundError: No module named 'sklearn.externals.six'
対応
sklearn.externals.sixはversion0.23から削除されているらしい。
代わりに以下でいけるようだ。
import pydotplus from sklearn import tree from six import StringIO from IPython.display import Image dot_data = StringIO() tree.export_graphviz(model, out_file=dot_data) graph = pydotplus.graph_from_dot_data(dot_data.getvalue()) Image(graph.create_png())
ハマリポイント②
次は
pydotplus.graphviz.InvocationException: GraphViz's executables not found
と怒られる。
事前に
pip install graphviz
は済ませておいたのだが、pipでインストールされるのはラッパーに過ぎないらしい。
対応
graphviz本体をインストールしておく必要があるらしい。
apt-get update apt-get install graphviz
結果
これでグラフが出力される