데이터분석/전처리

시계열데이터와 비시계열데이터의 데이터셋 분할하는 법

씩씩한 IT블로그 2020. 12. 17. 20:36
반응형

1. 비시계열데이터

(1) 설명

데이터셋을 보통 (훈련셋:검증셋:테스트셋=6:2:2)로 나눈다. 

이때 데이터는 보통 랜덤으로 추출한다.

(2) 코드

from sklearn.model_selection import train_test_split

# test_set의 사이즈를 0.2%로 설정
X_train, X_test, Y_train, Y_test = train_test_split(dataframe[X_colname], dataframe[Y_colname], test_size=0.2, random_state=123)

 

2. 시계열데이터

(1) 설명

시계열데이터의 경우 랜덤성을 부여하면 안되고 시간축을 유지한다.

과거부터 데이터부터 train,validation,test 순으로 비율을 나눈다

 

* 주의할점

test set을 비시계열 데이터처럼 한번에 선정 할 경우 train set에서 멀어질 수록 정확도가 떨어질 수 있다.

따라서 train set과 가까운 데이터부터 예측하고, 예측한데이터를 다시 train셋에 추가시켜서 그 다음 데이터를 예측하는 식으로 점진적으로 test set을 구성한다.


(2) 코드

<example>

raw_fe

index가 DateTime인 dataframe

 

raw_train = raw_fe.loc[raw_fe.index < '2012-07-01',:]
raw_test = raw_fe.loc[raw_fe.index >= '2012-07-01',:]
print(raw_train.shape, raw_test.shape)
(13128, 29) (4416, 29)

 

반응형