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神经网络结构:

训练集预测结果对比: 

测试集预测结果对比:

 相关指标的结果:

        训练集数据的R2为: 0.83861

        训练集数据的MAE为: 0.053551

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

  • 11
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
RBF matlab是一个基于Matlab实现RBF算法。RBF(Radial Basis Function)是一种常用的神经网络算法,它通过使用高斯函数作为基函数来对输入数据进行建模。RBF matlab实现包括以下几个步骤: 1. 读入数据集:通过定义输入数据x和对应的输出标签y,构建用于训练和测试的数据集。 2. 定义高斯函数:通过定义高斯函数phi,可以计算隐层的输出值。高斯函数的计算公式为exp(-1/2*(x-c)*(x-c)'/(s^2),其中x是输入数据,c是高斯函数的中心,s是高斯函数的标准差。 3. 初始化权重和偏置:初始化权重向量w和偏置b。 4. 计算隐层输出:通过遍历所有输入数据,计算每个输入数据对应的隐层输出值。 5. 训练权重和偏置:使用梯度下降法来更新权重和偏置,以使得模型的输出与实际输出尽可能接近。循环迭代该过程直到收敛。 6. 测试模型:使用训练好的模型对测试数据进行预测,计算输出值。 以上是RBF matlab的简单实现过程。你可以根据自己的需要进行修改和扩展。如果你想获取完整的RBF和PNN算法的Matlab源码,你可以参考引用中提供的下载链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Matlab实现神经网络RBF和PNN算法(附上完整源码)](https://blog.csdn.net/m0_62143653/article/details/131240278)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值