2013-10-09 4 views
9

sklearn.pipeline에 '선택 사항'단계를 설정할 수 있는지 궁금합니다. 예를 들어 분류 문제의 경우 ExtraTreesClassifier을 AND로 앞에두고 PCA 변환을 사용하지 않을 수도 있습니다. 실제로는 PCA 단계의 토글을 지정하는 추가 매개 변수가있는 파이프 라인 일 수 있으므로 GridSearch 등을 통해 최적화 할 수 있습니다. sklearn 소스에서 이와 같은 구현이 보이지 않지만, 약? 파이프 라인의 다음 단계의 가능한 파라미터 값이 이전 단계 (예, ExtraTreesClassifier.max_features 유효한 값 PCA.n_components에 의존)의 매개 변수에 의존 할 수 있기 때문sklearn 파이프 라인의 특정 단계를 토글 할 수 있습니까?

또한, 가능 sklearn.pipeline 이러한 조건 의존성을 지정하며 sklearn.grid_search?

감사합니다.

답변

14
  • Pipeline 단계는 현재 그리드 검색에서 선택을 할 수 없습니다하지만 당신은 신속하게 해결 한 것과 같이 요청시 PCA을 해제 부울 매개 변수를 사용하여 자신의 OptionalPCA 구성 요소로 PCA 클래스를 포장 할 수있다. 좀 더 복잡한 검색 공간을 설정하려면 hyperopt을보고 싶을 수도 있습니다. 나는 기본적으로 이런 종류의 패턴을 지원하는 sklearn 통합이 좋다고 생각하지만 더 이상 문서를 찾을 수 없습니다. 어쩌면 this talk을보십시오.

  • 종속 매개 변수 문제의 경우 GridSearchCV은이 경우를 처리하기위한 매개 변수 트리 as demonstrated in the documentation을 지원합니다. 에서

+7

로 ExtraTreesClassifier.max_features'는 정수 값 대신 0.0과 1.0 사이의 부동 소수점 값이 될 수 있습니다. 이 기능은 실제 기능 수가 가변적 인 경우 유용합니다. –

+0

통찰력있는 대답을 해주신 두 분 모두 감사드립니다. 나는 그들이 내가 찾고 있었던 정확하게 것이라고 생각한다. – dolaameng

2

docs :

개별 단계는 매개 변수로 대체 될 수 있으며, 비 최종 단계는 없음으로 설정하여 무시 될 수

:

from sklearn.linear_model import LogisticRegression 
params = dict(reduce_dim=[None, PCA(5), PCA(10)], 
       clf=[SVC(), LogisticRegression()], 
       clf__C=[0.1, 10, 100]) 
grid_search = GridSearchCV(pipe, param_grid=params) 
관련 문제