翼度科技»论坛 编程开发 python 查看内容

NumPy 二项分布生成与 Seaborn 可视化技巧

6

主题

6

帖子

18

积分

新手上路

Rank: 1

积分
18
二项分布

简介

二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件“成功”的次数的概率分布。它通常用于分析诸如抛硬币、做选择题等具有两个结果(成功或失败)的事件。
参数

二项分布用三个参数来定义:
n:试验次数,表示重复相同实验的次数。
p:每次试验中成功事件发生的概率。
k:成功事件发生的次数,范围为 0 到 n。
公式

二项分布的概率质量函数 (PMF) 给出了在 n 次试验中恰好获得 k 次成功的概率,计算公式为:
  1. P(k) = C(n, k) p^k (1 - p)^(n - k)
复制代码
其中:
C(n, k) 是组合数,表示从 n 个元素中选取 k 个元素的方案数。
p^k 表示 k 次成功的概率。
(1 - p)^(n - k) 表示 n - k 次失败的概率。
生成二项分布数据

NumPy 提供了 random.binomial() 函数来生成服从二项分布的随机数。该函数接受以下参数:
n:试验次数。
p:每次试验中成功事件发生的概率。
size:输出数组的形状。
示例:生成 10 次试验中,每次成功概率为 0.5 的事件的成功次数:
  1. import numpy as np
  2. data = np.random.binomial(n=10, p=0.5, size=10)
  3. print(data)
复制代码
可视化二项分布

Seaborn 库提供了便捷的函数来可视化分布,包括二项分布。
示例:绘制 100 次试验中,每次成功概率为 0.6 的事件的成功次数分布:
  1. import seaborn as sns
  2. import numpy as np
  3. data = np.random.binomial(n=100, p=0.6, size=1000)
  4. sns.distplot(data)
  5. plt.show()
复制代码
正态分布与二项分布的关系

当试验次数 n 很大,成功概率 p 接近 0.5 时,二项分布可以近似为正态分布。其均值 μ 为 np,标准差 σ 为 sqrt(np(1 - p))。
示例:比较二项分布和正态分布的形状:
  1. import seaborn as sns
  2. import numpy as np
  3. n = 100
  4. p = 0.5
  5. # 生成二项分布数据
  6. data_binomial = np.random.binomial(n=n, p=p, size=1000)
  7. # 生成正态分布数据
  8. mu = n p
  9. sigma = np.sqrt(n p (1 - p))
  10. data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)
  11. sns.distplot(data_binomial, label="Binomial")
  12. sns.distplot(data_normal, label="Normal")
  13. plt.legend()
  14. plt.show()
复制代码
练习


  • 在 50 次试验中,每次成功概率为 0.2 的事件,模拟成功次数并绘制分布图。
  • 比较不同试验次数下二项分布形状的变化。
  • 利用二项分布来模拟一次 10 道选择题的考试,每题答对的概率为 0.7,并计算平均分和及格率(60 分及格)。
解决方案
  1. import seaborn as sns
  2. import numpy as np
  3. import matplotlib.pyplot as plt
  4. # 1. 模拟成功次数并绘制分布图
  5. data = np.random.binomial(n=50, p=0.2, size=1000)
  6. sns.distplot(data)
  7. plt.show()
  8. # 2. 比较不同试验次数下二项分布形状的变化
  9. n_values = [10, 50, 100, 500]
  10. for n in n_values:
  11.     data = np.random.binomial(n=n, p=0.5, size=1000)
  12.     sns.distplot(data, label=f"n={n}")
  13. plt.legend()
  14. plt.show()
  15. # 3. 模拟考试成绩并计算平均分和及格率
  16. scores
复制代码
最后

为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注

来源:https://www.cnblogs.com/xiaowange/p/18216487
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具