Menu
CoddyTech

Закон больших чисел

Часть раздела Статистика для машинного обучения путешествия по Machine Learning на Coddy. Урок 14 из 64.

Подбросить монету 10 раз и получить 8 орлов — неудивительно. Продолжай подбрасывать, и доля орлов будет постепенно приближаться к 0.5:

Линейный график доли орлов за 300 подбрасываний: при первых подбрасываниях она колеблется от 0.3 до 1, а затем приближается к пунктирной красной линии вероятности 0.5

Для каждой точки нужна доля на текущий момент. np.cumsum вычисляет нарастающий итог; раздели его на количество бросков на текущий момент:

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

Это выводит:

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

ax.axhline(y) рисует опорную линию через весь график:

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

Это закон больших чисел: чем больше попыток, тем ближе результат к вероятности. Модель, показавшая хороший результат на 20 примерах, могла просто оказаться удачливой; на 2000 — вряд ли.

challenge icon

Задание

Средне

Бренд хлопьев прячет игрушку в 20% коробок. Программа считывает, сколько коробок открывают; начальный код заполняет toys (True, если в коробке есть игрушка) и подписывает график.

  1. Вычисли текущую долю коробок с игрушками.
  2. Выведи её после 10 коробок и после всех коробок, округлив до 3 знаков после запятой.
  3. Построй график зависимости доли от номера коробки, начиная с 1, добавь чёрную пунктирную линию (":") на уровне 0.2 и покажи график.

Для 80 других коробок:

After 10 boxes: 0.1
After 80 boxes: 0.212

и строит этот график. Затем Coddy опишет твой.

График с заголовком «Игрушки в коробках с хлопьями»: текущая доля коробок с игрушками среди 80 коробок равна 0 в первых 8 коробках, колеблется, а затем стабилизируется около чёрной пунктирной линии на уровне 0.2

Попробуйте сами

import numpy as np
import matplotlib.pyplot as plt

boxes = int(input())

# Не изменяйте строки ниже
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")

# Напишите свой код ниже
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Статистика для машинного обучения

Потренируйтесь самостоятельно: Онлайн-компилятор Python