Faire des prédictions

Introduction à la régression avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Jeu de données sur les poissons : brèmes

bream = fish[fish["species"] == "Bream"]
print(bream.head())
  species  mass_g  length_cm
0   Bream   242.0       23.2
1   Bream   290.0       24.0
2   Bream   340.0       23.9
3   Bream   363.0       26.3
4   Bream   430.0       26.5

Brème commune, _Abramis brama_

Introduction à la régression avec statsmodels en Python

Tracer masse vs longueur

sns.regplot(x="length_cm",
            y="mass_g",
            data=bream,
            ci=None)

plt.show()

Nuage de points des masses de brèmes selon leur longueur, avec une droite de tendance linéaire. Les points sont proches de la droite.

Introduction à la régression avec statsmodels en Python

Exécuter le modèle

mdl_mass_vs_length = ols("mass_g ~ length_cm", data=bream).fit()

print(mdl_mass_vs_length.params)
Intercept   -1035.347565
length_cm      54.549981
dtype: float64
Introduction à la régression avec statsmodels en Python

Données explicatives pour prédire

Si je fixe les variables explicatives à ces valeurs,
quelle valeur prendra la variable réponse ?

explanatory_data = pd.DataFrame({"length_cm": np.arange(20, 41)})
    length_cm
0          20
1          21
2          22
3          23
4          24
5          25
     ...
Introduction à la régression avec statsmodels en Python

Appeler predict()

print(mdl_mass_vs_length.predict(explanatory_data))
0       55.652054
1      110.202035
2      164.752015
3      219.301996
4      273.851977
    ...
16     928.451749
17     983.001730
18    1037.551710
19    1092.101691
20    1146.651672
Length: 21, dtype: float64
Introduction à la régression avec statsmodels en Python

Prédire dans un DataFrame

explanatory_data = pd.DataFrame(
  {"length_cm": np.arange(20, 41)}
)

prediction_data = explanatory_data.assign( mass_g=mdl_mass_vs_length.predict(explanatory_data) )
print(prediction_data)
    length_cm         mass_g
0          20      55.652054
1          21     110.202035
2          22     164.752015
3          23     219.301996
4          24     273.851977
..        ...            ...
16         36     928.451749
17         37     983.001730
18         38    1037.551710
19         39    1092.101691
20         40    1146.651672
Introduction à la régression avec statsmodels en Python

Afficher les prédictions

import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.figure()
sns.regplot(x="length_cm",
            y="mass_g",
            ci=None,
            data=bream,)
sns.scatterplot(x="length_cm",
                y="mass_g",
                data=prediction_data, 
                color="red",
                marker="s")
plt.show()

Nuage de points des masses de brèmes selon leur longueur, avec une droite de tendance linéaire. Le graphique est annoté avec les points calculés via predict(). Ces points suivent exactement la droite.

Introduction à la régression avec statsmodels en Python

Extrapoler

L’extrapolation consiste à prédire en dehors de l’intervalle des données observées.

little_bream = pd.DataFrame({"length_cm": [10]})

pred_little_bream = little_bream.assign(
    mass_g=mdl_mass_vs_length.predict(little_bream))

print(pred_little_bream)
   length_cm      mass_g
0         10 -489.847756

Nuage de points des masses de brèmes selon leur longueur, avec une droite de tendance linéaire. Le graphique est annoté avec une brème fictive de 10 cm et sa masse prédite.

Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...