样本均值会变化
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 20 课,共 64 课。
一组包含 30 个包裹的样本,可以估算出它们的平均重量。再抽取一组,就会得到另一个估算值。这里有 40 组样本:
要收集这些均值,请在循环中重复抽样,将每个均值追加到列表中,然后将列表转换为数组:
means = []
for i in range(5):
sample = rng.choice(parcels, size=30, replace=False)
means.append(sample.mean())
means = np.array(means)
print(np.round(means, 2))这会打印:
[7.98 8.05 8.12 8.19 8.76]样本均值本身是随机的,means.std()衡量它的波动程度。模型的测试分数就是这样一种均值:换一组测试数据,分数就会有所变化。
挑战
中等园丁每周都会从苗圃的 1800 株竹子中随机抽取一个样本进行测量。样本均值每周可能会有多大变化?
完成 sample_means(data, size, count):从 data 中抽取 count 个样本,每个样本包含 size 个值,同一个样本中不重复抽取任何值,并追加每个样本的均值。起始代码的最后几行会调用这个函数并打印报告。
对于另一家苗圃,以及大小为 10 的样本:
200 means of 10 plants: 105.25 to 137.13 cm
Spread of the means (std): 5.27 cm亲手试试
import numpy as np
size = int(input())
# 不要修改下面的代码行:每株竹子的高度,单位为 cm
rng = np.random.default_rng(20)
heights = np.round(rng.normal(95, 15, size=1800), 1)
def sample_means(data, size, count):
means = []
# 在下面编写代码:抽取 count 个样本,每个样本包含 size 个值,并保存每个样本的平均值
return np.array(means)
# 不要修改下面的代码行
means = sample_means(heights, size, 200)
print(f"200 means of {size} plants: {np.round(means.min(), 2)} to {np.round(means.max(), 2)} cm")
print(f"Spread of the means (std): {np.round(means.std(), 2)} cm")
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器