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

できた。アホみたいなミスだったけどマジで辛かった。

コメント

タイトルとURLをコピーしました