python xgboost 继续在现有模型上训练
python xgboost continue training on existing model
假设我构建了一个 xgboost 模型:
bst = xgb.train(param0, dtrain1, num_round, evals=[(dtrain, "training")])
其中:
- param0 是 xgb 的一组参数,
- dtrain1 是一个准备好接受训练的 DMatrix
- num_round是轮数
然后,我将模型保存到磁盘:
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
作为输入。因此,可以提供来自模型对象的 booster
或 saved model path
.
假设我构建了一个 xgboost 模型:
bst = xgb.train(param0, dtrain1, num_round, evals=[(dtrain, "training")])
其中:
- param0 是 xgb 的一组参数,
- dtrain1 是一个准备好接受训练的 DMatrix
- num_round是轮数
然后,我将模型保存到磁盘:
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
作为输入。因此,可以提供来自模型对象的 booster
或 saved model path
.