dtreevizによる決定木の可視化
機械学習といえばランダム森だが、それの元になる決定木の可視化で特徴分析をすると性能が上がる。そのための可視化ツールは色々あるが、プロ仕様のはdtreeviz(https://github.com/parrt/dtreeviz)だ。
例として、講義で最初に使用する広告のデータを用いる.これは、テレビ(TV),ラジオ(Radio),新聞(Newspaper)への広告から売り上げ(Sales)を予測する簡単な回帰分析だ.
import pandas as pd #まずはpandasモジュールを準備する.
#csvファイルからデータ読み込み
data = pd.read_csv('http://logopt.com/data/Advertising.csv', index_col =0)
data.head()
>>>
TV Radio Newspaper Sales
1 230.1 37.8 69.2 22.1
2 44.5 39.3 45.1 10.4
3 17.2 45.9 69.3 9.3
4 151.5 41.3 58.5 18.5
5 180.8 10.8 58.4 12.9
独立変数(特徴ベクトル)Xは TV, Ratio, Newspaperの列,従属変数
yは Salesの列とする.
X = data[['TV', 'Radio', 'Newspaper']]
y = data['Sales']
Google Colabで行なったので、linux用のインストール
!sudo apt install graphviz
!pip install dtreeviz
Kaggleのときはsudo を外す.
他の環境に対しては、オリジナルのサイトを参照されたい.
scikit learnの決定木で回帰を行う.
from sklearn import tree
reg = tree.DecisionTreeRegressor(max_depth=2)
reg.fit(X,y)
>>>
DecisionTreeRegressor(criterion='mse', max_depth=2, max_features=None,
max_leaf_nodes=None, min_impurity_decrease=0.0,
min_impurity_split=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
presort=False, random_state=None, splitter='best')
dtreevizは決定木インスタンスreg,独立変数(特徴ベクトル)X,従属変数(ターゲット)yの他に,特徴名とターゲット名を与える.
from dtreeviz.trees import dtreeviz
viz = dtreeviz(
reg,
X,
y,
feature_names = data.columns,
target_name = "Sales"
)
display(viz)
viz.save("tree1.svg")
Xという引数に,予測したい入力(特徴ベクトル)を入れると,どのように木を辿って予測をしたかを示してくれる.
viz = dtreeviz(
reg,
X,
y,
feature_names = data.columns,
target_name = "Sales",
X = X.iloc[0]
)
print(y.iloc[0])
display(viz)
viz.save("tree2.svg")
この記事が気に入ったらサポートをしてみませんか?