Mercurial > hg > camir-aes2014
diff core/magnatagatune/tests_evals/rbm_subspace/write_mat_results_ISMIR13RBM_windows.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/magnatagatune/tests_evals/rbm_subspace/write_mat_results_ISMIR13RBM_windows.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,178 @@ +function [out, stats] = write_mat_results_ISMIR13RBM_windows(dirin,fileout) +% combine the test results from the directories supplied, +% and recombine the bins to a coherent dataset + +% folders_win1 = {'130507_svm_disttest_subsconv_rbm_largegrid_21_r2385','130507_svm_disttest_subsconv_rbm_largegrid_22_r2385','130507_svm_disttest_subsconv_rbm_largegrid_23_r2385','130507_svm_disttest_subsconv_rbm_largegrid_24_r2385','130508_svm_disttest_subsconv_rbm_largegrid_25_r2391'}; +% folders_win2 = {'130511_svm_disttest_subsconv_rbm_largegrid_21_r2391','130511_svm_disttest_subsconv_rbm_largegrid_22_r2391','130511_svm_disttest_subsconv_rbm_largegrid_23_r2391','130511_svm_disttest_subsconv_rbm_largegrid_24_r2391','130513_svm_disttest_subsconv_rbm_largegrid_25_r2391'}; +%folders = {folders_win1{:}, folders_win2{:}}; + +features = []; +show = 1; + +if nargin == 0 + dirin{1} = './'; +end + +global comparison; +global comparison_ids; + +newout = []; +thisdir = pwd; +% loop through al lthe result directories and +for diri = 1:numel(dirin) + + % --- + % go to directory and locate file + % --- + cd(dirin{diri}); + + u = dir(); + u = {u.name}; + [idx, strpos] = substrcellfind(u, '_finalresults.mat', 1); + + if numel(idx) < 1 + error 'This directory contains no valid test data'; + end + + % just one or more tests in this folder? + if exist('file','var') && isnumeric(file) + cprint(1, 'loading one result file'); + file = u{idx(file)}; + data = load(file); + sappend(out,data.out); + else + for filei = 1:numel(idx) + cprint(1, 'loading result file %i of %i',filei, numel(idx)); + file = u{idx(filei)}; + data = load(file); + newout = sappend(newout,data.out); + end + end + % reset act directory + cd(thisdir); +end + +% --- +% filter C values! +% --- +allcs = zeros(numel(newout),1); +for i=1:numel(newout) + allcs(i) = newout(i).trainparams.C; +end +valididx = find(allcs == 1); % select C! +newout = newout(valididx); + +% --- +% filter according to training parameter deltafun_params(windows) +% --- +wind = cell(numel(newout),1); +for i=1:numel(newout) + wind{i} = cell2str(newout(i).trainparams.deltafun_params); +end +windu = unique(wind); + +% save the combined out +newout2 = newout; + +% do the loop as in write_mat_results_ISMIR13RBM +for wi=1:numel(windu) + newout = newout2(strcellfind(wind, windu{wi},1)); + + % bundle all datasets + fout = sameparamsubset(newout, 'dataset',''); + out = []; + for ci=1:numel(fout) + filteredout = fout{ci}; + + ok_test = zeros(2, numel(filteredout)); + ok_train = zeros(2, numel(filteredout)); + ok_config = []; + + + tmpout = filteredout(1); + % cycle over all test sets and get new means + for i=1:numel(filteredout) + ok_test(:,i) = filteredout(i).mean_ok_test; + ok_train(:,i) = filteredout(i).mean_ok_train; + end + + % save the stuff + tmpout.mean_ok_test = mean(ok_test,2); + tmpout.var_ok_test = var(ok_test,0,2); + tmpout.mean_ok_train = mean(ok_train,2); + tmpout.var_ok_train = var(ok_train,0,2); + + tmpout.ok_test = ok_test; + tmpout.ok_train = ok_train; + + % put it in output structure + out = sappend(out,tmpout); + end + +% % --- +% % show results +% % --- +% if numel([out.mean_ok_test]) > 1 && show +% +% % plot means % plot std = sqrt(var) % plot training results +% figure; +% boxplot([out.mean_ok_test], sqrt([out.var_ok_test]), [out.mean_ok_train]); +% title (sprintf('Performance for all configs')); +% end + + % --- + % write max. test/train success + % --- + mean_ok_train = [out.mean_ok_train]; + [val, idx] = max(mean_ok_train(1,:)); + if show + fprintf(' --- Maximal train set success for %s: nr. %d, %3.2f percent, test result %3.2f percent. --- \n', windu{wi}, idx, val * 100,out(idx).mean_ok_test(1,:)*100) + end + +end + +end + +function [out, param_hash,idx] = sameparamsubset(in, ignoret,ignoref) + % --- + % build index of all existing configurations + % --- + param_hash = cell(numel(in),1); + for i=1:numel(in) + params = struct('trainparams',in(i).trainparams, ... + 'fparams',in(i).fparams); + + % remove the dataset param + if ~isempty(ignoret) + params.trainparams = rmfield(params.trainparams,ignoret); + end + if ~isempty(ignoref) + params.fparams = rmfield(params.fparams,ignoref); + end + + phash = hash(xml_format(params),'md5'); + param_hash{i} = phash; + end + + % --- + % recombine the data for different datasets! + % --- + cvals = unique(param_hash); + + out = {}; + for ci=1:numel(cvals) + idx{ci} = strcellfind(param_hash,cvals(ci),1); + out{ci} = in(idx{ci}); + end + +end + +function boxplot(mean, std, train); + + bar([train; mean]', 1.5); + hold on; + errorbar(1:size(mean,2), mean(1,:), std(1,:),'.'); +% plot(train,'rO'); + colormap(spring); + axis([0 size(mean,2)+1 max(0, min(min([train mean] - 0.1))) max(max([train mean] + 0.1))]); +end