Menu
CoddyTech

Curva normal

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

Alturas, calificaciones de exámenes, sacos de arroz: muchas mediciones se agrupan según una distribución normal, la curva de campana. 500 sacos de una máquina:

Un histograma de densidad de los pesos de 500 sacos de arroz, con una curva de campana naranja superpuesta. Una línea discontinua marca la media, 1000 g, en el pico, y una flecha de 8 g de largo marca la desviación estándar, la anchura

Dos números lo trazan: la media determina el pico y la desviación estándar establece el ancho. SciPy, la biblioteca científica, conoce la fórmula:

from scipy import stats

ax.hist(bags, bins=16, density=True)
xs = np.linspace(bags.min(), bags.max(), 100)
ax.plot(xs, stats.norm.pdf(xs, bags.mean(), bags.std()))

stats.norm.pdf(x, mean, std) es la altura de la curva en x, un valor o una matriz. Su área es 1, como la de un histograma de densidad, por lo que ambos comparten un gráfico.

Algunos modelos prefieren características aproximadamente normales. Este gráfico lo comprueba.

challenge icon

Desafío

Fácil

Los pernos deben medir 50 mm de largo. El código inicial guarda 240 longitudes medidas en lengths y prepara el gráfico. Compáralas con una curva normal:

  1. Imprime su media y desviación estándar (np.std), redondeadas a 2 decimales, como se muestra abajo.
  2. Dibuja un histograma de densidad con bins=15.
  3. Dibuja encima la curva ajustada: 100 puntos desde el perno más corto hasta el más largo.
  4. Muestra el gráfico.

Para otro lote:

Fitted curve: mean 49.99 mm, std 0.42 mm

y el gráfico:

Un histograma de densidad de 180 longitudes de pernos de entre aproximadamente 49 y 51 mm, con una curva de campana suave superpuesta que alcanza su pico cerca de 50

Pruébalo tú mismo

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats

# No cambies las líneas de abajo
rng = np.random.default_rng(31)
lengths = np.round(rng.normal(50, 0.4, size=240), 2)

fig, ax = plt.subplots()
ax.set_title("Bolt Lengths")
ax.set_xlabel("Length (mm)")
ax.set_ylabel("Density")

# Escribe tu código a continuación
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