Menu
CoddyTech

А вдруг это случайность?

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

Пять читателей шрифта без засечек справились на 6.6 секунды быстрее пяти читателей шрифта с засечками. Если бы шрифт ничего не менял, любое время могло бы оказаться в любой группе. Перемешай значения, чтобы смоделировать это:

Десять значений времени чтения в ячейках: пять для шрифта с засечками синим цветом и пять для шрифта без засечек оранжевым. Стрелка с подписью rng.permutation(pooled) ведёт к тем же десяти значениям в перемешанном порядке, разделённым на фиктивную группу шрифта с засечками со средним значением 48.4 и фиктивную группу шрифта без засечек со средним значением 49.8: разница в +1.4 секунды, возникшая случайно

rng.permutation(a) возвращает перемешанную копию. Повторите это 1000 раз и сохраните каждую фиктивную разницу:

serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
    shuffled = rng.permutation(pooled)
    diffs.append(shuffled[5:].mean() - shuffled[:5].mean())

Гистограмма 1000 перемешанных разниц от -7.8 до 7.8 секунды, сгруппированных около 0; красная линия показывает реальную разницу -6.6 у левого края

Случайные разрывы скапливаются около 0; настоящий находится ближе к краю. Это перестановочный тест.

Прежде чем доверять тому, что одна модель превосходит другую, проверьте, редко ли перемешивание создает настолько большую разницу.

challenge icon

Задание

Средне

Собаки научились сидеть двумя способами: clicker и treats содержат данные о занятиях для каждой собаки. Стартовый код создаёт rng и shuffles.

  1. Вычисли реальную разницу: среднее значение treats минус среднее значение clicker.
  2. Объедини clicker, затем treats; перемешай shuffles раз, раздели на позиции len(clicker) и вычисляй каждую фиктивную разницу в том же порядке; больше никаких случайных выборок не делай.
  3. Выведи реальную разницу, первую фиктивную разницу, наименьшую и наибольшую разницы с точностью до 2 знаков после запятой.

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

Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67

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

import numpy as np

# Количество тренировок, понадобившихся каждой собаке, чтобы выучить команду "sit"
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# Не изменяйте строки ниже
rng = np.random.default_rng(12)
shuffles = 1000

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

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

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

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