xgb.train和xgb.XGBRegressor(或xgb.XGBClassifier)有什么区别?

2024-04-19 06:48:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经知道“xgboost.XGBRegressor是XGBoost的Scikit学习包装器接口。”

但他们还有什么不同吗?


Tags: scikitxgboostxgbregressor
1条回答
网友
1楼 · 发布于 2024-04-19 06:48:47

^{}是一个低级的API,用于通过梯度增强方法训练模型。

xgboost.XGBRegressorxgboost.XGBClassifier是准备DMatrix并传入相应目标函数和参数的包装器(Scikit Learn like wrappers,正如它们所称)。最后,fit调用简单地归结为:

self._Booster = train(params, dmatrix,
                      self.n_estimators, evals=evals,
                      early_stopping_rounds=early_stopping_rounds,
                      evals_result=evals_result, obj=obj, feval=feval,
                      verbose_eval=verbose)

这意味着可以用XGBRegressorXGBClassifier完成的所有工作都可以通过底层的xgboost.train函数实现。另一方面,显然不是这样,例如,XGBModelAPI不支持xgboost.train的一些有用参数。显著差异清单包括:

  • xgboost.train允许设置每次迭代结束时应用的callbacks
  • xgboost.train允许通过xgb_model参数继续训练。
  • xgboost.train不仅允许eval函数的最小化,还允许最大化。

相关问题 更多 >