💓 博客主页:瑕疵的CSDN主页
📝 Gitee主页:瑕疵的gitee主页
⏩ 文章专栏:《热点资讯》
被 RidgeCV 的 cv 参数坑到凌晨三点,记录个解法
目录
昨晚写回归模型,想用 RidgeCV 做交叉验证调参。代码写得贼顺手:
from sklearn.linear_model import RidgeCV
model = RidgeCV(cv='5') # 以为字符串也能转整数
跑起来直接报错:
TypeError: 'str' object cannot be interpreted as an integer
我当场懵了。cv 不能是字符串?我之前在 KFold 里用过 n_splits='5'?不,KFold 的 n_splits 也要求整数。这特么是 scikit-learn 的硬性规则。
核心根源 RidgeCV 的 cv 参数必须是整数(表示折叠数)或 CrossValidator 对象。scikit-learn 内部用 check_cv 函数验证类型,字符串无法转换。我手滑写了 '5',以为能自动转,结果直接报类型错误。别想当然,参数类型是死的。
解决代码 【错误示范】
# 错误:cv 传了字符串 '5',导致 TypeError
from sklearn.linear_model import RidgeCV
model = RidgeCV(cv='5') # 这行会崩
【正确姿势】
# 正确:cv 传整数 5,表示5折交叉验证
from sklearn.linear_model import RidgeCV
model = RidgeCV(cv=5) # 一行搞定
测试过:cv=5 正常运行,cv='5' 一定报错。别在 cv 上玩字符串,老老实实传整数。
避坑总结
我踩过这坑,现在写下来。下次再写 cv 参数,直接写数字,别手滑。 (附:跑通的代码截图,证明没坑)


![[特殊字符]DeepSeek‑Harness(DSH)小白保姆教程-171主机测评](https://www.171host.com/wp-content/uploads/2026/08/20260816085112-6a817a009aabf-220x150.png)