会不会只是偶然?
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 43 课,共 64 课。
五位使用无衬线字体的读者比五位使用有衬线字体的读者快了 6.6 秒。如果字体没有产生任何影响,那么任何阅读时间都可能属于任一组。打乱顺序,模拟一下:
rng.permutation(a) 会返回一个打乱顺序的副本。重复 1000 次,并保留每个模拟出的差值:
serif = np.array([52, 47, 58, 50, 55])
sans = np.array([45, 49, 41, 50, 44])
pooled = np.concatenate([serif, sans])
rng = np.random.default_rng(4)
diffs = []
for i in range(1000):
shuffled = rng.permutation(pooled)
diffs.append(shuffled[5:].mean() - shuffled[:5].mean())机会差异会集中在 0 附近;真实差异则接近边缘。这是一种置换检验。
在你相信一个模型优于另一个模型之前,先检查随机打乱是否很少会产生这么大的差距。
挑战
中等狗通过两种方式学会坐下:clicker 和 treats 分别记录每只狗的训练次数。初始代码会创建 rng 和 shuffles。
- 计算实际差值:treats 的平均值减去 clicker 的平均值。
- 先合并
clicker,再合并treats;打乱shuffles次,在len(clicker)处拆分,并始终按相同顺序计算每个模拟差值;不要进行其他随机抽取。 - 以 2 位小数打印实际差值、第一次模拟差值、最小值和最大值。
对于其他狗:
Real difference: 3.0
First shuffle: -1.0
Smallest shuffled: -3.33
Largest shuffled: 3.67亲手试试
import numpy as np
# 每只狗学会 "sit" 所需的训练次数
clicker = np.array([9, 12, 8, 11, 10, 7, 13])
treats = np.array([14, 11, 15, 12, 16, 13])
# 不要修改下面的代码行
rng = np.random.default_rng(12)
shuffles = 1000
# 在下面编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器