0

训练 NARX 网络后。我想在独立测试集“testX'”上评估模型。但它返回一个错误。我正在通过 forecastLoad = sim(net, testX')' 测试模型。我们需要添加延迟在测试集中?我不知道我在哪里犯了错误。

%Create training set

trainInd = data.NumDate < datenum('2008-01-01');
trainX = X(trainInd,:);
trainY = data.SYSLoad(trainInd);

% Create test set to test later
testInd = data.NumDate >= datenum('2008-01-01');
testX = X(testInd,:);
testY = data.SYSLoad(testInd);
testDates = dates(testInd);

%Neural network

X = tonndata(trainX,true,false);
T = tonndata(trainY,true,false);

% Choose a Training Function

trainFcn = 'trainlm';  % Levenberg-Marquardt backpropagation.

% Create a Nonlinear Autoregressive Network with External Input
inputDelays = 1:25;
feedbackDelays = 1:25;
hiddenLayerSize = 10;
net = narxnet(inputDelays,feedbackDelays,hiddenLayerSize,'open',trainFcn);

% Prepare the Data for Training and Simulation

[x,xi,ai,t] = preparets(net,X,{},T);

% Setup Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100;

% Train the Network
[net,tr] = train(net,x,t,xi,ai);

% Test the Network
y = net(x,xi,ai);
e = gsubtract(t,y);
performance = perform(net,t,y)
% View the Network
view(net)

%% Forecast using Neural Network Model
% Once the model is built, perform a forecast on the independent test set. 
load Data\testSet
forecastLoad = sim(net, testX')';
4

0 回答 0