Python群体趋向性潜关联有向无向多图层算法

news2024/11/15 7:43:56

🎯要点

🎯算法模型图层节点和边数学定义 | 🎯算法应用于贝叶斯推理或最大似然优化概率建模的多图层生成模型 | 🎯算法结合图结构边和节点属性 | 🎯对比群体关联预测推理生成式期望最大化多图层算法 | 🎯使用合成多图层和现实世界多图层集测试算法 | 🎯算法可解释性潜力定性分析 | 🎯算法测试单图层结构

📜多图层用例

📜Python和MATLAB网络尺度结构和幂律度大型图生成式模型算法

📜MATLAB和Python零模型社会生物生成式结构化图

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python期望最大化算法

在现实世界的机器学习应用中,通常有许多相关特征,但只有其中的一部分是可观察的。在处理有时可观察有时不可观察的变量时,确实可以利用该变量可见或可观察的实例来学习和预测不可观察的实例。这种方法通常称为处理缺失数据。通过使用变量可观察的可用实例,机器学习算法可以从观察到的数据中学习模式和关系。然后可以使用这些学习到的模式来预测变量缺失或不可观察的实例中的值。

期望最大化算法可用于处理变量部分可观测的情况。当某些变量可观测时,我们可以利用这些实例来学习和估计它们的值。然后,我们可以在不可观测的情况下预测这些变量的值。期望最大化算法适用于潜变量,即那些不能直接观察到但可以通过其他观察变量的值推断出来的变量。通过利用已知的控制这些潜变量的概率分布的一般形式,期望最大化算法可以预测它们的值。

期望最大化算法是机器学习领域中许多无监督聚类算法的基础。它提供了一个框架来查找统计模型的局部最大似然参数,并在数据缺失或不完整的情况下推断潜在变量。

期望最大化算法是一种迭代优化方法,它结合了不同的无监督机器学习算法,以寻找涉及未观察潜变量的统计模型中参数的最大似然或最大后验估计。EM 算法通常用于潜变量模型,可以处理缺失数据。它由期望步骤和最大化步骤组成,形成一个迭代过程来改善模型拟合度。

  • 在估计步骤中,算法计算潜在变量,即使用当前参数估计的对数似然期望。
  • 在最大化步骤中,算法确定使估计步骤中获得的期望对数似然最大化的参数,并根据估计的潜在变量更新相应的模型参数。
期望步骤
更新变量
最大化步骤
更新假设

通过反复重复这些步骤,此算法寻求最大化观测数据的似然性。它通常用于无监督学习任务,例如推断潜在变量的聚类,并可应用于机器学习、计算机视觉和自然语言处理等各个领域。

期望最大化算法中一些最常用的关键术语如下:

  • 潜在变量:潜在变量是统计模型中不可观察的变量,只能通过其对可观察变量的影响间接推断。它们无法直接测量,但可以通过其对可观察变量的影响来检测。
  • 可能性:是在给定模型参数的情况下观察给定数据的概率。在算法中,目标是找到使似然最大化的参数。
  • 对数似然:是似然函数的对数,衡量观测数据与模型之间的拟合优度。 算法寻求最大化对数似然。
  • 最大似然估计:最大似然估计是一种通过查找使似然函数最大化的参数值来估计统计模型参数的方法,似然函数衡量模型解释观测数据的程度。
  • 后验概率:在贝叶斯推理的背景下,此算法可以扩展以估计最大后验估计,其中参数的后验概率是基于先验分布和似然函数计算的。
  • 期望步骤:算法的期望步骤根据观测数据和当前参数估计计算潜在变量的期望值或后验概率。它涉及计算每个数据点的每个潜在变量的概率。
  • 最大化步骤:算法的最大化步骤通过最大化从期望步骤获得的预期对数似然来更新参数估计。它涉及找到优化似然函数的参数值,通常通过数值优化方法。
  • 收敛:收敛是指算法达到稳定解的情况。通常通过检查对数似然或参数估计的变化是否低于预定义阈值来确定。

期望最大化算法的本质是使用数据集中可用的观测数据来估计缺失的数据,然后使用该数据来更新参数的值。让我们详细了解一下此算法。

开始
初始值
期望步骤
最大化步骤
是否收敛
停止
  1. 最初,考虑一组参数的初始值。给系统一组不完整的观测数据,假设观测数据来自特定模型。
  2. 期望步骤:在此步骤中,我们使用观察到的数据来估计或猜测缺失或不完整数据的值。它主要用于更新变量。
  3. 最大化步骤:在这一步中,我们使用前面“期望”步骤中生成的完整数据来更新参数值。它基本上用于更新假设。
  4. 收敛:在此步骤中,检查值是否收敛,如果是,则停止,否则重复步骤 2 和步骤 3,即“期望”步骤和“最大化”步骤,直到收敛。

代码实现:

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

生成具有两个高斯分量的数据集

