이번 문제는 본격적으로 데이터 셋을 만드는 문제이다.
학습데이터셋, 검증데이터셋, 테스트데이터셋으로 나누면 되는 문제.
사실 train validation test ratio만 검색해도 어떤 비율로 데이터를 나눠야하는 지 많이 나온다.
주로 train/test만 사용할때는 70/30 비율로 사용하고
train/validation/test는 60/20/20으로 사용한다.
scikit-learn에서 제공하는 메소드를 사용하면 쉽게 데이터셋을 분리할 수 있다.
train_test_split(x,y,test_size=0.25,random_state=1)
이런식으로 사용하면 된다.
https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html
이전 포스팅에서 설명했던 코드는 넘어가도록 한다.
import pandas as pd
from sklearn.model_selection import train_test_split
data = pd.read_csv("/content/drive/My Drive/다핏문제/906/dataset_37_diabetes.csv")
#결측치 처리
#plas, pres, mass의 0값 median으로 대체
preszero_data = data.replace({'pres':0},{'pres':None})
preszero1_data = preszero_data.dropna()
preszero_data = data.replace({'pres':0},{'pres':None})
preszero_data = preszero_data.fillna(preszero1_data.pres.median())
masszero_data = preszero_data.replace({'mass':0.0},{'mass':None})
masszero1_data = masszero_data.dropna()
masszero_data = masszero_data.fillna(masszero1_data.mass.median())
plaszero_data = masszero_data.replace({'plas':0},{'plas':None})
plaszero1_data = plaszero_data.dropna()
edit_data = plaszero_data.fillna(plaszero1_data.plas.median())
결측치를 처리하고 난 데이터셋의 feature는 다음과 같다.
우리의 학습데이터의 정답이 될 'class' feature가 함께 있기 때문에 이것을 분리해주도록한다.
#데이터에서 정답 클래스 분리하기
col = list(map(str,edit_data.columns))
x = edit_data[col[:-1]]
print(x)
y = edit_data[col[-1]]
print(y)
# edit_data를 train/validation/test set으로 나누기
# 전체 데이터에서 학습데이터셋과 테스트셋을 나눈다.
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.4)
#train set에서 train과 validation set을 나눈다.
x_test,x_val,y_test,y_val = train_test_split(x_test,y_test,test_size=0.5)
print(x_train.shape)
print(x_val.shape)
print(x_test.shape)
사실 딱히 코드에 대해서 설명할 것은 없는 것같다.
처음에 train, test로 60/40 나눠주고 40%의 test셋에서 다시 test와 val로 나눠주었다.
train = 768개 중 60% = 460
val = 308개 중 50% = 154
test = 308개 중 50% = 154
잘 나눠진것을 확인할 수 있다.
'DAFIT > 906 - 머신러닝으로 당뇨병 예측' 카테고리의 다른 글
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 06 Random Forest를 이용한 당뇨병 예측 (0) | 2019.11.26 |
---|---|
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 05 Decision Tree를 이용한 당뇨병 예측 (0) | 2019.11.26 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 03 데이터 시각화 (0) | 2019.11.24 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 02 NaN값,NULL 값 처리하기 (+ 삽질연속, 실망스러운 결과..) (0) | 2019.11.23 |
<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 01 데이터셋 다운로드 및 읽기 (0) | 2019.11.18 |