¿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
| Palabra | Qué significa |
|---|---|
| Predicción | una cifra calculada para algo que aún no ha pasado |
| Recta de ajuste | la recta que pasa lo más cerca posible de todos los puntos |
| Pendiente | cuánto sube la recta por cada paso a la derecha |
| Error | la distancia entre lo que se predijo y lo que pasó |
| Datos de prueba | datos 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
docker exec jupyter python3 steps/line.pySe 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ínea | Valor | Qué significa |
|---|---|---|
| slope | 11,1 | cada grado más da unas 11 bicis más |
| intercept | 149,4 | a 0 grados, unas 149 bicis |
| R squared | 0,595 | la recta explica cerca de 60 de cada 100 de lo que sube y baja |
| A 10 grados | 261 | predicción para un día de 10 grados |
| A 20 grados | 372 | predicció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
| Temperatura | Predicción | Hubo | Error |
|---|---|---|---|
| 5 | 205 | 190 | 15 |
| 15 | 316 | 330 | 14 |
| 25 | 427 | 410 | 17 |
| 10 | 260 | 280 | 20 |
| Error medio | 16,5 |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Prueba: calcula las predicciones y el error
# 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
| x | y | x menos 2,5 | y menos 6 | Producto | x alejada por sí misma |
|---|---|---|---|---|---|
| 1 | 3 | -1,5 | -3 | 4,5 | 2,25 |
| 2 | 5 | -0,5 | -1 | 0,5 | 0,25 |
| 3 | 7 | 0,5 | 1 | 0,5 | 0,25 |
| 4 | 9 | 1,5 | 3 | 4,5 | 2,25 |
| Suma | 10 | 5 |
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
docker exec jupyter python3 steps/split.pySe 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ínea | Valor | Qué significa |
|---|---|---|
| Días para aprender | 273 | con ellos se calcula la recta |
| Días guardados | 92 | se usan solo para probar |
| R squared, días aprendidos | 0,608 | el ajuste a los días que ya conoce |
| R squared, días guardados | 0,554 | el ajuste a días nuevos, algo peor |
| Error medio | 41,6 | unas 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.