查看: 6249|回复: 9|关注: 1

[已答复] 贝叶斯网络 如何输出条件概率表CPT

[复制链接]

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
发表于 2012-12-29 18:01:58 | 显示全部楼层 |阅读模式
给定数据源(见附件),使用k2算法求得贝叶斯网络的结构后,如何求出各个节点的条件概率表?并输出CPT。还请大家帮帮忙。代码如下
clear;
clc;
n=10;
ns=[2,2,3,2,3,3,2,3,3,6];
names={'x1','x2','x3','x4','x5','x6','x7','x8','x9','x10'};
x1=1;x2=2;x3=3;x4=4;x5=5;x6=6;x7=7;x8=8;x9=9;x10=10;
order=[10 3 6 8 5 2 4 1 9 7];
result_matrix=zeros(ns(x10),ns(x10));
max_fan_in=2;
data=load('D:\teste2.txt');
[num_n,num_m]=size(data');
data_train=zeros(num_n,num_m);
dag=zeros(n,n);
dag=learn_struct_K2(data',ns,order,'max_fan_in',max_fan_in);
bnet=mk_bnet(dag,ns);
draw_graph(dag);
%下面是参数学习
priors=1;
seed=0;
rand('state',seed);
for i=1:n
    bnet.CPD{i}=tabular_CPD(bnet,i,'CPT','unif','prior_type','dirichlet','dirichlet_type','BDeu','dirichlet_weight',priors);
     % 采用全局联合树推理算法,提高运算速度
end
bnet2=bayes_update_params(bnet,data');
CPT3=cell(1,n);
for i=1:n
    s=struct(bnet2.CPD{i});
    CPT3{i}=s.CPT;
end
%给定证据,求最大后验概率
engine = jtree_inf_engine(bnet2);
evidence = cell(1,n);
evidence{x1} = 1;
evidence{x2} = 1;
evidence{x3} = 1;
evidence{x4} = 1;
evidence{x5} = 1;
evidence{x6} = 1;
evidence{x7} = 1;
evidence{x8} = 2;
evidence{x9} = 2;
[engine, ll] = enter_evidence(engine, evidence);
marg = marginal_nodes(engine,10);
marg.T

teste2.txt

966 Bytes, 下载次数: 13692

数据源

新手

5 麦片

财富积分


050


0

主题

64

帖子

0

最佳答案
发表于 2012-12-29 19:19:13 | 显示全部楼层
全概率是从整体到局部,也就是把事件分割成小事件计算,大事化小,也贝叶斯计算需要先计算全概率,全概率公式: 设事件 B1,B2…..为样本空间的一个正...

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
 楼主| 发表于 2012-12-29 19:37:00 | 显示全部楼层

你好,谢谢解答。根据数据源,能不能用程序实现自动计算各个节点的概率,并输出呢

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2013-5-25 11:42:15 | 显示全部楼层
用get_fields()函数,如 get_fields(CPD, 'cpt');

新手

10 麦片

财富积分


050


1

主题

20

帖子

0

最佳答案
发表于 2014-10-22 22:27:15 | 显示全部楼层
mark一下,虽然没看懂。

新手

7 麦片

财富积分


050


0

主题

9

帖子

0

最佳答案
发表于 2016-8-5 16:18:58 | 显示全部楼层
同问,在进行结构学习和参数学习后,怎样得到条件概率矩阵呢:P

新手

5 麦片

财富积分


050


2

主题

6

帖子

0

最佳答案
  • 关注者: 1
发表于 2016-8-9 18:35:23 | 显示全部楼层
呵呵你个大大 发表于 2016-8-5 16:18
同问,在进行结构学习和参数学习后,怎样得到条件概率矩阵呢

请问你现在学会了吗?

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2016-10-25 16:51:39 | 显示全部楼层
看不懂!!

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-1-29 19:21:49 | 显示全部楼层
bnet2=bayes_update_params(bnet,data')这步之后就运行不出来了啊

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-1-29 19:23:37 | 显示全部楼层
.Ke3en 发表于 2019-1-29 19:21
bnet2=bayes_update_params(bnet,data')这步之后就运行不出来了啊

就是这样显示的,有大佬可以教教我妈
捕获.PNG
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

快速回复 返回顶部 返回列表