Medición de errores
Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 13 de 58.
¿Cuánto se equivoca un modelo, en dólares? Aquí tienes un modelo de precios de viviendas aplicado a cinco casas de prueba que nunca había visto:
sklearn.metrics mide los errores por ti:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # miles de dólares
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))Esto imprime:
38.0
47.1
0.776El MAE, error absoluto medio, es el error típico: 38 mil. El RMSE eleva al cuadrado los errores, calcula el promedio y después obtiene la raíz: un error grande lo eleva a 47.
Ambas se expresan en las unidades de la variable objetivo. r2_score es tu R cuadrado: explica el 78 % de la dispersión de los precios.
Desafío
IntermedioUna tienda fija los precios de las cámaras de segunda mano con un modelo. ¿Ayuda una segunda característica? El programa lee shutter_k (miles de fotos tomadas) o megapixels. El código inicial ajusta dos modelos, uno solo con age_years y otro con la característica adicional, y guarda sus predicciones de prueba en preds.
- Para cada modelo, imprime su MAE, RMSE (1 decimal) y R cuadrado (3 decimales).
- Imprime el que tenga el MAE más bajo.
Para otra tienda y shutter_k:
age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical cameraPruébalo tú mismo
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Una fila por cada cámara vendida: antigüedad, número de disparos en miles, megapíxeles y precio en dólares
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Divide las filas completas; cada modelo de abajo selecciona sus propias columnas
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Un modelo por cada lista de columnas y sus predicciones para las cámaras de prueba
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# Escribe tu código a continuación
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamosPractica por tu cuenta: Compilador de Python online