훈련/테스트 데이터 분리 

 

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)

일반적인 데이터에서 훈련 데이터와 테스트 데이터를 분리하는 경우와는 달리 시간의 순서에 따라서, 훈련 데이터와 테스트 데이터를 나누어야 한다. 

 

Y_colname = ['count']
X_remove = ['datetime','DateTime','temp_group','casual','registered', 'Quarter ']
X_colname = [x for x in raw_fe.columns if x  not in Y_colname + X_remove]

Y_train = raw_train[Y_colname]
X_train = raw_train[X_colname]
Y_test = raw_test[Y_colname]
X_test =raw_test[X_colname]

print(X_train.shape, Y_train.shape)
print(X_test.shape, Y_test.shape)

독립 변수 X와 종속 변수 Y에 대한 column들의 이름을 분리한 후에, X_train, X_test, Y_train, Y_test로 분리한다. 
(13128, 28) (13128, 1) (4416, 28) (4416, 1) 의 형태로 되어있는 것을 확인할 수 있다. 

 

이 과정을 함수화한 코드

### Data split of time series
def datasplit_ts(raw, Y_colname, X_colname, criteria):
    raw_train = raw.loc[raw.index < criteria,:]
    raw_test = raw.loc[raw.index >= criteria,:]
    Y_train = raw_train[Y_colname]
    X_train = raw_train[X_colname]
    Y_test = raw_test[Y_colname]
    X_test = raw_test[X_colname]
    print('Train_size:', raw_train.shape, 'Test_size:', raw_test.shape)
    print('X_train:', X_train.shape, 'Y_train:', Y_train.shape)
    print('X_test:', X_test.shape, 'Y_test:', Y_test.shape)
    return X_train, X_test, Y_train, Y_test
# X_train, X_test, Y_train, Y_test = datasplit_ts(raw_fe, Y_colname, X_colname, '2012-07-01')

 

데이터 분석 성능 평가

 

지금까지 전처리한 데이터를 가지고 간단한 회귀분석인 OLS(Ordinary Least Square)을 사용해서 데이터 분석을 진행한 후, 예측에 대한 성능 평가를 해보자. 

fit_reg1 = sm.OLS(Y_train, X_train).fit()
fit_reg1.summary()

(sm은 statsmodels.api를 의미하는 것으로 시계열 데이터 분석 - 1의 가장 첫번째에 필요한 함수 모듈을 import하는 부분에 코드로 적혀있다.)

추가로, OLS는 가장 기본적인 결정론적 회귀 방법으로, 잔차 제곱합을 최소화하는 가중치 벡터를 행렬 미분으로 구하는 방법이다. 

두번째 줄의 summary를 통해서, 예측할 때에, 여러 데이터 성능을 한번에 확인할 수 있다. 

가장 위의 표에서는 예측 성능을 검증 지표를 통해서 성능이 어떻게 나왔는지를 보여주고,

각 특성들의 이름으로 구성된 두번째 표에서는 각 column의 p-value를 측정하여, 유의수준(0.05)보다 낮으면, 해당 column이 예측을 하는데에 실질적인 영향을 끼치는 열이라는 것을 보여준다. 

마지막 표에서는 잔차들의 특성들에 대한 수치를 나타내어, 왜도, 첨도, 정상성 여부 등을 확인할 때 사용한다.

 

Reference : 
패스트 캠퍼스 파이썬을 활용한 시계열 분석 A-Z 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기