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

server/2024/10/22 5:12:19/

🎯要点

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

🎯结构化概率模型: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()

👉参阅一:python-r-matlab-qun-ti-xiao-xi-he-yi-chuan-bing-shai-xuan-duo-yuan-tong-ji-mo-xing" rel="nofollow">计算思维

👉参阅二:亚图跨际


http://www.ppmy.cn/server/47325.html

相关文章

Grafana详解

目录 ​编辑 一、Grafana的主要特点 二、Grafana的基本功能 三、Grafana的使用方法 Grafana是一款开源的数据可视化工具&#xff0c;主要用于大规模指标数据的可视化展现。下面将详细介绍Grafana的特点、功能以及基本使用方法。 一、Grafana的主要特点 跨平台性&#xff…

【算法实战】每日一题:17.1 订单处理问题(差分思想,二分搜索)

题目 一个会议中心的场地预订系统。在接下来的 n 天里&#xff0c;会议中心有一定数量的会议室可供租用。共有 m 份预订请求&#xff0c;每份请求描述为 (d_i, a_i, b_i)&#xff0c;表示需要从第 a_i 天到第 b_i 天使用会议室&#xff08;包括第 a_i 天和第 b_i 天&#xff0…

[深度学习]yolov10+deepsort+pyqt5实现目标追踪

YOLOv10DeepSORTPyQt5实现目标追踪系统 在现代智能监控系统中&#xff0c;目标追踪技术扮演着至关重要的角色。结合YOLOv10&#xff08;一种先进的实时目标检测算法&#xff09;与DeepSORT&#xff08;一种多目标追踪算法&#xff09;&#xff0c;并通过PyQt5构建用户界面&…

使用 zxing 生成二维码以及条形码

需求背景 前期在做项目的时候&#xff0c;有一个需求是说要生成一张条形码&#xff0c;并且呢将条形码插入到 excel 中去&#xff0c;但是之前一直没有搞过找个条形码或者是二维码&#xff0c;最后是做出来了&#xff0c;这里呢就先看看怎么生成&#xff0c;后面再抽时间来写写…

【Go语言精进之路】构建高效Go程序:零值可用、使用复合字面值作为初值构造器

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、深入理解并利用零值提升代码质量1.1 深入Go类型零值原理1.2 零值可用性的实践与优势1.2.1 切片(Slice)的零值与动态扩展1.2.2 Map的零值与安全访问1.2.3 函数参数与零值 二、使用复合字面值作为初值构造器2.1 结构体…

msi安装mysql8 启动失败,提示只有在任务处于完成状态(RanToCompletion、Faulted 或 Canceled)时才能释放它。

解决方案: 1.打开服务,找到安装的mysql 2. 右击&#xff0c;打开属性&#xff0c;进入【登录】选项卡&#xff0c;选择本地系统账户。 3. 点击确定-->应用 4.服务中选择开始服务 5.服务启动成功后,在安装步骤中继续点击执行

小学数学出题器-Word插件-大珩助手

Word大珩助手是一款功能丰富的Office Word插件&#xff0c;旨在提高用户在处理文档时的效率。它具有多种实用的功能&#xff0c;能够帮助用户轻松修改、优化和管理Word文件&#xff0c;从而打造出专业而精美的文档。 【新功能】小学数学出题器 1、实现了难度设定&#xff1b;…

Kubernetes集群Pod控制器

前言 在 K8s 集群中&#xff0c;Pod 控制器是一种关键的组件&#xff0c;负责管理和控制Pod的生命周期。Pod 是 K8s 中最小的可部署单元&#xff0c;通常包含一个或多个容器&#xff0c;Pod 控制器则确保所需数量的 Pod 实例处于运行状态&#xff0c;并根据定义的规则进行自动…