Menu
CoddyTech

Rozkład próbkowania

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

Sesje wideo mają rozkład skośny prawostronnie: większość trwa kilka minut, a kilka — dwie godziny. Mimo to średnie z 1000 prób po 40 sesji tworzą krzywą dzwonową:

Dwa histogramy na jednym wykresie. Pojedyncze sesje zaznaczone na szaro skupiają się w pobliżu 0 minut, a ich długi ogon sięga 120 minut. Średnie z 40 sesji tworzą wąską niebieską krzywą dzwonową wokół średniej populacji wynoszącej 30 minut

Histogram wielu średnich z próbek to rozkład z próbkowania. Przy wystarczającej liczbie wartości w każdej próbce ma kształt dzwonu i jest wyśrodkowany wokół średniej populacji, nawet w przypadku danych o skośnym rozkładzie:

means = sample_means(sessions, 40, 1000)  # twoja funkcja z Sample Means Vary
ax.hist(means, bins=12)

To centralne twierdzenie graniczne. Dzięki niemu średnie są przewidywalne: średni błąd modelu na zbiorze testowym również ma w przybliżeniu rozkład normalny.

challenge icon

Wyzwanie

Średni

Rozmiary 6000 plików na dysku w chmurze w files (MB) mają rozkład prawostronnie skośny: wiele dokumentów, kilka filmów. Program odczytuje rozmiar próbki; kod początkowy zawiera sample_means i dwa wykresy.

  1. Uzyskaj 500 średnich z próbek o tym rozmiarze.
  2. Wypisz średnią minus medianę dla plików, a następnie dla średnich (2 miejsca po przecinku).
  3. Utwórz histogram plików na axs[0], a średnich na axs[1], ustaw bins=12 i wyświetl wykresy.

Dla innego dysku i wartości 60:

Files: mean - median = 25.28 MB
Sample means: mean - median = 0.55 MB

Dwa histogramy obok siebie. Wszystkie pliki: wysoki pierwszy słupek i długi, niski ogon po prawej. Średnie z próbek: symetryczny kształt dzwonu

Następnie Coddy generuje raport dla każdego wykresu. Różnica bliska 0 oznacza, że skośność zniknęła.

Spróbuj swoich sił

import numpy as np
import matplotlib.pyplot as plt

size = int(input())

# Nie zmieniaj poniższych wierszy: rozmiar w MB każdego pliku na dysku
rng = np.random.default_rng(21)
files = np.round(rng.random(6000) ** 4 * 300 + 5, 2)


# Twoja funkcja z Sample Means Vary: średnie z count próbek
def sample_means(data, size, count):
    means = []
    for i in range(count):
        sample = rng.choice(data, size=size, replace=False)
        means.append(sample.mean())
    return np.array(means)


fig, axs = plt.subplots(1, 2)
axs[0].set_title("All Files")
axs[0].set_xlabel("File size (MB)")
axs[1].set_title("Sample Means")
axs[1].set_xlabel("Mean file size (MB)")

# 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