score_dags.m
来自「麻省理工学院的人工智能工具箱,很珍贵,希望对大家有用!」· M 代码 · 共 63 行
M
63 行
function score = score_dags(data, ns, dags, varargin)% SCORE_DAGS Compute the score of one or more DAGs% score = score_dags(data, ns, dags, varargin)%% data{i,m} = value of node i in case m (can be a cell array).% node_sizes(i) is the number of size of node i.% dags{g} is the g'th dag% score(g) is the score of the i'th dag%% The following optional arguments can be specified in the form of name/value pairs:% [default value in brackets]%% scoring_fn - 'bayesian' or 'bic' [ 'bayesian' ]% Currently, only networks with all tabular nodes support Bayesian scoring.% type - type{i} is the type of CPD to use for node i, where the type is a string% of the form 'tabular', 'noisy_or', 'gaussian', etc. [ all cells contain 'tabular' ]% params - params{i} contains optional arguments passed to the CPD constructor for node i,% or [] if none. [ all cells contain {'prior', 1}, meaning use uniform Dirichlet priors ]% discrete - the list of discrete nodes [ 1:N ]% clamped - clamped(i,m) = 1 if node i is clamped in case m [ zeros(N, ncases) ]%% e.g., score = score_dags(data, ns, mk_all_dags(n), 'scoring_fn', 'bic', 'params', []);%% If the DAGs have a lot of families in common, we can cache the sufficient statistics,% making this potentially more efficient than scoring the DAGs one at a time.% (Caching is not currently implemented, however.)[n ncases] = size(data);% set default paramstype = cell(1,n);params = cell(1,n);for i=1:n type{i} = 'tabular'; params{i} = { 'prior_type', 'dirichlet', 'dirichlet_weight', 1 };endscoring_fn = 'bayesian';discrete = 1:n;clamped = zeros(n, ncases);args = varargin;nargs = length(args);for i=1:2:nargs switch args{i}, case 'scoring_fn', scoring_fn = args{i+1}; case 'type', type = args{i+1}; case 'discrete', discrete = args{i+1}; case 'clamped', clamped = args{i+1}; case 'params', if isempty(args{i+1}), params = cell(1,n); else params = args{i+1}; end endendNG = length(dags);score = zeros(1, NG);for g=1:NG dag = dags{g}; for j=1:n u = find(clamped(j,:)==0); ps = parents(dag, j); score(g) = score(g) + score_family(j, ps, type{j}, scoring_fn, ns, discrete, data(:,u), params{j}); endend
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?