NARXNET to predict the time series
2 ビュー (過去 30 日間)
古いコメントを表示
Hi Neural Network users,
I had written a code to predict the last week of my data set, the result is as shown in the plot below Please let me know where I made a mistake :(
clear;
%%1. Importing data
load ('Metdata.mat'); % Import file
load('Rdate.mat');
Metdata(:,1)=[];
Rdate(:,1)=[];
Inputs = Metdata'; %Convert to row
Target = Rdate'; %Convert to row
X = con2seq(Inputs); %Convert to cell
T = con2seq(Target); %Convert to cell
%%2. Data preparation
N = 168; % Multi-step ahead prediction
% Input and target series are divided in two groups of data:
% 1st group: used to train the network
inputSeries = X(1:end-N);
targetSeries = T(1:end-N);
% 2nd group: this is the new data used for simulation. inputSeriesVal will
% be used for predicting new targets. targetSeriesVal will be used for
% network validation after prediction
inputSeriesVal = X(end-N+1:end);
targetSeriesVal = T(end-N+1:end);
%%3. Network Architecture
delay = 2;
neuronsHiddenLayer = 15;
% Create a Nonlinear Autoregressive Network with External Input
% net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize);
net = narxnet(1:delay,1:delay,neuronsHiddenLayer);
%%4. Training the network
[Xs,Xi,Ai,Ts] = preparets(net,inputSeries,{},targetSeries);
net = train(net,Xs,Ts,Xi,Ai);
view(net)
Y = net(Xs,Xi,Ai);
% Performance for the series-parallel implementation, only
% one-step-ahead prediction
perf = perform(net,Ts,Y);
%%5. Multi-step ahead prediction
[Xs1,Xio,Aio] = preparets(net,inputSeries(1:end-delay),{},targetSeries(1:end-delay));
[Y1,Xfo,Afo] = net(Xs1,Xio,Aio);
[netc,Xic,Aic] = closeloop(net,Xfo,Afo);
[yPred,Xfc,Afc] = netc(inputSeriesVal,Xic,Aic);
multiStepPerformance = perform(net,yPred,targetSeriesVal);
view(netc)
figure;
plot([cell2mat(targetSeries),nan(1,N);
nan(1,length(targetSeries)),cell2mat(yPred);
nan(1,length(targetSeries)),cell2mat(targetSeriesVal)]')
legend('Original Targets','Network Predictions','Expected Outputs')
0 件のコメント
採用された回答
Greg Heath
2015 年 11 月 27 日
Your complete data set does not appear to be stationary (e.g., constant mean, variance and correlations.
Divide the data into stationary subsets and design a model for each.
Hope this helps.
Greg
4 件のコメント
Greg Heath
2015 年 12 月 1 日
Look at the plot! There are 5 separate regions, each with a separate set of summary statistics.
MAPSTD is not necessary. I prefer using the function ZSCORE before training to detect outliers for removal or modification. Then I use the default MAPMINMAX. An alternative would be to replace the the default with MAPSTD or '' (i.e., nothing).
You can refer to any of my zillions of postings in the NEWSGROUP or ANSWERS.
Greg
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Predictive Maintenance Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!