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