Python | R | MATLAB群体消息和遗传病筛选多元统计模型

🎯要点

🎯概率分布结构模型:有向无环图模型结构、部分有向无环图、动态贝叶斯网络、结构方程模型、广义噪声或模型、连接树、聚类图、因子图、马尔可夫链 | 🎯多类分类模型:朴素贝叶斯分类器、求和朴素贝叶斯分类器、高斯朴素贝叶斯分类器、树增强贝叶斯分类器、贝叶斯网络增强贝叶斯分类器、半朴素贝叶斯分类器 | 🎯多维分类模型:贝叶斯链分类器 | 🎯分层分类模型:贝叶斯网络和链式分类器的分层分类器。🎯隐马尔可夫模型 | 🎯马尔可夫随机场模型 | 🎯贝叶斯网络模型:学习树、学习有向无环图 | 🎯马尔可夫决策过程模型。

🎯结构化概率模型:Python问题决策影响图结构化概率模型 | 🎯多元统计模型:群体消息传播、遗传病筛选、知识工程、医疗处理决策。

🍇Python概率图图像去噪

估计贝叶斯网络条件概率分布表中的数字只是计算该事件在我们的训练数据中发生的次数。 也就是说,为了估计 p(SAT=s1 | Intelligence = i1),我们只需计算 SAT=s1 且 Intelligence = i1 的数据点在 Intelligence = i1 的总数据点中所占的比例。 虽然这种方法可能看起来是临时的,但事实证明,如此获得的参数最大化了观察到的数据的可能性。

但是,对于马尔可夫网络,上述计数方法没有统计依据(因此将导致参数次优)。 因此,我们需要使用更复杂的技术。 大多数这些技术背后的基本思想是梯度下降 - 我们定义描述概率分布的参数,然后使用梯度下降来找到这些参数的值,以最大化观察数据的可能性。我们有了模型的参数,我们就可以在新数据上使用它们来执行推理。

  • 推理是我们提出整个框架的原因——能够根据我们已知的信息做出预测。
  • 推理在计算上是困难的!在某些特定类型的图上,我们可以相当有效地执行推理,但在一般图上,这是很棘手的。因此我们需要使用近似算法来权衡准确性和效率。

有几个问题我们可以通过推理来回答:

  • 边际推理:寻找特定变量的概率分布。例如,给定一个包含变量 A、B、C 和 D 的图,其中 A 取值 1、2 和 3,求 p(A=1)、p(A=2) 和 p(A=3)。
  • 后验推理:给定一些取值为e的观察变量v_E(E表示证据),找到一些隐藏变量v_H的后验分布p(v_H | v_E=e)。
  • 最大后验推理:给定一些取值为 e 的观察变量 v_E,找到具有最高概率的其他变量 v_H 的设置。

接下来,我们将研究一些用于回答这些问题的流行算法,包括精确的和近似的。所有这些算法都适用于贝叶斯网络和马尔可夫网络。

使用条件概率的定义,我们可以将后验分布写为:
p ( v H ∣ v E = e ) = p ( v H , v E = e ) p ( v E = e ) p\left(v_H \mid v_E=e\right)=\frac{p\left(v_H, v_E=e\right)}{p\left(v_E=e\right)} p(vHvE=e)=p(vE=e)p(vH,vE=e)
让我们用一个简单的例子来看看如何计算上面的分子和分母。考虑一个具有三个变量的网络,联合分布定义如下:
A  B  C  p ( A , B , C ) 0 0 0 0.05 0 0 1 0.01 0 1 0 0.10 0 1 1 0.05 1 0 0 0.30 1 0 1 0.09 1 1 0 0.25 1 1 1 0.15 \begin{array}{|l|l|l|l|} \hline \text { A } & \text { B } & \text { C } & p ( A , B , C ) \\ \hline 0 & 0 & 0 & 0.05 \\ \hline 0 & 0 & 1 & 0.01 \\ \hline 0 & 1 & 0 & 0.10 \\ \hline 0 & 1 & 1 & 0.05 \\ \hline 1 & 0 & 0 & 0.30 \\ \hline 1 & 0 & 1 & 0.09 \\ \hline 1 & 1 & 0 & 0.25 \\ \hline 1 & 1 & 1 & 0.15 \\ \hline \end{array}  A 00001111 B 00110011 C 01010101p(A,B,C)0.050.010.100.050.300.090.250.15
假设我们要计算 p(A | B=1)。请注意,这意味着我们要计算值 p(A=0 | B=1) 和 p(A=1 | B=1),它们的总和应为 1。使用上面的等式,我们可以写出
p ( A = 0 ∣ B = 1 ) = p ( A = 0 , B = 1 ) p ( B = 1 ) p(A=0 \mid B=1)=\frac{p(A=0, B=1)}{p(B=1)} p(A=0B=1)=p(B=1)p(A=0,B=1)
分子是 A = 0 且 B = 1 的概率。我们不关心 C 的值。因此我们将对 C 的所有值求和。(这来自基本概率 - p(A=0, B =1, C=0) 和 p(A=0, B=1, C=1) 是互斥事件,因此它们的并集 p(A = 0, B=1) 只是各个概率的总和。)

