首页 > Python资料 博客日记
NumPy 二项分布生成与 Seaborn 可视化技巧
2024-05-27 21:00:02Python资料围观165次
本篇文章分享NumPy 二项分布生成与 Seaborn 可视化技巧,对你有帮助的话记得收藏一下,看Python资料网收获更多编程知识
二项分布
简介
二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件“成功”的次数的概率分布。它通常用于分析诸如抛硬币、做选择题等具有两个结果(成功或失败)的事件。
参数
二项分布用三个参数来定义:
n:试验次数,表示重复相同实验的次数。
p:每次试验中成功事件发生的概率。
k:成功事件发生的次数,范围为 0 到 n。
公式
二项分布的概率质量函数 (PMF) 给出了在 n 次试验中恰好获得 k 次成功的概率,计算公式为:
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 的事件的成功次数:
import numpy as np
data = np.random.binomial(n=10, p=0.5, size=10)
print(data)
可视化二项分布
Seaborn 库提供了便捷的函数来可视化分布,包括二项分布。
示例:绘制 100 次试验中,每次成功概率为 0.6 的事件的成功次数分布:
import seaborn as sns
import numpy as np
data = np.random.binomial(n=100, p=0.6, size=1000)
sns.distplot(data)
plt.show()
正态分布与二项分布的关系
当试验次数 n 很大,成功概率 p 接近 0.5 时,二项分布可以近似为正态分布。其均值 μ 为 np,标准差 σ 为 sqrt(np(1 - p))。
示例:比较二项分布和正态分布的形状:
import seaborn as sns
import numpy as np
n = 100
p = 0.5
# 生成二项分布数据
data_binomial = np.random.binomial(n=n, p=p, size=1000)
# 生成正态分布数据
mu = n p
sigma = np.sqrt(n p (1 - p))
data_normal = np.random.normal(loc=mu, scale=sigma, size=1000)
sns.distplot(data_binomial, label="Binomial")
sns.distplot(data_normal, label="Normal")
plt.legend()
plt.show()
练习
- 在 50 次试验中,每次成功概率为 0.2 的事件,模拟成功次数并绘制分布图。
- 比较不同试验次数下二项分布形状的变化。
- 利用二项分布来模拟一次 10 道选择题的考试,每题答对的概率为 0.7,并计算平均分和及格率(60 分及格)。
解决方案
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
# 1. 模拟成功次数并绘制分布图
data = np.random.binomial(n=50, p=0.2, size=1000)
sns.distplot(data)
plt.show()
# 2. 比较不同试验次数下二项分布形状的变化
n_values = [10, 50, 100, 500]
for n in n_values:
data = np.random.binomial(n=n, p=0.5, size=1000)
sns.distplot(data, label=f"n={n}")
plt.legend()
plt.show()
# 3. 模拟考试成绩并计算平均分和及格率
scores
最后
为了方便其他设备和平台的小伙伴观看往期文章:
微信公众号搜索:Let us Coding
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- Python鼠标轨迹算法(游戏防检测)
- 基于Python的美食推荐系统的设计与实现-附源码29124
- python除了熟悉的pandas,openpyxl库也很方便的读取Excel表内容
- Python中的venv虚拟环境详解
- No Python at ‘C:\Users\MI\AppData\Local\Programs\Python\Python39\python.exe‘
- 【30天玩转python】自动化与脚本编写
- Python五大主要用途+零基础基础入门全攻略_python编程有什么用
- 华为OD机试E卷 --羊、狼、农夫过河--24年OD统一考试(Java & JS & Python & C & C++)
- Python总体架构介绍
- Python里cv2是什么包?怎么安装使用?
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Anaconda版本和Python版本对应关系(持续更新...)
- Python与PyTorch的版本对应
- Windows上安装 Python 环境并配置环境变量 (超详细教程)
- Python pyinstaller打包exe最完整教程