You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中两种GridSearchCV循环实现差异及ValueError报错排查

两种GridSearchCV实现的差异与报错原因

核心实现差异

  • 实现1(列表推导式):每次循环会将新训练完成的GridSearchCV实例追加到列表中,最终grid_searches是包含所有模型对应搜索结果的列表,长度与models/params的长度一致。
  • 实现2(循环赋值):每次循环直接给grid_searches重新赋值为仅包含当前模型搜索结果的新列表(覆盖之前的内容),最终grid_searches里只有最后一个模型的搜索结果,长度为1。

报错直接原因

绘图代码中,你试图遍历grid_searches[0:3](前3个模型的结果)与参数名、子图进行匹配,但实现2中grid_searches仅存最后一个模型的结果:

  1. 循环执行时,会用最后一个模型的GridSearchCV实例去匹配第一个参数名(比如alpha)。
  2. 如果这个模型的param_grid是多参数组合(比如同时调优l1_ratio和alpha),grid_search.param_grid[param_name](即alpha的取值列表)长度为50,但网格搜索的总参数组合数是50×50=2500,对应mean_train_score/mean_test_score的长度也是2500。
  3. 调用ax.plot()时,x轴数据长度(50)与y轴数据长度(2500)不匹配,触发维度不匹配错误。

修复方法

将实现2中的赋值语句改为追加元素即可:

grid_searches = []
for m, grid in zip(models,params):
    grid_searches.append(GridSearchCV(m,grid,n_jobs=-1, cv = 3, return_train_score=True).fit(X,y))

内容的提问来源于stack exchange,提问作者AdiG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 03:50:23