[ML] Dataset Split
일정한 class 비율로 dataset split 하기
머신머닝 모델을 돌릴 때 train dataset에 overfitting되지 않도록 하기 위해 class의 비율이 일정한 train과 validation(test) dataset으로의 split이 중요하다.
scikit-learn
라이브러리의model_selection
패키지에서train_test_split
함수와stratify
파라미터를 활용하면 original dataset에서의 target data(class)의 비율과 동일한 train & validation(test) dataset으로 split이 가능하다.
from sklearn.model_selection import train_test_split
x_train, x_test, y_train, y_test = train_test_split(x_data, y_data, shuffle=True, stratify=y_data, test_size=0.3, random_state=0)
-
Option 값
-
shuffle
: default=True. Split하기 전 data를 섞어줄지 결정하는 옵션. -
stratify
: defalut=None.stratify
값을 target값으로 지정하면 전체 dataset에서의 class 비율이 train & validation(test) dataset에 유지된다. (Classification 모델 성능에 매우 중요한 사항!) -
test_size
: default=0.25. Test dataset의 구성비율 결정 옵션. -
random_state
: 같은 random seed를 사용한다면 같은 dataset이 추출된다. 여러 작업자가 공동작업할 때 유용하다.
-
Leave a comment