Scienza dei dati - Regressione lineare
Manca una variabile importante che influenza Calorie_Burage, che è la Durata della sessione di allenamento.
La durata in combinazione con Average_Pulse spiegherà insieme Calorie_Burage in modo più preciso.
Regressione lineare
Il termine regressione viene utilizzato quando si cerca di trovare la relazione tra le variabili.
In Machine Learning e nella modellazione statistica, tale relazione viene utilizzata per prevedere l'esito degli eventi.
In questo modulo tratteremo le seguenti domande:
- Possiamo concludere che Average_Pulse e Duration sono correlate a Calorie_Burage?
- Possiamo usare Average_Pulse e Duration per prevedere Calorie_Burnage?
Metodo dei minimi quadrati
La regressione lineare utilizza il metodo dei minimi quadrati.
Il concetto è tracciare una linea attraverso tutti i punti dati tracciati. La linea è posizionata in modo da ridurre al minimo la distanza da tutti i punti dati.
La distanza è chiamata "residui" o "errori".
Le linee tratteggiate rosse rappresentano la distanza dai punti dati alla funzione matematica disegnata.
Regressione lineare utilizzando una variabile esplicativa
In questo esempio, proveremo a prevedere Calorie_Burage con Average_Pulse usando la regressione lineare:
Esempio
import pandas as pd
import matplotlib.pyplot as plt
from scipy
import stats
full_health_data = pd.read_csv("data.csv", header=0, sep=",")
x = full_health_data["Average_Pulse"]
y = full_health_data ["Calorie_Burnage"]
slope, intercept, r, p, std_err = stats.linregress(x, y)
def myfunc(x):
return
slope * x + intercept
mymodel = list(map(myfunc, x))
plt.scatter(x, y)
plt.plot(x, slope * x + intercept)
plt.ylim(ymin=0, ymax=2000)
plt.xlim(xmin=0, xmax=200)
plt.xlabel("Average_Pulse")
plt.ylabel ("Calorie_Burnage")
plt.show()
Esempio spiegato:
- Importa i moduli di cui hai bisogno: Pandas, matplotlib e Scipy
- Isolare Average_Pulse come x. Isola Calorie_burnage come y
- Ottieni valori chiave importanti con: slope, intercept, r, p, std_err = stats.linregress(x, y)
- Creare una funzione che utilizzi i valori di pendenza e di intercettazione per restituire un nuovo valore. Questo nuovo valore rappresenta il punto in cui sull'asse y verrà posizionato il valore x corrispondente
- Esegui ogni valore dell'array x attraverso la funzione. Ciò risulterà in un nuovo array con nuovi valori per l'asse y: mymodel = list(map(myfunc, x))
- Disegna il grafico a dispersione originale: plt.scatter(x, y)
- Disegna la linea di regressione lineare: plt.plot(x, mymodel)
- Definire i valori massimo e minimo dell'asse
- Etichettare l'asse: "Average_Pulse" e "Calorie_ Burnage"
Produzione:
Pensi che la linea sia in grado di prevedere Calorie_Burage con precisione?
Mostreremo che la sola variabile Average_Pulse non è sufficiente per fare una previsione precisa di Calorie_Burage.