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 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:
¿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.