如何解决带有LGBMRegressor的GridSearchCV无法找到最佳参数
我有2个回归变量:
import lightgbm as lgb
from sklearn.model_selection import GridSearchCV
params = {
'num_leaves': [7,14,21,28,31,50],'learning_rate': [0.1,0.03,0.003],'max_depth': [-1,3,5],'n_estimators': [50,100,200,500],}
grid = GridSearchCV(lgb.LGBMRegressor(random_state=0),params,scoring='r2',cv=5)
grid.fit(X_train,y_train)
reg = lgb.LGBMRegressor(random_state=0)
如您所见,我为两个回归变量都定义了random_state
。 GridSearchCV
必须找到最佳参数,以使估算器增加其scroring
。但是
r2_score(y_train,grid.predict(X_train)) # output is 0.69
r2_score(y_train,reg.predict(X_train)) # output is 0.84
那么,如何找到LGBMRegressor
的最佳参数?
解决方法
根据grid.fit()
之后的documentaion,您可以在此处找到最佳估算器(就绪模型)和参数:
grid.best_estimator_
grid.best_params_
仅供参考:random_state
仅适用于随机情况(例如,在改组时)。
在您的情况下,模型的参数不同,度量标准R2的结果也不同。
所以,我相信你必须像这样编写脚本:
params = {
'num_leaves': [7,14,21,28,31,50],'learning_rate': [0.1,0.03,0.003],'max_depth': [-1,3,5],'n_estimators': [50,100,200,500],}
grid = GridSearchCV(lgb.LGBMRegressor(random_state=0),params,scoring='r2',cv=5)
grid.fit(X_train,y_train)
reg = lgb.LGBMRegressor(random_state=0)
reg.fit(X_train,y_train)
lgbm_tuned = grid.best_estimator_
r2_tuned = grid.best_params_
r2_regular = r2_score(y_train,reg.predict(X_train))
当 r2_tuned 是使用网格搜索找到的最佳分数时,lgbm_tuned 是您使用最佳参数定义的模型,而 r2_regular 是您使用默认参数的分数。
gridsearch 之后发现一个最差的结果很奇怪,特别是当 gridsearch 的参数包含 LightGBM 的默认参数时。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。