반응형
좋은 데이터 예측 모델을 만들 때, 중요한 것은
1) 데이터 분석 목적에 맞춘 데이터 만들기
2) 데이터 전처리 잘하기
3) 훈련데이터와 테스트 데이터 잘 나누기
4) 분석 파라미터 잘 설정하기
5) 데이터 특성에 맞는 평가 지표로 평가하기
이 중에서 '3) 훈련 데이터와 테스트 데이터 잘 나누기'를 자세히 알아보자
why? 훈련데이터와 테스트 데이터를 잘 나눠야 하는 이유는?
훈련데이터에서만 우수한 예측 성능을 보이는 과대적합된 모델을 만들 수 있기 때문이다.
만약 새로운 데이터, 즉, 테스트 데이터가 들어온다면 예측 성능이 매우 낮게 될 수 있다.
What? 무슨 데이터를 나눌 수 있을까?
지도학습인 대표적인 분류 모델, 회귀 모델의 모델 등의 데이터 셋에서 훈련 데이터와 테스트 데이터를 나눌 수 있다.
How? 훈련데이터는 전체 데이터를 대표할 수 있도록 표본을 잘 뽑아야 한다.
분류 모델에서 표본을 잘 뽑기 위해서는? 라벨이 골고루 포함되어야 한다.
회귀 모델에서 표본을 잘 뽑기 위해서는? 이상치를 제외한 데이터들이 골고루 포함되어야 한다.
sklearn.model_selection.train_test_split
sklearn.model_selection.train_test_split(*arrays, test_size=None, train_size=None, random_state=None, shuffle=True, stratify=None)
파라미터 | 설명 |
arrays sequence of indexables with same length / shape[0] | '리스트, 넘파이 array, 스키파이 spare matrix, 판다스 DataFrame'의 데이터를 넣는다. |
test_size float or int, default=None | 0~1 사이의 숫자로 test 데이터 크기를 정한다. |
train_size float or int, default=None | 0~1 사이의 숫자로 train 데이터 크기를 정한다. |
random_state int, RandomState instance or None, default=None | 난수를 생성해서 데이터의 인덱스로 train과 test 데이터를 나누는데, 이 때, 난수의 기준을 고정하여 항상 같은 데이터가 추출될 수 있도록 한다. |
shuffle bool, default=True | train과 test 데이터를 섞는다. 만약 섞지 않으려면, stratify 설정은 반드시 None이어야 한다. |
stratify array-like, default=None | 분류 모델의 데이터에서 train과 test를 나눌 때, 각각 train과 test가 원래 데이터의 분포와 유사하게 데이터를 추출해 주는 파라미터이다. |
훈련데이터를 잘 뽑기 위해 stratify 파라미터를 잘 활용하자!
stratify 사용 안 할 때의 데이터 분할
import numpy as np
from sklearn.model_selection import train_test_split
X = np.arange(12).reshape((6, 2))
y = [0,0,0,1,1,1]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)
데이터 분포에 맞춰 분할이 잘 된 것을 볼 수 있다.
반응형
'데이터분석 > 머신러닝' 카테고리의 다른 글
머신러닝 데이터 분류모델 훈련 시키기 (0) | 2023.04.08 |
---|---|
[회귀분석] 회귀분석 모델 한 번에 돌려서 가장 좋은 성능 모델 값 뽑기 (0) | 2020.02.24 |
머신러닝/딥러닝 데이터셋 얻을 수 있는 링크 모음 (0) | 2019.05.07 |
[모델 선택하기] 머신러닝(지도학습,비지도학습,강화학습)/딥러닝 (0) | 2018.07.19 |
[기초개념] 데이터 분석 관점에서 한줄로 정리한 '머신러닝 딥러닝 데이터 분석을 하기 위해 꼭 알아야할 기본 개념' (0) | 2018.05.28 |