2014-11-24 3 views
9

Custom cross validation split sklearn과 비슷합니다. 내장 된 교차 유효성 검사 반복자를 사용자 지정해야하는 GridSearchCV에 대한 자체 분할을 정의하고 싶습니다.sklearn 교차 유효성 검사 반복자를 인덱스로 사용자 정의하는 방법은 무엇입니까?

교차 검증을 위해 내 자신의 열차 테스트 색인 집합을 반복기에서 허용하지 않고 GridSearch에 전달하려고합니다. sklearn 문서 페이지에서 사용할 수있는 cv 반복기를 살펴 보았지만 찾을 수 없습니다. 나는이 데이터 같은 내가 customcv처럼 작동 할 수 있습니다 어떤 교육 - 테스트 인덱스

>>> train_indices = [[1,3,5,7,9],[2,4,6,8]] 
>>> test_indices = [[2,4,6,8],[1,3,5,7,9]] 
       1st fold^ 2nd fold^ 
>>> custom_cv = sklearn.cross_validation.customcv(train_indices,test_indices) 
>>> clf = GridSearchCV(X,y,params,cv=custom_cv) 

내 자신의 세트를 만들 이력서 2 배를 들어 9 개 샘플 을 가지고 구현하려는 예를 들어

?

+0

당신이 질문을 추가 할 수

import numpy as np labels = np.arange(0, 10) % 2 from sklearn.cross_validation import LeaveOneLabelOut cv = LeaveOneLabelOut(labels) 

list(cv) 수익률을 관찰 할 수 있습니까? 또한 나는'sklearn.cross_validation'에'customcv'의 존재를 알지 못하기 때문에 이것을 두어서는 안됩니다. 당신의 케이스에서'LeaveOneLabelOut'이 작동하지 않는다고 확신합니까? – eickenberg

+1

나는 구현하고자하는 것의 예로서 customcv를주었습니다 ... 그것은 sklearn에는 없습니다. 아프다 대답에서 준 방법을 시도하십시오 – tangy

답변

9

실제로 교차 유효성 검사 반복기는 다음과 같습니다. Iterators. 그들은 각 반복마다 열차/테스트 폴의 튜플을 돌려줍니다. 이것은 당신을 위해 일해야합니다 또한

custom_cv = zip(train_indices, test_indices) 

, 당신이 언급하는 특정 경우에, 당신은

[(array([1, 3, 5, 7, 9]), array([0, 2, 4, 6, 8])), 
(array([0, 2, 4, 6, 8]), array([1, 3, 5, 7, 9]))] 
+0

수정안 : 이것은 scikit-learn 0.18 버전 이전 버전입니다. 'cross_validation' 모듈 기능은'model_selection'에 있습니다. 교차 검증 스플리터는 이제'split' 메소드를 사용하여 데이터를 분리하도록 명시 적으로 요청해야하는 클래스입니다. 이는 중첩 된 교차 유효성 검사를보다 쉽게하기위한 것입니다. – eickenberg