抽样分布
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 21 课,共 64 课。
视频时长呈右偏分布:大多数只有几分钟,少数长达两小时。然而,抽取 1000 组样本,每组包含 40 场视频的平均时长,却呈钟形分布:
许多样本均值的直方图就是抽样分布。每个样本中有足够多的值时,即使数据是偏斜的,直方图也会呈钟形,并以总体均值为中心:
means = sample_means(sessions, 40, 1000) # 你在 Sample Means Vary 中编写的函数
ax.hist(means, bins=12)这就是中心极限定理。它让平均值变得可预测:模型在测试集上的平均误差也大致服从正态分布。
挑战
中等云盘中 files 里的 6000 个文件大小(单位:MB)呈右偏分布:文档很多,视频很少。程序会读取样本大小;起始代码中有 sample_means 和两张图表。
- 获取 500 个该大小的样本均值。
- 依次输出文件大小的均值减中位数,以及样本均值的均值减中位数(保留 2 位小数)。
- 用
axs[0]绘制文件大小的直方图,用axs[1]绘制样本均值的直方图,设置bins=12,然后显示图表。
换一个云盘,样本大小设为 60:
Files: mean - median = 25.28 MB
Sample means: mean - median = 0.55 MB然后 Coddy 会分别报告每张图表的结果。差值接近 0,说明偏斜消失了。
亲手试试
import numpy as np
import matplotlib.pyplot as plt
size = int(input())
# 不要修改下面的代码:存储盘中每个文件的大小,单位为 MB
rng = np.random.default_rng(21)
files = np.round(rng.random(6000) ** 4 * 300 + 5, 2)
# 你在 Sample Means Vary 中编写的函数:计算 count 个样本的均值
def sample_means(data, size, count):
means = []
for i in range(count):
sample = rng.choice(data, size=size, replace=False)
means.append(sample.mean())
return np.array(means)
fig, axs = plt.subplots(1, 2)
axs[0].set_title("All Files")
axs[0].set_xlabel("File size (MB)")
axs[1].set_title("Sample Means")
axs[1].set_xlabel("Mean file size (MB)")
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器