贝叶斯-概率

起点:玩猜硬币游戏中发现贝叶斯定理貌似有很强的预测功能,细看还真有那么回事,因此研究研究。当然,看起来学精后不止可用来猜硬币,也可猜其它玩艺。

贝叶斯统计的基础是贝叶斯定理,贝叶斯定理的基础是条件概率

例子1:综合社会调查的数据展示:

import pandas as pd

gss = pd.read_csv('gss_bayes.csv')
gss.head()

展示结果:

列说明:

  • caseid:受访者标识符。

  • year:受访者接受调查的年份。

  • age:受访者接受调查时的年龄。

  • sex: 男女不限。

  • polviews:政治观点范围从自由主义到保守主义。

  • partyid:政治党派,民主党、独立党或共和党。

  • indus10:受访者所在行业代码

假设indus10列银行家的代码为6870,则

True表达的为银行家

该数据集中有728位银行家

银行家的比例可以banker.mean() = 0.014769730168391155

大约 1.5% 的受访者在银行工作,因此如果我们从数据集中随机选择一个人,他们是银行家的概率约为 1.5%。至此,以数据集引出概率

概率函数

def prob(A):
    """Computes the probability of a proposition, A."""    
    return A.mean()

计算银行家的比例:

prob(banker)=0.014769730168391155

计算受访者为女姓的比例为:

female = (gss['sex'] == 2)
prob(female)=0.5378575776019476

政治观点和政党

polviews字段表示政治观点,分七级,从1至7分别从极度自由派到极度保守派

partyid字段表示党派,分八级,从0至7分别表示不同党派

我将把它定义liberalTrue针对任何回答为“极端自由”、“自由”或“略微自由”的人。

liberal = (gss['polviews'] <= 3)

根据这一定义,以下是自由派受访者的比例。

prob(liberal)=0.27374721038750255

表达的意思是如果我们在这个数据集中随机选择一个人,他们是自由主义者的概率约为27%

democrat = (gss['partyid'] <= 1)定义为强势民主党的受访者

按照这一定义,以下是受访者中民主党人的比例

prob(democrat)=0.3662609048488537

连词

“合取”是逻辑and运算的另一个名称,如果有两个命题,A和B,则合取就是如果两者都为True,则合取值为True,否则合取值为False

如果我们有两个布尔系列,我们可以使用&运算符来计算它们的合取。例如,我们已经计算了受访者是银行家的概率。

受访者是银行家的概率:prob(banker)=0.014769730168391155
受访者是民主党人的可能性为:prob(democrat)=0.3662609048488537

现在我们可以计算受访者是银行家且是民主党人的概率:

prob(banker & democrat)=0.004686548995739501

正如我们所预料的,小于任意一个,因为并非所有银行家都是民主党人,且很明显,合取是可交换的:prob(banker & democrat)=prob(democrat & banker )=0.004686548995739501

条件概率

条件概率是取决于条件的概率,但这可能不是最有用的定义。以下是一些示例:

  • 假设受访者是自由派,那么他们是民主党人的可能性有多大?

  • 假设受访者是银行家,那么其为女性的概率是多少?

  • 假设受访者是女性,那么其为自由派的可能性有多大?

让我们从第一个问题开始,我们可以这样解释:“在所有自由派受访者中,民主党人占比是多少?”

我们可以分两步计算这个概率:

  1. 选择所有自由派的受访者。

  2. 计算选定受访者中民主党人的比例。

为了选出自由派受访者,我们可以使用括号运算符,[]如下所示:

selected = democrat[liberal] # 此表达的意思是所有自由派为真先取出来,例如我们假设总记录有20条(实际记录有49290,这里为了理解容易,先用前20条记录计算),符合自由派的有3条,这3个自由派中有1条是民主党派,如下图所示:

在此数据中算出来的为:

prob(selected)=0.3333333333333333

封装成函数:

def conditional(proposition, given):
    """Probability of A conditioned on given."""
    return prob(proposition[given])

我们可以用它conditional来计算受访者为女性时,其为自由派的概率。

conditional(liberal, given=female)=0.27581004111500884

约28%的女性受访者持自由派立场

条件概率不具有交换性

我们已经看到,合取是可交换的;也就是说,总是等于。prob(A & B)prob(B & A)

但条件概率具有交换性;也就是说,与 不同。conditional(A, B)conditional(B, A)

如果我们看一个例子,这一点就应该很清楚了。之前,我们计算了受访者是女性的概率,假设她们是银行家。

conditional(female, given=banker) 
0.7706043956043956 

结果显示,大多数银行家都是女性。这与受访者是女性的情况下是银行家的概率不同:

conditional(banker, given=female) 
0.02116102749801969 

只有约2%的女性受访者是银行家。

概率定律

在接下来的几节中,我们将推导合取概率和条件概率之间的三种关系:

  • 定理 1:使用合取函数计算条件概率。

  • 定理 2:使用条件概率计算合取。

  • 定理3:利用计算。conditional(A, B)conditional(B, A)

定理 3 也称为贝叶斯定理。

