Tratamiento de valores atípicos
Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 27 de 64.
Diez pisos usaron unos 10 m³ de agua cada uno, pero una fuga elevó el consumo de uno a 64. Puedes eliminarlo o limitarlo al límite más cercano:
np.clip(a, low, high) limita un arreglo completo:
water = np.array([8, 11, 9, 10, 12, 9, 64, 10, 11, 8])
low, high = 6.0, 14.0 # los límites del IQR
dropped = water[(water >= low) & (water <= high)]
capped = np.clip(water, low, high)
print(len(dropped), len(capped))
print(capped)Esto imprime:
9 10
[ 8. 11. 9. 10. 12. 9. 14. 10. 11. 8.]Un modelo perseguiría ese único valor plano, así que decide antes del entrenamiento. Corrige o elimina los errores tipográficos; conserva o limita los valores extremos reales. Nunca elimines datos sin decirlo: indica cuántos modificaste.
Desafío
IntermedioUna aplicación de ciclismo registró las velocidades medias de 15 recorridos en speeds; dos parecen extrañas. El código inicial guardó los límites del IQR en low y high.
- Crea
dropped, con las velocidades dentro de los límites (ambos incluidos), ycapped. - Imprime una línea para cada opción: conservar, descartar y limitar; indica los recorridos, su media y su
.std(), redondeados a 2 decimales. - Imprime cuántos recorridos modificó la limitación.
Para los 10 recorridos de otro ciclista:
Keep: 10 rides, mean 21.38, std 6.58
Drop: 9 rides, mean 19.2, std 0.77
Cap: 10 rides, mean 19.45, std 1.04
Capping changed 1 of 10 ridesPruébalo tú mismo
import numpy as np
# Devuelve los límites inferior y superior del IQR de un arreglo
def iqr_fences(a):
q1 = np.percentile(a, 25)
q3 = np.percentile(a, 75)
iqr = q3 - q1
return q1 - 1.5 * iqr, q3 + 1.5 * iqr
speeds = np.array([24.5, 22.8, 26.1, 23.9, 3.1, 25.4, 21.7, 24.2, 27.3, 78.4, 23.1, 25.8, 22.4, 24.9, 26.6])
low, high = iqr_fences(speeds)
# 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 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