欢迎光临
我们一直在努力

Scikit-learn RidgeCV 报错怎么办?教你一招避坑

💓 博客主页:瑕疵的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 上玩字符串,老老实实传整数。

    避坑总结

  • 参数类型别猜:scikit-learn 参数严格到变态。整数就是整数,字符串就是字符串。
  • 报错先看类型:TypeError 基本都是类型不对。直接检查参数类型。
  • IDE 要用好:PyCharm 会标出类型错误,写代码前先看提示。
  • 文档别跳过:RidgeCV 的 cv 参数说明里写得清清楚楚:int or cross-validator。
  • 我踩过这坑,现在写下来。下次再写 cv 参数,直接写数字,别手滑。 (附:跑通的代码截图,证明没坑)

    RidgeCV 正常运行截图

    赞(0)
    未经允许不得转载:171主机测评 » Scikit-learn RidgeCV 报错怎么办?教你一招避坑
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址