【问题标题】:How does sklearn LassoCV perform cross validation?sklearn LassoCV 如何进行交叉验证?
【发布时间】:2013-12-13 00:29:13
【问题描述】:

我想知道 sklearn.LassoCV 如何进行交叉验证。特别是我想知道样本是如何在折叠中细分的。是随机过程还是确定性过程?

例如,假设我有 100 个样本,我使用 10 折交叉验证,并考虑 F 将每个样本发送到其折页的函数。

F(1:10)=1, F(11:20)=2,... 还是随机过程(例如 F(1)=8, F(2)=7...)

如果问题不清楚,请告诉我。

谢谢:)

好的,这就是解决方案:

from sklearn.linear_model import LassoCV
from sklearn.cross_validation import KFold

kf=KFold(len(y),n_folds=10,shuffle=True)
cv=LassoCV(cv=kf).fit(x,y)

【问题讨论】:

    标签: python cross-validation scikit-learn


    【解决方案1】:

    我假设您将关键字 arg cv=10 传递给 LassoCV 构造函数?

    如果是这种情况,那么这将创建一个有 10 个折叠的 KFold 对象:查看在 LinearModelCVLassoCV 的父级)中调用 check_cv 的位置。

    KFold 采用 random_state 关键字参数(默认为 None - 所以 numpy.random 将尝试在 /dev/urandom 或类似的东西上播种) - 但如果 shuffle 是 False (默认情况下) , 然后random_state 实际上并没有做任何事情。折叠是从数据集中的相邻成员中选择的。

    如果您想随机折叠,您应该使用shuffle=True 创建一个KFold 对象,并将该对象用作cv 关键字参数,而不是10

    来源:

    1. https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/linear_model/coordinate_descent.py
    2. https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/cross_validation.py

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 2021-11-24
      • 2012-12-31
      • 2017-04-10
      • 2016-04-13
      • 2018-08-16
      • 2018-10-02
      相关资源
      最近更新 更多