假设我正在使用xgboost和以下命令来训练二进制分类模型:
import xgboost as xgb
dtrain = xgb.DMatrix(X_train, label=y_train, feature_names=feature_names)
dtest = xgb.DMatrix(X_test, label=y_test, feature_names=feature_names)
watchlist = [(dtrain, "trn"), (dtest, "tst")]
bst = xgb.train(params0, dtrain, num_boost_round=500,
evals=watchlist, early_stopping_rounds=200)
然后,我将获得以下输出:
[0] trn-auc:0.917445 tst-auc:0.901041
...
[431] trn-auc:0.979697 tst-auc:0.946273
Stopping. Best iteration:
[231] trn-auc:0.975682 tst-auc:0.949634
现在bst
拥有一个训练有素的Booster
对象,该对象建立在431个增强器(树)上。我希望bst
持有一个受过训练的Booster
对象,该对象基于231个增强器而无需重新训练。
我知道可以预测:
bst.predict(dtest, ntree_limit=bst.best_ntree_limit)
仅使用231棵树即可预测。但这还不够。我需要整个Booster
对象,就像我只用231次迭代构建它一样。