XGBoostガイド のリンクで、
bst.save_model('0001.model')
bst.dump_model('dump.raw.txt') # dump model bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data
私の質問は:
save_model
とdump_model
の違いは何ですか?'0001.model'
と'dump.raw.txt','featmap.txt'
の保存の違いは何ですか?model.bin
をロードするためのモデル名が保存される名前0001.model
と異なるのですか?model_A
とmodel_B
をトレーニングしたとします。将来使用するために両方のモデルを保存したいのですが、どのsave
とload
関数を使用する必要がありますか?明確なプロセスを示すのを手伝ってもらえますか?save_model
とdump_model
の両方の関数はモデルを保存しますが、dump_model
では機能名を保存し、テキスト形式でツリーを保存できます。
load_model
は、save_model
のモデルで動作します。 dump_model
のモデルは、たとえば xgbfi で使用できます。
モデルのロード中に、モデルを保存するパスを指定する必要があります。例では、bst.load_model("model.bin")
モデルはファイルmodel.bin
からロードされます-これは、モデルを含むファイルの単なる名前です。幸運を!
Xgboostモデルを保存およびロードする簡単な方法は、joblibライブラリを使用することです。
import joblib
#save model
joblib.dump(xgb, filename)
#load saved model
xgb = joblib.load(filename)
Xgboostモデルを保存およびロードする方法を探していたので、ここで自分の道を見つけました。私が問題を解決した方法は次のとおりです。
import pickle
file_name = "xgb_reg.bin"
# save
pickle.dump(xgb_model, open(file_name, "wb"))
# load
xgb_model_loaded = pickle.load(open(file_name, "rb"))
# test
ind = 1
test = X_val[ind]
xgb_model_loaded.predict(test)[0] == xgb_model.predict(test)[0]
Out[1]: True