概率统计与随机过程--作业8

news2025/1/2 22:42:08
推导题
  1. 试给出图1中所有关于Z={e}与变量a条件独立的变量。

编程题
  1. 有一个美国医生使用Bayes网络诊断胸部疾病,其掌握的数据信息如图2所示,其中包括:
  1. 有50%的病人吸烟(smoking),1%患有肺结核(Tuberculosis),5.5% 得了肺癌(Lung Cancer),45% 患有不同程度支气管炎(Bronchitis)。
  2. 来诊病人有1%的概率去过亚洲。
  3. 各种行为之间的概率关系下:

要求:参照图2,使用Python语言和Pgmpy包编程,建立贝叶斯网络(BN)模型。若一个病人A去过亚洲,并且吸烟,推理其X光(XRay)结果异常的概率及其患感冒(Dyspnea)的概率。

图2 用于胸部诊断得Bayes网络

参考程序:

from pgmpy.models import BayesianModel
from pgmpy.models import BayesianNetwork
from pgmpy.factors.discrete import TabularCPD
# 需要安装pgmpys
# Defining the model structure. We can define the network by just passing a list of edges.

model = BayesianNetwork([('VA-Visit To Asia', 'T-Tuberculousis'), ('S-Smoking', 'L-Lung Cancer'), ('S-Smoking', 'B-Bronchitis'),('T-Tuberculousis', 'TC- Tuberculousis or Cancer'), ('L-Lung Cancer', 'TC- Tuberculousis or Cancer'),('TC- Tuberculousis or Cancer','X-XRay'),('TC- Tuberculousis or Cancer','D-Dyspnea'),('B-Bronchitis','D-Dyspnea')])

# Defining individual CPDs.
cpd_v = TabularCPD(variable='VA-Visit To Asia', variable_card=2, values=[[0.01], [0.99]])
cpd_s = TabularCPD(variable='S-Smoking', variable_card=2, values=[[0.5], [0.5]])

cpd_t = TabularCPD(variable='T-Tuberculousis', variable_card=2,
                   values=[[0.0104, 0.001],
                           [0.9896,0.999]],
                  evidence=['VA-Visit To Asia'],
                  evidence_card=[2])

cpd_l = TabularCPD(variable='L-Lung Cancer', variable_card=2,
                   values=[[0.055, 0.02],
                           [0.945, 0.98]],
                   evidence=['S-Smoking'],
                   evidence_card=[2])

cpd_b = TabularCPD(variable='B-Bronchitis', variable_card=2,
                   values=[[0.45, 0.30],
                           [0.55, 0.70]],
                   evidence=['S-Smoking'],
                   evidence_card=[2])

cpd_tc = TabularCPD(variable='TC- Tuberculousis or Cancer', variable_card=2,
                   values=[[0.0648,0.05,0.06, 0.02],
                           [0.9352, 0.95,0.94,0.98]],
                   evidence=['T-Tuberculousis','L-Lung Cancer'],
                   evidence_card=[2,2])


cpd_x = TabularCPD(variable='X-XRay', variable_card=2,
                   values=[[0.45, 0.60],
                           [0.55, 0.40]],
                   evidence=['TC- Tuberculousis or Cancer'],
                   evidence_card=[2])

cpd_d = TabularCPD(variable='D-Dyspnea', variable_card=2,
                   values=[[0.436,0.30,0.80, 0.65],
                           [0.564, 0.70,0.20,0.35]],
                   evidence=['TC- Tuberculousis or Cancer','B-Bronchitis'],
                   evidence_card=[2,2])


# Associating the CPDs with the network
model.add_cpds(cpd_v, cpd_s, cpd_t, cpd_l, cpd_b, cpd_tc,cpd_x,cpd_d)

# check_model checks for the network structure and CPDs and verifies that the CPDs are correctly
# defined and sum to 1.
print(model.check_model())

