目录
老饼讲解:一步一步上手学习

【例子】RBF神经网络-简单例子(二)

作者 : 老饼 发表日期 : 2026-03-13 10:27:50 更新日期 : 2026-05-13 08:39:57
老饼讲解-简单易懂,干货满满,爽过嗦螺!


上节我们使用RBF神经网络展示了sin函数的拟合,这节我们继续拉一点真实的数据出来玩一玩RBF神经网络,看看RBF神经网络是如何解决实际中的预测问题的,以及它的预测效果。

一、RBF神经网络-简单例子

我们以matlab自带的acetylene.mat化学反应数据为例,展示一个RBF神经网络的例子。

1.1. RBF神经网络例子-问题

acetylene.mat数据共16个样本,如下:

acetylene.mat数据示例

其中,分别为:反应器温度、H2与正庚烷的摩尔比、接触时间,y为:正庚烷制乙炔的转化率。

下面我们构建一个RBF神经网络,通过来预测y。

1.2. RBF神经网络例子-代码

在matlab中,可以使用newrbe来构建一个RBF神经网络,具体代码如下:

% 代码说明:一个简单的用newrbe构建一个RBF神经网络,预测化学反应数据
% 来自《老饼讲解-RBF神经网络》www.bbblearn.com ,matlab版本:2018a

% 加载数据与模型构建
load acetylene.mat
x  = [x1,x2,x3]';                               % 输入数据,每行代表一个输入变量,每列代表一个样本
y = y';                                         % 输出数据,每行代表一个输出变量,每列代表一个样本
net = newrbe(x, y, 0.5);                        % 以X,Y建立RBF神经网络,径向基宽度参数spread=0.5
py  = sim(net,x);                               % 用建好的RBF神经网络预测训练数据

% 打印模型结果                          
err_rate = mean(abs(py-y))                      % 计算预测误差MAE
figure                                          % 初始化画布
plot(1:length(y),y,'*',1:length(y),py,'-')      % 绘制结果,x轴代表样本
title('模型预测结果')                           % 标题
xlabel('样本序号')                              % x轴说明
ylabel('样本真实值和预测值')                    % y轴说明
legend('y的真实值','y的预测值')                 % 图例

代码运行结果如下:

模型的预测结果

模型的MAE

可以看到,训练样本的MAE(平均绝对误差)几乎为0,大家不必惊讶,newrbe使用的是插值法构建RBF神经网络,在理论上它是必定能完美拟合训练样本的,所以看到训练误差为0这是正常的,这其实是RBF神经网络的特点。

好了,如果我们要预测一个新样本,就可以用sim函数来预测了,如下:

test_y = sim(net,[1,0.01,0.0001]')

这样就得到了的预测结果:

RBF神经网络的预测结果

许多同学刚上手,在这里再次提示一下,在matlab的RBF神经网络中,x每行代表一个变量,每列代表一个样本,所以预测时,需要把它转置一下[1,0.01,0.0001]',使它符合一列代表一个样本的格式。

结束语

好了,这里我们又展示了一个RBF神经网络的例子,事实上,对于RBF神经网络解决其它问题也是类似的,只要明确我们的 x是什么,y是什么,然后把它丢到RBF神经网络中,训练好模型的参数,然后就可以用它来预测了。



图标 评论
添加评论