我试图用matlab中的自定义神经网络预测短期电价。我有数据文件,其中包含14个输入参数。我使用2012年和2013年,2年的实际数据进行培训,并测试2014年前7个月的实际数据模型。我的问题是,当我将测试数据与模型输出进行比较时,它存在巨大差距。我不知道结果离测试数据有多远。
1.这就是我创建训练和测试数据的方式。
`% Interpolate missing values
ind = data.ElecPrice==0;
data.ElecPrice(ind) = interp1(find(~ind), data.ElecPrice(~ind), find(ind));
% Create training set
trainInd = data.NumDate < datenum('2014-01-01');
trainX = X(trainInd,:);
trainY = data.ElecPrice(trainInd);
% Create test set and save for later
testInd = data.NumDate >= datenum('2014-01-01');
testX = X(testInd,:);
testY = data.ElecPrice(testInd);
testDates = dates(testInd);
save testSet testDates testX testY
clear X data trainInd testInd term holidays dates ans num text`
这是我的自定义神经网络模型调用代码
`reTrain = false;
if reTrain || ~exist('Models\NNModel.mat', 'file')
net = newfit(trainX', trainY', 20);
net.performFcn = 'mae';
net = train(net, trainX', trainY');
save Models\NNModel.mat net
else
load Models\NNModel.mat
end`
我的最后一步是预测2014年前7个月的价格
forecastPrice = sim(net, testX')';
4. 我的模型专长是:
4.1。我的模型有1个输入,2个层和1个输出。 我的关系:
`biasConnect: [1; 1]
inputConnect: [1; 0]
layerConnect: [0 0; 1 0]
outputConnect: [0 1]`
4.2。模型功能:
`
adaptFcn: 'adaptwb'
adaptParam: (none)
derivFcn: 'defaultderiv'
divideFcn: 'dividerand'
divideParam: .trainRatio, .valRatio, .testRatio
divideMode: 'sample'
initFcn: 'initlay'
performFcn: 'mae'
performParam: .regularization, .normalization
plotFcns: {'plotperform', plottrainstate, plotfit,
plotregression}
plotParams: {1x4 cell array of 4 params}
trainFcn: 'traingdm'
trainParam: .showWindow, .showCommandLine, .show, .epochs,
.time, .goal, .min_grad, .max_fail, .lr, .mc`
4.3。型号&#39;第一层属性:
` name: 'Hidden Layer'
dimensions: 20
distanceFcn: (none)
distanceParam: (none)
distances: []
initFcn: 'initnw'
netInputFcn: 'netsum'
netInputParam: (none)
positions: [1x20 double]
range: [20x2 double]
size: 20
topologyFcn: 'hextop'
transferFcn: 'tansig'
transferParam: (none)
userdata: (your custom info)`
4.4。型号&#39;第二层属性:
name: 'Output Layer'
dimensions: 1
distanceFcn: (none)
distanceParam: (none)
distances: []
initFcn: 'initnw'
netInputFcn: 'netsum'
netInputParam: (none)
positions: 0
range: [1x2 double]
size: 1
topologyFcn: 'hextop'
transferFcn: 'tansig'
transferParam: (none)
userdata: (your custom info)
我希望你能帮助我。