用matlab做BP神经网络,进行数据预测,全部都为正数,但是反归一化后得到负数是什么原因?

这是程序
clc
clear
[filename,pathname]=uigetfile('E:\lunwen\Matlab wenjian\t1.xls');
file=[pathname filename];
x=xlsread(file);
input_train=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5);]'
output_train= x(:,6)',
[filename,pathname]=uigetfile('E:\lunwen\Matlab wenjian\t2.xls');
file=[pathname filename];
x=xlsread(file);
input_test=[x(:,1),x(:,2),x(:,3),x(:,4),x(:,5);]'
output_test= x(:,6)',
[inputn,inputps]=mapminmax(input_train,0,1);
[outputn,outputps]=mapminmax(output_train,0,1);
net=newelm(minmax(inputn),[5,1],{'logsig','tansig'},'trainlm');
net.trainParam.epochs=3000;
net.trainParam.lr=0.1;
net.trainParam.goal=0.0001;
net=train(net,inputn,outputn);
inputn_test=mapminmax('apply',input_test,inputps);
an=sim(net,inputn_test);
BPoutput=mapminmax('reverse',an,outputps);
得到的BPoutput中存在负数

你这是将结果反归一化以后出现了负值,我觉得原因不在传递函数,是由于整个神经网络预测性能不佳导致的。考虑重新优化网络结构或者对样本数据进行处理吧。
温馨提示:答案为网友推荐,仅供参考