Xgboost 交叉验证模型访问

Xgboost crossvalidated model access

有什么方法可以直接从 xgboost.cv 访问经过训练的 xgboost 模型?或者在这种情况下我必须手动循环折叠并执行拟合吗?

xgb.cv(param, dtrain, num_round, nfold = 5, seed = 0,
       obj = logregobj, feval=evalerror)

首先,您按照指示交叉验证 xgboost:

xgb.cv_m <- xgb.cv(param, dtrain, num_round, nfold = 5, seed = 0, obj = logregobj, feval=evalerror)

然后,需要的轮数对应最好的AUC(AUC train and test means and std results from cross-validation are saved in the data frame 'dt' - check out names(xgb_cv_m) ):

nr <- which(xgb_cv_m$dt$test.auc.mean == max(xgb_cv_m$dt$test.auc.mean))

接下来,当您使用 'xgboost' 拟合最终模型时,您使用 nrounds=nr

如果您愿意,您还可以通过以下方式目视检查每一轮的表现:plot(xgb_cv_m$dt$test.auc.mean)