Come ottenere un riepilogo del modello di regressione da scikit-learn


Spesso potresti voler estrarre un riepilogo di un modello di regressione creato utilizzando scikit-learn in Python.

Sfortunatamente, scikit-learn non offre molte funzioni integrate per analizzare il riepilogo di un modello di regressione, poiché generalmente viene utilizzato solo per scopi predittivi .

Quindi, se vuoi ottenere un riepilogo di un modello di regressione in Python, hai due opzioni:

1. Utilizza le funzioni limitate di scikit-learn.

2. Utilizzare invece modelli statistici .

I seguenti esempi mostrano come utilizzare ciascun metodo nella pratica con i seguenti DataFrame panda:

 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

Metodo 1: ottenere il riepilogo del modello di regressione da Scikit-Learn

Possiamo utilizzare il seguente codice per adattare un modello di regressione lineare multipla utilizzando 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)

Possiamo quindi utilizzare il codice seguente per estrarre i coefficienti di regressione dal modello nonché il valore R quadrato del modello:

 #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

Utilizzando questo output, possiamo scrivere l’equazione per il modello di regressione adattata:

y = 70,48 + 5,79x 1 – 1,16x 2

Si può anche vedere che il valore R2 del modello è 76,67.

Ciò significa che il 76,67% della variazione nella variabile di risposta può essere spiegato dalle due variabili predittive del modello.

Sebbene questo risultato sia utile, non conosciamo ancora la statistica F complessiva del modello, i valori p dei singoli coefficienti di regressione e altre misure utili che possono aiutarci a capire quanto bene il modello si adatta al modello. set di dati.set di dati.

Metodo 2: ottenere il riepilogo del modello di regressione da Statsmodels

Se vuoi estrarre un riepilogo di un modello di regressione in Python, è meglio usare il pacchetto statsmodels .

Il codice seguente mostra come utilizzare questo pacchetto per adattare lo stesso modello di regressione lineare multipla dell’esempio precedente ed estrarre il riepilogo del modello:

 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
==================================================== ============================

Tieni presente che i coefficienti di regressione e il valore R quadrato corrispondono a quelli calcolati da scikit-learn, ma abbiamo anche moltissimi altri parametri utili per il modello di regressione.

Ad esempio, possiamo vedere i valori p per ogni singola variabile predittrice:

  • valore p per x 1 = 0,001
  • valore p per x 2 = 0,309

Possiamo anche vedere la statistica F complessiva del modello, il valore R quadrato corretto , il valore AIC del modello e molto altro.

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in Python:

Come eseguire una semplice regressione lineare in Python
Come eseguire regressioni lineari multiple in Python
Come calcolare l’AIC dei modelli di regressione in Python

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *