Prédictions et cotes

Introduction à la régression avec statsmodels en Python

Maarten Van den Broeck

Content Developer at DataCamp

Prédictions de regplot()

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

plt.show()

Nuage de points de churn selon le temps depuis le dernier achat, avec une courbe logistique.

Introduction à la régression avec statsmodels en Python

Faire des prédictions

mdl_recency = logit("has_churned ~ time_since_last_purchase",
                    data = churn).fit()


explanatory_data = pd.DataFrame( {"time_since_last_purchase": np.arange(-1, 6.25, 0.25)})
prediction_data = explanatory_data.assign( has_churned = mdl_recency.predict(explanatory_data))
Introduction à la régression avec statsmodels en Python

Ajouter des prédictions ponctuelles

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="has_churned",
                data=prediction_data,
                color="red")

plt.show()

Nuage de points de churn selon le temps depuis le dernier achat, avec une courbe logistique. Le graphique est annoté avec les résultats de predict(), qui suivent exactement la courbe.

Introduction à la régression avec statsmodels en Python

Obtenir l’issue la plus probable

prediction_data = explanatory_data.assign(
    has_churned = mdl_recency.predict(explanatory_data))

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Introduction à la régression avec statsmodels en Python

Visualiser l’issue la plus probable

sns.regplot(x="time_since_last_purchase",
            y="has_churned",
            data=churn,
            ci=None,
            logistic=True)

sns.scatterplot(x="time_since_last_purchase",
                y="most_likely_outcome",
                data=prediction_data,
                color="red")

plt.show()

Nuage de points de churn selon le temps depuis le dernier achat, avec une courbe logistique. Le graphique est annoté avec les issues les plus probables. Pour un temps faible, l’issue la plus probable est de ne pas résilier. Pour un temps élevé, c’est de résilier.

Introduction à la régression avec statsmodels en Python

Cotes

Les cotes sont la probabilité qu’un événement arrive divisée par celle qu’il n’arrive pas.

$$ \text{odds} = \frac{\text{probability}}{(1 - \text{probability)}} $$

$$ \text{odds} = \frac{0.25}{(1 - 0.25)} = \frac{1}{3} $$

Courbe des cotes selon la probabilité. La courbe croît asymptotiquement vers l’infini quand la probabilité tend vers 1.

Introduction à la régression avec statsmodels en Python

Calculer les cotes

prediction_data["odds"] = prediction_data["has_churned"] / 
                            (1 - prediction_data["has_churned"])

Introduction à la régression avec statsmodels en Python

Visualiser les cotes

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)


plt.axhline(y=1, linestyle="dotted")
plt.show()

Courbe des cotes selon le temps depuis le dernier achat, avec une ligne à cotes égales à 1. Pour un temps faible, l’issue la plus probable est de ne pas résilier. Les cotes de résiliation augmentent avec le temps, jusqu’à cinq fois celles de non‑résiliation.

Introduction à la régression avec statsmodels en Python

Visualiser les log‑cotes

sns.lineplot(x="time_since_last_purchase",
             y="odds",
             data=prediction_data)

plt.axhline(y=1,
            linestyle="dotted")
plt.yscale("log")

plt.show()

Courbe des cotes selon le temps depuis le dernier achat, avec une ligne à cotes égales à 1. L’axe des y est logarithmique, rendant la courbe des cotes linéaire.

Introduction à la régression avec statsmodels en Python

Calculer les log‑cotes

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Introduction à la régression avec statsmodels en Python

Toutes les prédictions ensemble

time_since_last_prchs has_churned most_likely_rspns odds log_odds
0 0.491 0 0.966 -0.035
2 0.623 1 1.654 0.503
4 0.739 1 2.834 1.042
6 0.829 1 4.856 1.580
... ... ... ... ...
Introduction à la régression avec statsmodels en Python

Comparer les échelles

Échelle Valeurs faciles à interpréter ? Variations faciles à interpréter ? Précise ?
Probabilité
Issue la plus probable ✔✔
Cotes
Log‑cotes
Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...