我想知道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)
答案 0 :(得分:3)
我假设您将关键字arg cv=10
传递给LassoCV
构造函数?
如果是这种情况,那么这将创建一个10倍的KFold
对象:看一下check_cv
LinearModelCV
中LassoCV
的调用位置KFold
亲本)。
random_state
采用numpy.random
关键字参数(默认为无 - 所以/dev/urandom
会尝试在False
或类似的东西上播种 - 但是如果shuffle是{{ 1}}(默认情况下),然后random_state
实际上没有做任何事情。折叠是从数据集中的相邻成员中选择的。
如果要随机化折叠,则应使用KFold
创建shuffle=True
对象,并将该对象用作cv
关键字参数,而不是10
。
来源: