7. 予測: finalize_model(), predict_model()
finalize_model
compare_modelsやtune_modelでは、交差検証(クロスバリデーション)で検討しているので、訓練データの全てを使用していない。finalize_modelを行うことで訓練データの全て(テストデータを除く)を使ったモデルを作ることができる。
final_lr = finalize_model(tuned_lr)
test_predictions = predict_model(final_lr)
test_predictions
predict_model
predict_modelは予めテストデータとして分割した値を予測する。
train_data = predict_model(final_lr, data = df_train)
test_data = predict_model(final_lr, data = df_test)
df_test["Label"] = test_data["Label"]
df_test
df_train["Label"] = train_data["Label"]
df_train
前回と同じグラフを作成してみる。
# グラフ作成をmatplotlibで行う
import matplotlib.pyplot as plt
# 得られた学習結果と実験値とを比較する。
plt.figure()
# トレーニングデータのプロット
x1 = train_data["logS"]
y1 = train_data["Label"]
plt.scatter(x1, y1, alpha=0.5, label="train") # alphaを入れると薄くなる。
# テストデータのプロット
x2 = test_data["logS"]
y2 = test_data["Label"]
plt.scatter(x2, y2, label="test")
# 範囲の指定
plt.xlim(-10, 2)
plt.ylim(-10, 2)
# タイトルを入れる。
plt.title("Fig. Prediction of logS by xgboost and finger print")
# X軸とY軸にラベルを作成
plt.xlabel('data')
plt.ylabel('Predict')
# 凡例の場所を指定
plt.legend(loc="upper left", fontsize=14)
# 表示させる
plt.show()
モデルの保存
save modelで結果を保存できる。
save_model(final_lr, 'my_best_pipeline')
保存したmodelは、load_modelで呼び出せる。
loaded_model = load_model('my_best_pipeline')
print(loaded_model)