Menu
CoddyTech

Гистограммы плотности

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

Эта глава посвящена форме данных. К её концу ты научишься подгонять колоколообразную кривую к гистограмме и находить выброс:

Гистограмма веса 300 дынь с плавной оранжевой колоколообразной кривой поверх неё и красной точкой под самой лёгкой дыней

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

Две диаграммы с одинаковыми данными о времени реакции. Слева — количество наблюдений: 500 взрослых возвышаются над 50 геймерами, чьи столбцы едва видны. Справа — density=True: обе группы показаны полностью, у геймеров реакция быстрее, а значения сгруппированы плотнее

density=True масштабирует каждую группу так, чтобы площади её столбцов в сумме равнялись 1:

ax.hist(adults, bins=16, density=True, alpha=0.5, label="adults")
ax.hist(gamers, bins=16, density=True, alpha=0.5, label="gamers")

Каждая высота равна count / (n * bin width), поэтому площадь столбца показывает его долю в группе. Теперь группы любого размера можно сравнивать на равных.

challenge icon

Задание

Легко

Городская больница взвесила 400 новорождённых, а сельская — 60. В заготовке веса хранятся в city и rural, а график уже имеет заголовок и подписи.

  1. Постройте гистограмму плотности для каждой группы с параметрами bins=10, alpha=0.5 и меткой city или rural.
  2. Добавьте легенду и покажите график.

Coddy опишет ваш график. Он должен выглядеть так же, как этот график веса томатов у двух фермеров:

Две полупрозрачные гистограммы плотности с заголовком «Вес томатов»: фермерские томаты весом примерно от 90 до 200 граммов, садовые томаты легче, в основном от 95 до 145 граммов; легенда

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

import numpy as np
import matplotlib.pyplot as plt

# Не изменяйте строки ниже
rng = np.random.default_rng(23)
city = np.round(rng.normal(3.4, 0.5, size=400), 2)
rural = np.round(rng.normal(3.2, 0.45, size=60), 2)

fig, ax = plt.subplots()
ax.set_title("Birth Weights")
ax.set_xlabel("Weight (kg)")
ax.set_ylabel("Density")

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

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

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

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