Fare previsioni

Introduzione alla regressione con statsmodels in Python

Maarten Van den Broeck

Content Developer at DataCamp

Il dataset dei pesci: breme

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

Breme comune, _Abramis brama_

Introduzione alla regressione con statsmodels in Python

Grafico massa vs lunghezza

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

plt.show()

Uno scatter plot delle masse delle breme rispetto alla lunghezza, con una retta di tendenza. I punti sono tutti vicini alla retta.

Introduzione alla regressione con statsmodels in Python

Eseguire il modello

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
Introduzione alla regressione con statsmodels in Python

Dati dei valori esplicativi da prevedere

Se imposto le variabili esplicative a questi valori,
quale valore avrà la variabile risposta?

explanatory_data = pd.DataFrame({"length_cm": np.arange(20, 41)})
    length_cm
0          20
1          21
2          22
3          23
4          24
5          25
     ...
Introduzione alla regressione con statsmodels in Python

Chiama 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
Introduzione alla regressione con statsmodels in Python

Prevedere dentro 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
Introduzione alla regressione con statsmodels in Python

Mostrare le previsioni

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

Lo scatter plot delle masse delle breme rispetto alla lunghezza, con una retta di tendenza. Il grafico è annotato con i punti calcolati con predict(), che cadono esattamente sulla retta.

Introduzione alla regressione con statsmodels in Python

Extrapolation

Per extrapolation si intende fare previsioni fuori dall’intervallo dei dati osservati.

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

Lo scatter plot delle masse delle breme rispetto alla lunghezza, con una retta di tendenza. Il grafico è annotato con una bream fittizia di 10 cm e la sua massa prevista.

Introduzione alla regressione con statsmodels in Python

Let's practice!

Introduzione alla regressione con statsmodels in Python

Preparing Video For Download...