Predicții și cote

Introducere în regresia cu statsmodels în Python

Maarten Van den Broeck

Content Developer at DataCamp

Predicțiile regplot()

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

plt.show()

Diagramă de dispersie a abandonului în funcție de timpul de la ultima achiziție, cu o linie de tendință logistică.

Introducere în regresia cu statsmodels în Python

Realizarea predicțiilor

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))
Introducere în regresia cu statsmodels în Python

Adăugarea predicțiilor punctuale

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

Diagrama de dispersie a abandonului în funcție de timpul de la ultima achiziție, cu o linie de tendință logistică. Graficul este adnotat cu rezultatele din predict(), care urmează exact linia de tendință.

Introducere în regresia cu statsmodels în Python

Obținerea celui mai probabil rezultat

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

prediction_data["most_likely_outcome"] = np.round(prediction_data["has_churned"])
Introducere în regresia cu statsmodels în Python

Vizualizarea celui mai probabil rezultat

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

Diagrama de dispersie a abandonului în funcție de timpul de la ultima achiziție, cu o linie de tendință logistică. Graficul este adnotat cu cele mai probabile rezultate. Pentru valori mici ale timpului, cel mai probabil rezultat este că utilizatorul nu abandonează. Pentru valori mari, cel mai probabil rezultat este abandonul.

Introducere în regresia cu statsmodels în Python

Cote

Cota reprezintă probabilitatea ca un eveniment să aibă loc, împărțită la probabilitatea că nu are loc.

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

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

Grafic liniar al cotei în funcție de probabilitate. Curba crește asimptotic spre infinit pe măsură ce probabilitatea tinde spre unu.

Introducere în regresia cu statsmodels în Python

Calcularea cotelor

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

Introducere în regresia cu statsmodels în Python

Vizualizarea cotelor

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


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

Grafic liniar al cotei în funcție de timpul de la ultima achiziție, cu o linie la cota egală cu unu. Pentru valori mici ale timpului, cel mai probabil rezultat este că utilizatorul nu abandonează. Cota de abandon crește odată cu timpul, ajungând de cinci ori cota de neabandon.

Introducere în regresia cu statsmodels în Python

Vizualizarea cotelor logaritmice

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

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

plt.show()

Graficul liniar al cotei în funcție de timpul de la ultima achiziție, cu o linie la cota egală cu unu. Axa y folosește o scară logaritmică, ceea ce face ca linia cotelor să devină liniară.

Introducere în regresia cu statsmodels în Python

Calcularea cotelor logaritmice

prediction_data["log_odds"] = np.log(prediction_data["odds"])
Introducere în regresia cu statsmodels în Python

Toate predicțiile împreună

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
... ... ... ... ...
Introducere în regresia cu statsmodels în Python

Compararea scărilor

Scară Valorile sunt ușor de interpretat? Modificările sunt ușor de interpretat? Este precisă?
Probabilitate
Cel mai prob. rezultat ✔✔
Cote
Cote logaritmice
Introducere în regresia cu statsmodels în Python

Să exersăm!

Introducere în regresia cu statsmodels în Python

Preparing Video For Download...