样本越大,噪声越少
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 22 课,共 64 课。
样本越大,估计越准确,但准确多少呢?这里有 1000 个由 25 个购物篮计算得出的均值,以及 1000 个由 100 个购物篮计算得出的均值:
sample_means 测量每种情况的离散程度。标准误差 std / np.sqrt(n) 无需模拟即可预测这一数值:
for n in [25, 100]:
spread = sample_means(baskets, n, 1000).std()
print(n, np.round(spread, 2), np.round(baskets.std() / np.sqrt(n), 2))这会打印:
25 3.43 3.45
100 1.72 1.72数据量增加到 4 倍,噪声减半:这就是平方根的作用。模型在 400 个示例上测试时,分数的精确度是在 100 个示例上测试时的 2 倍。
挑战
中等bags 保存着一家磨坊 5000 袋面粉的重量,单位为克。质检人员每小时称量一个样本;程序会读取可接受的标准误差。
- 找出标准误差
bags.std() / np.sqrt(n)不超过该值的最小n:从 1 开始,如果误差过大,就加 1。 - 检查结果:使用
sample_means得到 300 个样本均值,并计算它们的标准差。 - 按下面的格式打印,保留 2 位小数。
对于另一家磨坊,输入 2.5:
Bags to weigh: 24
Standard error: 2.46 g
Simulated spread: 2.37 g亲手试试
import numpy as np
target = float(input())
# 不要修改下面的代码:每袋面粉的重量,单位为克
rng = np.random.default_rng(22)
bags = np.round(rng.normal(500, 8, size=5000), 1)
# 你在 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)
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器