enter_evidence.m

来自「贝叶斯网络matlab源程序,可用于分类,欢迎大家下载测试」· M 代码 · 共 43 行

M
43
字号
function [engine, loglik] = enter_evidence(engine, evidence, varargin)% ENTER_EVIDENCE Add the specified evidence to the network (global_joint)% [engine, loglik] = enter_evidence(engine, evidence, ...)%% evidence{i} = [] if if X(i) is hidden, and otherwise contains its observed value.%% Warning: Computing the log likelihood requires marginalizing all the nodes and can be slow.%% The list below gives optional arguments [default value in brackets].      %% exclude - list of nodes whose potential will not be included in the joint [ [] ]%% e.g., engine = enter_evidence(engine, ev, 'exclude', 3)exclude = [];maximize = 0;if nargin >= 3  args = varargin;  nargs = length(args);  for i=1:2:nargs    switch args{i},     case 'exclude', exclude = args{i+1};     case 'maximize', maximize = args{i+1};     otherwise,      error(['invalid argument name ' args{i}]);    end  endend  assert(~maximize)bnet = bnet_from_engine(engine);N = length(bnet.node_sizes);%[engine.jpot, loglik] = compute_joint_pot(bnet, mysetdiff(1:N, exclude), evidence, 1:N);[engine.jpot] = compute_joint_pot(bnet, mysetdiff(1:N, exclude), evidence, 1:N);% jpot should not be normalized, otherwise it gives wrong resutls for limids like asia_dt1if nargout == 2  [m] = marginal_nodes(engine, []);  [T, lik] = normalize(m.T);  loglik = log(lik);end     %[engine.jpot loglik] = normalize_pot(engine.jpot);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?