annotate core/tools/machine_learning/cvpartition_trunctrain.m @ 0:cc4b1211e677 tip

initial commit to HG from Changeset: 646 (e263d8a21543) added further path and more save "camirversion.m"
author Daniel Wolff
date Fri, 19 Aug 2016 13:07:06 +0200
parents
children
rev   line source
Daniel@0 1 % ---
Daniel@0 2 % class cvpartition_trunctrain
Daniel@0 3 % NOTE: this is a fake cvpartition double for
Daniel@0 4 % using cvpartitions in truncated-training size experiments
Daniel@0 5 % ---
Daniel@0 6 classdef cvpartition_trunctrain
Daniel@0 7
Daniel@0 8 properties (Hidden)
Daniel@0 9
Daniel@0 10 mtest;
Daniel@0 11 mtraining;
Daniel@0 12 end
Daniel@0 13 properties
Daniel@0 14 N;
Daniel@0 15 NumTestSets;
Daniel@0 16 TrainSize;
Daniel@0 17 TestSize;
Daniel@0 18 end
Daniel@0 19
Daniel@0 20
Daniel@0 21 methods
Daniel@0 22
Daniel@0 23 % ---
Daniel@0 24 % constuctor: directly calculates the truncated testset
Daniel@0 25 % ---
Daniel@0 26 function P = cvpartition_trunctrain(Pin, perctrain)
Daniel@0 27
Daniel@0 28 P.N = Pin.N;
Daniel@0 29 P.NumTestSets = Pin.NumTestSets;
Daniel@0 30
Daniel@0 31 for i = 1:Pin.NumTestSets
Daniel@0 32
Daniel@0 33 % copy testing data
Daniel@0 34 P.TestSize(i) = Pin.TestSize(i);
Daniel@0 35 P.mtest{i} = Pin.test(i);
Daniel@0 36
Daniel@0 37 % calculate new training size
Daniel@0 38 P.TrainSize(i) = ceil(perctrain * Pin.TrainSize(i));
Daniel@0 39
Daniel@0 40 % get actual training indices
Daniel@0 41 idx = find(Pin.training(i));
Daniel@0 42
Daniel@0 43 % ---
Daniel@0 44 % TODO: save the permutation in a global variable,
Daniel@0 45 % tomake the same smaller set available
Daniel@0 46 % for all further experiments.
Daniel@0 47 % moreover, it would be great if the smaller training sets
Daniel@0 48 % are subsets of the bigger ones
Daniel@0 49 % ---
Daniel@0 50 tokeep = randperm(numel(idx));
Daniel@0 51 tokeep = tokeep(1:P.TrainSize(i));
Daniel@0 52
Daniel@0 53 % get indices to keep
Daniel@0 54 idx = idx(tokeep);
Daniel@0 55
Daniel@0 56 % build truncated training set
Daniel@0 57 P.mtraining{i} = false(P.N, 1);
Daniel@0 58 P.mtraining{i}(idx) = true;
Daniel@0 59 end
Daniel@0 60 end
Daniel@0 61
Daniel@0 62 function out = test(P, i)
Daniel@0 63
Daniel@0 64 out = P.mtest{i};
Daniel@0 65 end
Daniel@0 66
Daniel@0 67 function out = training(P, i)
Daniel@0 68
Daniel@0 69 out = P.mtraining{i};
Daniel@0 70 end
Daniel@0 71
Daniel@0 72 end
Daniel@0 73 end