2017-04-09 7 views
0

OneVsRestClasssifer으로 GridSearchCV을 실행 중입니다. SVC을 견적 도구로 사용하고 있습니다. , INT :GridSearchCV는 rbf 커널과 다른 차수의 SVC를 컴퓨팅합니까?

http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html

정도 :하여 degree 매개 변수가 poly 커널에 의해서만 사용되는 SVC의 문서에 따르면

pipeline = Pipeline([ 
    ('clf', OneVsRestClassifier(SVC(verbose=True), n_jobs=1)), 
    ]) 

parameters = { 
    "clf__estimator__C": [0.1, 1], 
    "clf__estimator__kernel": ['poly', 'rbf'], 
    "clf__estimator__degree": [2, 3], 
} 

grid_search_tune = GridSearchCV(pipeline, parameters, cv=2, n_jobs=8, verbose=10) 
grid_search_tune.fit(train_x, train_y) 

: 이것은 내 PipelineGridSearchCV 매개 변수의 측면이다 선택 사항 (기본값 = 3)

다항식 커널의 차수 기능 ('폴리'). 다른 모든 커널에서는 무시됩니다.

하지만 난 내 GridSearchCV의 출력을 볼 때 그것이 degree 매개 변수에 대한 rbf 커널과 다른 값으로 각 SVC 구성에 대한 다른 실행을 계산하는 것 같다.

[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=2 
[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=2 
[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=2 
[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=2 
[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=3 
[CV] clf__estimator__kernel=poly, clf__estimator__C=0.1, clf__estimator__degree=3 
[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=3 
[CV] clf__estimator__kernel=rbf, clf__estimator__C=0.1, clf__estimator__degree=3 
커널이 rbf로 설정되어있는 경우

이 정도의 모든 값이 무시하지 않나요?

답변

1

여기에 표시된 출력은 GridSearchCV에 의해 내부 추정기에 전달 된 매개 변수의 다양한 조합, 즉 SVC입니다. 그러나 그들이 사용되는지 여부는 SVC에 달려 있습니다. 이 경우 SVC은 오류를 발생시키지 않지만 degree도 사용하지 않습니다. 의심스러운 모든 조합의 점수를 인쇄해야합니다. 그들은 평등해야합니다. 그러면 degree 매개 변수가 사용되지 않는다고 알려줍니다.

참고 : GridSearchCVrandom_state을 설정하여 테스트를 복제해야합니다.

설명 : GridSearchCV의 작품은 단지 다음, 피팅에 대한 추정에 매개 변수, 기차 데이터를 전달 득점에 대한 테스트 데이터를 사용하는 것입니다, 그리고 최고 점수 결과 매개 변수의 조합을 발생합니다.

호환되지 않는 매개 변수 조합이 평가기에 전달되면 매개 변수가 무시되거나 오류가 발생하는지 여부에 관계없이 구현에 따라 다릅니다.

예 : 당신이 볼 수 있듯이 나는 newton-cg 솔버 l1 벌금을 사용하는 경우

penalty : str, ‘l1’ or ‘l2’, default: ‘l2’ 
     Used to specify the norm used in the penalization. 

solver : {‘newton-cg’, ‘lbfgs’, ‘liblinear’, ‘sag’}, default: ‘liblinear’. 
     Algorithm to use in the optimization problem. 
     ‘newton-cg’, ‘lbfgs’ and ‘sag’ only handle L2 penalty. 

는, 그것은 호환성 결과 : LogisticRegression에, 두 개의 매개 변수가 있습니다. 따라서 평가자는 페널티 패러미터를 모두 무시하거나 오류를 던질 수 있습니다. 이 경우 오류가 발생합니다.

+0

답장을 보내 주셔서 감사합니다. 점수를 확인해야하지만 SVC (커널 = 'rbf')가 계산되고있는 것으로 판단됩니다. 사실이라면 낭비입니다. 모든 점수가 같아야하기 때문입니다. GridSearchCV는이 점수를 무시할 정도로 "똑똑"해야합니다. 나는 sklearn 메일 링리스트에 대해 쓸 것입니다. –

+1

@DavidBatista 예. 서로 다른 각도 값에 대해 같은 실행이 계산됩니다. 메일 링리스트에 대해 알아보십시오. 우리는 dict을 호환 가능한 조합 만 함께 dict의 목록으로 변경할 수 있습니다. 'tuned_parameters'와 같은 것 : http : //scikit-learn.org/stable/auto_examples/model_selection/grid_search_digits.html#sphx-glr-auto-examples-model-selection-grid-search-digits-py –

+0

아, 멋지네요. , 그것은 간단한 해결책입니다! 감사 :) –