多项分布模拟及 Seaborn 可视化教程

2024-06-04 05:28

本文主要是介绍多项分布模拟及 Seaborn 可视化教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

多项分布

简介

多项分布是二项分布的推广,它描述了在 n 次独立试验中,k 种不同事件分别出现次数的离散概率分布。与二项分布只能有两种结果(例如成功/失败)不同,多项分布可以有 k 种(k ≥ 2)及以上的不同结果。

参数

多项分布用三个参数来定义:

n:试验次数,表示重复相同实验的次数。
pvals:一个长度为 k 的列表,其中每个元素表示对应结果出现的概率。pvals 的元素之和必须为 1。
size:输出数组的形状。

公式

多项分布的概率质量函数 (PMF) 给出了在 n 次试验中,k 种结果分别出现 k1、k2、…、kk 次的概率,计算公式为:

P(k1, k2, ..., kk) = n! / (k1! * k2! * ... * kk!) * (p1 ^ k1) * (p2 ^ k2) * ... * (pk ^ kk)

其中:

P(k1, k2, ..., kk):表示 k 种结果分别出现 k1、k2、…、kk 次的概率。
n!:n 的阶乘,即 n × (n - 1) × (n - 2) × … × 2 × 1。
k1!k2!、…、kk!:k1、k2、…、kk 的阶乘,分别表示对应结果出现的次数的阶乘。
p1p2、…、pk:对应结果出现的概率,分别为 pvals 列表中的元素。

生成多项分布数据

NumPy 提供了 random.multinomial() 函数来生成服从多项分布的随机数。该函数接受以下参数:

n:试验次数。
pvals:结果的概率列表。
size:输出数组的形状。

示例:生成掷骰子 10 次的结果,其中每个结果出现的概率相等:

import numpy as npdata = np.random.multinomial(n=10, pvals=[1/6] 6, size=1000)
print(data)

可视化多项分布

由于多项分布可以表示多种结果的出现次数,因此其可视化方式通常取决于结果的个数和想要展示的信息。

条形图:如果结果个数较少,可以使用条形图来直观地显示每个结果出现的次数。
堆积条形图:如果结果个数较多,可以使用堆积条形图来显示不同试验次数下每个结果出现的次数分布。
折线图:如果需要比较不同试验次数下每个结果出现的概率分布,可以使用折线图来绘制每个结果出现的概率随试验次数的变化情况。

练习

  1. 模拟 100 次掷骰子的结果,并绘制每个结果出现的次数分布图。
  2. 比较不同试验次数下掷骰子结果的分布变化。
  3. 模拟一个具有 3 种结果的抽奖活动,每个结果出现的概率分别为 1/3、1/2 和 1/6,并计算每种结果出现 1 次的概率。

解决方案

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt# 1. 模拟掷骰子结果并绘制分布图
data = np.random.multinomial(n=10, pvals=[1/6] 6, size=1000)
result_counts = data.sum(axis=0)  # 计算每个结果出现的总次数
sns.barplot(x=np.arange(len(result_counts)), y=result_counts)
plt.xlabel("Result")
plt.ylabel("Count")
plt.title("Distribution of Dice Rolls (1000 trials)")
plt.show()# 2. 比较不同试验次数下分布变化
n_values = [10, 50, 100, 500]
for n in n_values:data = np.random.multinomial(n=n, pvals=[1/6] 6, size=1000)result_counts = data.sum(axis=0)sns.barplot(x=np.arange(len))

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎点赞、收藏、关注

这篇关于多项分布模拟及 Seaborn 可视化教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029180

相关文章

ubuntu20.0.4系统中安装Anaconda的超详细图文教程

《ubuntu20.0.4系统中安装Anaconda的超详细图文教程》:本文主要介绍了在Ubuntu系统中如何下载和安装Anaconda,提供了两种方法,详细内容请阅读本文,希望能对你有所帮助... 本文介绍了在Ubuntu系统中如何下载和安装Anaconda。提供了两种方法,包括通过网页手动下载和使用wg

如何在Ubuntu上安装NVIDIA显卡驱动? Ubuntu安装英伟达显卡驱动教程

《如何在Ubuntu上安装NVIDIA显卡驱动?Ubuntu安装英伟达显卡驱动教程》Windows系统不同,Linux系统通常不会自动安装专有显卡驱动,今天我们就来看看Ubuntu系统安装英伟达显卡... 对于使用NVIDIA显卡的Ubuntu用户来说,正确安装显卡驱动是获得最佳图形性能的关键。与Windo

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

Pandas中统计汇总可视化函数plot()的使用

《Pandas中统计汇总可视化函数plot()的使用》Pandas提供了许多强大的数据处理和分析功能,其中plot()函数就是其可视化功能的一个重要组成部分,本文主要介绍了Pandas中统计汇总可视化... 目录一、plot()函数简介二、plot()函数的基本用法三、plot()函数的参数详解四、使用pl

springboot使用Scheduling实现动态增删启停定时任务教程

《springboot使用Scheduling实现动态增删启停定时任务教程》:本文主要介绍springboot使用Scheduling实现动态增删启停定时任务教程,具有很好的参考价值,希望对大家有... 目录1、配置定时任务需要的线程池2、创建ScheduledFuture的包装类3、注册定时任务,增加、删

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Python 交互式可视化的利器Bokeh的使用

《Python交互式可视化的利器Bokeh的使用》Bokeh是一个专注于Web端交互式数据可视化的Python库,本文主要介绍了Python交互式可视化的利器Bokeh的使用,具有一定的参考价值,感... 目录1. Bokeh 简介1.1 为什么选择 Bokeh1.2 安装与环境配置2. Bokeh 基础2

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注