Comment obtenir un résumé du modèle de régression à partir de Scikit-Learn



Souvent, vous souhaiterez peut-être extraire un résumé d’un modèle de régression créé à l’aide de scikit-learn en Python.

Malheureusement, scikit-learn n’offre pas de nombreuses fonctions intégrées pour analyser le résumé d’un modèle de régression, car il n’est généralement utilisé qu’à des fins prédictives .

Ainsi, si vous souhaitez obtenir un résumé d’un modèle de régression en Python, vous avez deux options :

1. Utilisez les fonctions limitées de scikit-learn.

2. Utilisez plutôt des modèles de statistiques .

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le DataFrame pandas suivant :

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

Méthode 1 : obtenir le résumé du modèle de régression à partir de Scikit-Learn

Nous pouvons utiliser le code suivant pour ajuster un modèle de régression linéaire multiple à l’aide de 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)

Nous pouvons ensuite utiliser le code suivant pour extraire les coefficients de régression du modèle ainsi que la valeur R au carré du modèle :

#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

En utilisant cette sortie, nous pouvons écrire l’équation du modèle de régression ajusté :

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

On peut également voir que la valeur R 2 du modèle est de 76,67.

Cela signifie que 76,67 % de la variation de la variable de réponse peut être expliquée par les deux variables prédictives du modèle.

Bien que ce résultat soit utile, nous ne connaissons toujours pas la statistique F globale du modèle, les valeurs p des coefficients de régression individuels et d’autres mesures utiles qui peuvent nous aider à comprendre dans quelle mesure le modèle s’adapte à l’ensemble de données.

Méthode 2 : obtenir le résumé du modèle de régression à partir de Statsmodels

Si vous souhaitez extraire un résumé d’un modèle de régression en Python, il est préférable d’utiliser le package statsmodels .

Le code suivant montre comment utiliser ce package pour ajuster le même modèle de régression linéaire multiple que l’exemple précédent et extraire le résumé du modèle :

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

Notez que les coefficients de régression et la valeur R au carré correspondent à ceux calculés par scikit-learn, mais nous disposons également d’une tonne d’autres mesures utiles pour le modèle de régression.

Par exemple, nous pouvons voir les valeurs p pour chaque variable prédictive individuelle :

  • valeur p pour x 1 = 0,001
  • valeur p pour x 2 = 0,309

Nous pouvons également voir la statistique F globale du modèle, la valeur R au carré ajustée , la valeur AIC du modèle et bien plus encore.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes en Python :

Comment effectuer une régression linéaire simple en Python
Comment effectuer une régression linéaire multiple en Python
Comment calculer l’AIC des modèles de régression en Python

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *