Sta*_*ham 12 python regression machine-learning scikit-learn xgboost
我已经知道" xgboost.XGBRegressor是XGBoost的Scikit-Learn Wrapper界面."
但他们还有其他区别吗?
Max*_*xim 20
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)
Run Code Online (Sandbox Code Playgroud)
这意味着,一切都可以用做XGBRegressor并且XGBClassifier是通过潜在可行的xgboost.train功能.另一种方式显然不是这样,例如,API xgboost.train中不支持一些有用的参数XGBModel.明显差异列表包括:
xgboost.train允许callbacks在每次迭代结束时设置应用.xgboost.train允许通过xgb_model参数继续训练.xgboost.train 不仅允许缩小eval函数,还允许最大化.@Maxim,从 xgboost 0.90(或更早版本)开始,这些差异在xgboost.XGBClassifier.fit 中不再存在:
callbacksxgb_model参数连接我发现不同的是evals_result,它必须在 fit ( clf.evals_result())之后单独检索,结果dict不同,因为它不能利用监视列表 ( watchlist = [(d_train, 'train'), (d_valid, 'valid')])中的 eval 名称。
小智 5
我认为主要区别在于训练/预测速度。
为了进一步参考,我将调用xgboost.train- 'native_implementation' 和XGBClassifier.fit- 'sklearn_wrapper'
我对数据集形状(240000, 348)做了一些基准测试
适合/训练时间:
sklearn_wrapper时间 = 89 秒
native_implementation时间 = 7 秒
预测时间:
sklearn_wrapper=6秒
native_implementation=3.5毫秒
我相信这是因为它sklearn_wrapper被设计为使用 pandas/numpy 对象作为输入,其中native_implementation需要将输入数据转换为 xgboost.DMatrix 对象。
此外,还可以使用 .n_estimators 来优化 n_estimators native_implementation。
| 归档时间: |
|
| 查看次数: |
5314 次 |
| 最近记录: |