1、使用learn_param学习样本得到网络参数后,不能直接使用bnet.CPD查看网络参数,使用bnet.CPD.CPT也是错误的写法。
正确的使用方法是使用CPD_to_CPT将CPD转化为CPT表格的形式显示出来。
bnet = learnparam(ret{1,1},ret{1,2},ret{1,3},ret{1,4},ret{1,9});
T = bnet.CPD;
T2= CPD_to_CPT(T{1,1})
运行结果如下:
T2 =
0.4930
0.5070
2、使用enter_evidence输入证据后,用marginal_nodes查询节点概率表:
for i = 1:n
marg = marginal_nodes(engine, result_nodes(1,i), 1 result_p{i,1} = marg.T;
end
disp(cell2array(result_nodes));
运行结果如下:
0.0481 0.9519
0.0865 0.9135
0.5000 0.5000
0.5000 0.5000
其中cell2array源代码如下:
function array = cell2array(cell)
[m, ~] = size(cell);
maxcol = zeros(m,1);
for i = 1:m
maxcol(i,1) = size(cell{i,1},1);
end
n = max(maxcol);
%n = size(cell{1,1});
array = zeros(m, n);
for i = 1:m
array(i,:) = cell2num(cell(i,1));
end
end