본문 바로가기
프로그래밍/statsmodels

[statsmodels] 1. 선형 회귀 모형(Linear Regression) 적합하기

by 부자 꽁냥이 2022. 5. 7.

 

statsmodels는 통계적 모델링을 위한 강력한 기능을 제공하며 여러 가지 통계 결과를 알려준다. 이번 포스팅에서는 statsmodels를 이용하여 선형 회귀 모형을 적합하는 과정을 알아본다.

 

- 목차 -

1. 데이터 준비

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 OLS 선형 회귀 모형 적합 결과

또한 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 OLS 선형 회귀 모형 예측 결과


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


댓글


맨 위로