This is a question about time series forecasting
이전 댓글 표시
Hello everybody! this is my code, I don't know what's wrong with it! Would anyone help me ? Thank you!
% Solve an Autoregression Time-Series Problem with a NAR Neural Network
% Script generated by NTSTOOL
% Created Fri Mar 15 22:09:23 CST 2013
%
% This script assumes this variable is defined:
%
% Data - feedback time series.
targetSeries = tonndata(Data,false,false);
% Create a Elman neural Network
feedbackDelays = 1:7;
hiddenLayerSize = 5;
net = elmannet(feedbackDelays,hiddenLayerSize,'trainlm');
% Choose Feedback Pre/Post-Processing Functions
% Settings for feedback input are automatically applied to feedback output
% For a list of all processing functions type: help nnprocess
net.inputs{1}.processFcns = {'removeconstantrows','mapminmax'};
% Prepare the Data for Training and Simulation
% The function PREPARETS prepares timeseries data for a particular network,
% shifting time by the minimum amount to fill input states and layer states.
% Using PREPARETS allows you to keep your original time series data unchanged, while
% easily customizing it for networks with differing numbers of delays, with
% open loop or closed loop feedback modes.
[inputs,inputStates,layerStates,targets] = preparets(net,targetSeries,targetSeries);
% Setup Division of Data for Training, Validation, Testing
% For a list of all data division functions type: help nndivide
net.divideFcn = 'dividerand'; % Divide data randomly
net.divideMode = 'time'; % Divide up every value
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;
% Choose a Training Function
% For a list of all training functions type: help nntrain
net.trainFcn = 'trainlm'; % Levenberg-Marquardt
% Choose a Performance Function
% For a list of all performance functions type: help nnperformance
net.performFcn = 'mse'; % Mean squared error
% Choose Plot Functions
% For a list of all plot functions type: help nnplot
net.plotFcns = {'plotperform','plottrainstate','plotresponse', ...
'ploterrcorr', 'plotinerrcorr'};
% Train the Network
[net,tr] = train(net,inputs,targets,inputStates,layerStates);
% Test the Network
outputs = net(inputs,inputStates,layerStates);
errors = gsubtract(targets,outputs);
performance = perform(net,targets,outputs)
% Recalculate Training, Validation and Test Performance
trainTargets = gmultiply(targets,tr.trainMask);
valTargets = gmultiply(targets,tr.valMask);
testTargets = gmultiply(targets,tr.testMask);
trainPerformance = perform(net,trainTargets,outputs)
valPerformance = perform(net,valTargets,outputs)
testPerformance = perform(net,testTargets,outputs)
% View the Network
view(net)
% Plots
% Uncomment these lines to enable various plots.
%figure, plotperform(tr)
%figure, plottrainstate(tr)
%figure, plotresponse(targets,outputs)
%figure, ploterrcorr(errors)
%figure, plotinerrcorr(inputs,errors)
% Closed Loop Network
% Use this network to do multi-step prediction.
% The function CLOSELOOP replaces the feedback input with a direct
% connection from the outout layer.
netc = closeloop(net);
[xc,xic,aic,tc] = preparets(netc,targetSeries,targetSeries);
yc = netc(xc,xic,aic);
perfc = perform(net,tc,yc)
% Early Prediction Network
% For some applications it helps to get the prediction a timestep early.
% The original network returns predicted y(t+1) at the same time it is given y(t+1).
% For some applications such as decision making, it would help to have predicted
% y(t+1) once y(t) is available, but before the actual y(t+1) occurs.
% The network can be made to return its output a timestep early by removing one delay
% so that its minimal tap delay is now 0 instead of 1. The new network returns the
% same outputs as the original network, but outputs are shifted left one timestep.
nets = removedelay(net);
[xs,xis,ais,ts] = preparets(nets,targetSeries,{},targetSeries);
ys = nets(xs,xis,ais);
closedLoopPerformance = perform(net,tc,yc);
Now I will show you the warning of matlab software!
Error using removedelay (line 57)
Removing 1 to input delays would result in a negative input weight delay.
Error in elman (line 95)
nets = removedelay(netc);
Could anyone help me ?
댓글 수: 3
Greg Heath
2013년 3월 18일
편집: Greg Heath
2013년 3월 18일
Which one shall we use?
help nndatasets
----------
Single Time-Series Prediction, Forecasting, Dynamic modelling,
Nonlinear autoregression, System identification, and Filtering
Single time-series prediction involves predicting the next value of
a time-series given its past values.
simplenar_dataset - Simple single series prediction dataset.
chickenpox_dataset - Monthly chickenpox instances dataset.
ice_dataset - Gobal ice volume dataset.
laser_dataset - Chaotic far-infrared laser dataset.
oil_dataset - Monthly oil price dataset.
river_dataset - River flow dataset.
solar_dataset - Sunspot activity dataset
length(simplenar_dataset) % 100
length(chickenpox_dataset)% 498
length(ice_dataset) % 219
length(laser_dataset)%10093
length(oil_dataset) % 180
length(river_dataset)% 264
length(solar_dataset)% 2899
Greg
Greg Heath
2013년 3월 22일
MATLAB'S solar_data set has no input. Therefore it is not suitable for use with timedelaynet, elmannet or narxnet.
채택된 답변
추가 답변 (0개)
카테고리
도움말 센터 및 File Exchange에서 Univariate Discrete Distributions에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!