我有一个我分成的数据集:
其中每条记录都是时间步t。
我的目标是构建一个NN模型,该模型使用最多t的历史信息预测Y(t + 1),即 Y(T + 1)= f(X(t),X(t- 1),...,Y(0),X(T),X(T-1),...,Y(0))即可。请注意,考虑iformation不超过10个时间步是合理的。 根据mathworks.com/help/nnet/gs/neural-network-time-series-prediction-and-modeling.html,我使用X_T和Y_T训练了一个NN。
% Cell arrays inputs for NN
X = tonndata(X_TR,false,false);
T = tonndata(Y_TR,false,false); %output volumes
% training function
trainFcn = 'trainlm'; % Levenberg-Marquardt
% Create NARX
% network parameters
lags = 10;
inputDelays = 1:lags;
feedbackDelays = 1:lags;
hiddenLayerSize = 40;
% construct NARX net
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,'open',trainFcn);
%prepare time series
[x,xi,ai,t] = preparets(net,X,{},T);
% Training, Validation, Testing
net.divideParam.trainRatio = 60/100;
net.divideParam.valRatio = 20/100;
net.divideParam.testRatio = 20/100;
% Train the Network
[net,tr] = train(net,x,t,xi,ai);
我不知道如何应用训练有素的模型。假设培训成功,我想将模型应用于数据X_APP和Y_APP的另一部分,以便预测Y_APP(t + 1)。我怎么能这样做?
谢谢。
答案 0 :(得分:0)
您可以按照以下说明使用经过培训的网络:
% define your new input
X = tonndata(X_APP, false, false);
T = tonndata(Y_APP, false, false);
% prepare new data for usage with your net
[x,xi,ai,t] = preparets(net,X,{},T);
% generate output
y = network(x,xi,ai);
您还可以随时保存您的网并将其加载回matlab:
goodworkingnet = net;
save goodworkingnet