因此,我们将第 3 行和第 4 行相加,得到 p(A=0, B=1) = 0.15。 同样,将第 7 行和第 8 行相加得出 usp(A=1, B=1) = 0.40。 此外,我们可以通过对包含 B=1 的所有行(即第 3、4、7 和 8 行)求和来计算分母,得到 p(B=1) = 0.55。 这给我们带来了以下结果:
p ( A = 0 ∣ B = 1 ) = 0.15 / 0.55 = 0.27 p ( A = 1 ∣ B = 1 ) = 0.40 / 0.55 = 0.73 \begin{aligned} & p ( A =0 \mid B =1)=0.15 / 0.55=0.27 \\ & p ( A =1 \mid B =1)=0.40 / 0.55=0.73 \end{aligned} p(A=0B=1)=0.15/0.55=0.27p(A=1B=1)=0.40/0.55=0.73
如果仔细观察上面的计算,您会注意到我们做了一些重复的计算 - 将第 3 行和第 4 行以及第 7 行和第 8 行添加两次。 计算 p(B=1) 的更有效方法是简单地将值 p(A=0, B=1) 和 p(A=1, B=1) 相加。 这就是变量消除的基本思想。

💦图像去噪

我们的映射推理问题可以用数学方式写成如下:
Y ∗ = arg ⁡ max ⁡ Y P ( Y ∣ X ) = arg ⁡ max ⁡ Y log ⁡ P ( Y ∣ X ) = arg ⁡ max ⁡ Y [ log ⁡ P ( X , Y ) − log ⁡ P ( X ) ] = arg ⁡ max ⁡ Y log ⁡ P ( X , Y ) \begin{aligned} Y^* & =\arg \max _Y P(Y \mid X) \\ & =\arg \max _Y \log P(Y \mid X) \\ & =\arg \max _Y[\log P(X, Y)-\log P(X)] \\ & =\arg \max _Y \log P(X, Y) \end{aligned} Y=argYmaxP(YX)=argYmaxlogP(YX)=argYmax[logP(X,Y)logP(X)]=argYmaxlogP(X,Y)
在这里,我们使用了最大对数似然计算中常见的一些标准简化技术。我们将使用 X 和 Y(不带下标)分别表示所有 X_ij 和 Y_ij 值的集合。

因此,我们的联合分布由下式给出:
p ( X , Y ) = 1 Z ∏ i j ϕ ( X i j , Y i j ) ∏ ( i j , k l ) ϕ ( Y i j , Y k l ) p(X, Y)=\frac{1}{Z} \prod_{i j} \phi\left(X_{i j}, Y_{i j}\right) \prod_{(i j, k l)} \phi\left(Y_{i j}, Y_{k l}\right) p(X,Y)=Z1ijϕ(Xij,Yij)(ij,kl)ϕ(Yij,Ykl)

代码实现:

import numpy as np
from PIL import Image
import sysdef compute_log_prob_helper(Y, i, j):try:return Y[i][j]except IndexError:return 0def compute_log_prob(X, Y, i, j, w_e, w_s, y_val):result = w_e * X[i][j] * y_valresult += w_s * y_val * compute_log_prob_helper(Y, i-1, j)result += w_s * y_val * compute_log_prob_helper(Y, i+1, j)result += w_s * y_val * compute_log_prob_helper(Y, i, j-1)result += w_s * y_val * compute_log_prob_helper(Y, i, j+1)return resultdef denoise_image(X, w_e, w_s):m, n = np.shape(X)Y = np.copy(X)max_iter = 10*m*nfor iter in range(max_iter):i = np.random.randint(m)j = np.random.randint(n)log_p_neg = compute_log_prob(X, Y, i, j, w_e, w_s, -1)log_p_pos = compute_log_prob(X, Y, i, j, w_e, w_s, 1)if log_p_neg > log_p_pos:Y[i][j] = -1else:Y[i][j] = 1if iter % 100000 == 0:print ('Completed', iter, 'iterations out of', max_iter)return Ydef add_noise(orig):A = np.copy(orig)for i in range(np.size(A, 0)):for j in range(np.size(A, 1)):r = np.random.rand()if r < 0.1:A[i][j] = -A[i][j]return Adef convert_from_matrix_and_save(M, filename, display=False):M[M==-1] = 0M[M==1] = 255im = Image.fromarray(np.uint8(M))if display:im.show()im.save(filename)def get_mismatched_percentage(orig_image, denoised_image):diff = abs(orig_image - denoised_image) / 2return (100.0 * np.sum(diff)) / np.size(orig_image)def main():# read input and argumentsorig_image = read_image_and_binarize(sys.argv[1])if len(sys.argv) > 2:try:w_e = eval(sys.argv[2])w_s = eval(sys.argv[3])except:print ('Run as: \npython denoise.py <input_image>\npython denoise.py <input_image> <w_e> <w_s>')sys.exit()else:w_e = 8w_s = 10noisy_image = add_noise(orig_image)denoised_image = denoise_image(noisy_image, w_e, w_s)print ('Percentage of mismatched pixels: ', get_mismatched_percentage(orig_image, denoised_image))convert_from_matrix_and_save(orig_image, 'orig_image.png', display=False)convert_from_matrix_and_save(noisy_image, 'noisy_image.png', display=False)convert_from_matrix_and_save(denoised_image, 'denoised_image.png', display=False)if __name__ == '__main__':main()

