web-dev-qa-db-ja.com

xgboostモデルを保存およびロードする方法

XGBoostガイド のリンクで、

  1. モデルを保存できます。 bst.save_model('0001.model')
  2. モデルとその機能マップは、テキストファイルにダンプすることもできます。
    bst.dump_model('dump.raw.txt') # dump model bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
  3. 保存されたモデルは次のようにロードできます:bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data

私の質問は:

  1. save_modeldump_modelの違いは何ですか?
  2. '0001.model''dump.raw.txt','featmap.txt'の保存の違いは何ですか?
  3. なぜmodel.binをロードするためのモデル名が保存される名前0001.modelと異なるのですか?
  4. 2つのモデルmodel_Amodel_Bをトレーニングしたとします。将来使用するために両方のモデルを保存したいのですが、どのsaveload関数を使用する必要がありますか?明確なプロセスを示すのを手伝ってもらえますか?
23
Pengju Zhao

save_modeldump_modelの両方の関数はモデルを保存しますが、dump_modelでは機能名を保存し、テキスト形式でツリーを保存できます。

load_modelは、save_modelのモデルで動作します。 dump_modelのモデルは、たとえば xgbfi で使用できます。

モデルのロード中に、モデルを保存するパスを指定する必要があります。例では、bst.load_model("model.bin")モデルはファイルmodel.binからロードされます-これは、モデルを含むファイルの単なる名前です。幸運を!

11
pplonski

Xgboostモデルを保存およびロードする簡単な方法は、joblibライブラリを使用することです。

import joblib
#save model
joblib.dump(xgb, filename) 

#load saved model
xgb = joblib.load(filename)
7
Ioannis Nasios

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
0
ChrisDanger