사이킷런에서는 다음과 같이 중첩 교차 검증을 수행할 수 있습니다.

    >>> gs = GridSearchCV(estimator=pipe_svc,
    ...                   param_grid=param_grid,
    ...                   scoring='accuracy',
    ...                   cv=2)
    
    >>> scores = cross_val_score(gs, X_train, y_train,
    ...                          scoring='accuracy', cv=5)
    >>> print('CV 정확도: %.3f +/- %.3f' % (np.mean(scores),
    ...                                     np.std(scores)))
    CV 정확도: 0.974 +/- 0.015

    반환된 평균 교차 검증 점수는 모델의 하이퍼파라미터를 튜닝했을 때 처음 본 데이터에서 기대할 수 있는 추정 값이 됩니다. 예를 들어 중첩 교차 검증을 사용하여 SVM 모델과 단일 결정 트리 분류기를 비교할 수 있습니다. 간단한 예를 위해 max_depth 매개변수만 튜닝해 보겠습니다.

    >>> from sklearn.tree import DecisionTreeClassifier
    
    >>> gs = GridSearchCV(estimator=DecisionTreeClassifier(
    ...                             random_state=0),
    ...                   param_grid=[{'max_depth': [1, 2, 3,
    ...                               4, 5, 6, 7, None]}],
    ...                   scoring='accuracy',
    ...                   cv=2)
    
    >>> scores = cross_val_score(gs, X_train, y_train,
    ...                          scoring='accuracy', cv=5)
    >>> print('CV 정확도: %.3f +/- %.3f' % (np.mean(scores),
    ...                                     np.std(scores)))
    CV 정확도: 0.934 +/- 0.016

    결과에서 알 수 있듯이 SVM 모델의 중첩 교차 검증 성능(97.4%)은 결정 트리의 성능(93.4%)보다 훨씬 뛰어납니다. 이 데이터셋과 동일 분포에서 발생되는 새로운 데이터를 분류하기 위해서는 SVM이 더 좋은 선택일 것입니다.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.