Ciencia de datos : regresión lineal


Nos falta una variable importante que afecta a Calorie_Burnage, que es la Duración de la sesión de entrenamiento.

La duración en combinación con Average_Pulse juntos explicarán Calorie_Burnage con mayor precisión.


Regresión lineal

El término regresión se usa cuando intenta encontrar la relación entre variables.

En el aprendizaje automático y en el modelado estadístico, esa relación se usa para predecir el resultado de los eventos.

En este módulo, cubriremos las siguientes preguntas:

  • ¿Podemos concluir que Average_Pulse y Duration están relacionados con Calorie_Burnage?
  • ¿Podemos usar Average_Pulse y Duration para predecir Calorie_Burnage?

Método de mínimos cuadrados

La regresión lineal utiliza el método de mínimos cuadrados.

El concepto es dibujar una línea a través de todos los puntos de datos graficados. La línea se coloca de manera que minimiza la distancia a todos los puntos de datos.

La distancia se llama "residuales" o "errores".

Las líneas discontinuas rojas representan la distancia desde los puntos de datos hasta la función matemática dibujada.

Regresión lineal - Mínimos cuadrados

Regresión lineal usando una variable explicativa

En este ejemplo, intentaremos predecir Calorie_Burnage con Average_Pulse usando Regresión lineal:

Ejemplo

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

Ejemplo explicado:

  • Importa los módulos que necesites: Pandas, matplotlib y Scipy
  • Aísle Average_Pulse como x. Aísle Calorie_burnage como y
  • Obtenga valores clave importantes con: pendiente, intersección, r, p, std_err = stats.linregress(x, y)
  • Cree una función que use los valores de pendiente e intersección para devolver un nuevo valor. Este nuevo valor representa dónde en el eje y se colocará el valor x correspondiente
  • Ejecute cada valor de la matriz x a través de la función. Esto dará como resultado una nueva matriz con nuevos valores para el eje y: mymodel = list(map(myfunc, x))
  • Dibuja el gráfico de dispersión original: plt.scatter(x, y)
  • Dibuja la línea de regresión lineal: plt.plot(x, mymodel)
  • Definir valores máximos y mínimos del eje.
  • Etiquete el eje: "Average_Pulse" y "Calorie_Burnage"

Producción:

Regresión lineal - Una variable - Mínimos cuadrados

¿Crees que la línea es capaz de predecir Calorie_Burnage con precisión?

Mostraremos que la variable Average_Pulse por sí sola no es suficiente para hacer una predicción precisa de Calorie_Burnage.