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