Как получить сводку модели регрессии от Scikit-Learn


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

К сожалению, scikit-learn не предлагает много встроенных функций для анализа сводки регрессионной модели, поскольку обычно используется только в целях прогнозирования .

Итак, если вы хотите получить сводную информацию о регрессионной модели в Python, у вас есть два варианта:

1. Используйте ограниченные функции scikit-learn.

2. Вместо этого используйте статистические модели .

В следующих примерах показано, как использовать каждый метод на практике со следующими пандами DataFrame:

import pandas as pd

#create DataFrame
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

Используя этот вывод, мы можем написать уравнение для подобранной модели регрессии:

у = 70,48 + 5,79 х 1 - 1,16 х 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 
==============================================================================
Dep. 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. Observations: 11 AIC: 68.38
Df Residuals: 8 BIC: 69.57
Df Model: 2 
Covariance Type: nonrobust 
==============================================================================
 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

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.