Menu
CoddyTech

概率即频率

本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 13 课,共 64 课。

垃圾邮件过滤器显示“90% 是垃圾邮件”;种子包装上写着“80% 会发芽”。概率表示长期来看所占的比例,范围从 0(从不)到 1(总是)。这里有 50 粒种子:

50 粒种子组成的网格:41 个深色格子中的种子发芽了,9 个标有 x 的浅色格子中的种子没有发芽;实际比例为 0.82,预期概率为 0.8

rng.random(n) 会生成 0 到 1 之间的小数,其中 80% 小于 0.8。所以,只需进行一次比较,就能播下 1000 颗种子:

rng = np.random.default_rng(3)
sprouted = rng.random(1000) < 0.8
print(sprouted.sum())
print(sprouted.mean())

这会输出:

814
0.814

布尔值的平均值就是 True 的占比:0.814,接近 0.8。到本章结束时,这个技巧就能用来给整个骰子摊位定价。

challenge icon

挑战

中等

射手以一定的概率罚进点球。程序读取概率(0 到 1),然后读取踢球次数;起始代码会创建 rng。

  1. 模拟踢球:每当 rng.random 生成的数小于该概率时,就算进球。
  2. 打印进球数和估算的概率,并四舍五入到 3 位小数。

对于 0.5 和 10 次踢球,短时间运行的结果可能会明显偏离 0.5:

Goals: 3 of 10
Estimated chance: 0.3

亲手试试

import numpy as np

chance = float(input())
kicks = int(input())

# 不要修改下面这行代码
rng = np.random.default_rng(21)

# 在下面编写你的代码
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

机器学习统计学中的所有课

自己练习: Python 在线编译器