NumPy 二项分布生成与 Seaborn 可视化技巧
二项分布
简介
二项分布是一种离散概率分布,用于描述在固定次数的独立试验中,事件“成功”的次数的概率分布。它通常用于分析诸如抛硬币、做选择题等具有两个结果(成功或失败)的事件。
参数
二项分布用三个参数来定义:
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
,关注后即可获取最新文章推送
看完如果觉得有帮助,欢迎点赞、收藏、关注
NumPy 二项分布生成与 Seaborn 可视化技巧的更多相关文章
- Python - Seaborn可视化:图形个性化设置的几个小技巧
1 概述 在可视化过程中,经常会对默认的制图效果不满意,希望能个性化进行各种设置. 本文通过一个简单的示例,来介绍seaborn可视化过程中的个性化设置.包括常用的设置,如: 设置图表显示颜色 设置图 ...
- OMPL RRTConnet 生成路径和可视化
默认规划路径算法和RRTConnet路径规划算法生成路径 1. 源代码 #include <ompl/base/SpaceInformation.h> #include <ompl ...
- 数据可视化之powerBI技巧(二十三)Power BI可视化技巧,使用DAX自定义时间轴
按照自然日历来展现疫情数据时,是这样的效果, 由于各个国家的疫情爆发时间不一致,按自然日期坐标轴很难比较各个国家的蔓延速度. 如果各个国家都从蔓延日开始统计,展示之后每日的确诊人数,就是同样的时间轴 ...
- Numpy入门 - 生成数组
今天是Numpy入门系列教程第一讲,首先是安装Numpy: $ pip install numpy numpy是高性能科学计算和数据分析的基础包,本节主要介绍生成连续二维数组.随机二维数组和自定义二维 ...
- CNN超参数优化和可视化技巧详解
https://zhuanlan.zhihu.com/p/27905191 在深度学习中,有许多不同的深度网络结构,包括卷积神经网络(CNN或convnet).长短期记忆网络(LSTM)和生成对抗网络 ...
- numpy的生成网格矩阵 meshgrid()
numpy模块中的meshgrid函数用来生成网格矩阵,最简单的网格矩阵为二维矩阵 meshgrid函数可以接受 x1, x2,..., xn 等 n 个一维向量,生成 N-D 矩阵. 1 基本语法 ...
- numpy random 生成随机矩阵
import numpy as np np.random.rand(a, b): >>> np.random.rand(4,3) array([[ 0.06679473, 0.710 ...
- seaborn可视化特征的相关性
import seaborn as sn sn.heatmap(trainX.corr(),vmax=1,square=True)
- python/numpy/pandas数据操作知识与技巧
pandas针对dataframe各种操作技巧集合: filtering: 一般地,使用df.column > xx将会产生一个只有boolean值的series,以该series作为dataf ...
- numpy中生成随机矩阵并打印出矩阵的shape
from numpy import * c=zeros((4,5)) print c.shape print numpy.random.random((2,3))
随机推荐
- Python语言Numpy包之Meshgrid 函数
Meshgrid 函数的基本用法 在 Numpy 的官方文章里, meshgrid 函数的英文描述也显得文绉绉的,理解起来有些难度.可以这么理解, meshgrid 函数用两个坐标轴上的点在平面上画网 ...
- 基于HarmonyOS的HTTPS请求过程开发示例(ArkTS)
介绍 本篇Codelab基于网络模块以及Webview实现一次HTTPS请求,并对其过程进行抓包分析.效果如图所示: 相关概念 ● Webview:提供Web控制能力,Web组件提供网页显示能力. ...
- 【未测试】CentOS 6.5快速部署HTTP WEB服务器和FTP服务器
CentOS 6.5快速部署HTTP WEB服务器和FTP服务器 [题记]本文使用CentOS 6.5minimal快速搭建HTTP服务器和仅供授权用户登陆的FTP服务器.意在使用授权FTP用户通过登 ...
- redis 简单整理——哨兵简单介绍[二十八]
前言 简单介绍一下哨兵模式. 正文 Redis的主从复制模式下,一旦主节点由于故障不能提供服务,需要人 工将从节点晋升为主节点,同时还要通知应用方更新主节点地址,对于很多 应用场景这种故障处理的方式是 ...
- ActiveMQ c# 系列——实例(二)
前言 前面一章中介绍了activemq,并且呢安装了. 这一章就来看一下实例吧. 正文 我使用队列举例. 是这样子,队列是一对一的关系,比如说我生产了一条消息,那么只要有一个消费者消费完毕那么就算消费 ...
- 《C# in depth》第6章C#6.0中的更改(十四)——表达式体
表达式体成员是一种在C# 6及以上版本中引入的语法.它允许开发人员使用Lambda表达式来简化方法或属性的定义. 在使用表达式体成员时,可以将方法或属性的实现写在一个Lambda表达式中,然后直接返回 ...
- 力扣278(java&python)-第一个错误的版本(简单)
题目: 你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. 假设你有 n 个版本 ...
- 力扣636(java)-函数的独占时间(中等)
题目: 有一个 单线程 CPU 正在运行一个含有 n 道函数的程序.每道函数都有一个位于 0 和 n-1 之间的唯一标识符. 函数调用 存储在一个 调用栈 上 :当一个函数调用开始时,它的标识符将会 ...
- [FAQ] 如何从 svg 字符串创建 SVGElement
HTML 部分: <div style="display: none" id="svgCon"></div> JS 部分: cons ...
- [FAQ] Truffle Deployer 合约传参问题: Invalid number of parameters for "undefined". Got 0 expected 1!
在使用 `truffle migrate` 时,如果合约的构造函数需要传参,而部署脚本里没有传的时候,就会报这个错. 未传参时: const Migrations = artifacts.requir ...