X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=octave_packages%2Fnnet-0.1.13%2Fdividerand.m;fp=octave_packages%2Fnnet-0.1.13%2Fdividerand.m;h=3e3d748244c0d628385ed0db2d3769f5cd0d436d;hb=c880e8788dfc484bf23ce13fa2787f2c6bca4863;hp=0000000000000000000000000000000000000000;hpb=1705066eceaaea976f010f669ce8e972f3734b05;p=CreaPhase.git diff --git a/octave_packages/nnet-0.1.13/dividerand.m b/octave_packages/nnet-0.1.13/dividerand.m new file mode 100644 index 0000000..3e3d748 --- /dev/null +++ b/octave_packages/nnet-0.1.13/dividerand.m @@ -0,0 +1,74 @@ +## Copyright (C) 2009 Luiz Angelo Daros de Luca +## +## +## This program is free software; you can redistribute it and/or modify it +## under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2, or (at your option) +## any later version. +## +## This program is distributed in the hope that it will be useful, but +## WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, see +## . + +## -*- texinfo -*- +## @deftypefn {Function File} [@var{trainVectors},@var{validationVectors},@var{testVectors},@var{indexOfTrain},@var{indexOfValidation},@var{indexOfTest}] = dividerand (@var{allCases},@var{trainRatio},@var{valRatio},@var{testRatio}) +## Divide the vectors in training, validation and test group according to +## the informed ratios +## +## +## @example +## +## [trainVectors,validationVectors,testVectors,indexOfTrain,indexOfValidatio +## n,indexOfTest] = dividerand(allCases,trainRatio,valRatio,testRatio) +## +## The ratios are normalized. This way: +## +## dividerand(xx,1,2,3) == dividerand(xx,10,20,30) +## +## @end example +## +## @end deftypefn + + +function [trainVectors,validationVectors,testVectors,indexOfTrain,indexOfValidation,indexOfTest] = dividerand(allCases,trainRatio,valRatio,testRatio) + # + # Divide the vectors in training, validation and test group according to + # the informed ratios + # + # [trainVectors,validationVectors,testVectors,indexOfTrain,indexOfValidatio + # n,indexOfTest] = dividerand(allCases,trainRatio,valRatio,testRatio) + # + # The ratios are normalized. This way: + # + # dividerand(xx,1,2,3) == dividerand(xx,10,20,30) + # + + ## Normalize ratios + total = trainRatio + valRatio + testRatio; + #trainRatio = trainRatio / total; not used + validationRatio = valRatio / total; + testRatio = testRatio / total; + + ## Calculate the number of cases for each type + numerOfCases = size(allCases,2); + numberOfValidation = floor(validationRatio*numerOfCases); + numberOfTest = floor(testRatio*numerOfCases); + numberOfTrain = numerOfCases - numberOfValidation - numberOfTest; + + ## Find their indexes + indexOfAll=randperm(numerOfCases); + indexOfValidation=sort(indexOfAll(1:numberOfValidation)); + indexOfTest=sort(indexOfAll((1:numberOfTest)+numberOfValidation)); + indexOfTrain=sort(indexOfAll((1:numberOfTrain)+numberOfTest+numberOfValidation)); + + ## Return vectors + trainVectors = allCases(:,indexOfTrain); + testVectors = allCases(:,indexOfTest); + validationVectors = allCases(:,indexOfValidation); +endfunction +