決定木(回帰)

# Google Colaboratory で実行する場合はインストールする
if str(get_ipython()).startswith("<google.colab."):
    !pip install dtreeviz
from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression
from dtreeviz.trees import *

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from dtreeviz.trees import dtreeviz
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [2], in <cell line: 1>()
----> 1 from sklearn.tree import DecisionTreeRegressor
      2 from sklearn.datasets import make_regression
      3 from dtreeviz.trees import *

ModuleNotFoundError: No module named 'sklearn'
import IPython.display

# 表示する文字サイズを調整
plt.rc("font", size=20)
plt.rc("legend", fontsize=16)
plt.rc("xtick", labelsize=14)
plt.rc("ytick", labelsize=14)

# 乱数
np.random.seed(777)

決定木を作るためのサンプルデータを作成

X, y = make_regression(n_samples=100, n_features=2, random_state=777)
plt.figure(figsize=(10, 10))
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()
../../../_images/決定木(回帰)_6_0.png

回帰木の分岐の仕方を確認する

tree = DecisionTreeRegressor(max_depth=3, random_state=117117)
model = tree.fit(X, y)
viz = dtreeviz(tree, X, y, target_name="y")
viz.save("./regression_tree.svg")

回帰木の分岐を可視化

from IPython.display import SVG

SVG(filename="regression_tree.svg")
../../../_images/決定木(回帰)_10_0.svg