about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/BNT/learning/learn_params.m
blob: 3d7ba8473822ea33ba5d3df5f00e0b07fa85023f (plain)
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