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 - Minimi quadrati

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:

Regressione lineare - Una variabile - Minimo quadrato

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.