Menu
CoddyTech

La loi des grands nombres

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

Lancer une pièce 10 fois et obtenir 8 fois pile n’a rien de surprenant. Continuez à la lancer, et la proportion de piles tend lentement vers 0,5 :

Un graphique linéaire de la proportion de piles sur 300 lancers : elle oscille entre 0,3 et 1 lors des premiers lancers, puis se rapproche d’une ligne rouge en pointillés correspondant à la probabilité 0,5

Chaque point a besoin de la proportion obtenue jusque-là. np.cumsum donne le total cumulé ; divisez-le par le nombre de lancers effectués jusque-là :

heads = np.array([True, False, True, True])
print(np.cumsum(heads))
print(np.round(np.cumsum(heads) / np.arange(1, 5), 2))

Cela affiche :

[1 1 2 3]
[1.   0.5  0.67 0.75]

ax.axhline(y) trace la ligne de référence en travers du graphique :

ax.plot(np.arange(1, 301), share)
ax.axhline(0.5, color="red", linestyle="--")

C’est la loi des grands nombres : plus il y a d’essais, plus on se rapproche de la probabilité. Un modèle qui obtient de bons résultats sur 20 échantillons peut avoir de la chance ; sur 2000, beaucoup moins.

challenge icon

Défi

Moyen

Une marque de céréales cache un jouet dans 20 % des boîtes. Le programme lit le nombre de boîtes ouvertes ; le code de départ remplit toys (True pour un jouet) et étiquette le graphique.

  1. Calcule la proportion cumulée de jouets.
  2. Affiche-la après 10 boîtes et après toutes les boîtes, avec 3 décimales.
  3. Trace-la en fonction du numéro des boîtes à partir de 1, ajoute une ligne pointillée noire (":") à 0.2 et affiche le graphique.

Pour 80 autres boîtes :

After 10 boxes: 0.1
After 80 boxes: 0.212

et trace ce graphique. Ensuite, Coddy décrit le tien.

Un graphique intitulé Jouets dans les boîtes de céréales : la proportion cumulée sur 80 boîtes reste à 0 pendant 8 boîtes, fluctue ensuite, puis se stabilise près d'une ligne pointillée noire à 0.2

Essayez vous-même

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# Ne modifiez pas les lignes ci-dessous
rng = np.random.default_rng(25)
toys = rng.random(boxes) < 0.2

fig, ax = plt.subplots()
ax.set_title("Toys in Cereal Boxes")
ax.set_xlabel("Boxes opened")
ax.set_ylabel("Share with a toy")

# É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