導入
モデルを作ったら「どれくらい当たっているか」を数値で採点します。回帰では R²(決定係数) と MAE(平均絶対誤差) がよく使われます。
説明
- R²:1に近いほど良い(1.0で完璧)。データのばらつきをどれだけ説明できたか。
- MAE:予測が平均で何単位ずれたか。小さいほど良い。
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_absolute_error
X = np.array([[22], [25], [28], [30], [33], [35]])
y = np.array([120, 150, 190, 220, 260, 300])
model = LinearRegression()
model.fit(X, y)
pred = model.predict(X) # 学習に使ったデータで予測
print("R^2 :", round(r2_score(y, pred), 3))
print("MAE :", round(mean_absolute_error(y, pred), 2))
r2_score(正解, 予測) と mean_absolute_error(正解, 予測) に、正解 y と予測値を渡すだけです。R² が 0.99 のように高く、MAE が小さければ、直線がデータによく合っている証拠です。
MAE は「予測が実際から平均◯個ずれる」と、単位つきで直感的に読めるのが利点です。
やってみよう
y の値をバラバラにして(例:[120, 300, 130, 260, 140, 90])実行すると、R² が下がり MAE が増えるのを確かめましょう。直線で表しにくいデータは、スコアが悪くなります。
演習
上のモデルについて、R²スコアを小数第3位で丸めて print で表示してください。
ヒント1を見る
round(r2_score(y, pred), 3)。