function [acc,cfm] = score_lhoods(lhood,gt) % [acc,cfm] = score_lhoods(lhood,gt) % Calculate accuracy and confusion given likelihoods % lhood is array of likelihoods, one row per model, one column % per test item. % gt is a vector of the ground truth rows that should be best in % each column. % acc is a scalar value, p(correct), cfm is a NxN confusion matrix. % 2007-04-17 dpwe@ee.columbia.edu ntest = length(gt); % Which is the most likely model for each test item? [maxv,indx] = max(lhood); % Overall error rate acc = mean(indx==gt); disp(['Classification accuracy = ', num2str(100*acc),'%']); % Matrix of which track was classified to which class, and ground truth; cm = 0*lhood; gtm = 0*lhood; for i = 1:ntest cm(indx(i),i) = 1; gtm(gt(i),i) = 1; end % So confusion matrix cfm = gtm*cm'; % rows are true class, columns are reported (model) class