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