sklearn LassoCV如何执行交叉验证?

时间:2013-11-27 11:27:10

标签: python cross-validation scikit-learn

我想知道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)

1 个答案:

答案 0 :(得分:3)

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

如果是这种情况,那么这将创建一个10倍的KFold对象:看一下check_cv LinearModelCVLassoCV的调用位置KFold亲本)。

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

如果要随机化折叠,则应使用KFold创建shuffle=True对象,并将该对象用作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