本文へスキップ
BecomeCoder

Python AIコース · 第2章 回帰 ― 数値を予測する · レッスン4

線形回帰 ― 直線をあてはめる

ブラウザで完結

導入

線形回帰は、データにいちばんよく合う直線を引く手法です。「気温が上がるとアイスが売れる」のような、右肩上がり(下がり)の関係をとらえます。

説明

LinearRegressionfit すると、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つ大きく外して(例:最後を 300150)実行すると、直線の傾きがどう変わるか見てみましょう。外れ値が直線を引っぱることが体感できます。

演習

上のデータで学習したモデルに、**気温27℃**のときの売上を予測させて print で表示してください。

ヒント1を見る

model.predict([[27]]) の結果を表示します。

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、scikit-learn で本物の機械学習モデルをその場で訓練できます。scikit-learn を使う回は初回の読み込みに時間がかかります(数十秒かかることがあります)。本文の例をそのまま試したり、数値を書き換えたりして、結果の変化を確かめましょう(グラフ内の文字は英字で書きます)。

Python — ライブラリ付きで実行(Pyodide)

numpy / pandas / matplotlib が使える本物のPython(Pyodide)を読み込みます。初回のみ読み込みに少し時間がかかります(以降はブラウザにキャッシュされます)。
スクロールして表示された時点でも自動で読み込まれます。