如何获取对应最佳score的coef系数而非best_estimator的系数?
解决方法
问题的核心在于best_estimator_是GridSearchCV用全量数据重新拟合得到的模型,若你重写的score方法在交叉验证(CV)阶段和重拟合阶段行为不一致,就会出现最佳分数对应的模型与best_estimator_不匹配的情况。你可以通过以下步骤直接获取对应CV最佳分数的模型系数:
从
cv_results_中定位最佳分数对应的参数组合import numpy as np # 找到平均测试分数最高的索引 best_idx = np.argmax(GSV.cv_results_['mean_test_score']) # 获取对应的参数 best_params = GSV.cv_results_['params'][best_idx]用这些参数初始化管道并重新拟合数据
# 给管道设置最佳参数 pipe.set_params(**best_params) # 拟合全量数据 pipe.fit(X, y)提取对应步骤的系数
pipe.named_steps['step2'].coef_
额外检查点
- 确认GridSearchCV的
scoring参数未被手动指定,确保CV阶段使用的是你重写的score方法(默认情况下,GridSearchCV会调用估计器自身的score方法)。 - 查看
GSV.cv_results_['mean_test_score']与GSV.cv_results_['params']的对应关系,确认哪个参数组合的分数确实最高,避免因重写的score方法逻辑问题导致评分异常。
内容的提问来源于stack exchange,提问作者ManInMoon
相关产品推荐
相关产品推荐

