LoginSignup
4
5

More than 3 years have passed since last update.

Python実践100本ノック 第5章の決定木をgraphvizを用いて可視化してみた

Last updated at Posted at 2020-05-06

はじめに

「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

スクリーンショット 2020-05-06 12.03.57.png

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')

test.png

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)を試してみる(参考にさせていただきました)

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5