Scikit-learn에서 회귀 모델 요약을 얻는 방법


Python에서 scikit-learn을 사용하여 생성된 회귀 모델의 요약을 추출하려는 경우가 종종 있습니다.

불행하게도 scikit-learn은 일반적으로 예측 목적 으로만 사용되므로 회귀 모델의 요약을 분석하기 위한 내장 기능을 많이 제공하지 않습니다.

따라서 Python에서 회귀 모델 요약을 얻으려면 다음 두 가지 옵션이 있습니다.

1. scikit-learn의 제한된 기능을 사용하세요.

2. 대신 통계 모델을 사용하십시오.

다음 예에서는 다음 pandas DataFrame에서 실제로 각 메서드를 사용하는 방법을 보여줍니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' x1 ': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4],
                   ' x2 ': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4],
                   ' y ': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90]})

#view first five rows of DataFrame
df. head ()

       x1 x2 y
0 1 1 76
1 2 3 78
2 2 3 85
3 4 5 88
4 2 2 72

방법 1: Scikit-Learn에서 회귀 모델 요약 가져오기

scikit-learn을 사용하여 다중 선형 회귀 모델을 맞추려면 다음 코드를 사용할 수 있습니다.

 from sklearn. linear_model import LinearRegression

#initiate linear regression model
model = LinearRegression()

#define predictor and response variables
x, y = df[[' x1 ', ' x2 ']], df. y

#fit regression model
model. fit (x,y)

그런 다음 다음 코드를 사용하여 모델의 회귀 계수와 모델의 R 제곱 값을 추출할 수 있습니다.

 #display regression coefficients and R-squared value of model
print (model. intercept_ , model. coef_ , model. score (X, y))

70.4828205704 [5.7945 -1.1576] 0.766742556527

이 출력을 사용하여 적합 회귀 모델에 대한 방정식을 작성할 수 있습니다.

y = 70.48 + 5.79x 1 – 1.16x 2

또한 모델의 R 2 값이 76.67임을 알 수 있다.

이는 반응 변수의 변동 중 76.67%가 모델의 두 예측 변수에 의해 설명될 수 있음을 의미합니다.

이 결과는 유용하지만 모델의 전체 F 통계 , 개별 회귀 계수 의 p-값 및 모델이 모델에 얼마나 잘 맞는지 이해하는 데 도움이 될 수 있는 기타 유용한 측정값을 아직 알지 못합니다. 데이터세트.데이터세트.

방법 2: Statsmodels에서 회귀 모델 요약 가져오기

Python에서 회귀 모델의 요약을 추출하려면 statsmodels 패키지를 사용하는 것이 가장 좋습니다.

다음 코드는 이 패키지를 사용하여 이전 예제와 동일한 다중 선형 회귀 모델을 맞추고 모델 요약을 추출하는 방법을 보여줍니다.

 import statsmodels. api as sm

#define response variable
y = df[' y ']

#define predictor variables
x = df[[' x1 ', ' x2 ']]

#add constant to predictor variables
x = sm. add_constant (x)

#fit linear regression model
model = sm. OLS (y,x). fit ()

#view model summary
print ( model.summary ())

                            OLS Regression Results                            
==================================================== ============================
Dept. Variable: y R-squared: 0.767
Model: OLS Adj. R-squared: 0.708
Method: Least Squares F-statistic: 13.15
Date: Fri, 01 Apr 2022 Prob (F-statistic): 0.00296
Time: 11:10:16 Log-Likelihood: -31.191
No. Comments: 11 AIC: 68.38
Df Residuals: 8 BIC: 69.57
Df Model: 2                                         
Covariance Type: non-robust                                         
==================================================== ============================
                 coef std err t P>|t| [0.025 0.975]
-------------------------------------------------- ----------------------------
const 70.4828 3.749 18.803 0.000 61.839 79.127
x1 5.7945 1.132 5.120 0.001 3.185 8.404
x2 -1.1576 1.065 -1.087 0.309 -3.613 1.298
==================================================== ============================
Omnibus: 0.198 Durbin-Watson: 1.240
Prob(Omnibus): 0.906 Jarque-Bera (JB): 0.296
Skew: -0.242 Prob(JB): 0.862
Kurtosis: 2.359 Cond. No. 10.7
==================================================== ============================

회귀 계수와 R-제곱 값은 scikit-learn에서 계산한 값과 일치하지만 회귀 모델에 대한 다른 유용한 측정항목도 많이 있습니다.

예를 들어, 각 개별 예측 변수에 대한 p-값을 볼 수 있습니다.

  • x 1 에 대한 p-값 = 0.001
  • x 2 에 대한 p-값 = 0.309

또한 모델의 전체 F-통계량, 수정된 R-제곱 값, 모델 AIC 값 등을 볼 수 있습니다.

추가 리소스

다음 튜토리얼에서는 Python에서 다른 일반적인 작업을 수행하는 방법을 설명합니다.

Python에서 단순 선형 회귀를 수행하는 방법
Python에서 다중 선형 회귀를 수행하는 방법
Python에서 회귀 모델의 AIC를 계산하는 방법

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다