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('樣本')
總結
以上是生活随笔為你收集整理的matlab预测误差,Matlab的神经网络预测误差比较大,该怎样调整的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json_encode函数参数详解
- 下一篇: Java LeetCode每日一题-从易