【问题标题】:Dataset for Bayesian Network Structure Learning贝叶斯网络结构学习的数据集
【发布时间】:2020-04-15 21:15:06
【问题描述】:

经过大量研究,我没有找到包含必要材料的存储库来测试能够学习贝叶斯网络结构的算法。我只需要两件事:

  • 正确的贝叶斯网络
  • 与 BN 相关的数据集

我的算法应该能够从数据集中学习结构,然后我可以检查它离正确的 BN 有多远。你有任何链接吗?我已经找到了一些没有原始 BN 的数据集,反之亦然,但我的大学项目都需要它们。

提前致谢

PS:如果你有兴趣,我在我的项目中使用 Python。

【问题讨论】:

  • 也许您已经找到了您要找的东西,但如果没有,您是否查看了 Daphne Koller 课堂上的经典成绩/推荐信示例? pythonhosted.org/libpgm/unittestdict.html
  • 另外,您对“正确”贝叶斯网络的要求似乎很奇怪。它让人想起 Box 的名言:“所有模型都是错误的,但有些是有用的”。贝叶斯网络只是一个模型。如果您想使用人工示例来测试您的结构学习算法,您可以定义任何模型,然后从中采样以从“正确”模型生成数据。
  • R 的bnlearnbnlearn.com/bnrepository 提供了各种图形格式数据集的存储库

标签: machine-learning dataset bayesian-networks


【解决方案1】:

试试bnlearn 库。该库包含与BN相关的结构学习、参数学习、推理和数据集,如洒水器、亚洲、警报等。有关结构学习和推理,请参见下面的示例。

bnlearn on github

# Load asia DAG
import bnlearn as bn

DAG = bn.import_DAG('asia')
# plot ground truth

G = bn.plot(DAG)
# Sampling

df = bn.sampling(DAG, n=10000)

# Structure learning of sampled dataset
model_sl = bn.structure_learning.fit(df, methodtype='hc', scoretype='bic')

# Plot based on structure learning of sampled data
bn.plot(model_sl, pos=G['pos'], interactive=True)

# Compare networks and make plot
# bn.compare_networks(model, model_sl, pos=G['pos'])

建议在环境中安装bnlearn

# Create new env.
conda create -n env_bnlearn python=3.6
conda activate env_bnlearn
    
# install bnlearn
pip install bnlearn

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-07
    • 2013-04-08
    • 2016-05-01
    • 2013-09-11
    • 2015-04-10
    • 2013-11-27
    • 2013-12-28
    相关资源
    最近更新 更多