Personnaliser les préférences

Nous utilisons des cookies pour vous aider à naviguer efficacement et à exécuter certaines fonctions. Vous trouverez ci-dessous des informations détaillées sur tous les cookies sous chaque catégorie de consentement.

Les cookies classés comme « Nécessaires » sont stockés sur votre navigateur car ils sont essentiels pour activer les fonctionnalités de base du site.... 

Toujours actif

Necessary cookies are required to enable the basic features of this site, such as providing secure log-in or adjusting your consent preferences. These cookies do not store any personally identifiable data.

Aucun cookie à afficher.

Functional cookies help perform certain functionalities like sharing the content of the website on social media platforms, collecting feedback, and other third-party features.

Aucun cookie à afficher.

Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics such as the number of visitors, bounce rate, traffic source, etc.

Aucun cookie à afficher.

Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.

Aucun cookie à afficher.

Advertisement cookies are used to provide visitors with customized advertisements based on the pages you visited previously and to analyze the effectiveness of the ad campaigns.

Aucun cookie à afficher.

Comment faire des prédictions à l’aide d’un modèle de régression dans Statsmodels



Vous pouvez utiliser la syntaxe de base suivante pour utiliser un ajustement de modèle de régression à l’aide du module statsmodels en Python afin de faire des prédictions sur de nouvelles observations :

model.predict(df_new)

Cette syntaxe particulière calculera les valeurs de réponse prédites pour chaque ligne d’un nouveau DataFrame appelé df_new , en utilisant un modèle de régression adapté aux modèles de statistiques appelé model .

L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.

Exemple : faire des prédictions à l’aide d’un modèle de régression dans Statsmodels

Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur les heures étudiées, les examens préparatoires passés et la note finale reçue par les étudiants d’une certaine classe :

import pandas as pd

#create DataFrame
df = pd.DataFrame({'hours': [1, 2, 2, 4, 2, 1, 5, 4, 2, 4, 4, 3, 6],
                   'exams': [1, 3, 3, 5, 2, 2, 1, 1, 0, 3, 4, 3, 2],
                   'score': [76, 78, 85, 88, 72, 69, 94, 94, 88, 92, 90, 75, 96]})

#view head of DataFrame
df.head()

	hours	exams	score
0	1	1	76
1	2	3	78
2	2	3	85
3	4	5	88
4	2	2	72

Nous pouvons utiliser la fonction OLS() du module statsmodels pour ajuster un modèle de régression linéaire multiple , en utilisant « heures » et « examens » comme variables prédictives et « score » comme variable de réponse :

import statsmodels.api as sm

#define predictor and response variables
y = df['score']
x = df[['hours', 'exams']]

#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:                  score   R-squared:                       0.718
Model:                            OLS   Adj. R-squared:                  0.661
Method:                 Least Squares   F-statistic:                     12.70
Date:                Fri, 05 Aug 2022   Prob (F-statistic):            0.00180
Time:                        09:24:38   Log-Likelihood:                -38.618
No. Observations:                  13   AIC:                             83.24
Df Residuals:                      10   BIC:                             84.93
Df Model:                           2                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const         71.4048      4.001     17.847      0.000      62.490      80.319
hours          5.1275      1.018      5.038      0.001       2.860       7.395
exams         -1.2121      1.147     -1.057      0.315      -3.768       1.344
==============================================================================
Omnibus:                        1.103   Durbin-Watson:                   1.248
Prob(Omnibus):                  0.576   Jarque-Bera (JB):                0.803
Skew:                          -0.289   Prob(JB):                        0.669
Kurtosis:                       1.928   Cond. No.                         11.7
==============================================================================

À partir de la colonne coef dans la sortie, nous pouvons écrire le modèle de régression ajusté :

Score = 71,4048 + 5,1275 (heures) – 1,2121 (examens)

Supposons maintenant que nous souhaitions utiliser le modèle de régression ajusté pour prédire le « score » de cinq nouveaux étudiants.

Tout d’abord, créons un DataFrame pour contenir les cinq nouvelles observations :

#create new DataFrame
df_new = pd.DataFrame({'hours': [1, 2, 2, 4, 5],
                       'exams': [1, 1, 4, 3, 3]})

#add column for constant
df_new = sm.add_constant(df_new)

#view new DataFrame
print(df_new)

   const  hours  exams
0    1.0      1      1
1    1.0      2      1
2    1.0      2      4
3    1.0      4      3
4    1.0      5      3

Ensuite, nous pouvons utiliser la fonction prédire() pour prédire le « score » de chacun de ces étudiants, en utilisant « heures » et « examens » comme valeurs pour les variables prédictives dans notre modèle de régression ajusté :

#predict scores for the five new students
model.predict(df_new)

0    75.320242
1    80.447734
2    76.811480
3    88.278550
4    93.406042
dtype: float64

Voici comment interpréter le résultat :

  • Le premier étudiant du nouveau DataFrame devrait obtenir un score de 75,32 .
  • Le deuxième étudiant du nouveau DataFrame devrait obtenir un score de 80,45 .

Et ainsi de suite.

Pour comprendre comment ces prédictions ont été calculées, nous devons nous référer au modèle de régression ajusté précédent :

Score = 71,4048 + 5,1275 (heures) – 1,2121 (examens)

En insérant les valeurs des « heures » et des « examens » pour les nouveaux étudiants, nous pouvons calculer leur score prévu.

Par exemple, le premier étudiant du nouveau DataFrame avait une valeur de 1 pour les heures et une valeur de 1 pour les examens.

Ainsi, leur score prédit a été calculé comme suit :

Score = 71,4048 + 5,1275(1) – 1,2121(1) = 75,32 .

Le score de chaque étudiant dans le nouveau DataFrame a été calculé de la même manière.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes en Python :

Comment effectuer une régression logistique en Python
Comment calculer l’AIC des modèles de régression en Python
Comment calculer le R-carré ajusté en Python

Ajouter un commentaire

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