¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Predecir con una recta de ajuste

Después de esta lección: Puedo hacer una predicción con una recta y medir cuánto se equivoca.

Lección de 50 min2 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Cuántas bicis se alquilarán con 20 grados?

Una predicción es una cifra que se calcula hoy para algo que todavía no ha pasado. La más sencilla se hace con una recta que atraviesa los puntos de unos datos.

La empresa de bicicletas quiere preparar las bicis del mañana. Sabe la temperatura que dice el parte del tiempo. Quiere una cifra de alquileres y saber cuánto se puede fiar de ella.

Al terminar esta lección

Nota

Puedo hacer una predicción con una recta y medir cuánto se equivoca.

Palabras clave

PalabraQué significa
Predicciónuna cifra calculada para algo que aún no ha pasado
Recta de ajustela recta que pasa lo más cerca posible de todos los puntos
Pendientecuánto sube la recta por cada paso a la derecha
Errorla distancia entre lo que se predijo y lo que pasó
Datos de pruebadatos guardados aparte para comprobar la predicción

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una recta de ajuste resume una subida

En un diagrama de dispersión, los días más cálidos tienen más alquileres. Los puntos forman una nube que sube hacia la derecha.

Una recta de ajuste pasa por el medio de esa nube. Con ella, dada una temperatura, lees una cifra de alquileres. La recta tiene dos números: la pendiente y el valor en que empieza.

Antes de empezar

Nota

Pulsa Iniciar el laboratorio en la barra de la lección y espera a que esté en marcha. El terminal no tiene Python propio. Cada botón Ejecutar escribe docker exec jupyter, que lanza una orden dentro del contenedor del laboratorio.

El laboratorio ajusta la recta por ti

El script de abajo usa la biblioteca scikit-learn. Le da la temperatura de cada día de hires.csv y los alquileres que hubo. Ella calcula la recta que mejor se acerca.

Después imprime la pendiente, el valor de partida y dos predicciones.

Ajusta alquileres contra temperatura

Comando
docker exec jupyter python3 steps/line.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: qué dice cada línea

LíneaValorQué significa
slope11,1cada grado más da unas 11 bicis más
intercept149,4a 0 grados, unas 149 bicis
R squared0,595la recta explica cerca de 60 de cada 100 de lo que sube y baja
A 10 grados261predicción para un día de 10 grados
A 20 grados372predicción para un día de 20 grados

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

El error mide cuánto se equivoca

Un error es la distancia entre lo que predijo la recta y lo que pasó. Si predijo 205 y hubo 190, el error es 15. No importa si fue por arriba o por abajo.

El error medio es la media de esas distancias. Dice cuánto suele equivocarse la predicción.

Ejemplo resuelto: cuatro días y su error

TemperaturaPredicciónHuboError
520519015
1531633014
2542741017
1026028020
Error medio16,5

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Prueba: calcula las predicciones y el error

Código: python
# La recta del laboratorio: 149,4 de partida y 11,1 por grado.
base = 149.4
pendiente = 11.1
temperaturas = [5, 15, 25, 10]
hubo = [190, 330, 410, 280]

total = 0
for n in range(len(temperaturas)):
    prediccion = round(base + pendiente * temperaturas[n])
    error = abs(prediccion - hubo[n])
    total = total + error
    print(temperaturas[n], "grados:", prediccion, "contra", hubo[n])
# Cambia una cifra de hubo y mira cómo se mueve el error medio.
print("Error medio:", total / len(hubo))

La mejor recta sale de una cuenta

El ordenador no dibuja la recta a ojo. La calcula con los mínimos cuadrados: la recta que deja los errores más pequeños en total.

La cuenta usa dos medias, la de x y la de y. La pendiente sale de multiplicar, para cada punto, lo que se aleja de la media en x por lo que se aleja en y. Se suman y se divide entre la suma de lo que se aleja en x, multiplicado por sí mismo.

Ejemplo resuelto: una recta con cuatro puntos

xyx menos 2,5y menos 6Productox alejada por sí misma
13-1,5-34,52,25
25-0,5-10,50,25
370,510,50,25
491,534,52,25
Suma105

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Una predicción se prueba con datos nuevos

Si compruebas la recta con los mismos días con los que la calculaste, el resultado engaña. La recta ya los conoce.

Por eso se guardan datos aparte. Se calcula la recta con tres cuartos de los días y se prueba con el cuarto que queda. El script de abajo lo hace.

Aprende con unos días y prueba con otros

Comando
docker exec jupyter python3 steps/split.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo resuelto: aprender y probar

LíneaValorQué significa
Días para aprender273con ellos se calcula la recta
Días guardados92se usan solo para probar
R squared, días aprendidos0,608el ajuste a los días que ya conoce
R squared, días guardados0,554el ajuste a días nuevos, algo peor
Error medio41,6unas 42 bicis de media en los días guardados

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que un modelo que acierta con los datos que ya conoce acertará igual con datos nuevos. No siempre. Por eso se prueba con días guardados: ahí el ajuste suele ser peor, como en los 0,608 contra los 0,554 de arriba.

Para ir más lejos: no es una causa

Los alquileres suben con la temperatura, pero la recta no demuestra que el calor cause los alquileres. Dos cosas pueden subir juntas por una tercera.

Pon un ejemplo de dos datos que suben juntos sin que uno cause el otro. Explica en una frase qué los une.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.