Menu
CoddyTech

Средние значения выборок различаются

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

Одна выборка из 30 посылок даёт одну оценку их среднего веса. Возьмите ещё одну выборку — и получите другую оценку. Вот 40 выборок:

40 точек, по одной для каждой выборки из 30 посылок, разбросаны примерно от 7.2 до 8.8 кг вокруг пунктирной линии истинного среднего веса всех посылок, 8.05 кг

Чтобы собрать их, повторите выборку в цикле, добавляйте каждое среднее в список, затем преобразуйте список в массив:

means = []
for i in range(5):
    sample = rng.choice(parcels, size=30, replace=False)
    means.append(sample.mean())
means = np.array(means)
print(np.round(means, 2))

Это выводит:

[7.98 8.05 8.12 8.19 8.76]

Среднее по выборке само является случайной величиной, а means.std() измеряет, насколько оно меняется. Оценка модели на тесте — одно из таких средних: другой тестовый набор изменил бы её.

challenge icon

Задание

Средне

Садовник каждую неделю измеряет случайную выборку из 1800 бамбуковых растений в питомнике. Насколько может изменяться среднее выборки от недели к неделе?

Дополните sample_means(data, size, count): выберите из data count выборок по size значений, не выбирая одно и то же значение дважды в одной выборке, и добавьте среднее каждой выборки. Последние строки начального кода вызывают эту функцию и выводят отчёт.

Для другого питомника и выборок по 10:

200 means of 10 plants: 105.25 to 137.13 cm
Spread of the means (std): 5.27 cm

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

import numpy as np

size = int(input())

# Не изменяйте строки ниже: высота каждого растения бамбука в см
rng = np.random.default_rng(20)
heights = np.round(rng.normal(95, 15, size=1800), 1)


def sample_means(data, size, count):
    means = []
    # Напишите код ниже: создайте count выборок по size значений и сохраните среднее каждой выборки

    return np.array(means)


# Не изменяйте строки ниже
means = sample_means(heights, size, 200)
print(f"200 means of {size} plants: {np.round(means.min(), 2)} to {np.round(means.max(), 2)} cm")
print(f"Spread of the means (std): {np.round(means.std(), 2)} cm")
quiz iconПроверьте себя

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

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

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