> AI Gravity :: Train, Test 데이터 분리
본문으로 바로가기

Train, Test 데이터 분리

category AI Framework/Tensorflow 2021. 12. 9. 15:42

1. 개요

머신러닝 모델을 학습하고 그 결과를 검증하기 위해서는 원래의 데이터를 Training, Validation, Testing의 용도로 나누어 다뤄야 한다. 그렇지 않고 Training에 사용한 데이터를 검증용으로 사용하면 시험문제를 알고 있는 상태에서 공부를 하고 그 지식을 바탕으로 시험을 치루는 꼴이므로 제대로 된 검증이 이루어지지 않기 때문이다.

딥러닝을 제외하고도 다양한 기계학습과 데이터 분석 툴을 제공하는 scikit-learn 패키지 중 model_selection에는 데이터 분할을 위한 train_test_split 함수가 들어있다.

2. Parameter & Return

from sklearn.model_selection import train_test_split train_test_split(arrays, test_size, train_size, random_state, shuffle, stratify)

(1) Parameter

arrays : 분할시킬 데이터를 입력 (Python list, Numpy array, Pandas dataframe 등..)

test_size : 테스트 데이터셋의 비율(float)이나 갯수(int) (default = 0.25)

train_size : 학습 데이터셋의 비율(float)이나 갯수(int) (default = test_size의 나머지)

random_state : 데이터 분할시 셔플이 이루어지는데 이를 위한 시드값 (int나 RandomState로 입력)

shuffle : 셔플여부설정 (default = True)

stratify : 지정한 Data의 비율을 유지한다. 예를 들어, Label Set인 Y가 25%의 0과 75%의 1로 이루어진 Binary Set일 때, stratify=Y로 설정하면 나누어진 데이터셋들도 0과 1을 각각 25%, 75%로 유지한 채 분할된다.

(2) Return

X_train, X_test, Y_train, Y_test : arrays에 데이터와 레이블을 둘 다 넣었을 경우의 반환이며, 데이터와 레이블의 순서쌍은 유지된다.

X_train, X_test : arrays에 레이블 없이 데이터만 넣었을 경우의 반환

3. Example

import numpy as np from sklearn.model_selection import train_test_split X = [[0,1],[2,3],[4,5],[6,7],[8,9]] Y = [0,1,2,3,4] # 데이터(X)만 넣었을 경우 X_train, X_test = train_test_split(X, test_size=0.2, random_state=123) # X_train : [[0,1],[6,7],[8,9],[2,3]] # X_test : [[4,5]] # 데이터(X)레이블(Y)을 넣었을 경우 X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.33, random_state=321) # X_train : [[4,5],[0,1],[6,7]] # Y_train : [2,0,3] # X_test : [[2,3],[8,9]] # Y_test : [1,4]

'AI Framework > Tensorflow' 카테고리의 다른 글

yolo v5 실습  (0) 2021.11.22
Data 크롤링  (0) 2021.11.22
How to delete Colab folder  (0) 2021.11.22