wolffd@0: function bnet = learn_params(bnet, data) wolffd@0: % LEARN_PARAMS Find the maximum likelihood params for a fully observed model wolffd@0: % bnet = learn_params(bnet, data) wolffd@0: % wolffd@0: % data(i,m) is the value of node i in case m (can be a cell array) wolffd@0: % wolffd@0: % We set bnet.CPD{i} to its ML/MAP estimate. wolffd@0: % wolffd@0: % Currently we assume no param tying wolffd@0: wolffd@0: % AND THAT EACH DATA POINT IS A SCALAR - no longer assumed wolffd@0: wolffd@0: %if iscell(data) wolffd@0: % data=cell2num(data); wolffd@0: %end wolffd@0: [n ncases] = size(data); wolffd@0: for j=1:n wolffd@0: e = bnet.equiv_class(j); wolffd@0: assert(e==j); wolffd@0: if adjustable_CPD(bnet.CPD{e}) wolffd@0: fam = family(bnet.dag,j); wolffd@0: %bnet.CPD{j} = learn_params(bnet.CPD{j}, data(fam,:)); wolffd@0: bnet.CPD{j} = learn_params(bnet.CPD{j}, fam, data, bnet.node_sizes, bnet.cnodes); wolffd@0: end wolffd@0: end wolffd@0: