決定木を使ってScikit-learn Boston Housing Datasetの回帰をしてみる


Boston Housing Datasetをロードする。


from sklearn import preprocessing
import pandas as pd
import numpy as np 

from sklearn.datasets import load_boston

boston = load_boston()
X,y = boston.data, boston.target

プロットしてみる。。。


import matplotlib.pyplot as plt

plt.figure(figsize=(24, 8), dpi=50)
plt.subplot(211)
plt.plot(X)
plt.subplot(212)
plt.plot(y)

今回は、下のyの系列に対して回帰をする。。

決定木回帰のモジュールをインポートする。。


import numpy as np
from sklearn.tree import DecisionTreeRegressor
import matplotlib.pyplot as plt

【参考】
1次元配列をreshape(-1, 1)とすると、その配列を要素とする2次元1列の配列となる。


a = np.arange(4)
c = a.reshape(-1, 1)
print(c)
 
[[0]
 [1]
 [2]
 [3]]

系列yを整形する。。。


z=np.array(y).reshape(-1, 1)
print(z[0:5])
print(len(z))

回帰をする時系列のx列にあたるものを作る。。。


x = list(range(0, 506, 1))
w=np.array(x).reshape(-1, 1)

print(w[0:5])

決定木で回帰をする。。。


X_test = np.arange(0.0, 506, 1)[:, np.newaxis]
y_1 = regr_1.predict(X_test)
y_2 = regr_2.predict(X_test)

プロットをする。。


plt.figure(figsize=(24, 8), dpi=50)
plt.scatter(w, y, s=15, edgecolor="black", c="darkorange", label="data")
plt.plot(X_test, y_1, color="cornflowerblue",label="max_depth=2", linewidth=4)
plt.plot(X_test, y_2, color="yellowgreen", label="max_depth=5", linewidth=4)
plt.xlabel("data")
plt.ylabel("target")
plt.title("Decision Tree Regression")
plt.show()