Mercurial > hg > camir-aes2014
comparison 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 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:e9a9cd732c1e |
---|---|
1 function [out, stats] = write_mat_results_ISMIR13RBM_windows(dirin,fileout) | |
2 % combine the test results from the directories supplied, | |
3 % and recombine the bins to a coherent dataset | |
4 | |
5 % 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'}; | |
6 % 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'}; | |
7 %folders = {folders_win1{:}, folders_win2{:}}; | |
8 | |
9 features = []; | |
10 show = 1; | |
11 | |
12 if nargin == 0 | |
13 dirin{1} = './'; | |
14 end | |
15 | |
16 global comparison; | |
17 global comparison_ids; | |
18 | |
19 newout = []; | |
20 thisdir = pwd; | |
21 % loop through al lthe result directories and | |
22 for diri = 1:numel(dirin) | |
23 | |
24 % --- | |
25 % go to directory and locate file | |
26 % --- | |
27 cd(dirin{diri}); | |
28 | |
29 u = dir(); | |
30 u = {u.name}; | |
31 [idx, strpos] = substrcellfind(u, '_finalresults.mat', 1); | |
32 | |
33 if numel(idx) < 1 | |
34 error 'This directory contains no valid test data'; | |
35 end | |
36 | |
37 % just one or more tests in this folder? | |
38 if exist('file','var') && isnumeric(file) | |
39 cprint(1, 'loading one result file'); | |
40 file = u{idx(file)}; | |
41 data = load(file); | |
42 sappend(out,data.out); | |
43 else | |
44 for filei = 1:numel(idx) | |
45 cprint(1, 'loading result file %i of %i',filei, numel(idx)); | |
46 file = u{idx(filei)}; | |
47 data = load(file); | |
48 newout = sappend(newout,data.out); | |
49 end | |
50 end | |
51 % reset act directory | |
52 cd(thisdir); | |
53 end | |
54 | |
55 % --- | |
56 % filter C values! | |
57 % --- | |
58 allcs = zeros(numel(newout),1); | |
59 for i=1:numel(newout) | |
60 allcs(i) = newout(i).trainparams.C; | |
61 end | |
62 valididx = find(allcs == 1); % select C! | |
63 newout = newout(valididx); | |
64 | |
65 % --- | |
66 % filter according to training parameter deltafun_params(windows) | |
67 % --- | |
68 wind = cell(numel(newout),1); | |
69 for i=1:numel(newout) | |
70 wind{i} = cell2str(newout(i).trainparams.deltafun_params); | |
71 end | |
72 windu = unique(wind); | |
73 | |
74 % save the combined out | |
75 newout2 = newout; | |
76 | |
77 % do the loop as in write_mat_results_ISMIR13RBM | |
78 for wi=1:numel(windu) | |
79 newout = newout2(strcellfind(wind, windu{wi},1)); | |
80 | |
81 % bundle all datasets | |
82 fout = sameparamsubset(newout, 'dataset',''); | |
83 out = []; | |
84 for ci=1:numel(fout) | |
85 filteredout = fout{ci}; | |
86 | |
87 ok_test = zeros(2, numel(filteredout)); | |
88 ok_train = zeros(2, numel(filteredout)); | |
89 ok_config = []; | |
90 | |
91 | |
92 tmpout = filteredout(1); | |
93 % cycle over all test sets and get new means | |
94 for i=1:numel(filteredout) | |
95 ok_test(:,i) = filteredout(i).mean_ok_test; | |
96 ok_train(:,i) = filteredout(i).mean_ok_train; | |
97 end | |
98 | |
99 % save the stuff | |
100 tmpout.mean_ok_test = mean(ok_test,2); | |
101 tmpout.var_ok_test = var(ok_test,0,2); | |
102 tmpout.mean_ok_train = mean(ok_train,2); | |
103 tmpout.var_ok_train = var(ok_train,0,2); | |
104 | |
105 tmpout.ok_test = ok_test; | |
106 tmpout.ok_train = ok_train; | |
107 | |
108 % put it in output structure | |
109 out = sappend(out,tmpout); | |
110 end | |
111 | |
112 % % --- | |
113 % % show results | |
114 % % --- | |
115 % if numel([out.mean_ok_test]) > 1 && show | |
116 % | |
117 % % plot means % plot std = sqrt(var) % plot training results | |
118 % figure; | |
119 % boxplot([out.mean_ok_test], sqrt([out.var_ok_test]), [out.mean_ok_train]); | |
120 % title (sprintf('Performance for all configs')); | |
121 % end | |
122 | |
123 % --- | |
124 % write max. test/train success | |
125 % --- | |
126 mean_ok_train = [out.mean_ok_train]; | |
127 [val, idx] = max(mean_ok_train(1,:)); | |
128 if show | |
129 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) | |
130 end | |
131 | |
132 end | |
133 | |
134 end | |
135 | |
136 function [out, param_hash,idx] = sameparamsubset(in, ignoret,ignoref) | |
137 % --- | |
138 % build index of all existing configurations | |
139 % --- | |
140 param_hash = cell(numel(in),1); | |
141 for i=1:numel(in) | |
142 params = struct('trainparams',in(i).trainparams, ... | |
143 'fparams',in(i).fparams); | |
144 | |
145 % remove the dataset param | |
146 if ~isempty(ignoret) | |
147 params.trainparams = rmfield(params.trainparams,ignoret); | |
148 end | |
149 if ~isempty(ignoref) | |
150 params.fparams = rmfield(params.fparams,ignoref); | |
151 end | |
152 | |
153 phash = hash(xml_format(params),'md5'); | |
154 param_hash{i} = phash; | |
155 end | |
156 | |
157 % --- | |
158 % recombine the data for different datasets! | |
159 % --- | |
160 cvals = unique(param_hash); | |
161 | |
162 out = {}; | |
163 for ci=1:numel(cvals) | |
164 idx{ci} = strcellfind(param_hash,cvals(ci),1); | |
165 out{ci} = in(idx{ci}); | |
166 end | |
167 | |
168 end | |
169 | |
170 function boxplot(mean, std, train); | |
171 | |
172 bar([train; mean]', 1.5); | |
173 hold on; | |
174 errorbar(1:size(mean,2), mean(1,:), std(1,:),'.'); | |
175 % plot(train,'rO'); | |
176 colormap(spring); | |
177 axis([0 size(mean,2)+1 max(0, min(min([train mean] - 0.1))) max(max([train mean] + 0.1))]); | |
178 end |