期望值
本课属于 Coddy Machine Learning 学习旅程的“机器学习统计学”单元。第 16 课,共 64 课。
一场抽奖:70% 的奖券没有中奖,25% 中奖 5 美元,5% 中奖 20 美元。一张奖券值多少钱?
用每个奖品的中奖概率乘以它的价值,再将结果相加:这就是期望值,也就是图表的平衡点:
prizes = np.array([0, 5, 20])
chances = np.array([0.7, 0.25, 0.05])
print((prizes * chances).sum())这会打印出 2.25,也就是长期平均值,但没有任何一张彩票会得到这个金额。rng.choice 配合 p=,会按这些概率抽取彩票:
rng = np.random.default_rng(1)
tickets = rng.choice(prizes, size=10000, p=chances)
print(tickets.mean())这会打印出 2.298。票价为 3 美元时,买家每张票会亏损 0.75 美元。模型在新数据上的平均误差也是一个期望值。
挑战
中等游乐场转盘会根据 prizes 支付代币,每个区域对应的概率保存在 chances 中。初始代码已让转盘转动 4000 次,并将结果存入 spins;程序会读取每次转动的价格。
- 先输出预期奖金,再输出模拟平均值,两者都保留 2 位小数。
- 输出从长期来看,玩家每转一次会赚还是会亏,以及具体金额。
对于另一个转盘,价格为 1.5 时:
Expected prize: 1.1 tokens
Simulated average: 1.08 tokens
A player loses 0.4 tokens a spin亲手试试
import numpy as np
price = float(input())
# 转盘各区域的奖励(以代币为单位)及对应的概率
prizes = np.array([0, 1, 4, 10])
chances = np.array([0.5, 0.3, 0.15, 0.05])
# 不要修改下面的代码:模拟旋转 4000 次
rng = np.random.default_rng(9)
spins = rng.choice(prizes, size=4000, p=chances)
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
机器学习统计学中的所有课
自己练习: Python 在线编译器