train
, val
→ training set / test
→ test setTrain
데이터셋 (훈련/학습 데이터셋)Validation
데이터셋 (검증 데이터셋) → 하는 중간에 확인Test
데이터셋 (평가 데이터셋) → 마지막에 모델의 성능을 측정하는 용도(한번만 사용 가능, 두 번 이상 사용하면 그건 검증 데이터셋, 학습 할 때 넣지는 않음)sklearn.model_selection.train_test_split()
함수 사용📌 Train/Test set 분리
X_tmp, X_test, y_tmp, y_test = train_test_split(X, # input(feature, X)
y, # output(target, label, y)
test_size=0.2, # test set의 크기. (0~1실수 : 비율, 정수 : 개수, 기본값 : 0.25)
stratify=y, # 분류에서는 필수. 원본데이터셋의 클래스별 비율을 유지하면서 나눠지도록 처리)
random_state=0 # random seed 값
)
X_tmp.shape, X_test.shape, y_tmp.shape, y_test.shape
📌 Train/Validation/Test set 분리
X_train, X_val, y_train, y_val = train_test_split(X_tmp, y_tmp, test_size=0.2,
stratify=y_tmp, random_state=0)
- 데이터셋을 설정한 K 개로 나눈다.
- K개 중 하나를 검증세트로 나머지를 훈련세트로 하여 모델을 학습시키고 평가한다.
- K개 모두가 한번씩 검증세트가 되도록 K번 반복하여 모델을 학습시킨 뒤 나온 평가지표들을 평균내서 모델의 성능을 평가한다.
KFold
- 회귀문제의 DatasetStratifiedKFold
- 분류문제의 DatasetKFold(n_splits=K)
: 몇개의 Fold로 나눌지 지정KFold객체.split(데이터셋)
: train/test set에 포함될 데이터의 index들을 반환 → Generator 생성from sklearn.model_selection import StratifiedKFold
StratifiedKFold(n_splits=K)
: 몇개의 Fold로 나눌지 지정StratifiedKFold객체.split(X, y)
n_splits
매개변수는 분할할 폴드의 개수를 설정shuffle
매개변수는 데이터를 섞을지 여부를 지정, 기본값은 False이며, 데이터를 섞지 않고 순서대로 분할함random_state
매개변수는 난수 생성기의 시드 값을 설정하는 데 사용cross_val_score( )
estimator
: 평가할 모델을 지정합니다. 주로 분류 모델 또는 회귀 모델을 사용합니다.X
: 입력 특성 데이터입니다.y
: 타겟 변수 데이터입니다.scoring
: 모델의 성능을 평가하기 위한 지표를 지정합니다. 예를 들어, 분류 모델의 경우 'accuracy' (정확도), 'precision' (정밀도), 'recall' (재현율) 등을 사용할 수 있습니다.cv
: 교차 검증 폴드 수를 지정합니다. 기본값은 5로, 5개의 폴드로 교차 검증을 수행합니다.cross_validate()
estimator
: 평가할 모델을 지정합니다. 주로 분류 모델 또는 회귀 모델을 사용합니다.X
: 입력 특성 데이터입니다.y
: 타겟 변수 데이터입니다.scoring
: 모델의 성능을 평가하기 위한 지표 또는 여러 지표를 지정합니다. 단일 지표 또는 지표의 리스트를 사용할 수 있습니다.cv
: 교차 검증 폴드 수를 지정합니다. 기본값은 5로, 5개의 폴드로 교차 검증을 수행합니다.return_train_score
: True로 설정하면 각 폴드에서의 학습 점수도 반환합니다. 기본값은 False입니다.