python - 如何在 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.
解决方案
这一切看起来都是正确的。
您有3*3*3*3*3=243
超参数组合要检查,因此可能需要一些时间(您可以通过先拟合其中一个并乘以 243 来估计这一点,当然有些超参数会影响训练时间)。RandomizedSearchCV
如果它太长,你可以考虑。
警告只是警告,而不是错误;reg:squarederror
您可以通过将目标设置为(或升级您的 xgboost 包,因为这是当前默认设置),按照它的建议将其静音。
推荐阅读
- c# - 如何在拉伸父窗口时垂直拉伸 WPF 用户控件及其组件
- settings - 更改 Google colab 语言设置
- c++ - C++ 从 'char*' 到 'unsigned char*' 的无效转换?
- azure - Azure 流分析:聚合时删除重复项
- c++ - For循环在C ++中以字符串长度无限运行
- android - 观察一个 MutableLiveData 列表
- android - 将二进制字符串转换为字节数组时面临的问题
- python-3.x - 导入 Google Cloud Speech-to-Text 识别的问题
- vtiger - VTIGER CRM (PHP) 用字符编码 Vtiger_Util_Helper::toSafeHTML(ZEND_JSON::encode)
- c - 'note: expand from macro 'bool' #define bool _Bool' 是什么意思?