【发布时间】:2018-09-08 03:20:38
【问题描述】:
所以我最近正在学习这门关于概率图形模型的课程,我想尝试一个动手示例。在示例中,我想遍历所有可能的组合 (29,281) 个无环有向图(或 DAG)并查看它们如何拟合数据。
我知道所有可能的图表的数量由
from scipy.misc import comb
import numpy as np
def a(n):
if n == 0:
return 1
else:
sum = 0
for k in range(1,n+1):
sum += np.power(-1,k+1) * \
comb(n,k) * \
np.power(2,k*(n-k)) * \
a(n-k)
return sum
这给了我们系列A003024
但我希望找到能够循环遍历所有这些可能的图表而不只是计算它们的算法。
我知道有一些代码可用于无向图,但我无法让它们为我工作。
我对图表的任何表示形式持开放态度,无论是库、自定义函数还是列表列表。
示例 - 当您有两个标签时,有 3 个可能的图表:
[[A:{}], [B:{}]] # A B no connection P(A,B) = P(A)P(B)
[[A:{B}], [B:{}]] # A -> B P(A,B) = P(A)P(B|A)
[[A:{}], [B:{A}]] # A <- B P(A,B) = P(B)P(A|B)
【问题讨论】:
标签: python algorithm graph bayesian