Menu
CoddyTech

Prawo wielkich liczb

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 14 z 64.

Przy 10 rzutach monetą 8 orłów nie jest niczym zaskakującym. Rzucaj dalej, a udział orłów będzie zbliżał się do 0,5:

Wykres liniowy udziału orłów w 300 rzutach: w pierwszych rzutach waha się między 0,3 a 1, a potem trzyma się blisko przerywanej czerwonej linii oznaczającej prawdopodobieństwo 0,5

Każdy punkt potrzebuje udziału do tej pory. np.cumsum podaje sumę narastającą; podziel ją przez liczbę rzutów do tej pory:

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

To wypisuje:

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

ax.axhline(y) rysuje linię odniesienia przez cały wykres:

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

To prawo wielkich liczb: im więcej prób, tym bliżej prawdopodobieństwa. Model, który uzyskuje dobre wyniki na 20 próbkach, może mieć szczęście; na 2000 — raczej nie.

challenge icon

Wyzwanie

Średni

Marka płatków ukrywa zabawkę w 20% pudełek. Program odczytuje, ile pudełek zostaje otwartych; kod początkowy wypełnia toys (True oznacza zabawkę) i opisuje wykres.

  1. Oblicz narastający udział zabawek.
  2. Wypisz go po 10 pudełkach i po wszystkich, z dokładnością do 3 miejsc po przecinku.
  3. Narysuj go względem numerów pudełek, zaczynając od 1, dodaj czarną kropkowaną linię (":") na poziomie 0.2 i wyświetl wykres.

Dla kolejnych 80 pudełek:

After 10 boxes: 0.1
After 80 boxes: 0.212

i rysuje ten wykres. Następnie Coddy opisze twój.

Wykres zatytułowany Toys in Cereal Boxes: narastający udział w 80 pudełkach wynosi 0 przez 8 pudełek, potem skacze, a następnie stabilizuje się w pobliżu czarnej kropkowanej linii na poziomie 0.2

Spróbuj swoich sił

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# Nie zmieniaj poniższych wierszy
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")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online