dtreevizに手こずった話。
機械学習で決定木の可視化をしたくて、dtreevizを使おうとしたら全然できなくて困った話。
やりたかったこと
from dtreeviz.trees import dtreeviz
# 決定木を描画
viz = dtreeviz(clf, data_e, data_o, target_name='Class', feature_names=time_index, class_names=['False', 'True'])
viz.view()
最終形(一応動く)
import os
os.environ["PATH"] += os.pathsep + '/opt/homebrew/bin'
from dtreeviz.trees import dtreeviz
# 決定木を描画
m = dtreeviz(clf,
data_e,
data_o,
target_name='Class',
feature_names=time_index,
class_names=['False','True'],)
m.view()
①まず、そもそもモジュール使用からできない
from dtreeviz.trees import dtreeviz
だとそんなのないよってエラーがくる。
ググってみるとバージョン変わってからimport dtreevizのみでやらないとダメになったみたい。
②モジュールは使えるようになってけどできない
やってみるとこんなエラーが出た
'int' object is not subscriptable
しかも今のバージョンではdtreeviz()は使えないからdtreeviz.models()にしてねって。
どんだけバージョン変更してんだよ。
③もうできなすぎてバージョン落とした
んでやってみると、
AttributeError: 'function' object has no attribute 'models'
えーここから悩みに悩みまくって、色々調べた結果
バージョンを落とすことにした
バージョンに振り回されてばかりである。(1.4.1まで下げた)
④パスも通ってなかった
んで実行すると
graphviz.backend.execute.ExecutableNotFound: failed to execute PosixPath('dot'), make sure the Graphviz executables are on your systems' PATH
graphvizってやつのパスがないのかぁ
which dotで確認
/opt/homebrew/bin/dot
あーここねー
os.environ["PATH"] += os.pathsep + '/opt/homebrew/bin/dot'
じゃあこうすれば、、、
[Errno 20] Not a directory: PosixPath('dot')
何でだよ。
⑤最後はアホすぎるミス
そしてここから5時間くらい悩んだ末、気づいた。
pathの場所のdotいらなくね、、、指定するのここまでじゃね、、、/opt/homebrew/bin
できた。アホみたいなミスだったけどマジで辛かった。