2013-11-27 112 views
0

我想知道sklearn.LassoCV如何執行交叉驗證。特別是我想知道這些樣本是如何在褶皺中細分的。這是一個隨機的還是確定性的過程?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) 

回答

2

我假設你正在傳遞的關鍵字ARG cv=10LassoCV構造?

如果是這樣的話,那麼這將創建一個對象KFold用10倍:看看其中check_cv被稱爲在LinearModelCVLassoCV的父)。

KFold需要random_state關鍵字參數(默認爲無 - 所以numpy.random會盡量種子上/dev/urandom或類似的東西) - 但如果洗牌False(這是默認設置),然後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
+0

感謝它的工作原理 – Donbeo