Hoe u een samenvatting van het regressiemodel kunt krijgen van scikit-learn
Vaak wil je misschien een samenvatting extraheren van een regressiemodel dat is gemaakt met scikit-learn in Python.
Helaas biedt scikit-learn niet veel ingebouwde functies voor het analyseren van de samenvatting van een regressiemodel, omdat het doorgaans alleen voor voorspellende doeleinden wordt gebruikt.
Als je dus een samenvatting wilt krijgen van een regressiemodel in Python, heb je twee opties:
1. Gebruik de beperkte functies van scikit-learn.
2. Gebruik in plaats daarvan statistische modellen .
De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken met de volgende panda’s 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
Methode 1: Krijg een samenvatting van het regressiemodel van Scikit-Learn
We kunnen de volgende code gebruiken om een meervoudig lineair regressiemodel aan te passen met behulp van 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)
We kunnen dan de volgende code gebruiken om de regressiecoëfficiënten uit het model te extraheren, evenals de R-kwadraatwaarde van het model:
#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
Met behulp van deze uitvoer kunnen we de vergelijking voor het aangepaste regressiemodel schrijven:
y = 70,48 + 5,79x 1 – 1,16x 2
Ook is te zien dat de R2- waarde van het model 76,67 is.
Dit betekent dat 76,67% van de variatie in de responsvariabele kan worden verklaard door de twee voorspellende variabelen in het model.
Hoewel dit resultaat nuttig is, kennen we nog steeds niet de algemene F-statistiek van het model, de p-waarden van de individuele regressiecoëfficiënten en andere nuttige maatstaven die ons kunnen helpen begrijpen hoe goed het model bij het model past. dataset.dataset.
Methode 2: Haal een samenvatting van het regressiemodel op uit Statsmodels
Als je een samenvatting van een regressiemodel in Python wilt extraheren, kun je het beste het pakket statsmodels gebruiken.
De volgende code laat zien hoe u dit pakket kunt gebruiken om hetzelfde meervoudige lineaire regressiemodel als het vorige voorbeeld in te passen en de modelsamenvatting te extraheren:
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
==================================================== ============================
Merk op dat de regressiecoëfficiënten en de R-kwadraatwaarde overeenkomen met die berekend door scikit-learn, maar we hebben ook een heleboel andere nuttige statistieken voor het regressiemodel.
We kunnen bijvoorbeeld de p-waarden zien voor elke individuele voorspellende variabele:
- p-waarde voor x 1 = 0,001
- p-waarde voor x 2 = 0,309
We kunnen ook de algemene F-statistiek van het model, de aangepaste R-kwadraatwaarde , de AIC-waarde van het model en nog veel meer zien.
Aanvullende bronnen
In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in Python uitvoert:
Hoe eenvoudige lineaire regressie uit te voeren in Python
Hoe u meerdere lineaire regressies uitvoert in Python
Hoe AIC van regressiemodellen in Python te berekenen