model.get_cpds()
print(cpd_d)
#获得T-Tuberculousis的基数
print(model.get_cardinality('T-Tuberculousis'))
#获取整个贝叶斯网络的局部依赖:
print(model.local_independencies(['VA-Visit To Asia', 'T-Tuberculousis', 'S-Smoking', 'L-Lung Cancer', 'B-Bronchitis','TC- Tuberculousis or Cancer','X-XRay']))
#推理后验概率
from pgmpy.inference import VariableElimination
infer = VariableElimination(model)
posterior_z = infer.query(['X-XRay'], evidence={'VA-Visit To Asia': 1, 'S-Smoking': 1})  #根据跟定条件推理门后有车得概率
print(posterior_z)
posterior_z = infer.query(['D-Dyspnea'], evidence={'VA-Visit To Asia': 1, 'S-Smoking': 1})  #根据跟定条件推理门后有车得概率
print(posterior_z)

程序输出:

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

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

相关文章

Java设计模式 —— 【结构型模式】享元模式(Flyweight Pattern) 详解

文章目录 概述结构案例实现优缺点及使用场景 概述 享元模式也叫蝇量模式:运用共享技术有效地支持大量细粒度的对象; 常用于系统底层开发,解决系统的性能问题。像数据库连接池,里面都是创建好的连接对象,在这些连接对象…

Linux实验报告7-文件管理

目录 一:实验目的 二:实验内容 (1)查看/etc/inittab文件的权限属性,并指出该文件的所有者以及文件所属组群。 (2)新建文件test,设置文件权限为r--r-----。 (3)新建文件test2,设系统中有用户study和用户组studygr…

机器学习DAY7: 特征工程和特征选择(数据预处理)(完)

本文通过特征提取、特征转换、特征选择三个过程介绍数据预处理方法,特征提取将原始数据转换为适合建模的特征,特征转换将数据进行变换以提高算法的准确性,特征选择用来删除无用的特征。 知识点 特征提取特征转换特征选择 本次实验的一些示…

AE Dressler CESAR 1312 Generator Model User Manual

AE Dressler CESAR 1312 Generator Model User Manual

科大讯飞超拟人合成python

1、进入自己的项目 复制APPID、APISecret、APIKey 2、添加好听发音人 复制参数 3、需要替换代码部分: 换自己喜欢的发声人的参数 4、完整代码: import _thread as thread import base64 import datetime import hashlib import hmac import json fro…

关于缓冲文件系统和文件控制块的介绍

缓冲文件系统 缓冲文件系统的定义与原理 应用程序是如何进行文件数据的访问的呢?由于系统对磁盘文件数据的存取速度与内存数据存取的速度不同,而且文件数据量较大,数据从磁盘读到内存或从内存写到磁盘不可能瞬间完成,所以为了提高…

Llama系列关键知识总结

系列文章目录 第一章:LoRA微调系列笔记 第二章:Llama系列关键知识总结 文章目录 系列文章目录Llama: Open and Efficient Foundation Language Models关键要点LLaMa模型架构:Llama2分组查询注意力 (GQA) Llama3关键信息 引用: Ll…

【已解决】Latex中高亮段内命令(如参考文献引用、图、表格)

速览:解决前后图片对比拟解决的问题问题描述Latex高亮的一般做法段内有命令时候的高亮报错 问题原因 解决方案——在导言区为 \cite 等命令“注册”解决方案简要描述详细解释其他情况 速览:解决前后图片对比 解决前: 解决后: …

【C语言】数组指针与指针数组

前言 前面的文章讲了指针的一些基本内容&#xff0c;这里我们来讲一下数组指针与指针数组&#xff0c;数组指针是指针运用的一个明显体现&#xff0c;准确来说是通过指针访问内存地址的具体体现 一、一维数组的指针 首先&#xff0c;我们先来看一段代码 #include <stdio…

30天面试打卡计划 2024-12-25 26 27 面试题

2024-12-25 面试题 后端 MySQL三层B树能存多少数据&#xff1f; B 树&#xff1a;一种特殊的多路平衡查找树&#xff0c;广泛应用于数据库索引中。它具有所有叶子节点都位于同一层且包含指向相邻叶子节点指针的特点&#xff0c;这使得范围查询更加高效。InnoDB&#xff1a;My…

嵌入式系统 第十一讲 Android操作系统(增加)

