wake-up-neo.com

Wie kann ich das Xgboost-Modell speichern und laden?

Auf dem Link von XGBoost Guide

  1. Das Modell kann gespeichert werden . bst.save_model('0001.model')
  2. Das Modell und seine Feature-Map können auch in eine Textdatei gespeichert werden.
    bst.dump_model('dump.raw.txt') # dump model bst.dump_model('dump.raw.txt','featmap.txt')# dump model with feature map
  3. Ein gespeichertes Modell kann wie folgt geladen werden: bst = xgb.Booster({'nthread':4}) #init model bst.load_model("model.bin") # load data

Meine Frage ist :

  1. was ist der Unterschied zwischen save_model & dump_model
  2. was ist der Unterschied zwischen dem Speichern von '0001.model' und 'dump.raw.txt','featmap.txt'?
  3. warum unterscheidet sich der Modellname für das Laden von model.bin von dem zu speichernden Namen 0001.model
  4. Angenommen, ich habe zwei Modelle model_A und model_B trainiert. Ich wollte beide Modelle für die zukünftige Verwendung speichern. Welche save & load-Funktion sollte ich verwenden? Könnten Sie helfen, den klaren Prozess zu zeigen?
17
Pengju Zhao

Beide Funktionen save_model und dump_model speichern das Modell. Der Unterschied besteht darin, dass Sie in dump_model den Namen der Funktion und den Baum im Textformat speichern können.

Der load_model funktioniert mit dem Modell von save_model. Das Modell aus dump_model kann zum Beispiel mit xgbfi verwendet werden.

Beim Laden des Modells müssen Sie den Pfad angeben, in dem Ihre Modelle gespeichert werden. Im Beispiel wird bst.load_model("model.bin") das Modell aus der Datei model.bin geladen - es ist nur ein Dateiname mit dem Modell. Viel Glück!

8
pplonski

Ein einfaches Speichern und Laden eines Xgboost-Modells bietet die Joblib-Bibliothek.

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

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

Ich habe hierher gefunden, weil ich nach einer Möglichkeit gesucht habe, mein xgboost-Modell zu speichern und zu laden. So habe ich mein Problem gelöst:

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