먼저 sklearn.model_selection 모듈에 있는 StratifiedKFold 클래스를 훈련 데이터셋의 y_train 클래스 레이블을 전달하여 초기화합니다. n_splits 매개변수로 폴드 개수를 지정합니다. kfold 반복자를 사용하여 k개의 폴드를 반복하여 얻은 train의 인덱스를 이 장 서두에서 정의한 로지스틱 회귀 파이프라인을 훈련하는 데 사용할 수 있습니다. pipe_lr 파이프라인을 사용하므로 각 반복에서 샘플의 스케일이 적절하게 조정됩니다(예를 들어 표준화를 통해서). 그다음 테스트 인덱스를 사용하여 모델의 정확도 점수를 계산합니다. 이 점수를 리스트에 모아서 추정한 정확도의 평균과 표준 편차를 계산합니다.
앞 코드가 k-겹 교차 검증의 작동 방법을 설명하는 데 유용하지만 사이킷런은 k-겹 교차 검증 함수를 제공합니다. 좀 더 간단하게 계층별 k-겹 교차 검증을 사용하여 모델을 평가할 수 있습니다.5
>>> from sklearn.model_selection import cross_val_score
>>> scores = cross_val_score(estimator=pipe_lr,
... X=X_train,
... y=y_train,
... cv=10,
... n_jobs=1)
>>> print('CV 정확도 점수: %s' % scores)
CV 정확도 점수: [0.93478261 0.93478261 0.95652174
0.95652174 0.93478261 0.95555556
0.97777778 0.93333333 0.95555556
0.95555556]
>>> print('CV 정확도: %.3f +/- %.3f' % (np.mean(scores),
... np.std(scores)))
CV 정확도: 0.950 +/- 0.014
5 역주 cross_val_score 함수는 estimator 매개변수에 전달된 모델이 회귀일 때는 단순 분할 클래스인 KFold를 사용하고 분류일 때는 StratifiedKFold를 사용합니다. cv 매개변수에 KFold 등의 클래스 객체를 직접 전달할 수도 있습니다.