objectif
Persister un Booster (native) et un modèle scikit-learn.
code minimal
import xgboost as xgb
from xgboost import XGBClassifier
from sklearn.datasets import load_breast_cancer
X, y = load_breast_cancer(return_X_y=True)
clf = XGBClassifier(n_estimators=50, tree_method="hist", random_state=0).fit(X, y)
clf.save_model("xgb_sklearn.json")
loaded = XGBClassifier()
loaded.load_model("xgb_sklearn.json")
print(hasattr(loaded, "predict"))
# Booster natif
dtrain = xgb.DMatrix(X, label=y)
bst = xgb.train({"objective":"binary:logistic","tree_method":"hist","seed":0}, dtrain, num_boost_round=50)
bst.save_model("xgb_booster.json")
bst2 = xgb.Booster(model_file="xgb_booster.json")
print(len(bst2.get_dump()) > 0)
utilisation
# Exporter en format texte (dump) pour inspection
bst.dump_model("dump.txt")
print(True)
variante(s) utile(s)
# Charger depuis bytes
buf = bst.save_raw()
bst3 = xgb.Booster()
bst3.load_model(bytearray(buf))
print(len(bst3.get_dump()) > 0)
notes
- Utilisez les formats JSON/UBJ modernes pour compatibilité; évitez pickle sur des objets de modèles externes.