¿Qué tan bueno es el ajuste?
Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 39 de 64.
Cualquier nube de puntos tiene una recta, así que los ajustes necesitan una medida. Un marinero registró la velocidad del viento y la del barco: compara los errores al cuadrado de la recta con los de la media, la predicción más perezosa:
R al cuadrado es la proporción de esa dispersión que explica la recta:
wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum() # el ajuste: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum() # la media: 16.23
print(np.round(1 - ss_res / ss_tot, 3))Esto imprime 0.979: la línea explica el 98% de la variación de la velocidad. 1 es una línea perfecta; 0 no es mejor que la media.
Es la calificación estándar de un modelo que predice números. Para una recta ajustada, es igual a r cuadrado.
Desafío
IntermedioUna granja de setas registró 16 camas de cultivo en mushrooms.csv. El programa lee el nombre de una columna y el código inicial ajusta la recta que predice harvest_kg a partir de ella. En el informe se necesita r_squared, que todavía está vacío.
- Completa
r_squared(y, predicted)para que devuelva el R cuadrado. - Al final, imprime la comprobación: la correlación de
xey, elevada al cuadrado, multiplicada por 100 y redondeada a 1 decimal.
Para otra granja y la entrada humidity:
humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%Pruébalo tú mismo
import numpy as np
import pandas as pd
# Devuelve el R cuadrado de las predicciones para y
def r_squared(y, predicted):
# Escribe tu código aquí
return 0
beds = pd.read_csv("mushrooms.csv")
column = input()
# No cambies las líneas de abajo
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")
# Escribe tu código abajo
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
1Centro y dispersión
Media y medianaPercentiles y cuartilesVarianza y desviación estándar¿Muestra o población?El valor más frecuenteRepaso: tiempos de entrega4Muestras y poblaciones
Población y muestraLas medias muestrales varíanLa distribución muestralMuestras más grandes, menos ruidoRepaso: Encuestar a un pueblo7Líneas de tendencia
ResiduosAjuste por mínimos cuadradosTrazar el ajustePredecir con una línea¿Qué tan bueno es el ajuste?Repaso: horas de práctica10Codificación de categorías
Categorías como númerosCodificación one-hotAgrupación de números en intervalosRepaso: anuncios de autos2Distribuciones
Histogramas de densidadFormas de los datosCurva normalRegla del 68-95-99,7Puntuaciones zRepaso: duración de la batería5Valores atípicos
Diagramas de cajaLa regla del RICLa regla del valor ZTratamiento de valores atípicosRepaso: fallos de los sensores3Probabilidad mediante simulación
La probabilidad como frecuenciaLa ley de los grandes númerosSuma de dadosValor esperadoProbabilidad condicionalRepaso: probabilidades del puesto de dados6Relaciones
Lectura de diagramas de dispersiónCorrelaciónMatriz de correlaciónMapas de calor de correlaciónCorrelación no es causalidadRepaso: helado y sol9Escalado de características
Por qué escalar las característicasEscalado mín-máxEstandarizaciónStandardScalerRepaso: compañeros de escaladaPractica por tu cuenta: Compilador de Python online