#62 Section 17 回帰(6) 予測
今回は、compare_models関数で求めた性能が良かったモデル(catboost/CatBoost Regressor)で、新たにデータを作成して、予測をしてみましょう。
1.予測結果の性能評価
まず、チュートリアルの最初のコードをみてみましょう。『holdout_pred = predict_model(best)』となっています。
右側のpredict_model関数は、通常、『predict_model(モデル名, data=データ名)』のような引数を指定しますが、setup()で分割したテストデータに対して予測した結果を返してくれます。
引数『data=データ名』が無い場合は、指定したモデルの性能評価が出力されます。
『holdout_pred』は、predict_model関数の実行結果が格納される変数です。何でもいいのですが、ほとんどの人はテストデータの予測結果を宣言する場合、『holdout_pred』と書きましょう。お作法です。
ですから、holdout_pred = predict_model(best)
とコードを書くと、下記のように指定したモデルの性能評価が出力されます。
※ MAE、MSE、RMSE、R2、RMSLE、MAPEに関しては、『#59 Section14 回帰(3)モデルの評価・比較』を参照してください。
↓スライドはクリックすると大きくなります!
2.予測結果の出力
『holdout_pred』は、予測結果が格納されたデータフレームを保持していますので、下記のコードのように『holdout_pred.head()』とすると、指定したモデルをテストデータに当てはめた予測結果が出力されます。元にデータに『prediction_label』という列が追加され、そこに『保険料(charges)』の予測結果が表示されています。これで、テストデータの予測ができました。
3.新たなデータで予測
同じコードは、未知のデータセットのラベル予測にも使えます。
元のデータのコピーを作成し、列『charges』を削除し、新たなデータ『new_data』を作成します。
次は、この『new_data』を下記に当てはめて、 『new_data』の予測をしています。
predict_model(モデル名, data=データ名)
スライド2と異なり、 『data=new_data』となっていますので、 『new_data』に対して予測した結果を返してくれます。出力は、元にデータに『prediction_label』という列が追加され、そこに『保険料(charges)』の予測結果が表示されています。
チュートリアルにはありませんが、『predictions』がどの程度予測できているかを見てみましょう。元データの最初の5行は、『data.head()』で出力されます。indexは操作していませんので、行の順番は変わっていないはずです。
比較するのは、 『data』の『charges』と『predictions』 の『prediction_label』です。
結構、バラツキがありますね。データサイエンティストは、これをチューニングしていくわけです。
コメント
コメントを投稿