👉参阅一:计算思维

👉参阅二:亚图跨际

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

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

相关文章

合作伙伴推广不积极?跟奖金到账时间有关!

在推广返现活动中&#xff0c;对于合作伙伴推广者来说&#xff0c;奖金是否及时到账是他们最关心的问题之一。如果品牌主一直不审批奖励数据&#xff0c;推广者则无法及时收到奖金&#xff0c;这很容易影响他们的推广积极性和忠诚度。怎样能够提高奖励审核的效率呢&#xff1f;…

java中Future使用详细介绍

一、什么是Future&#xff1f; 在并发编程中&#xff0c;可以通过Future对象来异步获取结果。 使用Thread或runnable接口都不能获取异步的执行结果&#xff0c;因为他们没有返回值。而通过实现Callable接口和Future就可以获取异步执行的结果&#xff0c;当异步执行结束后&…

SSRS中使用QRCoder生成二维码

步骤 1.下载QRCoder.dll 下载地址&#xff1a;https://download.csdn.net/download/wjl7126180/89369398 2.使用gacutil.exe安装QRCoder.dll到GAC(Global Assembly Cache) gacutil.exe是.NET Framework中的全局程序集缓存工具&#xff0c;如果没有安装.NET Framework&#…

怎么把纸质文件扫描成电子版?方法教会你!

怎么把纸质文件扫描成电子版&#xff1f;在数字化时代&#xff0c;将纸质文件转换为电子版已成为日常工作和学习的必备技能。无论是合同、证件、笔记还是其他文档&#xff0c;通过扫描软件都能轻松实现电子化&#xff0c;方便存储、查阅和分享。以下将介绍几款功能强大、操作简…

身份认证页面该怎么设计更加合理?

一、认证页面的作用 认证页面在应用程序中具有以下几个重要的作用&#xff1a; 验证用户身份&#xff1a;认证页面的主要作用是验证用户的身份。通过要求用户提供正确的凭据&#xff08;如用户名和密码、生物特征、验证码等&#xff09;&#xff0c;认证页面可以确认用户是合法…

Linux 生产跑批脚本解读

1.查看定时任务 2.脚本-目录结构 1&#xff09;config.ini 2&#xff09;run.sh 3.命令解读 1&#xff09;ls -1 路径文件夹 含义&#xff1a;ls -1 /home/oracle/shell/config/ 将文件夹config内的文件全部列出 [oracleneptune config]$ ls -1 /home/oracle/shel…

C#转义字符

转义字符 是字符串的一部分 用来表示特殊含义的字符 比如 在字符串中表示 单引 双引 空行.... 使用方法: string str "恁好啊 \n恁好啊 靓仔";* 常用的转义字符 单引号 \ 双引号 \" 换行 \n 斜杠 \\ 制表符 (tab键&#xff09; \t 空字符 \0 光标退格 \b 警报…

适合下班做的副业兼职、1天挣300,7天涨粉2万

最近小红书上有类视频火了&#xff01; 周周近财&#xff1a;让网络小白少花冤枉钱&#xff0c;赚取第一桶金 利用AI制作的漫画解说历史小说视频。视频以《明朝那些事儿》为蓝本&#xff0c;一上线就疯狂吸粉&#xff0c;多条视频内容都大爆了。 就是这个账号&#xff0c;仅仅…

【华为】BFD与静态路由和RIP联用

