사이킷런에서는 다음과 같이 중첩 교차 검증을 수행할 수 있습니다.
>>> 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이 더 좋은 선택일 것입니다.