【PGMPY】 1. DAG基础结构

news/2024/12/22 23:23:02/

pgmpy

贝叶斯网络的纯python实现,
用途:

结构学习、
参数估计、
近似(基于采样)
精确推理
因果推理

在这里插入图片描述

安装

pip install pgmpyconda install -c ankurankan pgmpyconda install -c ankurankan pgmpy

文档

https://pgmpy.org/index.html

一、基础结构

1. DAG

图形中的每个节点都可以表示一个随机变量、因子或随机变量聚类。图中的边表示它们之间的依赖关系。

from pgmpy.base import DAG
G = DAG()#添加点
'''add_node(node, weight=None, latent=False)'''
G.add_node(node='a')
'''add_nodes_from(nodes, weights=None, latent=False)'''
'''latent:无法直接观察到但可能对因果关系产生影响的未测量变量。'''
G.add_nodeslatent_from(nodes=['a', 'b'])
#添加边
'''add_edge(u, v, weight=None)'''
G.add_edge(u='a', v='b')
'''add_edges_from(ebunch, weights=None)'''
G.add_edges_from(ebunch=[('a', 'b'), ('b', 'c')]) #自动添加点中不存在的点#查看节点,边
G.nodes()
NodeView(('Alice', 'Bob', 'Charles'))
G.edges()
OutEdgeView([('Alice', 'Bob')])# check if node in graph'a' in G     
# number of nodes in graph  图中的节点数
len(G)  #  遍历节点
'''active_trail_nodes(variables, observed=None, include_latents=False)'''
from pgmpy.base import DAG
G = DAG()
G.add_nodes_from(['A', 'B', 'C'])
G.add_edges_from([('A', 'B'),('E', 'B'),('B', 'D'),('D', 'C'),('D', 'F'),('D', 'H'),('D', 'G')])
G.active_trail_nodes(['A', 'B'], observed='G')

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

# 干预  去掉指向该节点的边
'''do(nodes, inplace=False)'''

在这里插入图片描述

返回给定节点的祖先图。祖先图仅包含节点中至少一个变量的祖先节点。
'''get_ancestral_graph(nodes)'''

在这里插入图片描述

# 返回节点的子节点列表
'''get_children(node)'''

在这里插入图片描述

# 查找不可直接到达的节点
get_immoralities()

在这里插入图片描述

# 独立性检验
from pgmpy.base import DAG
chain = DAG([('X', 'Y'), ('Y', 'Z')])
chain.get_independencies()
(X ⟂ Z | Y)
(Z ⟂ X | Y)# 叶子节点get_leaves()

在这里插入图片描述

# 节点的父项、子节点和子节点的其他父项的集合。
'''get_markov_blanket(node) '''

在这里插入图片描述

# 返回节点的父级列表。如果图形中不存在节点,则引发错误。
'''get_parents(node)[source]'''

在这里插入图片描述

#返回随机生成的 DAG,其中包含n_nodes个边概率为edge_prob的节点数。
'''get_random(n_nodes=5, edge_prob=0.5, latents=False)'''

在这里插入图片描述

# 返回图形根的列表。
'''get_roots()'''

在这里插入图片描述

如果观察到观察到的开始节点和结束节点之间存在活动跟踪(即 d 连接),则返回 True'''is_dconnected(start, end, observed=None)'''

在这里插入图片描述

# Checks whether the given model is I-equivalent 相同的图结构不同的边方向
'''is_iequivalent(model)'''from pgmpy.base import DAG
G = DAG()
G.add_edges_from([('V', 'W'), ('W', 'X'),('X', 'Y'), ('Z', 'Y')])
G1 = DAG()
G1.add_edges_from([('W', 'V'), ('X', 'W'),('X', 'Y'), ('Z', 'Y')])
G.is_iequivalent(G1)
True
# 返回包含每个变量的局部独立性的独立实例。
''' local_independencies(variables)'''

在这里插入图片描述

#查找开始和结束的最小 d 分隔集。
'''minimal_dseparator(start, end)'''

在这里插入图片描述

#删除 DAG 中的所有不可到达边为并创建一个图
'''moralize()'''

在这里插入图片描述

# 可视化
https://docs.daft-pgm.org/en/latest/

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

2. PDAG

用于表示 PDAG(也称为 CPDAG)的类。PDAG 是 DAG 的等效类,包含有向边和无向边。无向边在两个方向上使用两条边表示,即 X - Y 之间的无向边使用 X -> Y 和 X <- Y 表示。有环图用PDAG表示。

classpgmpy.base.PDAG(directed_ebunch=[], undirected_ebunch=[], latents=[])

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


http://www.ppmy.cn/news/987679.html

相关文章

libuv库学习笔记-basics_of_libuv

Basics of libuv libuv强制使用异步和事件驱动的编程风格。它的核心工作是提供一个event-loop&#xff0c;还有基于I/O和其它事件通知的回调函数。libuv还提供了一些核心工具&#xff0c;例如定时器&#xff0c;非阻塞的网络支持&#xff0c;异步文件系统访问&#xff0c;子进…

如何从 Python 调用C++

一、说明 Python是一种高级编程语言,它可以调用其他语言编写的函数。在 Python 中调用 C 函数的方法有两种:1)使用 Python 提供的 ctypes 库;2)使用 Python 提供的 Cython 库。 注意:您可以在此存储库中下载此示例的完整代码。如果您对本文有任何意见,可…

MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明

系列文章目录 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库&#xff0c;对MySQL数据库的简单操作&#xff0c;MySQL的外接应用程序使用说明 MySQL笔记——表的分组查询、表的分页查询、表的约束、数据库设计 MySQL案例——多表查询以及嵌套查询 MySQL笔记—…

建木-自动化部署-dockerfile文件书写-自动化部署jar包完成docker运行镜像-dockerfile书写介绍

阿丹&#xff1a; 在自动化部署的时候jar包要如何进行部署。就需要通过使用书写dockerfile文件来进行触发的时候执行docker指令来完成镜像的部署以及运行。 什么是dockerFile dockerfile是自定义镜像的一套规则dockerfie由多条指令构成&#xff0c;Dockerfile中的每一条指令都…

解决mysqld服务启动失败

1、进程 首先查看下mysql进程: ps -aux | grep mysql有进程号 2、所有者和所属组为mysql 查看/usr/local/MySQL/data/mysqld.pid所有者和所属组是否为mysql 原来是权限有问题&#xff0c;那么更改权限&#xff08;还需要加权限&#xff09;3、 重新启动服务

【设计模式——学习笔记】23种设计模式——外观模式Facade(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入介绍基本介绍类图出场角色 案例实现案例一类图代码实现 案例二类图代码实现 外观模式在Mybatis源码中的应用总结文章说明 案例引入 在家庭影院中&#xff0c;要享受一场电影&#xff0c;需要如下步骤&#xff1a; 直接用遥控器&#xff1a;统筹各设备开关开…

vue2项目迁移到vue3中的改动——基础积累

最近在跟着大神学习vue3的内容&#xff0c;发现之前vue2写的代码可以直接照搬到vue3中&#xff0c;但是有一些需要改动的内容&#xff0c;下面做一下记录。 1.定义对象时&#xff0c;需要指定每个属性值 例如&#xff1a;listQuery:{} 如果使用&#xff1a;listQuery.Filter…

Java【Spring】项目创建、存储和获取 Bean 的基本方式

文章目录 前言一、创建 Spring 项目1, 创建 Maven 项目2, 添加 Spring 依赖3, 创建启动类 二、存储 Bean 的基本方式1, 创建 Bean2, 存储 Bean 三、获取 Bean 的基本方式1, 获取上下文对象2, 获取 Bean3, 使用 Bean 总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的…