導入
線形回帰は、データにいちばんよく合う直線を引く手法です。「気温が上がるとアイスが売れる」のような、右肩上がり(下がり)の関係をとらえます。
説明
LinearRegression を fit すると、y = a·x + b の直線の傾き a と切片 b が自動で決まります。データと直線をグラフで重ねて見てみましょう。
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 気温(℃)とアイスの売上(個)
X = np.array([[22], [25], [28], [30], [33], [35]])
y = np.array([120, 150, 190, 220, 260, 300])
model = LinearRegression()
model.fit(X, y)
# 直線を引くための予測値
line_x = np.array([[20], [36]])
line_y = model.predict(line_x)
plt.scatter(X, y, color="steelblue", label="data") # 実データ
plt.plot(line_x, line_y, color="red", label="model") # 学習した直線
plt.title("Temperature vs Ice Cream Sales")
plt.xlabel("temperature")
plt.ylabel("sales")
plt.legend()
plt.show()
青い点が実際のデータ、赤い線がモデルの学んだ直線です。線が点の真ん中を貫くように引かれているのが分かります。この直線こそが「学習の成果」です。
やってみよう
y の値を1つ大きく外して(例:最後を 300→150)実行すると、直線の傾きがどう変わるか見てみましょう。外れ値が直線を引っぱることが体感できます。
演習
上のデータで学習したモデルに、**気温27℃**のときの売上を予測させて print で表示してください。
ヒント1を見る
model.predict([[27]]) の結果を表示します。