mu1, sigma1 = 2, 1
mu2, sigma2 = -1, 0.8
X1 = np.random.normal(mu1, sigma1, size=200)
X2 = np.random.normal(mu2, sigma2, size=600)
X = np.concatenate([X1, X2])

sns.kdeplot(X)
plt.xlabel('X')
plt.ylabel('Density')
plt.title('Density Estimation of X')
plt.show()

初始化参数

mu1_hat, sigma1_hat = np.mean(X1), np.std(X1)
mu2_hat, sigma2_hat = np.mean(X2), np.std(X2)
pi1_hat, pi2_hat = len(X1) / len(X), len(X2) / len(X)

执行算法:

  • 迭代指定次数(本例中为 20)
  • 在每个时期,预期阶段通过评估每个组件的高斯概率密度并按相应的比例对其进行加权来计算责任(gamma 值)
  • 最大化步通过计算每个分量的加权平均值和标准差来更新参数
num_epochs = 20
log_likelihoods = []

for epoch in range(num_epochs):
	gamma1 = pi1_hat * norm.pdf(X, mu1_hat, sigma1_hat)
	gamma2 = pi2_hat * norm.pdf(X, mu2_hat, sigma2_hat)
	total = gamma1 + gamma2
	gamma1 /= total
	gamma2 /= total

	mu1_hat = np.sum(gamma1 * X) / np.sum(gamma1)
	mu2_hat = np.sum(gamma2 * X) / np.sum(gamma2)
	sigma1_hat = np.sqrt(np.sum(gamma1 * (X - mu1_hat)**2) / np.sum(gamma1))
	sigma2_hat = np.sqrt(np.sum(gamma2 * (X - mu2_hat)**2) / np.sum(gamma2))
	pi1_hat = np.mean(gamma1)
	pi2_hat = np.mean(gamma2)

	log_likelihood = np.sum(np.log(pi1_hat * norm.pdf(X, mu1_hat, sigma1_hat)
								+ pi2_hat * norm.pdf(X, mu2_hat, sigma2_hat)))
	log_likelihoods.append(log_likelihood)

plt.plot(range(1, num_epochs+1), log_likelihoods)
plt.xlabel('Epoch')
plt.ylabel('Log-Likelihood')
plt.title('Log-Likelihood vs. Epoch')
plt.show()

绘制最终估计密度

X_sorted = np.sort(X)
density_estimation = pi1_hat*norm.pdf(X_sorted,mu1_hat, sigma1_hat) + pi2_hat * norm.pdf(X_sorted,mu2_hat, sigma2_hat)

plt.plot(X_sorted, gaussian_kde(X_sorted)(X_sorted), color='green', linewidth=2)
plt.plot(X_sorted, density_estimation, color='red', linewidth=2)
plt.xlabel('X')
plt.ylabel('Density')
plt.title('Density Estimation of X')
plt.legend(['Kernel Density Estimation','Mixture Density'])
plt.show()

此算法应用于:

  • 它可用于填充样本中缺失的数据。
  • 它可以作为集群无监督学习的基础。
  • 它可用于估计隐马尔可夫模型的参数。
  • 它可用于发现潜在变量的值。

👉参阅、更新:计算思维 | 亚图跨际

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

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

相关文章

51单片机嵌入式开发:17、STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息

51单片机嵌入式开发 STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息 51单片机嵌入式开发STC89C52的嵌入式 遥控器 控制步进电机 转速 和 转向 操作并 printf打印信息1 概述2 硬件电路2.1 遥控器2.2 红外接收器电路2.3 STC89C52单片机电路2.4 数码管…

工程视角:数据结构驱动的应用开发--字典(dictionary),列表(list)与实体

这里写目录标题 业务业务场景流程分析 实现数据访问层(DAL)业务逻辑层(BLL)用户界面层(UI)工具类 设计思路为什么抽出工具类关于U层使用字典的好处工程视角 业务 业务场景 在一个金融应用系统中&#xff0c…

【N-MOS】N-mos(场效应管)驱动电路分析

目录 1、MOS管分类 2、MOS管导通原理 3、电路分析 源文件下载 可访问底部联系方式也可前往电子校园网官网搜索关键词 关键词:N-MOS 1、MOS管分类 MOS管是金属(metal)、氧化物(oxide)、半导体(semiconductor)场效应晶体管。FET是场效应管。合在一起是金属氧化物半导…

正则表达式与文本三剑客之grep

目录 前言 一、grep命令 二、基础正则表达式常见元字符 2.1、特殊字符 2.2、定位符 2.3、非打印字符 三、元字符操作实例 3.1、查找特定字符 3.2、利用中括号“[]”来查找集合字符 3.3、查找行首“^”与行尾字符“$” 3.4、查找任意一个字符“.”与重复字符“*” 3.…

ARM系列运行异常排查

一、断点指令BKPT BKPT指令产生软件断点中断,可用于程序的调试。它使处理器停止执行正常指令(使处理器中止预取指)而进入相应的调试程序。 BKPT指令的格式为:BKPT 16位的立即数 二、使用BKPT进行软件异常定位 假设异常发生后,全局变量k变成了88,现在想确认具体是什么…

