Menu
CoddyTech

Curva normale

Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 9 di 64.

Altezze, punteggi degli esami, sacchi di riso: molte misurazioni si distribuiscono secondo una distribuzione normale, la curva a campana. 500 sacchi provenienti da una macchina:

Un istogramma di densità dei pesi di 500 sacchi di riso, con una curva a campana arancione sovrapposta. Una linea tratteggiata indica la media, 1000 g, al picco, e una freccia lunga 8 g indica la deviazione standard, la larghezza

Due numeri la disegnano: la media determina il picco, la deviazione standard imposta la larghezza. SciPy, la libreria scientifica, conosce la formula:

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) è l'altezza della curva in x, un valore o un array. La sua area è 1, come quella di un istogramma di densità, quindi possono condividere lo stesso grafico.

Alcuni modelli preferiscono caratteristiche approssimativamente normali. Questo grafico lo verifica.

challenge icon

Sfida

Facile

I bulloni dovrebbero essere lunghi 50 mm. Il codice iniziale contiene 240 lunghezze misurate in lengths e imposta il grafico. Confrontale con una curva normale:

  1. Stampa la loro media e deviazione standard (np.std), arrotondate a 2 decimali, come sotto.
  2. Disegna un istogramma di densità con bins=15.
  3. Disegna sopra l’istogramma la curva adattata: 100 punti dal bullone più corto a quello più lungo.
  4. Mostra il grafico.

Per un altro lotto:

Fitted curve: mean 49.99 mm, std 0.42 mm

e il grafico:

Un istogramma di densità di 180 lunghezze di bulloni, da circa 49 a 51 mm, con una curva a campana uniforme sovrapposta, con il picco vicino a 50

Provalo tu

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 abajo
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Statistica per il machine learning

Esercitati da solo: Compilatore Python online