python xgboost 继续在现有模型上训练

python xgboost continue training on existing model

假设我构建了一个 xgboost 模型:

bst = xgb.train(param0, dtrain1, num_round, evals=[(dtrain, "training")])

其中:

然后,我将模型保存到磁盘:

bst.save_model("xgbmodel")

稍后,我想重新加载我保存的模型并继续用 dtrain2

训练它

有人知道怎么做吗?

您甚至不必从磁盘加载模型并重新训练。

您需要做的就是相同的 xgb.train 命令和附加参数:xgb_model=(您在问题中保存的 xgboost 模型完整路径名或 Booster 对象)。

示例:

bst = xgb.train(param0, dtrain2, num_round, evals=[(dtrain, "training")], xgb_model='xgbmodel')

祝你好运!

对于希望继续使用 XGBClassifier 或从 sklearn.fit 函数获得的对象进行训练的用户。

from xgboost import XGBClassifier

# best_est = best number of tree
# best_lr = best learning days
# best_subsample = best subsample bw 0 and 1

params = {'objective': 'binary:logistic', 'use_label_encoder': False, 
          'seed': 27, 'eval_metric': 'logloss', 'n_estimators': best_est, 
          'learning_rate': best_lr, 'subsample': best_subsample}

# train iteration 1  below

model = XGBClassifier(**params)
model.fit(x_train_1, y_train_1)

# train iteration 2 below

model = model.fit(x_train_2, y_train_2, xgb_model=model.get_booster())

在上面的代码中 x_train_*y_train_*是pandasDataFrame类型的对象。

这里要学习的主要概念是,xgb 核心函数,而再训练总是将 booster 作为输入。因此,可以提供来自模型对象的 boostersaved model path.