statsmodels는 통계적 모델링을 위한 강력한 기능을 제공하며 여러 가지 통계 결과를 알려준다. 이번 포스팅에서는 statsmodels를 이용하여 선형 회귀 모형을 적합하는 과정을 알아본다.
- 목차 -
2. 선형 회귀 모형(Linear Regression) 적합하기
선형 회귀 모형에 대한 개념은 아래 포스팅을 참고하기 바란다.
16. 선형 회귀(Linear Regression) 모형에 대해서 알아보자 with Python
16. 선형 회귀(Linear Regression) 모형에 대해서 알아보자 with Python
머신러닝 관련 포스팅을 하면서 아주 기본적이지만 이론적으로 강력한 선형 회귀 관련 내용을 포스팅하지 않았다는 것에 매우 놀랐다. 이번 포스팅에서는 선형 회귀 모형에 대해서 알아보고 파
zephyrus1111.tistory.com
1. 데이터 준비
이번 포스팅에서 사용할 모듈을 임포트하고 데이터를 불러온다. 회귀 문제에 특화된 보스턴 집값 데이터를 사용한다. 설명 변수 행렬 X와 반응 변수 벡터 y를 만들어 준다.
이때 절편항이 포함된 선형 회귀 모형을 적합하기 위해 sm.add_constant를 이용하여 1로 이루어진 칼럼을 추가한다. 절편항을 빼고 싶다면 이 과정을 생략한다.
import pandas as pd import statsmodels.api as sm import warnings warnings.filterwarnings('ignore') from sklearn.datasets import load_boston boston = load_boston() df = pd.DataFrame(boston.data, columns=boston.feature_names) df['MEDV'] = boston.target X = df[['RM', 'LSTAT']] X = sm.add_constant(X) ## 1로 이루어진 칼럼 추가 -> 절편항 추정 y = df['MEDV'].values
2. 선형 회귀 모형(Linear Regression) 적합하기
(1) 모형 적합
모형 적합은 OLS를 클래스 인스턴스를 생성한다. Scikit-Learn과 다르게 OLS에는 y, X 순으로 넣어줘야한다. 다음으로 fit을 적용하면 선형 회귀 모형이 적합된다.
# 모형 적합 lr = sm.OLS(y, X) results = lr.fit()
(2) 결과 확인
summary를 이용하여 모형 적합 결과를 한눈에 볼 수 있다.
# 결과 요약 results.summary()

또한 statsmodels는 정말 많은 통계치를 확인할 수 있다. 아래 코드는 그중에서 자주 사용되는 통계치들이다.
print(results.params) # 회귀 계수 print(results.rsquared) # 결정 계수 print(results.rsquared_adj) # 수정된 결정 계수 print(results.pvalues) # 회귀 계수 검정 p value print(results.tvalues) # 회귀 계수 검정 t 통계량 print(results.conf_int()) # 95% 회귀 계수 추정치 신뢰구간 print(results.mse_resid) ## MSE print(results.fittedvalues) ## 적합값 y_hat in-sample prediction (= results.predict(X)) print(results.resid) ## 잔차 y-y_hat
(3) 예측
predict를 사용하면 적합된(학습된) 모형을 이용하여 예측을 할 수 있다.
## out of sample prediction X_new = np.array([[1, 6.5, 9]]) results.predict(X_new)

statsmodels는 선형 회귀 모형 뿐만 아니라 일반화 선형 모형도 제공하는데 이에 대해서도 공부해가면서 포스팅하려고 한다.

'프로그래밍 > statsmodels' 카테고리의 다른 글
[statsmodels] 2. 분산분석(ANOVA) - 일원분산분석(One Way ANOVA), 이원분산분석(Two Way ANOVA) (0) | 2022.12.07 |
---|
댓글