본문 바로가기
Validation/반복 K folds validation

파이썬에서 repeted K-fold 교차검증(반복 K-fold 교차검증) 하는 방법

by 만다린망고 2023. 10. 10.
반응형

파이썬에서 반복 K-fold 교차검증(repeated K-fold CV)을 하는 예시입니다. 코드와 주석을 먼저 보여드리고 뒷부분에서 코드를 항목별로 설명하겠습니다. 

from sklearn.datasets import make_classification
from sklearn.datasets import make_classification
from sklearn.model_selection import RepeatedKFold
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
import numpy as np

#1. 데이터셋 생성하기 
X, y = make_classification()
print(X.shape, y.shape)

#2. fold 나누기
folds = RepeatedKFold(n_splits=10,n_repeats=10, random_state=1)

#3. 모델 생성하기
my_model = LogisticRegression()

#4. repeted K-fold CV로 모델 평가하기
scores = cross_val_score(my_model, X, y,scoring='roc_auc', cv=folds)

#5. 결과 출력하기
print('AUC : %.3f (%.3f)' % (np.mean(scores),np.std(scores)))

 

1. 데이터셋 생성하기

make_classification 이라는 함수를 사용하여 데이터셋을 생성합니다. 아무 조건도 입력하지 않을 경우 20차원의 데이터 100개를 생성합니다. 

 

2. fold 나누기

RepeatedKFold 함수로 fold 를 나눠줍니다. n_splits 에 입력된 값이 fold의 개수입니다. n_repeated 에 입력된 값이 반복 횟수입니다. 

 

3. 모델 생성하기

로지스틱 회귀모델을 하나 생성합니다. 아직 학습되지 않은 모델입니다. 

 

4. 모델 평가하기

cross_val_score 함수는 K-fold CV 를 구현하는 함수입니다. scoring 은 평가 기준입니다. 아래 링크에 평가 기준들이 있으니 원하는 값을 입력하면 됩니다. 

https://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter

위 예시에서는 AUC로 평가하였습니다. 

 

5. 평가 결과입니다. 아래와 같이 출력됩니다. 

>>> print('AUC : %.3f (%.3f)' % (np.mean(scores),np.std(scores)))
AUC : 0.918 (0.126)
반응형

댓글