Menu
CoddyTech

Varianza y desviación estándar

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

.std() es la distancia típica respecto a la media. Aquí se calcula a mano, para cinco extracciones de espresso:

Cinco extracciones de espresso como puntos alrededor de una línea naranja que representa la media, en 26 segundos. Una línea gris une cada punto con la línea y muestra su desviación: -2, +1, -1, +4 y -2

Cada distancia respecto a la media es una desviación. Se cancelan y dan 0, así que elévalas al cuadrado y luego calcula su promedio: la varianza.

shots = np.array([24, 27, 25, 30, 24])
deviations = shots - shots.mean()
variance = (deviations ** 2).mean()
print(deviations)
print(variance, np.round(np.sqrt(variance), 2))

Esto imprime:

[-2.  1. -1.  4. -2.]
5.2 2.28

Su raíz cuadrada, la desviación estándar, convierte los segundos al cuadrado de nuevo en segundos: 2.28. np.var(a) y np.std(a) hacen cada uno esto en una sola llamada.

Una característica con una desviación estándar de 0 nunca cambia, así que no le aporta información al modelo.

challenge icon

Desafío

Fácil

El control de calidad comprueba con qué uniformidad una máquina llena botellas de jugo. El código inicial lee seis volúmenes en ml e imprime lo que devuelve spread_by_hand(a), junto a np.std. Completa esa función para que devuelva:

  1. la varianza: la media de las desviaciones al cuadrado respecto a la media de a,
  2. la desviación estándar, su raíz cuadrada.

Para los volúmenes 1004, 996, 1011, 993, 1002 y 998:

Variance: 34.56 ml squared
Std: 5.88 ml
Same as np.std: True

Pruébalo tú mismo

import numpy as np

values = []
for i in range(6):
    values.append(int(input()))
volumes = np.array(values)


# Devuelve la varianza y la desviación estándar del arreglo a
def spread_by_hand(a):
    # Escribe tu código aquí y luego devuelve los dos valores en lugar de 0, 0
    return 0, 0


# No cambies las líneas siguientes
variance, std = spread_by_hand(volumes)
print(f"Variance: {np.round(variance, 2)} ml squared")
print(f"Std: {np.round(std, 2)} ml")
print("Same as np.std:", np.round(std, 2) == np.round(np.std(volumes), 2))
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