matlab预测误差,Matlab的神经网络预测误差比较大,该怎样调整

各位高手前辈们:

你们好!

我刚刚接触神经网络不久,在用RBF网络来进行温度预测时,得到的预测误差比较大。现在调节的方法只是调整SPREAD值,结果很不理想!我想知道是什么原因产生这么大的误差,温度相差40度,是不是程序有什么问题,希望各位前辈能帮我指出哪部分有错误,提出一些解决的方法,我在此表示真诚的感谢!程序如下!

谢谢大家了!

%产生数据

clc;

clear;

%generate the learing data

x=[0 20 40 60 80 100 120 140 160 180 200 220 240 260 280 300 320 340 360 380 400 420 440;

3 5 7 8 10 11 12 13 13 13 15 16 18 19 19 19 19 20 20 21 21 21 22;

41 41 43 44 49 64 70 81 89 95 100 104 108 111 112 111 122 127 126 125 126 125 129];

F=[40.6 42.2 41.2 42.8 44.8 55.8 63.2 58.6 65.4 70.5 76.2 83.8  82.8 85.2 78.8 92 97 102.2 106.9 98.9 104.8 106.2 108];

x_train=x(:,1:20);F_train=F(:,1:20);

x_test=x(:,21:23);F_test=F(:,21:23);

%训练数据归一化处理

for i=1:3

x1_train(i,:)=(x_train(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))

end

F1=F_train/max(F);

%测试数据归一化处理

for i=1:3

x1_test(i,:)=(x_test(i,:)-min(x(i,:)))/(max(x(i,:))-min(x(i,:)))

end

%% 建立RBF网络

err_goal=0.0001;

spread=0.7;

df=1;

mn=100;

net=newrb(x1_train,F1,err_goal,spread,mn,df);

Y1=sim(net,x1_train);

Y2=sim(net,x1_test);

%训练数据反归一化处理

for i=1:3

x2_train(i,:)=x1_train(i,:)*(max(x(i,:))-min(x(i,:)))+min(x(i,:))

end

Y3=Y1*max(F);

%测试数据反归一化处理

for i=1:3

x_test(i,:)=x_test(i,:)*(max(x_test(i,:))-min(x_test(i,:)))+min(x_test(i,:))

end

Y4=Y2*max(F);

E=F_train-Y1;

SSE=sse(E);

MSE=mse(E);

%拟合图

figure(1);

plot(F_train);

hold on;

plot(Y3,'r:');

title('RBF网络拟合曲线图');

legend('实际值','预测值');

ylabel('表面温度');

xlabel('输入样本点');

figure(2);

plot(F_test,'-*');

hold on;

plot(Y4,'r:');

legend('期望输出','预测输出')

title('RBF网络预测曲线图')

ylabel('表面温度')

xlabel('样本')

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值