训练一个RBF神经网络-预测化学反应数据-代码
·
RBF神经网络是一种可以用于拟合任意关系的神经网络模型,它起源于RBF插值,但现在一般都使用OLS算法来训练。下面我们学以致用,用一个具体的例子来看看RBF神经网络是如何应用于预测问题的。
一、RBF神经网络例子-数据介绍
matlab自带的acetylene.mat化学反应数据,数据如下:
如数据所示,共有三个特征变量x1,x2,x3,以及一个输出y。
下面我们使用RBF神经网络来拟合X和y的关系。
二、RBF神经网络例子-代码实现
在matlab中只需要使用newrb函数就可以训练一个RBF神经网络了。
newrb函数的使用方法如下:
下面我们就使用newrb函数来构建一个RBF神经网络,用来拟合以上X与y的关系。
% 加载数据与模型构建
load acetylene.mat
x = [x1,x2,x3]'; % 输入数据,每行代表一个输入变量,每列代表一个样本
y = y'; % 输出数据,每行代表一个输出变量,每列代表一个样本
net = newrb(x, y, 0.01, 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的预测值') % 图例
可以看到模型的预测结果如下:
进一步地,如果想查看模型中的权重和阈值,那么可以通过下面的代码来查看:
w1 = net.iw{1} % 提取隐层的权重(即径向基的中心)
b1 = net.b{1} % 提取隐层的阈值
w2 = net.lw{2,1} % 提取输出层权重
b2 = net.b{2} % 提取输出层的阈值
这样就能得到模型中的参数了。
结束语
这就是RBF神经网络的一个简单例子了,如果对RBF神经网络比较陌生的,可以跟着《老饼讲解-RBF神经网络》来一步一步上手。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)