RBF神经网络MATLAB代码实现

MATLAB实现代码:

%清空环境变量
warning off   %关闭报警信息
close all     %关闭开启的图窗
clear         %清空变量
clc            %清空命令行
%%导入数据
res=xlsread('RBF.xlsx');
%% 划分训练集和测试集
temp=randperm(225);

p_train=res(temp(1:180),1:7)';
T_train=res(temp(1:180),8)';
M=size(p_train,2);


p_test=res(temp(181:end),1:7)';
T_test=res(temp(181:end),8)';
N=size(p_test,2);
%%数据归一化
[p_train,ps_input]=mapminmax(p_train,0,1);
p_test=mapminmax('apply',p_test,ps_input);

[t_train,ps_output]=mapminmax(T_train,0,1);
t_test=mapminmax('apply',T_test, ps_output);
%%创建网络
rbf_spread=100;
net=newrbe(p_train,t_train,rbf_spread);
%%数据仿真
t_sim1=sim(net,p_train);
t_sim2=sim(net,p_test);
%%数据反归一化
T_sim1=mapminmax('reverse',t_sim1,ps_output);
T_sim2=mapminmax('reverse',t_sim2,ps_output);

%%均方根误差
error1=sqrt(sum((T_sim1-T_train).^2)./M);
error2=sqrt(sum((T_sim2-T_test).^2)./N);
%%查看网络结构
view (net);
%%绘图
figure
plot(1:M,T_train,'r-*',1:M,T_sim1,'b-o','LineWidth',1)
legend('真实值','预测值')
xlabel('训练样本')
ylabel('预测结果')
string={'训练集预测结果对比';['RMSE=' num2str(error1)]};
title(string)
xlim=[1,M]
grid

figure
plot(1:N,T_test,'r-*',1:N,T_sim2,'b-o','LineWidth',1)
legend('真实值','预测值')
xlabel('预测样本')
ylabel('预测结果')
string={'测试集预测结果对比';['RMSE=' num2str(error2)]};
title(string)
xlim=[1,N]
grid

%%相关指标计算;
%R2
R1 = 1 - norm(T_train - T_sim1)^2 / norm(T_train - mean(T_train))^2;
R2= 1 - norm(T_test - T_sim2)^2 / norm(T_test - mean(T_test ))^2;
disp(['训练集数据的R2为: ',num2str(R1)])
disp(['测试集数据的R2为: ', num2str(R2)])
%MAE
mae1 = sum(abs(T_sim1 - T_train)) ./ M;
mae2 = sum(abs(T_sim2 -T_test)) ./N;
disp(['训练集数据的MAE为: ',num2str(mae1)])
disp(['测试集数据的MAE为: ',num2str(mae2)])
%MBE
mbe1 = sum(T_sim1 - T_train) ./M;
mbe2 = sum(T_sim2 - T_test) ./ N ;
disp(['训练集数据的MBE为: ',num2str(mbe1)])
disp(['测试集数据的MBE为: ',num2str(mbe2)])


RBF神经网络结构:

RBF神经网络MATLAB代码实现_第1张图片

训练集预测结果对比: 

RBF神经网络MATLAB代码实现_第2张图片

测试集预测结果对比:

RBF神经网络MATLAB代码实现_第3张图片

 相关指标的结果:

        训练集数据的R2为: 0.83861

        训练集数据的MAE为: 0.053551

        训练集数据的MBE为: -1.2589e-05
        测试集数据的R2为: 0.056934
        测试集数据的MAE为: 0.067367
        测试集数据的MBE为: 0.008165

你可能感兴趣的:(数学建模,神经网络,matlab,机器学习)