Menu
CoddyTech

La courbe normale

Fait partie de la section Statistiques pour le ML du Journey Machine Learning de Coddy. Leçon 9 sur 64.

Tailles, résultats d’examens, sacs de riz : de nombreuses mesures s’accumulent selon une distribution normale, la courbe en cloche. 500 sacs provenant d’une machine :

Un histogramme de densité de 500 poids de sacs de riz, surmonté d’une courbe en cloche orange. Une ligne pointillée marque la moyenne, 1000 g, au sommet, et une flèche de 8 g de long indique l’écart-type, la largeur

Deux nombres la définissent : la moyenne place le pic, l’écart-type détermine la largeur. SciPy, la bibliothèque scientifique, connaît la formule :

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) est la hauteur de la courbe en x, une valeur ou un tableau. Son aire est de 1, comme celle d’un histogramme de densité, ce qui permet de les représenter sur le même graphique.

Certains modèles préfèrent des caractéristiques approximativement normales. Ce graphique le vérifie.

challenge icon

Défi

Facile

Les boulons doivent mesurer 50 mm de long. Le code de départ stocke 240 longueurs mesurées dans lengths et prépare le graphique. Compare-les à une courbe normale :

  1. Affiche leur moyenne et leur écart-type (np.std), arrondis à 2 décimales, comme ci-dessous.
  2. Trace un histogramme de densité avec bins=15.
  3. Trace la courbe ajustée par-dessus : 100 points allant du boulon le plus court au plus long.
  4. Affiche le graphique.

Pour un autre lot :

Fitted curve: mean 49.99 mm, std 0.42 mm

et le graphique :

Un histogramme de densité de 180 longueurs de boulons allant d'environ 49 à 51 mm, avec une courbe en cloche lisse qui le recouvre et atteint son sommet près de 50

Essayez vous-même

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

# Ne modifiez pas les lignes ci-dessous
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")

# Écrivez votre code ci-dessous
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Statistiques pour le ML

Entraînez-vous par vous-même : Compilateur Python en ligne