多项分布模拟及 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

相关文章

Ubuntu固定虚拟机ip地址的方法教程

《Ubuntu固定虚拟机ip地址的方法教程》本文详细介绍了如何在Ubuntu虚拟机中固定IP地址,包括检查和编辑`/etc/apt/sources.list`文件、更新网络配置文件以及使用Networ... 1、由于虚拟机网络是桥接,所以ip地址会不停地变化,接下来我们就讲述ip如何固定 2、如果apt安

PyCharm 接入 DeepSeek最新完整教程

《PyCharm接入DeepSeek最新完整教程》文章介绍了DeepSeek-V3模型的性能提升以及如何在PyCharm中接入和使用DeepSeek进行代码开发,本文通过图文并茂的形式给大家介绍的... 目录DeepSeek-V3效果演示创建API Key在PyCharm中下载Continue插件配置Con

Deepseek R1模型本地化部署+API接口调用详细教程(释放AI生产力)

《DeepseekR1模型本地化部署+API接口调用详细教程(释放AI生产力)》本文介绍了本地部署DeepSeekR1模型和通过API调用将其集成到VSCode中的过程,作者详细步骤展示了如何下载和... 目录前言一、deepseek R1模型与chatGPT o1系列模型对比二、本地部署步骤1.安装oll

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

Spring Boot整合log4j2日志配置的详细教程

《SpringBoot整合log4j2日志配置的详细教程》:本文主要介绍SpringBoot项目中整合Log4j2日志框架的步骤和配置,包括常用日志框架的比较、配置参数介绍、Log4j2配置详解... 目录前言一、常用日志框架二、配置参数介绍1. 日志级别2. 输出形式3. 日志格式3.1 PatternL

MySQL8.2.0安装教程分享

《MySQL8.2.0安装教程分享》这篇文章详细介绍了如何在Windows系统上安装MySQL数据库软件,包括下载、安装、配置和设置环境变量的步骤... 目录mysql的安装图文1.python访问网址2javascript.点击3.进入Downloads向下滑动4.选择Community Server5.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

本地私有化部署DeepSeek模型的详细教程

《本地私有化部署DeepSeek模型的详细教程》DeepSeek模型是一种强大的语言模型,本地私有化部署可以让用户在自己的环境中安全、高效地使用该模型,避免数据传输到外部带来的安全风险,同时也能根据自... 目录一、引言二、环境准备(一)硬件要求(二)软件要求(三)创建虚拟环境三、安装依赖库四、获取 Dee

MySql9.1.0安装详细教程(最新推荐)

《MySql9.1.0安装详细教程(最新推荐)》MySQL是一个流行的关系型数据库管理系统,支持多线程和多种数据库连接途径,能够处理上千万条记录的大型数据库,本文介绍MySql9.1.0安装详细教程,... 目录mysql介绍:一、下载 Mysql 安装文件二、Mysql 安装教程三、环境配置1.右击此电脑

在idea中使用mysql数据库超详细教程

《在idea中使用mysql数据库超详细教程》:本文主要介绍如何在IntelliJIDEA中连接MySQL数据库,并使用控制台执行SQL语句,还详细讲解了如何使用MyBatisGenerator快... 目录一、连接mysql二、使用mysql三、快速生成实体、接口、sql文件总结一、连接mysql在ID