神经网络结果不接近测试数据

时间:2015-03-31 11:14:47

标签: matlab neural-network

我试图用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`
  1. 这是我的自定义神经网络模型调用代码

            `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`
    
  2. 我的最后一步是预测2014年前7个月的价格         forecastPrice = sim(net, testX')';

  3. 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)
    

    我希望你能帮助我。

    http://www.mathworks.com/matlabcentral/answers/uploaded_files/28196/data.png

0 个答案:

没有答案