我将使用概率的数学符号来写出这些定理:

  • P(A)是命题的概率A。

  • P(A and B)是A和B,即两者都为真的概率。

  • P(A|B)是条件概率A鉴于B是真的。垂直线之间的A和B发音为“given”。

这样,我们就可以为定理 1 做好准备了。

定理1:

女性银行家占比是多少?我们已经知道了计算答案的一种方法:

  1. 使用括号运算符选择银行家,然后

  2. 用于mean计算女性银行家的比例。

    female[banker].mean() = 0.7706043956043956或是
    conditional(female, given=banker)= 0.7706043956043956

另一种方法来计算这个条件概率,即计算两个概率的比率:

  1. 受访者中女性银行家的比例,以及

  2. 受访者中银行家所占比例。

换句话说:在所有银行家中,女性银行家占比是多少?我们是这样计算这个比例的。

prob(female & banker) / prob(banker) = 0.7706043956043956

公式如下:

P(A|B) = \frac{P(A \, and \, B)}{P(B)}, 这就是定理1

定理2:

将定理1的两国都乘以P(B),我们得到定理2.

P(A \, and \, B) = P(B) \,P(A|B)

这个公式提出了计算合取的第二种方法: 我们可以计算两个概率的乘积,而不是使用运算符&

例如:prob(liberal& democrat) = prob(democrat) * conditional(liberal, democrat)=

0.1425238385067965

定理3:

由于

P(A \, and \, B) = P(B \, and \, A)

将定理2代入,则有:

P(B) \,P(A|B) = P(A) \,P(B|A)

两边同时除以P(B),得到定理3:

P(A|B) = \frac{P(A)P(B|A)}{P(B)},这就是贝叶斯定理

示例:

conditional(liberal, given=banker)=0.2239010989010989
prob(liberal) * conditional(banker, liberal) / prob(banker)=0.2239010989010989

全概率定律:

P(A) = P(B1\, and \,A) + P(B2\, and \,A)

练习

  • 假设受访者是民主党人,那么他是自由派的可能性有多大?

方法1,取民主党人,判断其自由派的可能性

democrat是民主党序列, liberal是自由派,可用条件判断:

P(A|B)=conditional(A, given=B)

conditional(liberal, given=democrat)=0.1111111111111111

方法2P(A|B) = \frac{P(A \, and \,B)}{P(B)} 定理1

即prob(liberal & democrat)/prob(democrat)=0.1111111111111111

方法3,P(A|B) = \frac{P(A)P(B|A)}{P(B)} 定理3 贝叶斯定理

prob(liberal) * conditional(democrat, given=liberal)/prob(democrat)=0.1111111111111111

  • 假设受访者是自由派,那么他们是民主党人的可能性有多大?

同样也是三种方法,1 直接条件取值,2 通过转换为合取取值/P(B)的形式,3使用叶贝斯定理

方法1:conditional(democrat, given=liberal)=0.3333333333333333

方法2:prob(democrat & liberal)/prob(liberal)=0.33333333333333337

方法3:prob(democrat) *conditional(liberal, given=democrat)/prob(liberal)=0.3333333333333333

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息安全专业2025最新毕业设计选题汇总:课题精选

目录 前言 毕设选题 开题指导建议 更多精选选题 选题帮助 最后 前言 大家好,这里是海浪学长毕设专题! 大四是整个大学期间最忙碌的时光&#xff0c;一边要忙着准备考研、考公、考教资或者实习为毕业后面临的升学就业做准备,一边要为毕业设计耗费大量精力。学长给大家整理…

[LeetCode]day13 19.删除链表的倒数第n个结点

19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&a…

2024年终总结来了

忘记发CSDN的年度总结了&#xff0c;今天补上吧 说实话&#xff0c;今年过得不是特别好&#xff0c;感觉遇到了瓶颈&#xff0c;人生变得迷茫起来。不知道大家有没有同样的感受 刚毕业的时候人生充满了憧憬&#xff0c;慢慢的随着年龄变大后&#xff0c;就会觉得一事无成&…

Haproxy+keepalived高可用集群,haproxy宕机的解决方案

Haproxykeepalived高可用集群&#xff0c;允许keepalived宕机&#xff0c;允许后端真实服务器宕机&#xff0c;但是不允许haproxy宕机&#xff0c; 所以下面就是解决方案 keepalived配置高可用检测脚本 &#xff0c;master和backup都要添加 配置脚本 # vim /etc/keepalived…

树莓派pico入坑笔记,故障解决:请求 USB 设备描述符失败,故障码(43)

今天心血来潮&#xff0c;拿出吃灰的pico把玩一下&#xff0c;打开thonny&#xff0c;上电&#xff0c;然后...... 上电识别不到端口&#xff0c;windows报错&#xff0c;请求 USB 设备描述符失败&#xff0c;故障码&#xff08;43&#xff09; 一开始以为是坏了&#xff08;磕…

从Transformer到世界模型:AGI核心架构演进

文章目录 引言:架构革命推动AGI进化一、Transformer:重新定义序列建模1.1 注意力机制的革命性突破1.2 从NLP到跨模态演进1.3 规模扩展的黄金定律二、通向世界模型的关键跃迁2.1 从语言模型到认知架构2.2 世界模型的核心特征2.3 混合架构的突破三、构建世界模型的技术路径3.1 …