【华为】BFD与静态路由和RIP联用 实验需求配置AR1AR2AR3AR4效果抓包查看 实验需求 如上图组网所示&#xff0c;在R1上配置到达R4的Loopback0。 4.4.4.4/32网段的浮动静态路由&#xff0c;正常情况下通过R3访问R4。 当R3故障时&#xff0c;自动选路通过R2访问R4的Loopback0;在R…

Oracle DataGuard 保护级别

Oracle DataGuard 保护级别介绍 ADG 有三个保护级别&#xff0c;如下&#xff1a; 一、MAXIMUM PROTECTION 特点&#xff1a; 1、数据0丢失 2、最高级别保护 3、主备必须采用 OPTIONAL LGWR SYNC AFFIRM 的传输方式 4、备机必须启用 standby redo log 5、如果备机不可用(如…

了解K8s集群kubectl命令进行陈述式资源管理

前言 在 Kubernetes 集群中&#xff0c;通过陈述式和声明式资源管理是确保应用程序高效运行的关键。认识这两种管理方法&#xff0c;能够更好地掌握 Kubernetes 集群的运维和管理。 目录 一、K8s 资源管理操作分类 1. 陈述式 2. 声明式 3. K8s 集群管理常用命令概览 二…

基于瑞萨RA6M5的自控衣橱

1. 主控转接板原理图和PCB设计 2. 屏幕界面设计 3. 程序设计 4. QT设计 QT设计&#xff0c;读取MQTT数据&#xff0c;在QT上显示衣橱内部的温度&#xff0c;湿度情况&#xff0c;且能够控制衣橱的开关门&#xff0c;开关灯等。 5. 实物演示 瑞萨

数据库缓存 buffer pool详解

什么是buffer pool buffer pool, 又称之缓存池, 是mysql中为了提升查询性能而引入的缓存, 如果每次查询和修改都去操作磁盘的话, 性能就会很差, 从而引入 Buffer Pool包含多个缓冲页&#xff08;默认大小通常为16KB&#xff09;&#xff0c;每个缓冲页都有对应的控制信息&#…

Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明

Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明 目录 Python 机器学习 基础 之 模型评估与改进 【评估指标与评分】的简单说明 一、简单介绍 二、评估指标与评分 1、牢记最终目标 2、二分类指标 1&#xff09;错误类型 2&#xff09;不平衡数据集…

【产品运营】对接上游电商平台需要了解什么?

围绕卖家和平台的运营模式等维度&#xff0c;ISV对接平台可以划分为业务域、开放能力域和产品能力域。 ISV对接平台的最终目地是打通多方数据传输&#xff0c;解决卖家日常运营中的场景起到类似于业务中台的作用。因此我们可以围绕卖家和平台的运营模式等维度划分为&#xff1a…

Qt多进程-共享内存(Shared Memory)

在Qt中使用共享内存&#xff08;Shared Memory&#xff09;进行多进程程序开发&#xff0c;主要涉及以下步骤、代码示例和相关注意事项&#xff1a; 步骤&#xff1a; 创建共享内存区域&#xff1a; 使用QSharedMemory类来创建一个共享内存对象。设定一个唯一的共享内存键名&…

R可视化:可直接发表的柱状图

可发表的柱状图 介绍 柱状图可视化 加载R包 knitr::opts_chunk$set(echo = TRUE, message = FALSE, warning = FALSE) library(tidyverse) library(ggpubr) library(plyr) library(ggprism)rm(list = ls()) options(stringsAsFactors = F)# group & color dose_names &…

IntelliJ IDEA中Terminate 与 Disconnect的区别

Terminate 与 Disconnect的区别 Terminate&#xff1a;关工具之前&#xff0c;先关闭运行中的项目&#xff08;kill pid的那种&#xff09; Disconnect&#xff1a;单纯关闭工具&#xff0c;通过工具启动的东西&#xff0c;依旧在运行

mstsc 远程银河麒麟桌

安装 1.银河麒麟终端apt-get安装xrdp sudo apt-get install -y xrdp 2.银河麒麟终端启动xrdp sudo systemctl start xrdp 3.银河麒麟终端检查3389端口 netstat -tnpl 4. win10电脑mstsc 远程桌面登录 在win10系统命令行&#xff0c;输入mstsc打开远程连接窗口&#xff…

AWS迁移与传输之Migration Hub

AWS Migration Hub是一种集中化的迁移管理服务&#xff0c;可帮助企业规划、跟踪和管理在亚马逊云中进行的各种迁移活动。包括应用程序迁移、数据库迁移、服务器迁移等。 AWS Migration Hub (Migration Hub) 提供一个位置来跟踪使用多个 AWS 工具和合作伙伴解决方案的迁移任务…