2013-11-27 3 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

난 당신이 LassoCV 생성자에 키워드 인수 cv=10에 전달하는 것 같은데요? 이 경우

, 다음이 10 개 주름으로 KFold 객체를 생성합니다 : check_cvLinearModelCV에서 호출되는 경우를 살펴 (LassoCV의 부모) 걸릴. (- 그래서 numpy.random/dev/urandom이나 뭐 비슷한에 씨앗을 시도하는 디폴트는 none) -

KFoldrandom_state 키워드 인수를 취하는하지만 셔플 (기본값 인) False 경우, 다음 random_state 실제로 아무것도하지 않습니다 . 폴드는 데이터 세트의 인접한 멤버에서 선택됩니다. 당신이 주름을 randomise하려면

, 당신은 shuffle=TrueKFold 객체를 생성해야하고, 대신 10의, cv 키워드 인수로 해당 개체를 사용합니다.

출처 :

  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