如何在RandomizedSearchCV中获取LGBM早停的最佳n_estimators迭代数
问题解决方法
报错原因
LGBM_fit是RandomizedSearchCV类的实例,该类本身没有best_iteration属性,该属性属于RandomizedSearchCV筛选出的最优参数对应的LightGBM基模型。同时注意LightGBM的sklearn接口中,最佳迭代次数的属性名末尾带有下划线,拼写错误也会触发报错。
正确调取代码
在原有训练代码后追加以下内容即可获取最佳迭代次数:
# 获取最优参数对应的LGBM模型实例 best_lgb_model = LGBM_fit.best_estimator_ # 调取最佳迭代次数 best_n_estimators = best_lgb_model.best_iteration_ print(f"最佳n_estimators值:{best_n_estimators}")
后续训练优化(可选)
如果要跳过早停步骤,直接用最优参数训练模型,可以将最佳迭代次数写入参数配置:
# 合并最佳参数与最佳迭代次数 final_train_params = LGBM_fit.best_params_ final_train_params['n_estimators'] = best_n_estimators # 初始化最终模型直接训练 final_lgb_model = lgb.LGBMRegressor(**final_train_params) final_lgb_model.fit(x_train, y_train)
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

