Menu
CoddyTech

La legge dei grandi numeri

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

Lancia una moneta 10 volte e ottenere 8 teste non è una sorpresa. Continua a lanciarla e la proporzione di teste si avvicina lentamente a 0.5:

Un grafico a linee della proporzione di teste in 300 lanci: oscilla tra 0.3 e 1 nei primi lanci, poi si avvicina a una linea rossa tratteggiata in corrispondenza della probabilità 0.5

Ogni punto ha bisogno della quota raggiunta finora. np.cumsum fornisce il totale progressivo; dividilo per i lanci effettuati finora:

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

Questo stampa:

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

ax.axhline(y) traccia la linea di riferimento in orizzontale sul grafico:

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

Questa è la legge dei grandi numeri: più tentativi, più ci si avvicina alla probabilità. Un modello che ottiene buoni risultati su 20 campioni potrebbe essere fortunato; su 2000, difficilmente.

challenge icon

Sfida

Medio

Un marchio di cereali nasconde un giocattolo nel 20% delle confezioni. Il programma legge quante confezioni vengono aperte; il codice iniziale riempie toys (True per un giocattolo) ed etichetta il grafico.

  1. Calcola la proporzione cumulativa di giocattoli.
  2. Stampala dopo 10 confezioni e dopo tutte, con 3 decimali.
  3. Tracciala rispetto ai numeri delle confezioni a partire da 1, aggiungi una linea nera tratteggiata (":") a 0.2 e visualizzala.

Per altre 80 confezioni:

After 10 boxes: 0.1
After 80 boxes: 0.212

e disegna questo grafico. Poi Coddy descrive il tuo.

Un grafico intitolato Giocattoli nelle confezioni di cereali: la proporzione cumulativa su 80 confezioni resta a 0 per 8 confezioni, oscilla, poi si stabilizza vicino a una linea nera tratteggiata a 0.2

Provalo tu

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# Non modificare le righe qui sotto
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")

# Scrivi il tuo codice qui sotto
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