密度直方图
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 7 课,共 64 课。
本章将介绍数据的形状。学完本章后,你将能为直方图拟合钟形曲线,并找出异常值:
首先,先修正一个问题。计数会让人数多的群体压过人数少的群体,例如 500 名成年人的反应时间对比 50 名游戏玩家的反应时间:
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),因此柱子的面积表示它在组中的占比。现在,无论组的大小如何,都可以公平地进行比较。
挑战
简单一家城市医院称量了 400 名新生儿,另一家乡村医院称量了 60 名。初始代码将体重保存在 city 和 rural 中,并设置好了标题和标签。
- 为每组绘制密度直方图,使用
bins=10、alpha=0.5,并将标签设为city或rural。 - 添加图例并显示图表。
Coddy 会描述你的图表。它应该像下面这张来自两位番茄种植者的图表:
亲手试试
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")
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器