はじめに
「Python実践100本ノック」を用いて勉強しています。この本は実際の状況に近いデータを用いてデータ分析の勉強ができるので、本当にいい本だなぁと思っております(といっても実際はもっともっとひどいデータがたくさんあるのでしょうけれども…)。
そんな本書の第5章にて、scikit-learnで決定木を用いて分析を行う場面があります。そこでモデルを作成するのですが、木構造の可視化はgraphvizを用いて挑戦してみて〜ということなので、今回やってみました。
※ 初心者が投稿しておりますので、間違えている場合はご教授いただければ幸いです。
対象としている読者
- Python実践100本ノックを読んでいる方
- scikit-learnで決定木の可視化方法を探している方
対象箇所
Python実践100本ノック
-> 第5章 顧客の退会を予測する10本ノック
-> ノック49:モデルの寄与している変数を確認しよう
私のPC環境
- macOS Catalina 10.15.3
- Python 3.7.7
- scikit-learn 0.22.2.post1
- Jupyter 1.0.0
graphvizのインストール
まずはhomebrewを使って本体をインストールします。
brew install graphviz
さらにPython用のライブラリをpipを使ってインストールします(anacondaの方はcondaでできるみたいです)。
pip install graphviz
コード
※ p.127 のコードまで実施している前提で以下記載しています。
1. Jupyter notebook 上に表示する方法
といっても、以下のコードを追加するだけです。とっても簡単ですね。
from sklearn import tree
import graphviz
dot_data = tree.export_graphviz(model, out_file=None)
graph = graphviz.Source(dot_data)
graph
2. ファイルを作成する方法
最後のコードをちょっと修正するだけで、pdfファイルを作成することができます。この例では「test.pdf」がカレントディレクトリに作成されます。
from sklearn import tree
import graphviz
dot_data = tree.export_graphviz(model, out_file=None)
graph = graphviz.Source(dot_data)
graph.render('test')
3. ターミナルを使ってファイルを作成する方法(おまけ)
sklearn.treeのexport_graphviz関数を用いてDOT言語形式の決定木ファイルを作成し、Jupyter notebook上でシステムコマンドを走らせています。
from sklearn import tree
import graphviz
with open('test.dot', mode='w') as f:
tree.export_graphviz(model, out_file=f)
!dot -T png test.dot -o test.png
参考文献
こちらの記事は以下の情報を参考にして執筆しました。詳しい情報は以下を参照ください。
1.10. Decision Trees(公式のドキュメントです)
sklearn.tree.export_graphviz(こちらも公式のドキュメントです)
Python:scikit-learnで決定木(Decision Tree)を試してみる(参考にさせていただきました)