본문으로 바로가기

[Python] K-Fold, Stratified K-Fold 교차 검정

category Skills/Python 2021. 11. 1. 21:01
반응형

교차검정의 종류는 Hold-Out, K-Fold, Stratified K-Fold등이 있다.

 

1. Hold-Out validation

Hold-Out 검증은 데이터를 특정 비율로 분할하여 train set과 validation set으로 만드는 것이다

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=123)
X_train_fold, X_validation_fold, y_train_fold, y_validation_fold = train_test_split(X_train, y_train, test_size=0.2, random_state=123)

 

 

2. K-Fold, Stratified K-Fold

K-교차검증은 데이터를 k개의 그룹으로 나누어 1개의 validation set과 (k-1)개의 train set을 k번 검증하는 방식이다.

주로, K-Fold는 회귀분석 시에 사용하고, Stratified K-Fold는 분류분석에서 사용한다.

둘의 차이점은 Stratified K-Fold는 데이터의 label클래스의 분포를 고려한다는 것이다.

from sklearn.model_selection import KFold

kfold = KFold(n_splits=5, shuffle=False, random_state=42)

for train_idx, validation_idx in kfold(X_train, shuffle=Flase, random_state=123):
   X_train_fold, X_validation_fold = X_train.iloc[train_idx], X_train.iloc[validation_idx]
   y_train_fold, y_validation_fold = y_train.iloc[train_idx], y_train.iloc[validation_idx]
from sklearn.model_selection import StratifiedKFold

kfold = StratifiedKFold(n_splits=5, shuffle=False, random_state=42)

for train_idx, validation_idx in kfold(X_train, y_train, shuffle=Flase, random_state=123):
   X_train_fold, X_validation_fold = X_train.iloc[train_idx], X_train.iloc[validation_idx]
   y_train_fold, y_validation_fold = y_train.iloc[train_idx], y_train.iloc[validation_idx]
반응형