我已经知道 “xgboost.XGBRegressor
是 XGBoost 的 Scikit-Learn 包装器接口。”
但它们还有其他区别吗?
回答:
xgboost.train
是通过梯度提升方法训练模型的低级 API。
xgboost.XGBRegressor
和 xgboost.XGBClassifier
是包装器(它们称之为Scikit-Learn-like 包装器),它们准备 DMatrix
并传入相应的目标函数和参数。最终,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)
这意味着通过 XGBRegressor
和 XGBClassifier
可以做到的所有事情,都可以通过底层的 xgboost.train
函数实现。反过来显然不是这样,例如,xgboost.train
的一些有用参数在 XGBModel
API 中不受支持。值得注意的区别列表包括:
xgboost.train
允许在每次迭代结束时设置callbacks
。xgboost.train
允许通过xgb_model
参数继续训练。xgboost.train
不仅允许最小化评估函数,还允许最大化。