Menu
CoddyTech

Residuos

Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 35 de 64.

En este capítulo se traza una línea de tendencia a través de los datos, se hacen predicciones con ella y se evalúa. Esto es lo que viene:

Cinco trabajos de jardinería como puntos, minutos frente al área del césped, con una línea de tendencia naranja que los atraviesa y una gran estrella verde en la línea que predice 50 minutos para un césped nuevo de 10

¿Qué tan buena es una línea? Un servicio de jardinería calcula que cada trabajo toma 4.5 * area + 5 minutos. Cada espacio rojo es un residuo: valor real menos valor predicho.

Los cinco trabajos de jardinería y la línea estimada, con un espacio vertical rojo desde cada punto hasta la línea, etiquetado +6, -5, +3.5, -7 y +3.5

Elévalos al cuadrado y súmalos para puntuar la recta:

area = np.array([4, 6, 9, 12, 15])
minutes = np.array([29, 27, 49, 52, 76])
residuals = minutes - (4.5 * area + 5)
print(residuals)
print((residuals ** 2).sum())

Esto imprime:

[ 6.  -5.   3.5 -7.   3.5]
134.5

Los cuadrados impiden que +6 y -6 se anulen entre sí. Cuanto menor sea esta suma de los residuos al cuadrado, mejor será la línea. Un modelo aprende reduciéndola.

challenge icon

Desafío

Intermedio

Una empresa de mudanzas calcula cuánto tarda una mudanza según la cantidad de cajas. boxes y hours contienen ocho mudanzas anteriores, y el programa lee dos líneas estimadas: slope1, intercept1, después slope2, intercept2.

  1. Calcula la puntuación de cada línea mediante la suma de los residuos al cuadrado.
  2. Imprime ambas sumas, redondeadas a 2 decimales, y la mejor línea, como se muestra a continuación.

Para las líneas 0.16 * boxes + 0.8 y 0.12 * boxes + 2.5:

Line 1 SSR: 0.57
Line 2 SSR: 4.1
Better: line 1

Pruébalo tú mismo

import numpy as np

boxes = np.array([10, 18, 25, 32, 40, 47, 55, 60])
hours = np.array([2.5, 3.5, 5.0, 5.5, 7.0, 8.0, 9.5, 10.0])
slope1 = float(input())
intercept1 = float(input())
slope2 = float(input())
intercept2 = float(input())

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Estadística para ML

Practica por tu cuenta: Compilador de Python online