Docker+JupyterLabで決定木モデルの可視化(graphviz/dtreeviz)


概要

決定木についての詳細は記載しませんが、決定木によって生成されたモデルの可視化で一般的なのがgraphvizです。これをDocker+JuptyerLabの環境で使おうとしたら微妙にハマった部分があったので、やり方をまとめておきます。またgraphvizではなく、より分かり易い可視化でdtreevizが便利だったのでそちらも記載します。

環境

以下を参考にDockerでJupyterLabが使える状態を前提とします。
Dockerで起動したJupyterLabでvimキーバインドを使う

Dockerfile

Dockerfileに以下追記してビルドし直す事でgraphvizとdtreevizが使えるようになりました。

Dockerfile
RUN pip install pydotplus
RUN pip install dtreeviz
RUN apt-get dist-upgrade
RUN apt-get update
RUN apt-get install -y build-essential graphviz-dev graphviz pkg-config
RUN pip install graphviz

graphvizはPythonのライブラリとLinuxのライブラリで両方入れる必要があり、
Linuxライブラリの方がなかなかうまく入ってくれなかったですが、上記でうまくできました。

Dockerfileの全体についてはこちらにもまとめてあります。
https://github.com/hikarut/Data-Science/blob/master/Dockerfile

モデルの可視化

graphviz

  • 1行目:条件式
  • 2行目:ジニ係数
  • 3行目:ノードのサンプル数(サンプル割合)
  • 4行目:クラス毎のサンプル数(サンプル割合)

dtreeviz

向きを左→右にする事もできます。

ソース
https://github.com/hikarut/Data-Science/blob/master/notebooks/decisionTree/sample.ipynb

参考