Часто вам может понадобиться извлечь сводку регрессионной модели, созданной с помощью 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