2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

決定木・ランダムフォレストのバオバブ可視化

Posted at

はじめに

決定木・ランダムフォレストのツリー構造の可視化ツールはいろいろある。
色々調べてみるとバオバブの木を逆さにしたようにツリー構造を可視化できるツールが
良さそうだったので、記事を書いてみることにした
image.png

pybaobabdtとは

下記を参照するとどうやら分類問題のツリー構造の可視化に適用できるようだ。
(回帰問題にも適用できるかは試してません)
詳細は下記をご参照ください。

ツリー構造を下図のように可視化してくれるため、
視覚的にも非常に分かりやすいと感じました。
image.png

環境構築&インストール

# pybaobabdtのインストール
pip install pybaobabdt

#pygraphvizのインストール
apt install libgraphviz-dev
pip install pygraphviz

datasetsの準備

試しに使用したデータセットは下記の通り

実践

import pybaobabdt
import pandas as pd
from scipy.io import arff
from sklearn.tree import DecisionTreeClassifier

data = arff.loadarff("vehicle.arff")
df   = pd.DataFrame(data[0])
#データの確認
df

image.png

バン・バスなどの車種(Class)で分類してみる。

y = list(df['Class'])
features = list(df.columns)
features.remove('Class')
X = df.loc[:, features]

clf = DecisionTreeClassifier().fit(X,y)

そして、

深さ3層で可視化した場合

ax = pybaobabdt.drawTree(clf, size=30, dpi=72, features=features,maxdepth=3)

image.png

さらに深さ10層までを可視化すると

ax = pybaobabdt.drawTree(clf, size=30, dpi=72, features=features,maxdepth=10)

image.png

このように深さをだんだん大きくしながら可視化していくと解釈がしやすい


別の問題で実践

分類問題でお馴染みのアヤメのデータセットで試してみます!

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris=load_iris()
X=iris.data
y=iris.target

from sklearn.tree import DecisionTreeClassifier
dtc = DecisionTreeClassifier()
dtc.fit(X,y)

ax = pybaobabdt.drawTree(dtc, size=10, dpi=72, features=features,maxdepth=10)

一瞬で下図のようにアヤメの分類が
視覚的に分かりやすく表現されました!

image.png

最後に

分類問題の可視化で分かりやすい手段の一つだと思います。
また、どういう分岐構造なのかを視覚的に示しやすく、説明もしやすく思います。
私も今後ドンドン活用していこうと思いました!
以上 最後までお読み頂きありがとうございました:v:

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?