Як отримати зведення моделі регресії від scikit-learn


Часто вам може знадобитися витягнути підсумок регресійної моделі, створеної за допомогою scikit-learn у Python.

На жаль, 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-значення для кожної окремої змінної предиктора:

  • p-значення для x 1 = 0,001
  • p-значення для x 2 = 0,309

Ми також можемо побачити загальну F-статистику моделі, скориговане значення R-квадрат , значення AIC моделі та багато іншого.

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові операції в Python:

Як виконати просту лінійну регресію в Python
Як виконати множинну лінійну регресію в Python
Як розрахувати AIC регресійних моделей у Python

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *