【PGMPY】 1. DAG基础结构

pgmpy

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

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

在这里插入图片描述

安装

pip install pgmpy

conda install -c ankurankan pgmpy

conda 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=[])

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DreamBoy@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值