多项分布模拟及 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,关注后即可获取最新文章推送

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/21834.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx的Location匹配与Rewrite重写

目录 一.Nginx中location与rewrite 1.Nginx中常用正则表达式 2.location与rewrite的联系和区别 二.location概述 1.分类 2.匹配规则 3.优先级 4.示例 三.rewrite概述 1.rewrite功能 2.rewrite执行顺序 3.跳转实现 4.语法格式 5.示例 5.1.基于域名的跳转 5.2.基…

四、利用启发式算法进行特定数据集的残差网络结构搜索【框架+源码】

背景:工作之后干的事情跟算法关联甚少,整理下读书期间的负责和参与的work,再熟悉学习下。 边熟悉边整理喽~ CV Tradictional workCV AI based work机械臂视觉抓取项目机器学习全流程 Pipeline训练平台OCR生产线喷码识别三维重建(SfM)ROS机器人…

C++的vector使用优化

我们在上一章说了如何使用这个vector动态数组,这章我们说说如何更好的使用它以及它是如何工作的。当你创建一个vector,然后使用push_back添加元素,当当前的vector的内存不够时,会从内存中的旧位置复制到内存中的新位置&#xff0c…

Spring 之 Lifecycle 及 SmartLifecycle

最近在看Eureka源码,本想快速解决这场没有硝烟的战役,不曾想阻塞性问题一个接一个。为正确理解这个框架,我不得不耐着性子,慢慢梳理这些让人困惑的点。譬如本章要梳理的Lifecycle和SmartLifecycle。它们均为接口,其中后…

mysql的锁(全局锁)

文章目录 mysql按照锁的粒度分类全局锁概念:全局锁使用场景:全局锁备份案例: mysql按照锁的粒度分类 全局锁 概念: 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是: Flush tables with…

java —— 文件的创建、删除、查询和重命名

文件的相关操作通过 File 类并引入路径来实现,这里对文件的操作只是对文件本身的增、删、查等,不包括对文件内容的修改。 一、创建文件/文件夹 public static void main(String[] args) {//创建文件File file1new File("D:\\android\\test\\a.jpg…

vue封装url验证方法

vue封装url验证方法 在 Vue 中,你可以封装一个 URL 验证的方法来验证给定的 URL 是否有效。以下是一个示例代码: export const validateUrl (url) > {const regex /^(https?:\/\/)?([\da-z.-])\.([a-z.]{2,6})([/\w .-]*)*/;return regex.test(…

排序算法——归并排序以及非递归实现

一、归并排序思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列…

OkHttp,一个贼牛的Java工具包

在当今的网络应用开发中,Java 作为一种成熟的编程语言,广泛应用于服务器端和客户端的开发。网络请求作为应用开发中不可或缺的一部分,选择一个高效、稳定的网络库尤为重要。OkHttp 就是这样一款优秀的网络库,它为Java提供了简单易用、功能强大的网络请求能力。本文将向读者…

关于编译的一些思路和猜想

一、编译原理的难度 编译原理特别复杂,研究的是高级语言如何翻译成汇编语言的过程。 二、编译过程中一些思路 (一)语义识别的作用 语义识别指的是把一些无关字符忽略,把一些变量名保存在一起,把用空格隔开的关键字单独放一起。 例如&#…

重新ysyx

一、克隆仓库 1.创建ssh key ssh-keygen -t rsa cd ~/.ssh ls 查看里面是否有id_rsa id_rsa.pub ssh-keygen -t rsa -C "xiantong15834753336outlook.com" cat id_rsa.pub***********查看里面的内容,复制到下图中绿色的按钮 git init ssh -T g…

spark3.0.1版本查询Hbase数据库例子

需求背景 现有需求,需要采用spark查询hbase数据库的数据同步到中间分析库,记录spark集成hbase的简单例子代码 import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan} import org.apach…

Marin说PCB之Max parallel知多少?

今天是个阳光明媚,万里乌云的好日子。小编我一如既往地到家打开电脑准备看腾讯视频的五十公里桃花坞的第四季,在看到汪苏泷汪台说650电台要解散的时候小编我差点也哭了。650电台之于桃花坞就像乐队的鼓手一样,都是一个团队的灵感啊&#xff0…

CSS中的长度单位详解

在CSS中,长度单位是定义元素尺寸、间距、边距等的重要工具。不同的长度单位具有不同的特性和使用场景。 绝对长度单位 绝对长度单位在所有设备和浏览器中表示相同的长度。这些单位包括: 1.像素(px) 像素是最常用的长度单位。一…

C语言分支和循环(2)

我的相关博客: C语言的分支与循环(1) 1.switch语句 除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。 switch 语句是⼀种特殊形式的 的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重 else if…

非质量成本总结

非质量成本 非质量成本 定义 举例 固定成本 不随生产量或工作量变动而变动的成本 办公室租赁费 可变成本 随着生产量或工作变动而变动的成本 材料费 直接成本 可以直接计入某项目的成本 工人工资 间接成本 不能直接计入某项目而需要再几个项目之间或在项目与职能部…

Linux基本指令3

Linux基本指令3 目录 Linux基本指令3 一、Linux文件系统管理 二、Linux进程与服务管理

亿发:制造型企业信息化规划——从破冰到全面落地

在制造型企业中,信息化规划的落地是一个复杂而关键的过程。尽管规划和蓝图可能已经制定完毕,但如何成功地实施信息化才是关键所在。本文将详细介绍制造型企业信息化规划的落地过程,通过三个周期逐步推进,最终实现信息化与自动化的…

深度学习知识与心得

目录 深度学习简介 传统机器学习 深度学习发展 感知机 前馈神经网络 前馈神经网络(BP网络) 深度学习框架讲解 深度学习框架 TensorFlow 一个简单的线性函数拟合过程 卷积神经网络CNN(计算机视觉) 自然语言处理NLP Wo…

OpenAI助手API接入-问答对自动生成

支持GPT-3.5-Turbo, GPT-4o, GPT-4-Turbo import json import openai from pathlib import Path import os client openai.OpenAI(base_urlbase_url, api_keyapi_key) file client.files.create( fileopen("H3.pdf", "rb"), purposeassistants ) …