Error NARX Model Prediction
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hello everyone...
Im doing a carbon emission(output) with multiple input using neural network approached (NARX). I trained the model using NARX tollbox. I couldn't find the code I needed to write to predict the next 8 years. It doesn't give any predictions in the code I wrote... Would you mind to help me ? Where is the mistake :( My code;
x=xlsread('Input.xlsx');
t=xlsread('Output.xlsx');
X = tonndata(x,false,false);
T = tonndata(t,false,false);
trainFcn = 'trainlm';
inputDelays = 1:2;
feedbackDelays = 1:2;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,'open',trainFcn);
[x,xi,ai,t] = preparets(net,X,{},T);
net.divideParam.trainRatio = 80/100;
net.divideParam.valRatio = 10/100;
net.divideParam.testRatio = 10/100;
[net,tr] = train(net,x,t,xi,ai);
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
view(net)
netc = closeloop(net);
netc.name = [net.name ' - Closed Loop'];
view(netc)
[xc,xic,aic,tc] = preparets(netc,X,{},T);
yc = netc(xc,xic,aic);
closedLoopPerformance = perform(net,tc,yc)
nets = removedelay(net);
nets.name = [net.name ' - Predict One Step Ahead'];
view(nets)
[xs,xis,ais,ts] = preparets(nets,X,{},T);
ys = nets(xs,xis,ais);
stepAheadPerformance = perform(nets,ts,ys)
numFutureSteps = 8;
predictedValues = cell(1, numFutureSteps);
[~, lastInputState, lastLayerState] = preparets(netc, X, {}, T);
lastOutput = yc{end};
for i = 1:numFutureSteps
[nextOutput, nextInputState, nextLayerState] = netc({lastOutput}, lastInputState, lastLayerState);
predictedValues{i} = nextOutput;
lastOutput = nextOutput;
lastInputState = nextInputState;lastLayerState = nextLayerState;
3 Kommentare
Antworten (1)
Purvaja
am 26 Aug. 2025
Bearbeitet: Purvaja
am 26 Aug. 2025
I understand that you’re using a NARX neural network for predicting carbon emissions with multiple inputs. You trained the model, but when trying to forecast the next 8 years, your code didn’t produce results. The code that you had provided is correct, it just had incomplete loop, so in my dummy code I completed it and printing the results as below.
Here’s the changes I made on my side:
- Prediction loop:
for k = 1:numFutureSteps
[nextOutput, lastInputState, lastLayerState] = netc(lastOutput, lastInputState, lastLayerState);
predictedValues{k} = nextOutput;
lastOutput = nextOutput;
end
I have removed some redundant code and variables to make it straightforward like above.
2. Convert predictions into numeric values for display:
predictedValuesNumeric = cellfun(@(c) c, predictedValues);
disp('Predicted carbon emissions for next 8 years:');
disp(predictedValuesNumeric);
The predictions are stored in cells, so you need cellfun to extract the actual numbers before displaying them.
Dummy results I got after implementation:
Training performance: 0.040058
Closed-loop performance: 0.16581
Predicted carbon emissions for next 8 years:
0.0766 3.8152 -0.7831 -0.0690 -0.7864 -0.3953 -0.3675 -0.2086
For better clarification regarding the functions I used, you can go through following links:
- Preparets: https://www.mathworks.com/help/deeplearning/ref/preparets.html
- Cellfun: https://www.mathworks.com/help/matlab/ref/cellfun.html
I hope this solves your doubt!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Sequence and Numeric Feature Data Workflows finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!