from sklearn.metrics import mean_squared_error

# 予測値の取得
y_pred = model.predict(X_test)

# 二乗平方根で誤差を算出
mse = mean_squared_error(y_test, y_pred)
print("KERAS REG RMSE : %.2f" % (mse ** 0.5))
print("KERAS REG SCORE: %3.2f" % (1.0 - mse ** 0.5 / y_test.mean()))

# 可視化
pd.DataFrame({"pred":y_pred, "act":y_test})[:100].reset_index(drop=True).plot(figsize=(15,4))


前回の最後のmodel.scoreですが、これは、検証で使っていると書きました。


トレーニングは、計算の方法を探るべくデータを使っていました。


でtestは、検証用。つまり検証として


X_testで計算した予測データが、y_testとどのくらいズレがあるかを確認する必要があります。


というわけで流れは、X_test から出す答え y_pred が実データ y_test とどのくらい違うのか?


もうすでに、X_testとy_testは分かっているので、y_oredを求めればいいわけです。


それが今回のコードです。


最初の行
from sklearn.metrics import mean_squared_error

これは、誤差を計算する関数を使うよ!って宣言です。


さぁ計算です。

mse = mean_squared_error(y_test, y_pred)

はい、計算です。 y_testとy_predがどのくらい違っているのか?を計算します。


この段階で出た数字が何の意味があるのか? 自分にはわかりません。


はい次の行

print("KERAS REG RMSE : %.2f" % (mse ** 0.5))
print("KERAS REG SCORE: %3.2f" % (1.0 - mse ** 0.5 / y_test.mean()))

これ実行すると

KERAS REG RMSE : 388
KERAS REG SCORE: 0.94

みたいな数字が出てきます。


さっき誤差のパラメータを計算しました。


それに基づいて、y_testの誤差を測ってます。その数字です。


上のKERAS REG RMSE: の横の数字は、誤差の実数。


下のKERAS REG SCORE: の横の数字は、正解率。0.94は、94%と考えてよい。


みたいな感じです。


これで人工知能の計算結果に信憑性ある計算になっているか、どうか、の1つ判別がつきます。


最後の
pd.DataFrame({"pred":y_pred, "act":y_test})[:100].reset_index(drop=True).plot(figsize=(15,4))


これは、単に、誤差をグラフに表示するだけで、見ないなら削除しても問題は無いかと。



次回はいよいよ予測。



今まで教師データがあったが、今度は無い。



そのやり方についてです。




今回はここまで