2016-12-10 1 views
0

파이프 라인과 GridSearchCV를 사용하여 기능을 자동으로 선택합니다. 데이터 세트가 작기 때문에 GridSearchCV에서 'cv'매개 변수를 StratifiedShuffleSplit으로 설정합니다.GridSearchCV의 전체 데이터 대신 파이프 라인의 변압기가 학습 데이터에 작용합니다.

selection = SelectKBest() 

clf = LinearSVC() 

pipeline = Pipeline([("select", selection), ("classify", clf)]) 

cv = StratifiedShuffleSplit(n_splits=50) 

grid_search = GridSearchCV(pipeline, param_grid=param_grid, cv = cv) 

grid_search.fit(X, y) 

SelectKBest 대신 전체 데이터 세트의 각 분할의 훈련 데이터에 작용 보인다 I '는 별도의 경우 결과가 다른되기 때문에 (후자는 내가 원하는 것입니다) : 다음과 같은 코드가 보인다 Select 'and'classify '를 선택하면 StratifiedShuffleSplit은 분류 자에 대해서만 작동합니다.

이 경우 파이프 라인 및 GridSearchCV을 사용하는 올바른 방법은 무엇입니까? 고마워요!

답변

0

은 교차 검증 (즉, 각 분할의 교육 부분에 SelectKBest를 실행) 전체 파이프 라인을 갈 수있는 방법입니다. 그렇지 않으면 모델이 테스트 파트를 볼 수 있습니다. 즉, 품질 추정치가 잘못되었다는 의미입니다. 이러한 불공정 품질 추정치에서 발견 된 최상의 하이퍼 패러미터는 실제 보이지 않는 데이터에서도 더욱 악화 될 수 있습니다. 당신이 평가에 그렇게 왜 예측시

당신은하지 않을거야, (예측되는 훈련 데이터 세트 + 예) 다음 분류를 다시 훈련에 SelectKBest를 다시 실행?

+0

이이 주제에 대해 설명 종이 http://dx.doi.org/10.1093/bioinformatics/btp621에 대한 올바른 링크입니다. –

관련 문제