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 l'attrition selon le temps depuis le dernier achat, avec une courbe logistique.

Introduction à la régression avec statsmodels en Python

Produire 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 l'attrition 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 l'attrition selon le temps depuis le dernier achat, avec une courbe logistique. Le graphique est annoté avec les issues les plus probables. Pour un faible temps depuis le dernier achat, l'issue la plus probable est l'absence d'attrition. Pour un temps élevé, l'issue la plus probable est l'attrition.

Introduction à la régression avec statsmodels en Python

Cotes

Les cotes correspondent à la probabilité qu'un événement se produise divisée par la probabilité qu'il ne se produise pas.

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

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

Graphique linéaire des cotes selon la probabilité. La courbe croît asymptotiquement vers l'infini quand la probabilité tend vers un.

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()

Graphique linéaire des cotes selon le temps depuis le dernier achat, avec une ligne à cotes égales à un. Pour un faible temps, l'issue la plus probable est l'absence d'attrition. Les cotes d'attrition augmentent avec le temps depuis le dernier achat, jusqu'à cinq fois celles de l'absence d'attrition.

Introduction à la régression avec statsmodels en Python

Visualiser le logarithme des cotes

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

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

plt.show()

Graphique linéaire des cotes selon le temps depuis le dernier achat, avec une ligne à cotes égales à un. L'axe des y est logarithmique, ce qui rend la courbe des cotes linéaire.

Introduction à la régression avec statsmodels en Python

Calculer le logarithme des 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écis ?
Probabilité
Issue la plus probable ✔✔
Cotes
Logarithme des cotes
Introduction à la régression avec statsmodels en Python

Passons à la pratique !

Introduction à la régression avec statsmodels en Python

Preparing Video For Download...