Mercurial > hg > camir-aes2014
diff core/magnatagatune/sim_from_comparison_UNfair_components.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/sim_from_comparison_UNfair_components.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,91 @@ +function [partBinTrn, partBinTst, partBinNoTrn] = sim_from_comparison_UNfair_components(comparison, comparison_ids, k, trainpart, filename) +% +% FOR ISMIR 2012 +% +% creates a cross-validation partitioning of the +% similarity data in "multiG", NOT PRESERVING the +% connected components in it during partitioning + +% --- +% get the similarity multigraph and remove cycles +% --- +cprint(2, 'creating graph') +% Gm = ClipSimGraphMulti(comparison, comparison_ids); +% Gm.remove_cycles_length2; +cprint(2, 'loading Multigraph for Similarity Constraints') +load('comp_SimGraphMulti.mat', 'G'); + + +% get similarity data +[weights, a, b, c] = G.similarities(); + +% --- +% We randomise the constraint succession +% --- +datPermu = randperm(numel(a)); +a = a(datPermu); +b = b(datPermu); +c = c(datPermu); +weights = weights(datPermu); + +% --- +% NOTE: we try the easy route: partition the graphs +% and look at which constraints balance we end up with +% --- +P = cvpartition(numel(a), 'k', k); + +% --- +% here we export similarity test sets +% --- +cprint(2, 'export test similarity') +partBinTst = {}; +for i = 1:P.NumTestSets % test runs + + partBinTst{i} = [a(P.test(i))' b(P.test(i))' c(P.test(i))' weights(P.test(i))]; +end + + +% --- +% Note: This uses a "truly" increasing training set +% to do the partial training partition +% --- +cprint(2, 'export train similarity') +for m = 1:numel(trainpart) + + % save test indices + Ptrain(m) = cvpartition_trunctrain_incsubsets(P, trainpart(m)); +end + +% --- +% here we export similarity training sets +% --- +partBinTrn = {}; +for i = 1:P.NumTestSets % train runs + + for m = 1:numel(trainpart) % increasing training sets + + % get training indices + idxB = Ptrain(m).training(i); + + % save into cell + partBinTrn{i,m} = [a(idxB)' b(idxB)' c(idxB)' weights(idxB)]; + end +end + +partBinNoTrn = {}; +for i = 1:P.NumTestSets % train runs + + for m = 1:numel(trainpart) % increasing training sets + + % get training indices + idxB = ~Ptrain(m).training(i) & ~Ptrain(m).test(i); + + % save into cell + partBinNoTrn{i,m} = [a(idxB)' b(idxB)' c(idxB)' weights(idxB)]; + end +end + +if nargin == 5 + save(filename, 'partBinTrn', 'partBinTst', 'partBinNoTrn') +end +end \ No newline at end of file