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

Sklearn中RidgeCV无cv_values_属性及5折交叉验证实现问题

我帮你梳理下这个问题的解决思路,我之前也遇到过类似的坑:

首先,你碰到的两个问题其实是相关的——要么是sklearn版本不匹配,要么是属性名称用错了。

为什么会出现这些问题?

  1. store_cv_result=True报错:这个参数在旧版本的scikit-learn(低于0.23版本)里是不存在的,如果你用的是老版本,设置这个参数自然会报错。
  2. 'RidgeCV' object has no attribute 'cv_values_':在较新的sklearn版本中,RidgeCV的交叉验证结果存储属性已经从cv_values_改成了cv_results_,你用旧的属性名当然找不到。

解决方案分两种情况:

情况1:你可以升级scikit-learn到最新稳定版(推荐)

先检查当前版本:

import sklearn
print(sklearn.__version__)

如果版本低于0.23,执行升级命令:

pip install --upgrade scikit-learn

之后用以下代码实现5折Ridge交叉验证并查看结果:

from sklearn.linear_model import RidgeCV
from sklearn.datasets import make_regression

# 生成测试数据(替换成你的实际数据)
X, y = make_regression(n_samples=100, n_features=10, random_state=42)

# 初始化RidgeCV:设置5折CV,开启存储结果,指定要测试的alpha值
ridge_cv = RidgeCV(cv=5, store_cv_results=True, alphas=[0.1, 1.0, 10.0])
ridge_cv.fit(X, y)

# 查看交叉验证结果,注意用cv_results_而不是cv_values_
print("交叉验证结果:")
print(ridge_cv.cv_results_)

# 如果你想查看每个alpha在各折上的验证得分,可以取这个字段
print("\n各alpha的5折验证得分:")
print(ridge_cv.cv_results_['split_test_score'])

情况2:无法升级sklearn,改用GridSearchCV替代

如果因为环境限制不能升级,用GridSearchCV配合普通的Ridge模型也能实现同样的效果:

from sklearn.linear_model import Ridge
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import make_regression

X, y = make_regression(n_samples=100, n_features=10, random_state=42)

# 定义要搜索的alpha参数网格
param_grid = {'alpha': [0.1, 1.0, 10.0]}

# 初始化GridSearchCV:5折CV,返回训练得分(可选)
grid_search = GridSearchCV(Ridge(), param_grid, cv=5, return_train_score=True)
grid_search.fit(X, y)

# 查看交叉验证结果
print("交叉验证结果:")
print(grid_search.cv_results_)

总结

  • 新版本sklearn用RidgeCV(store_cv_results=True) + cv_results_属性
  • 旧版本改用GridSearchCV来获取交叉验证结果
  • 别再用cv_values_了,这个属性已经被废弃啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:47