더북(TheBook)

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

>>> 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이 더 좋은 선택일 것입니다.

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