데이터분석/분석-지도학습

statsmodels.api를 이용한 시계열 회귀분석

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

sklearn의 statsmodels.api 함수를 이용하여 OLS방식으로 회귀분석을 수행한다.

<example>

- data

 

import statsmodels.api as sm

 

- 데이터 분할 함수 구현

# 시계열데이터 분할 함수
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

 

- 데이터분할

# Confirm of input and output
Y_colname = ['count'] #예측할 att
X_remove = ['datetime', 'DateTime', 'temp_group', 'casual', 'registered'] #제외할 att
X_colname = [x for x in raw_fe.columns if x not in Y_colname+X_remove]
X_train, X_test, Y_train, Y_test = datasplit_ts(raw_fe, Y_colname, X_colname, '2012-07-01') #위에서 구현한 분할함수를 이용하여 데이터 분할

 

- 회귀분석

# LinearRegression (using statsmodels)
fit_reg1 = sm.OLS(Y_train, X_train).fit() #회귀분석 계산
display(fit_reg1.summary()) #통계량 정리

 

- 예측값

pred_tr_reg1 = fit_reg1.predict(X_train).values
pred_te_reg1 = fit_reg1.predict(X_test).values
print(pred_te_reg1)
[148.97486386  92.98079744  89.97770842 ...  90.02087685  61.02007466
  49.01882264]
반응형