1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function bnet = learn_params(bnet, data)
% LEARN_PARAMS Find the maximum likelihood params for a fully observed model
% bnet = learn_params(bnet, data)
%
% data(i,m) is the value of node i in case m (can be a cell array)
%
% We set bnet.CPD{i} to its ML/MAP estimate.
%
% Currently we assume no param tying
% AND THAT EACH DATA POINT IS A SCALAR - no longer assumed
%if iscell(data)
% data=cell2num(data);
%end
[n ncases] = size(data);
for j=1:n
e = bnet.equiv_class(j);
assert(e==j);
if adjustable_CPD(bnet.CPD{e})
fam = family(bnet.dag,j);
%bnet.CPD{j} = learn_params(bnet.CPD{j}, data(fam,:));
bnet.CPD{j} = learn_params(bnet.CPD{j}, fam, data, bnet.node_sizes, bnet.cnodes);
if ismember(e,bnet.dnodes)
bnet.CPD{j} = learn_params_orig(bnet.CPD{j}, j, data, bnet.node_sizes, bnet.cnodes);
end
end
end
|