% _________________________________________________________________________ % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ % PREDICTION OF ACUTE HYPOTENSIVE EPISODES USING NEURAL NETWORK MULTIMODELS % _________________________________________________________________________ % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ % Copyright (C) 2009 % : Jorge Henriques ... , % : Teresa Rocha ... % This software is released under the terms of the GNU % General Public License (http://www.gnu.org/copyleft/gpl.html) % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ % mainTrainABPSignal.m %__________________________________________________________________________ % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ %__________________________________________________________________________ % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ % Traing GRNN models based on datasets (H, C) % 1. Load a signal from SOURCE % ..\dataTrain % 2. Computation of optimal ORDER and SIZE % 3. Define strutucture and parameters of GRNN models for each signal %บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ OUTPUT % ORDER, SIZE and GRNN Models. % To be saved in folder % ..\NNModels % .. OSTOTAL=[ ORDER, SIZE ] (60x2) corresponding to the 60 dataSets(H+C) % .. NETXi_j models - 60*D neural networks, D window size % .. X ={H,C}, i=1..15, j=1..W (W windows) %__________________________________________________________________________ % จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ clear; clc; close all warning off showTrain = 0; saveTrain = 1; disp('___________________________________________________________________') disp('จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ') disp(' mainTrainABPSignal ') disp('___________________________________________________________________') disp('จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ') pause(1) %บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ % DEFINITIONS 1. %บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ %__________________________________________________________________________ % Data Set - 1.1 %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ pathTrain= '..\dataTrain\'; LIST = {'H1', 'H2', 'C1', 'C2'} sinal = 'BP' DATNUM = 15 T0 = 600; %.. Start of AHE (assume data knowledge 10 hours before) FORECAST = 60 %.. One hour (forecast window) %__________________________________________________________________________ % Multi Models - 1.2 %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ D = 15; %.. Window prediction size NUMNET = 4; %.. num Networks AFTER = 4; %.. num Windows = (D*AFTER minutes) tolERROR = 20; %.. Maximum prediction error for each signal firstORD = 60; %.. minutes lastORD = 80; %.. minutes firstSIZE= 120; %.. minutes lastSIZE = 170; %.. minutes INC = 10; %.. minutes %บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ % TRAINING 2. %บบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบบ %__________________________________________________________________________ % Each dataSet %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ for itList=1:length(LIST) % CYCLE FOR ORDER / SIZE %---------------------------------------------------------------------- ORD =[ firstORD: INC: lastORD ] ; SIZE =[ firstSIZE: INC: lastSIZE ] ; ORDSIZ=[ ]; % Each signal %---------------------------------------------------------------------- for itData=1:DATNUM str=char(LIST(itList)); dataSet=str(1); numSet =str(2); % 1. %------------------------------------------- Load a signal (660,3) cmd=['load ' char(pathTrain) char(sinal) '_' ... char(dataSet) char(numSet) '_' num2str(itData) '.mat']; eval(cmd); DAT0=DAT; % 2. %------------------------------------------------ Find ORD/SIZ/NET minERROR=realmax; for itSIZE=SIZE for itORD=ORD if (itSIZE) < (FORECAST+itORD) continue end clc [':::::::::::::::::::::::::::::::::::::: ' dataSet numSet] [ itData itSIZE itORD ] % Window data %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [DAT, idB, idE, id0 ]=mmWindowDat(DAT0,T0,D,AFTER,itSIZE); [DAT, dmin,dmax, dbia]=mmNormalize(DAT, -1, 1, 0, id0 ); % Data train:Input(XX) Target(YY) %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ outY= DAT(1:id0); outN= DAT(1:id0); XX = mmInputXX(DAT, id0, itORD); for NET=1:NUMNET %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ YREAL YR = []; first= itORD+(NET-1)*D+1; last = id0; for id = first:last iyy= id:id+D-1; yy = DAT(iyy,:); yy = yy(:); YR = [YR yy ]; end %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ YPrediction YP = []; first= id0+1; last = id0+(NET-1)*D; for id = first:last iyy= id:id+D-1; yy = DAT(iyy,:); yy = yy(:); YP = [YP yy ]; end %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ TRAINING GRNN YY = [YR YP]; [net,YNi,tr]= mmGRNNTrain(XX, YY, tolERROR, FORECAST); disp(['... Training : ' ... num2str(NET) ' --- ' num2str(tr,5) ]) %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ Net temp for numN=1:NUMNET if NET==numN cmd=['net' num2str(numN) '=net;']; eval(cmd); end end %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ Update YN = sim(net,XX); yn = YN(:,end); yn = yn-yn(1)+outN(end); XX = [XX ; YN ]; outN = [outN; yn ]; outY = [outY; DAT(iyy) ]; %จจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจจ Show if showTrain==2 %.. hide close all figure(1) plot(1:length(outY),outY,'g',... 1:length(outN),outN,'b' ) hold on plot(1:length(outY),1*ones(size(outY)),'k.' ); plot([id0 id0],... [min(outY) max(outY)],'c-','LineWidth',5 ); plot([FORECAST+id0 FORECAST+id0],... [min(outY) max(outY)],'c-','LineWidth',5 ); pause end end % Optimal NET/ORD/SIZ %~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ errFOR=outY(end-FORECAST+1:end)-outN(end-FORECAST+1:end); ERROR= sum(errFOR.^2); if ERROR