• 11.1 Android 操作系统介绍 • Android 是 Google 公司于2007 年11月发布的一款非常优秀的智能移 动平台操作系统。到2011 年第一季度Android 在全球的市场份额首 次超过Nokia的Symbian系统&#xff0c;跃居全球第一。 • Android系统最初由AndyRubin等人于2003年10月创建…

Three.js 字体

在 Three.js 中&#xff0c;我们可以通过 FontLoader 加载字体&#xff0c;并结合 TextGeometry 创建 3D 文本。加载字体是因为字体文件包含了字体的几何信息&#xff0c;例如字体的形状、大小、粗细等&#xff0c;而 TextGeometry 则是根据字体信息生成 3D 文本的几何体。 在…

机器人C++开源库The Robotics Library (RL)使用手册(三)

进入VS工程,我们先看看这些功能函数及其依赖库的分布关系: rl命名空间下,主要有八大模块。 搞定VS后将逐个拆解。 1、编译运行 根据报错提示,配置相应错误的库(根据每个人安装位置不同而不同,我的路径如下:) 编译所有,Release版本耗时大约10分钟。 以rlPlan运动…

【GUI-PyQt5】简介

1. 简介 GUI&#xff1a;带图形的用户接口程序&#xff0c;也就是桌面应用。 2. 分类 2.1 基本窗口控件 QMainWindowQwidgetQlabelQLineEdit菜单工具栏 2.2 高级组件 QTableViewQListView容器多线程 2.3 布局管理 QBoxLayoutQGridLayoutQFormLayout嵌套布局 2.4 信号与…

Mysql学习笔记之SQL-4

这篇文章开始介绍SQL语句的最后一个部分&#xff0c;DCL&#xff08;Data Control Language&#xff09;数据库控制语言。 1.简介 DCL英文全称是Data Control Language(数据控制语言)&#xff0c;用来管理数据库用户、控制数据库的访 问权限。 这一部分比较简单&#xff0c;主…

Chrome被360导航篡改了怎么改回来?

一、Chrome被360导航篡改了怎么改回来&#xff1f; 查看是否被360主页锁定&#xff0c;地址栏输入chrome://version&#xff0c;看命令行end后面&#xff08;蓝色部分&#xff09;&#xff0c;是否有https://hao.360.com/?srclm&lsn31c42a959f 修改步骤 第一步&#xff1a…

STM32-笔记18-呼吸灯

1、实验目的 使用定时器 4 通道 3 生成 PWM 波控制 LED1 &#xff0c;实现呼吸灯效果。 频率&#xff1a;2kHz&#xff0c;PSC71&#xff0c;ARR499 利用定时器溢出公式 周期等于频率的倒数。故Tout 1/2KHZ&#xff1b;Ft 72MHZ PSC71&#xff08;喜欢设置成Ft的倍数&…

内部类(2)

大家还&#xff0c;今天我们继续来学习内部类的知识&#xff0c;今天我们来看看其余几种内部类类型&#xff0c;那么话不多说 我们直接开始。 注&#xff1a;它是一个static的一个常量 一旦初始化就不能够进行修改了. 注:1.一般情况下我们定义常量的时候,会定成大写的: 2.a不…

Go Energy 跨平台框架 v2.5.1 发布

Energy 框架 是Go语言基于CEF 和 LCL 开发的跨平台 GUI 框架, 具体丰富的系统原生 UI 控件集, 丰富的 CEF 功能 API&#xff0c;简化且不失功能的 CEF 功能 API 使用。 特性&#xff1f; 特性描述跨平台支持 Windows, macOS, Linux简单Go语言的简单特性&#xff0c;使用简单…

欧科云链OKLink:比特币与以太坊“双重启动”将如何撬动市场?

近日&#xff0c;OKLink 与 137Labs 联合举办 X Space&#xff0c;围绕宏观经济环境、政策及机构投资的影响等话题&#xff0c;分享如何把握 Web3 中的潜在机会与辨别风险。OKG Research 首席研究员 Hedy、BuilderRocket Accelerator 研究合伙人 Vivienna、VC 分析员 Bunny、BU…