前提、実現したいこと
Graphvisとpydotplusで決定木を可視化しようとしています。
Graphviz本体はインストール後PATHを通しており、python上で作動させるためのモジュールpython-graphvizもインストール済みです。また、可視化をJupyterNotebookで完結させたいのでpydotplusをインストールして下のコードを書きました。
該当のソースコード
clf = DecisionTreeClassifier(random_state=0)
clf.fit(X_train,t_train)
dot_data = export_graphviz(clf, out_file=None, class_names=['maligrant','benign'], feature_names=cancer.feature_names, impurity=False, filled=True)
graph = pydotplus.graph_from_dot_data(dot_data)
graph.write_png('tree.png') #ここでバグ発生
###発生している問題
graph.write_png()のところでpathが見つからないとのエラーメッセージが出ます。確認するとディレクトリには一応tree.pngという名前のファイルがpng形式で作成されていました。しかし、このファイルを開いてもフォーマットが認識されなかったり、白い画面が表示されるだけでした。
エラーメッセージ
以下、エラーメッセージの全文です
InvocationException Traceback (most recent call last)
<ipython-input-2-9278127ff7a6> in <module>
21 dot_data = export_graphviz(clf, out_file=None, class_names=['maligrant','benign'], feature_names=cancer.feature_names, impurity=False, filled=True)
22 graph = pydotplus.graph_from_dot_data(dot_data)
---> 23 graph.write_png('tree.png') #ここでバグ発生
24 #Image(graph.create_png())
25
~\anaconda3\lib\site-packages\pydotplus\graphviz.py in <lambda>(path, f, prog)
1802 lambda path,
1803 f=frmt,
-> 1804 prog=self.prog: self.write(path, format=f, prog=prog)
1805 )
1806
~\anaconda3\lib\site-packages\pydotplus\graphviz.py in write(self, path, prog, format)
1910
1911 else:
-> 1912 fobj.write(self.create(prog, format))
1913 finally:
1914 if close:
~\anaconda3\lib\site-packages\pydotplus\graphviz.py in create(self, prog, format)
2024 raise InvocationException(
2025 'Program terminated with status: %d. stderr follows: %s' % (
-> 2026 status, stderr_output))
2027 elif stderr_output:
2028 print(stderr_output)
InvocationException: Program terminated with status: 1. stderr follows: The system cannot find the path specified.
type(graph)
試したこと
dot_dataとしてではなくdot形式のファイルをpydotplusの関数に渡す方法も試してみましたが、同様のエラーメッセージを得ました。
そもそも、write_png()に渡す引数は作成するpng形式のファイル名なのではないでしょうか?だとすればpathが見つからないというメッセージも理解できないです。
あなたの回答
tips
プレビュー