Estandarización
Parte de la sección Estadística para ML del Journey de Machine Learning de Coddy. Lección 49 de 64.
Muchos modelos aprenden mejor cuando cada característica está centrada en 0 y tiene una dispersión de 1. La estandarización hace eso: cada valor se convierte en su puntuación z dentro de su columna.
Cinco calabazas, peso en kg y ancho en cm:
La difusión normaliza todas las columnas a la vez:
pumpkins = np.array([[30, 60],
[8, 30],
[22, 55],
[40, 65],
[15, 40]])
z = (pumpkins - pumpkins.mean(axis=0)) / pumpkins.std(axis=0)
print(np.round(z.mean(axis=0), 2))
print(np.round(z.std(axis=0), 2))Esto imprime:
[0. 0.]
[1. 1.]Redondea antes de comprobar: sin redondear, una media de 0 puede imprimirse como 2.22044605e-17, una pequeña cantidad de error de redondeo.
A diferencia de min-max, no hay un rango fijo: la mayoría de los valores se encuentran entre -2 y 2.
Desafío
IntermedioUna granja lechera detecta vacas inusuales. Cada fila de cows corresponde a una vaca: leche (litros al día), peso (kg) y edad (años), cuyos nombres están en features. El programa lee la posición de una vaca, k.
- Completa
standardize(X). Después, las líneas de comprobación imprimen[0. 0. 0.]y[1. 1. 1.]. - Encuentra la puntuación z de la vaca
kque más se aleje de 0, sin tener en cuenta el signo, e imprímela como se muestra abajo, con 2 decimales.
Para una vaca de otra granja:
Column means: [0. 0. 0.]
Column stds: [1. 1. 1.]
Cow 2 stands out by weight: 1.76 std above the herdPruébalo tú mismo
import numpy as np
features = ["milk", "weight", "age"]
# Una fila por vaca: leche en litros por día, peso en kg, edad en años
cows = np.array([[28, 610, 6],
[22, 540, 3],
[35, 680, 6],
[31, 590, 9],
[19, 650, 4],
[26, 520, 2],
[30, 600, 7]])
k = int(input())
# Devuelve X con todas las columnas estandarizadas: media 0 y desviación estándar 1
def standardize(X):
# Reemplaza la línea siguiente por la estandarización
return X
# No cambies las tres líneas siguientes: comprueban tu función
z = standardize(cows)
print("Column means:", np.round(z.mean(axis=0), 2))
print("Column stds:", np.round(z.std(axis=0), 2))
# Escribe tu código a continuación: qué destaca de la vaca k
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