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를 계산하는 방법