首页 > 解决方案 > 如何在 XGBRegressor 中声明参数网格

问题描述

如何实现param_grid并获得 xgb 的最佳超参数?

regressor = xgb.XGBRegressor()
regressor.fit(X_train,y_train)
param_grid = {
    'max_depth' :[3,4,5],
    'learning_rate':[0.1, 0.01, 0.5],
    'gamma':[0,0.25,1],
    'reg_lambda':[0, 1.0, 10.0],
    'scale_pos_weight':[1,3,5]
}
optimal_params = GridSearchCV(estimator = xgb.XGBRegressor(subsample=0.9, colsample_bytree=0.5), param_grid = param_grid, verbose = 0,)
optimal_params.fit(X_train, y_train, verbose = False)

编译并反复显示此警告需要很长时间:

[16:45:55] WARNING: /workspace/src/objective/regression_obj.cu:152: 
reg:linear is now deprecated in favor of reg:squarederror.

标签: pythonmachine-learningxgboostxgbregressor

解决方案


这一切看起来都是正确的。

您有3*3*3*3*3=243超参数组合要检查,因此可能需要一些时间(您可以通过先拟合其中一个并乘以 243 来估计这一点,当然有些超参数会影响训练时间)。RandomizedSearchCV如果它太长,你可以考虑。

警告只是警告,而不是错误;reg:squarederror您可以通过将目标设置为(或升级您的 xgboost 包,因为这是当前默认设置),按照它的建议将其静音。


推荐阅读