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
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
rbf神经网络是一种基于径向基函数的神经网络模型。它由一个输入层、一个隐藏层和一个输出层组成。隐藏层中的神经元使用径向基函数作为激活函数,常见的径向基函数包括高斯函数、多项式函数等。隐藏层的神经元用于将输入数据映射到高维空间中,然后通过输出层进行分类或回归。 在Matlab中,可以使用神经网络工具箱(Neural Network Toolbox)来实现rbf神经网络。具体步骤如下: 1. 准备数据集:将数据集划分为训练集和测试集,并进行预处理(如归一化)。 2. 创建rbf神经网络:使用`newrb`函数创建一个rbf神经网络对象。 3. 配置rbf神经网络:设置网络的参数,包括隐藏层神经元数量、径向基函数的宽度等。 4. 训练rbf神经网络:使用`train`函数对rbf神经网络进行训练,输入参数包括训练集和目标值。 5. 测试rbf神经网络:使用`sim`函数对训练好的神经网络进行测试,输入参数为测试集。 以下是一个简单的示例代码: ```matlab % 示例数据 x = linspace(-pi, pi, 100); y = sin(x); % 创建rbf神经网络 net = newrb(x, y, 0.1, 1, 10); % 训练rbf神经网络 net = train(net, x, y); % 测试rbf神经网络 y_pred = sim(net, x); % 绘制结果 plot(x, y, 'b', x, y_pred, 'r'); legend('真实值', '预测值'); ``` 以上代码演示了如何使用Matlab神经网络工具箱来实现一个简单的rbf神经网络,并对正弦函数进行拟合和预测。根据具体问题的不同,你可以根据需要自定义网络的结构和参数。
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值