2025年01月25日Github流行趋势

项目名称&#xff1a;it-tools 项目地址url&#xff1a;https://github.com/CorentinTh/it-tools项目语言&#xff1a;Vue历史star数&#xff1a;25298今日star数&#xff1a;212项目维护者&#xff1a;CorentinTh, apps/renovate, cgoIT, sharevb, marvin-j97项目简介&#xf…

鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍

鸿蒙Harmony-双向数据绑定MVVM以及$$语法糖介绍 1.1 双向数据绑定概念 在鸿蒙&#xff08;HarmonyOS&#xff09;应用开发中&#xff0c;双向数据改变&#xff08;或双向数据绑定&#xff09;是一种让数据模型和UI组件之间保持同步的机制&#xff0c;当数据发生变化时&#x…

【DeepSeek背后的技术】系列二:大模型知识蒸馏(Knowledge Distillation)

目录 1 引言2 操作步骤和公式说明2.1 准备教师模型&#xff08;Teacher Model&#xff09;和学生模型&#xff08;Student Model&#xff09;2.2 生成软标签&#xff08;Soft Labels&#xff09;2.3 定义蒸馏损失函数2.4 训练学生模型2.5 调整超参数2.6 评估与部署 3 其他知识蒸…

【BUUCTF杂项题】后门查杀、webshell后门

前言&#xff1a;Webshell 本质上是一段可在 Web 服务器上执行的脚本代码&#xff0c;通常以文件形式存在于 Web 服务器的网站目录中。黑客通过利用 Web 应用程序的漏洞&#xff0c;如 SQL 注入、文件上传漏洞、命令执行漏洞等&#xff0c;将 Webshell 脚本上传到服务器&#x…

SPI(Serial Peripheral Interface)串行外围设备接口

SPI概述&#xff1a; SPI协议最初由Motorola公司&#xff08;现为NXP Semiconductors的一部分&#xff09;在20世纪80年代中期开发。最初是为了在其68000系列微控制器中实现高速、高效的串行通信。该协议旨在简化微控制器与外围设备之间的数据传输。 1980年代&#xff1a;SPI协…

深度学习 Pytorch 基础网络手动搭建与快速实现

为了方便后续练习的展开&#xff0c;我们尝试自己创建一个数据生成器&#xff0c;用于自主生成一些符合某些条件、具备某些特性的数据集。 导入相关的包 # 随机模块 import random# 绘图模块 import matplotlib as mpl import matplotlib.pyplot as plt# 导入numpy import nu…

10分钟快速上手DeepSeek!

DeepSeek 是一款基于命令行和配置文件的数据处理工具&#xff0c;支持多种数据格式&#xff08;如 CSV、JSON、SQL 等&#xff09;和多种数据源&#xff08;如本地文件、数据库、API 等&#xff09;。 它的核心功能包括&#xff1a; 数据导入与导出&#xff1a;支持从多种数据…

【现代深度学习技术】深度学习计算 | 延后初始化自定义层

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…

Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)

下面是我们的秒杀流程&#xff1a; 对于正常的秒杀处理&#xff0c;我们需要多次查询数据库&#xff0c;会给数据库造成相当大的压力&#xff0c;这个时候我们需要加入缓存&#xff0c;进而缓解数据库压力。 在上面的图示中&#xff0c;我们可以将一条流水线的任务拆成两条流水…

Rust HashMap :当储物袋遇上物品清单

开场白&#xff1a;哈希映射的魔法本质 在Rust的奇幻世界里&#xff0c;HashMap就像魔法师的储物袋&#xff1a; 键值对存储 → 每个物品都有专属咒语&#xff08;键&#xff09;和实体&#xff08;值&#xff09;快速查找 → 念咒瞬间召唤物品动态扩容 → 自动伸展的魔法空间…

LabVIEW的智能电源远程监控系统开发

在工业自动化与测试领域&#xff0c;电源设备的精准控制与远程管理是保障系统稳定运行的核心需求。传统电源管理依赖本地手动操作&#xff0c;存在响应滞后、参数调节效率低、无法实时监控等问题。通过集成工业物联网&#xff08;IIoT&#xff09;技术&#xff0c;实现电源设备…

C# Winform制作一个登录系统

using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 登录 {p…

尝试把clang-tidy集成到AWTK项目

前言 项目经过一段时间的耕耘终于进入了团队开发阶段&#xff0c;期间出现了很多问题&#xff0c;其中一个就是开会讨论团队的代码风格规范&#xff0c;目前项目代码风格比较混乱&#xff0c;有的模块是驼峰&#xff0c;有的模块是匈牙利&#xff0c;后面经过讨论&#xff0c;…

Docker技术相关学习三

一、Docker镜像仓库管理 1.docker仓库&#xff1a;用于存储和分发docker镜像的集中式存储库&#xff0c;开发者可以将自己创建的镜像推送到仓库中也可以从仓库中拉取所需要的镜像。 2.docker仓库&#xff1a; 公有仓库&#xff08;docker hub&#xff09;&#xff1a;任何人都可…