这些练习提供了对几种基本概率分布的实践经验。它们将帮助您巩固对何时使用特定分布、如何计算与其相关的概率以及如何使用 Python 处理它们的理解。概率分布是数据中不确定性建模的基本组成部分,这是机器学习中一项常见任务。练习 1:识别合适的分布对于以下每个情景,请确定哪种概率分布(伯努利、二项、均匀或正态)最能描述所提到的随机变量。简要说明您的理由。情景: 单个用户访问网页。随机变量是用户是否点击广告(是/否)。提示: 思考试验次数和可能的结果。情景: 您调查了100名学生,询问他们是喜欢在线课程还是面对面课程。随机变量是这100名学生中喜欢在线课程的人数。提示: 考虑多次试验,每次试验都有两种结果,并且您在计数成功次数。情景: 随机数生成器生成的数字在0.0到1.0之间,且任何值出现的可能性相同。随机变量是下一个生成的数字。提示: 注意连续范围内的等可能性。情景: 您测量一个大城市中成年男性的身高。随机变量是随机选择的一名男性的身高。提示: 思考自然现象,以及测量值通常如何聚集在平均值附近。答案与理由:伯努利分布: 此情景涉及单次试验(一个用户访问),并有两种可能的结果(点击或不点击)。伯努利分布模拟单次试验中成功的概率(例如,点击)。二项分布: 这涉及固定数量的独立试验(100名学生),每次试验有两种结果(喜欢在线或面对面),并且每名学生喜欢在线的概率被假定为常数。二项分布模拟固定次数伯努利试验中成功的次数。均匀分布: 这里的重点是“等可能性”在连续区间 [0.0, 1.0] 内。均匀分布将等量的概率密度分配给指定范围内的所有结果。正态分布: 像人类身高这样的物理测量值通常遵循钟形曲线,其中大多数值聚集在平均值附近,而偏离平均值越远的值可能性越小。正态(高斯)分布常用于模拟此类现象。练习 2:计算二项概率想象一个质量控制过程,其中制造的小部件有缺陷的概率为 $p = 0.05$。您检查了一批 $n = 10$ 个小部件。设 $X$ 为表示批次中缺陷小部件数量的随机变量。小部件恰好有一个有缺陷的概率是多少 ($P(X=1)$)?小部件至多有一个有缺陷的概率是多少 ($P(X \le 1)$)?解决方法:此情景符合二项分布,因为:有固定数量的试验($n=10$个小部件)。每次试验都是独立的(假设一个小部件的缺陷不会影响其他小部件)。每次试验有两种结果(有缺陷或无缺陷)。成功(有缺陷)的概率是常数($p=0.05$)。二项分布的概率质量函数 (PMF) 给出在 $n$ 次试验中恰好观察到 $k$ 次成功的概率:$$ P(X=k) = \binom{n}{k} p^k (1-p)^{n-k} $$其中 $\binom{n}{k} = \frac{n!}{k!(n-k)!}$ 是二项式系数,表示从 $n$ 次试验中选择 $k$ 次成功的方法数。计算:恰好一个缺陷小部件的概率 ($k=1$):$n = 10$, $k = 1$, $p = 0.05$$\binom{10}{1} = \frac{10!}{1!(10-1)!} = \frac{10}{1} = 10$$P(X=1) = \binom{10}{1} (0.05)^1 (1-0.05)^{10-1} = 10 \times 0.05 \times (0.95)^9$$P(X=1) \approx 10 \times 0.05 \times 0.6302 = 0.3151$ 因此,恰好一个缺陷小部件的概率约为31.5%。至多一个缺陷小部件的概率 ($P(X \le 1)$):这意味着零个小部件有缺陷 ($k=0$) 或者恰好一个有缺陷 ($k=1$)。$P(X \le 1) = P(X=0) + P(X=1)$首先,计算 $P(X=0)$:$\binom{10}{0} = \frac{10!}{0!(10-0)!} = 1$$P(X=0) = \binom{10}{0} (0.05)^0 (1-0.05)^{10-0} = 1 \times 1 \times (0.95)^{10}$$P(X=0) \approx 0.5987$现在将 $P(X=0)$ 和 $P(X=1)$ 相加:$P(X \le 1) \approx 0.5987 + 0.3151 = 0.9138$ 因此,批次中一个或更少小部件有缺陷的概率约为91.4%。使用 Python (可选):import scipy.stats as stats n = 10 p = 0.05 # 恰好 k=1 次成功的概率 prob_k1 = stats.binom.pmf(k=1, n=n, p=p) print(f"P(X=1) = {prob_k1:.4f}") # 输出:P(X=1) = 0.3151 # 至多 k=1 次成功的概率(使用累积分布函数 - CDF) prob_k_le_1 = stats.binom.cdf(k=1, n=n, p=p) print(f"P(X<=1) = {prob_k_le_1:.4f}") # 输出:P(X<=1) = 0.9139 # 注意:与手动计算结果略有差异,因为手动计算有舍入练习 3:处理正态分布假设标准化考试的成绩服从正态分布,平均值($\mu$)为1000,标准差($\sigma$)为150。设 $X$ 为随机选择的学生的分数。学生得分低于850的概率是多少 ($P(X < 850)$)?学生得分在900到1100之间的概率是多少 ($P(900 < X < 1100)$)?解决方法:对于正态分布,我们通过计算概率密度函数 (PDF) 曲线下的面积来获得概率。由于我们无法手动轻松积分 PDF,因此通常将分数 ($X$) 转换为标准分数 (Z分数),然后使用标准正态分布表或软件函数(如 SciPy 的 cdf)。Z分数告诉我们一个值距离平均值有多少个标准差:$$ Z = \frac{X - \mu}{\sigma} $$标准正态分布的 $\mu=0$ 且 $\sigma=1$。计算:得分低于850的概率 ($P(X < 850)$):将 $X = 850$ 转换为 Z分数: $Z = (850 - 1000) / 150 = -150 / 150 = -1.0$我们需要找到 $P(Z < -1.0)$。这对应于标准正态曲线中 $Z = -1.0$ 左侧的面积。使用标准正态分布表或 scipy.stats.norm.cdf( ),我们找到这个概率。$P(Z < -1.0) \approx 0.1587$ 因此,学生得分低于850的概率约为15.9%。得分在900到1100之间的概率 ($P(900 < X < 1100)$):将两个分数都转换为 Z分数:$Z_1 = (900 - 1000) / 150 = -100 / 150 \approx -0.67$$Z_2 = (1100 - 1000) / 150 = 100 / 150 \approx 0.67$我们需要 $P(-0.67 < Z < 0.67)$。这是标准正态曲线中 $Z = -0.67$ 和 $Z = 0.67$ 之间的面积。我们将其计算为 $P(Z < 0.67) - P(Z < -0.67)$。使用表格或软件:$P(Z < 0.67) \approx 0.7486$$P(Z < -0.67) \approx 0.2514$$P(900 < X < 1100) = P(-0.67 < Z < 0.67) \approx 0.7486 - 0.2514 = 0.4972$ 因此,学生得分在900到1100之间的概率约为49.7%。使用 Python (可选):import scipy.stats as stats mu = 1000 sigma = 150 # P(X < 850) prob_below_850 = stats.norm.cdf(x=850, loc=mu, scale=sigma) print(f"P(X < 850) = {prob_below_850:.4f}") # 输出:P(X < 850) = 0.1587 # P(900 < X < 1100) = P(X < 1100) - P(X < 900) prob_below_1100 = stats.norm.cdf(x=1100, loc=mu, scale=sigma) prob_below_900 = stats.norm.cdf(x=900, loc=mu, scale=sigma) prob_between = prob_below_1100 - prob_below_900 print(f"P(900 < X < 1100) = {prob_between:.4f}") # 输出:P(900 < X < 1100) = 0.4950 # 注意:与SciPy中更精确的Z分数计算结果略有差异以下是表示 $P(900 < X < 1100)$ 区域的可视化:{ "layout": { "xaxis": { "range": [550, 1450], "title": "考试分数 (X)" }, "yaxis": { "range": [0, 0.003], "title": "概率密度" }, "title": "正态分布 (\u03bc=1000, \u03c3=150)", "shapes": [ { "type": "path", "path": " M900,0 L900,0.002109 M905,0.002163 M910,0.002215 M915,0.002266 M920,0.002315 M925,0.002362 M930,0.002407 M935,0.002449 M940,0.002489 M945,0.002526 M950,0.002560 M955,0.002591 M960,0.002619 M965,0.002644 M970,0.002665 M975,0.002683 M980,0.002697 M985,0.002707 M990,0.002713 M995,0.002715 M1000,0.00271 M1005,0.002715 M1010,0.002713 M1015,0.002707 M1020,0.002697 M1025,0.002683 M1030,0.002665 M1035,0.002644 M1040,0.002619 M1045,0.002591 M1050,0.002560 M1055,0.002526 M1060,0.002489 M1065,0.002449 M1070,0.002407 M1075,0.002362 M1080,0.002315 M1085,0.002266 M1090,0.002215 M1095,0.002163 M1100,0.002109 L1100,0 Z", "fillcolor": "rgba(64, 192, 87, 0.5)", "line": { "width": 0 } } ] }, "data": [ { "x": [550, 600, 650, 700, 750, 800, 850, 900, 950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400, 1450], "y": [9.8e-05, 0.00026, 0.00058, 0.00108, 0.00169, 0.00221, 0.00258, 0.0028, 0.00289, 0.00291, 0.00289, 0.0028, 0.00258, 0.00221, 0.00169, 0.00108, 0.00058, 0.00026, 9.8e-05], "mode": "lines", "line": { "color": "#228be6" }, "name": "正态PDF" } ] }阴影区域表示正态分布($\mu=1000$ 和 $\sigma=150$)的概率 $P(900 < X < 1100)$。练习 4:从分布中抽样如前所述,我们可以使用 NumPy 等 Python 库生成遵循特定概率分布的随机样本。这对于模拟以及了解数据中预期的规律很有用。从平均值 $\mu = 50$ 和标准差 $\sigma = 5$ 的正态分布中生成1000个随机样本。从 $n = 20$ 次试验、成功概率 $p = 0.7$ 的二项分布中生成1000个随机样本。如果您要为步骤1中生成的样本创建直方图,您预计它会是什么形状?步骤2中的样本又会怎样?Python 实现:import numpy as np import matplotlib.pyplot as plt # 可选:用于可视化 # 1. 正态分布样本 mu = 50 sigma = 5 normal_samples = np.random.normal(loc=mu, scale=sigma, size=1000) # 打印“前10个正态样本:”,normal_samples[:10] # 2. 二项分布样本 n = 20 p = 0.7 binomial_samples = np.random.binomial(n=n, p=p, size=1000) # 打印“前10个二项样本:”,binomial_samples[:10] # 可选:可视化直方图 plt.figure(figsize=(12, 5)) plt.subplot(1, 2, 1) # 1行,2列,图1 plt.hist(normal_samples, bins=30, density=True, color='#74c0fc', alpha=0.7) plt.title('正态样本直方图 (\u03bc=50, \u03c3=5)') plt.xlabel('数值') plt.ylabel('密度') plt.subplot(1, 2, 2) # 1行,2列,图2 # 计算离散值的 bin 边界 bins = np.arange(binomial_samples.min(), binomial_samples.max() + 2) - 0.5 plt.hist(binomial_samples, bins=bins, density=True, color='#f783ac', alpha=0.7) plt.title('二项样本直方图 (n=20, p=0.7)') plt.xlabel('成功次数') plt.ylabel('概率') plt.tight_layout() # plt.show() # 如在本地运行,取消注释以显示图表答案:正态样本直方图: 您会预期正态样本的直方图大致呈钟形,以平均值 $\mu = 50$ 为中心。直方图的分布会反映标准差 $\sigma = 5$。拥有1000个样本,它应该很好地近似于理论正态 PDF。二项样本直方图: 您会预期二项样本的直方图会显示成功次数的分布。由于 $p=0.7$ 大于0.5,直方图可能会略微向左倾斜,峰值(最常出现的结果)在 $n \times p = 20 \times 0.7 = 14$ 次成功附近。这将是一个离散直方图,条形只出现在0到20之间的整数值上。这些练习为使用概率分布提供了一个起点。当您在机器学习中遇到更复杂的情景时,您会发现理解这些基本的分布、它们的属性以及如何进行计算是很有用的。