【题解】UVA1564/SP2883 Widget Factory

题解 题意 题解分析Code 前言 调了好久,还是太菜了 题意 洛谷: SP UVA vjudge SP UVA 题解 分析 转换一下,题目就是让我们解方程组: { ∑ i 1 n a 1 , i x i ≡ b 1 ( m o d 7 ) ∑ i 1 n a 2 , i x i ≡ b 2 ( m o d 7 ) …

Java学习Day13:基础篇3

流程控制 1.if 案例: public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int a sc.nextInt();int b sc.nextInt();int c sc.nextInt();if (ab>c&&ac>b&&bc>a){System.out.println(&quo…

连锁店收银系统源码

系统概况: 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步&#…

06-Ubuntu 22.04LTS安装 Redis | QuickRedis 远程连接

文章目录 1. 安装命令2. 查看redis 状态3. 查看配置文件的位置4. 注释掉bind addr,并设置redis密码5. 设置端口6379开放6. 重启redis6. 本地测试连接7. QuickRedis 远程连接 1. 安装命令 sudo apt-get update sudo apt-get install redis-server2. 查看redis 状态 …

dsa加训

refs: OI Wiki - OI Wiki (oi-wiki.org) 1. 枚举 POJ 2811 熄灯问题 refs : OpenJudge - 2811:熄灯问题 如果要枚举每个灯开或者不开的情况,总计2^30种情况,显然T。 不过我们可以发现:若第i行的某个灯亮了,那么有且仅有第i行和第…

MQ传递用户信息

theme: nico 你们好,我是金金金。 场景 购物车里面有5个商品,用户勾选了并且提交订单了,此时需要删除购物车对应勾选的商品,mq的话涉及到传递用户信息~因为删除对应的购物车商品是需要传递用户信息来知晓对应用户的 生产者 消费者…

SolidWorks 二次开发--创建属性页面及控件事件(二)

在前文中我们学习了如何创建和显示属性页面,本章节将重点介绍如何向属性页面中添加控件。控件是属性页面的基本组成部分,可以是文本框、按钮、复选框等,用于用户交互和数据展示。接下来我们将看到如何定义、配置和操作这些控件,让…

ROS2入门到精通—— 2-8 ROS2实战:机器人安全通过狭窄区域的方案

0 前言 室内机器人需要具备适应性和灵活性,以便在狭窄的空间中进行安全、高效的导航。本文提供一些让机器人在狭窄区域安全通过的思路,希望帮助读者根据实际开发适当调整和扩展 1 Voronoi图 Voronoi图:根据给定的一组“种子点”&#xff0…

【保姆级介绍PyCharm安装教程】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 🤹目录 🤹前言🤹前提条件🤹安装步骤🤹前言 🥰PyChar…

外卖霸王餐系统架构怎么选?

在当今日益繁荣的外卖市场中,外卖霸王餐作为一种独特的营销策略,受到了众多商家的青睐。然而,要想成功实施外卖霸王餐活动,一个安全、稳定且高效的架构选择至关重要。本文将深入探讨外卖霸王餐架构的选择,以期为商家提…

仕考网:公务员考试申论答题技巧

在国家公务员考试的申论部分,要想取得好的成绩,关键在于掌握有效的写作方法。 1.文章结构 申论考试中,一个清晰、逻辑性强的结构是至关重要的。这种结构能迅速找到核心论点和支持论据。 2.紧贴主题 申论试题经常设置特定条件或要求&#…

谁说软考高级难?这个“通关秘籍”人人都能掌握

今天给大家分享一个非常有效的学习方法,来自网友的经验精华,仅供参考。 尝试了这个方法之后,你会觉得软考高级考试真的有点容易了!想要及格拿证都是分分钟的事情!按照我的方法,就算你从来没有考过初级和中级…

Python+Flask+Mysql or sqlite,搭建个人博客

昨天逛csdn看到了一个前端小框架界面,想着试着搭建一下要了一份源代码,因为我自己本身好久没有接触,好多知识有忘记了,只能重温python爬虫问题了,随后跟博主要了一份源码,作为练习使用,也不是很…

Java根据code获取枚举优化

Java枚举获取优化 需求原始解决方案优化方案1. 首先创建base接口。2. 创建枚举工具类3. 需要使用工具类的枚举,实现BaseEnum接口即可4. 测试使用 拓展 需求 自己模拟两个枚举,假设业务中需要用到 Example1StatusEnum.java package com.zdh.zdhenum;/*…

【大师与bug里特】M_Studio《王国之梦》学习笔记

1️⃣ Object & object(✅) 之辨 《7.泛型事件框架〈余2min左右时〉》 不然inspector窗口的最后一行(告诉我们订阅者是SceneLoadManager它身上挂了☝️ObjectEventListener用来监听这个事件 有多少个事件注册到这里来了都能够看到)还是不会出现 加上…