1

У меня есть набор данных, который я разделить на:Предсказание временных рядов Y (т + 1) с помощью нейронных сетей в Matlab

  • обучения: прогностические X_TR (1028records в 14 переменных) и Y_TR (1028records одной переменной)
  • применение: X_APP (115 х 14), Y_APP (115x1),

, где каждая запись является временной шаг т.

Моя цель - построить модель NN, которая прогнозирует Y (t + 1), используя любую историческую информацию до t, то есть 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, я обучил NN, используя X_T и Y_T.

% 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

Вы можете использовать обученную сеть с этой инструкцией:

% 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