本文へスキップ
BecomeCoder

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

回帰の評価 ― R²とMAE

ブラウザで完結

導入

モデルを作ったら「どれくらい当たっているか」を数値で採点します。回帰では R²(決定係数)MAE(平均絶対誤差) がよく使われます。

説明

  • :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)

実際に動かしてみよう

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

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

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