본문 바로가기

Machine Learning/전처리(Preprocessing)

Machine Learning - train_test_split

반응형

https://steadiness-193.tistory.com/253

 

Machine Learning - 랜덤으로 train과 test로 나누기

데이터 불러오기 seaborn의 iris 데이터셋을 불러온다. 150개의 행 중 100개를 train, 50개를 test로 나눠보자 단, 인덱스순이 아닌 랜덤으로 추출해서 진행한다. id 컬럼 추가 랜덤 추출 https://steadiness-19..

steadiness-193.tistory.com

위 포스팅에서는 sample 메서드를 이용해서 나누어봤으나

 

좀 더 정밀하게 나눌 수 있는

 

sklearn 패키지의 train_test_split 을 이용해보자.

 

 

 

 

데이터 출처

 

www.kaggle.com/c/titanic

 

Titanic: Machine Learning from Disaster

Start here! Predict survival on the Titanic and get familiar with ML basics

www.kaggle.com

 

 

 

데이터 불러오기

 

 

train 데이터는 train과 valid로 나눌 것이기 때문에 data로 불러오고

 

test는 X_test로 정의한다.

 

 

 

 

컬럼 전처리

 

 

복잡한 이름 대신 Title만 남기고 분석에 잡음이 될 수 있는 컬럼은 삭제해준다.

 

Survived 컬럼은 이미 label로 정의했으니 문제 없다.

 

 

 

 

 

숫자형 / 범주형 컬럼 빼두기

 

 

 

 

 

결측치 확인

 

 

Age 컬럼의 결측치가 많고 Fare, Embarked 컬럼에는 적게 있다.

 

 

 

 

 

 

[train_test_split]

train과 test로 나누는 것이지만 사실상 train과 valid로 나누는 것이라 보면 된다.



[주요 파라미터]

- train_size(test_size) :
train(valid)의 비율 지정,
주로 7:3 또는 8:2 / 0.0 ~ 1.0 사이의 값

- random_state : 난수 지정

- shuffle : 데이터를 쪼갤 때 랜덤하게 섞음(True/False)

- stratify : 쪼개기 이전 클래스의 비율을 쪼개고 나서도 유지
label컬럼(배열)을 인풋
* stratify는 분류에서만 가능

 

 

순서는 X_train, X_valid, y_train, y_valid

 

X_train의 정답은 y_train

X_valid의 정답은 y_valid

 

data와 label을 넣어준다.

 

train과 valid를 7:3으로 랜덤하게 셔플링해서 나누어주었다.

 

 

 

추후 원핫인코딩 등 처리의 효율을 위해 인덱스는 리셋해준다.

 

 

반응형