径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

这篇具有很好参考价值的文章主要介绍了径向基神经网络(RBFNN)的实现(Python,附源码及数据集)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、理论基础

径向基神经网络(Radial Basis Function Neural Network,简称RBFNN)是一种具有较强映射功能的三层前向网络,其原理与反向传播神经网络(BPNN)较为接近,最主要的特征为以径向基函数作为隐含层激活函数,数据从输入层传入隐含层后,通过径向基函数对其进行非线性映射,然后经过线性计算传递至输出层进行输出。
反向传播神经网络(BPNN)原理参考:
反向传播神经网络(BPNN)的实现(Python,附源码及数据集)

1、径向基神经网络结构

径向基神经网络的结构图如下图所示:
径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

2、前向传播过程

径向基神经网络的前向传播过程类似于无监督学习,首先通过使用聚类算法如K-means对数据进行聚类,将聚类生成的中心点作为隐含层径向基函数的中心点,其中径向基函数一般选用高斯函数,然后利用中心点信息计算得出径向基函数的宽度向量,宽度向量的计算公式如下:
径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

其中c_max为中心点之间的最大距离,h为节点数。
之后输入数据分别经过隐含层、输出层进行相关计算,输入样本x_i在隐含层的第j个节点的输出由以下公式计算得出:
径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

其中c_j与σ_j分别为隐含层第j个节点的中心点与宽度向量,除上述方法外,还可直接随机生成隐含层的中心点与宽度向量。
输入样本x_i在输出层的第m个节点的输出由以下公式计算得出:
径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

其中ω_m为该节点的权值,φ为激活函数。
激活函数原理参考:
神经网络基础知识之激活函数

3、反向传播过程

径向基神经网络的反向传播过程类似于监督学习,主要是对网络隐含层的中心点、宽度向量以及输出层的权值、阈值进行不断修正的过程,这一过程主要通过损失函数计算出每个参数的梯度值,然后使用反向传播算法如随机梯度下降法(SGD)对权值进行不断修正的过程,以输出层的权值为例,其更新公式如下:
径向基神经网络(RBFNN)的实现(Python,附源码及数据集)

其中E为损失函数,μ为学习率。
损失函数原理参考:
机器学习基础知识之损失函数
反向传播原理参考:
神经网络之反向传播算法(梯度、误差反向传播算法BP)

4、建模步骤

以使用径向基神经网络进行预测为例,可以将径向基神经网络预测模型的建模步骤总结如下:

  1. 根据输入数据的相关特征确定径向基神经网络输入层、隐含层以及输出层的节点数;
  2. 使用K-means算法对模型的输入数据进行聚类,将聚类生成的中心点作为隐含层径向基函数的中心点,通过中心点计算获得隐含层径向基函数的宽度向量;
  3. 选择一种参数初始化方法对径向基神经网络输出层的连接权值以及阈值进行随机初始化;
  4. 数据由输入层输入径向基神经网络,传递至隐含层后经径向基函数对数据进行非线性转换;
  5. 数据在隐含层输出后传递至输出层,在与输出层的连接权值进行线性计算后由激活函数进行非线性转换,最后得到网络的前向传播输出;
  6. 选择一种损失函数对网络的前向传播输出以及目标值进行相关计算得到损失值;
  7. 以输出层的损失值计算得到输出层连接权值以及阈值的梯度,选择一种反向传播算法对它们进行调整;
  8. 损失值传递至隐含层,同样使用相同的反向传播算法对隐含层的中心点以及宽度向量进行调整;
  9. 获得一个参数得到更新后的径向基神经网络;
  10. 在达到最大迭代次数或满足停止迭代条件之前,重复步骤4到步骤9,在达到最大迭代次数后,输出隐含层与输出层参数确定的径向基神经网络。

参数初始化方法参考:
神经网络基础知识之参数初始化

二、径向基神经网络的实现

以数据预测为例,下面介绍基于Python实现径向基神经网络的过程。
选用某省市的表层土壤重金属元素数据集作为实验数据,该数据集总共96组,随机选择其中的24组作为测试数据集,72组作为训练数据集。选取重金属Ti的含量作为待预测的输出特征,选取重金属Co、Cr、Mg、Pb作为模型的输入特征。文章来源地址https://www.toymoban.com/news/detail-415817.html

1、训练过程(RBFNN.py)

#库的导入
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans

#激活函数
def tanh(x):
    return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
#激活函数偏导数
def de_tanh(x):
    return (1-x**2)


#参数设置
samnum = 72  #输入数据数量
hiddenunitnum = 8  #隐含层节点数
indim = 4  #输入层节点数
outdim = 1  #输出层节点数
maxepochs = 500  #最大训练次数
errorfinal = 0.65*10**(-3)  #停止迭代训练条件
learnrate = 0.001  #学习率

#输入数据的导入
df = pd.read_csv("train.csv")
df.columns = ["Co", "Cr", "Mg", "Pb", "Ti"]
Co = df["Co"]
Co = np.array(Co)
Cr = df["Cr"]
Cr = np.array(Cr)
Mg=df["Mg"]
Mg=np.array(Mg)
Pb = df["Pb"]
Pb =np.array(Pb)
Ti = df["Ti"]
Ti = np.array(Ti)
samplein = np.mat([Co,Cr,Mg,Pb])
#数据归一化,将输入数据压缩至0到1之间,便于计算,后续通过反归一化恢复原始值
sampleinminmax = np.array([samplein.min(axis=1).T.tolist()[0],samplein.max(axis=1).T.tolist()[0]]).transpose()#对应最大值最小值
sampleout = np.mat([Ti])
sampleoutminmax = np.array([sampleout.min(axis=1).T.tolist()[0],sampleout.max(axis=1).T.tolist()[0]]).transpose()#对应最大值最小值
sampleinnorm = ((np.array(samplein.T)-sampleinminmax.transpose()

到了这里,关于径向基神经网络(RBFNN)的实现(Python,附源码及数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 模糊神经网络(FNN)的实现(Python,附源码及数据集)

    模糊神经网络(Fuzzy Neural Network,简称FNN)本质上是一种将模糊理论与人工前向神经网络相结合的多层前向神经网络,在处理信息时,该网络能够具有更大的处理范围以及更快的信息处理速度,因此该网络的自学习能力与映射也相对较高。与反向传播神经网络(BPNN)相似,其

    2023年04月08日
    浏览(34)
  • 广义回归神经网络(GRNN)的实现(Python,附源码及数据集)

    广义回归神经网络(Generalized Regression Neural Network,简称GRNN)是一种具有较好的非线性逼近能力的四层前向传播神经网络,它属于径向基神经网络的一种变形形式,数据输入网络后依次经过输入层、模式层、求和层、输出层后得到输出结果,与反向传播神经网络(BPNN)不通的

    2023年04月15日
    浏览(70)
  • 【Matlab】基于径向基神经网络的数据回归预测(Excel可直接替换数据)

    基于径向基神经网络(Radial Basis Function Neural Network,RBFNN)的数据回归预测是一种基于神经网络的回归模型。它采用径向基函数作为激活函数,通过训练网络参数来拟合数据集,从而进行回归预测。以下是基于径向基神经网络的数据回归预测的详细原理: 数据准备: 首先,将

    2024年02月16日
    浏览(47)
  • 【Matlab】基于径向基神经网络的时间序列预测(Excel可直接替换数据)

    基于径向基神经网络(Radial Basis Function Neural Network,RBFNN)的时间序列预测是一种基于神经网络的预测方法,用于处理时间序列数据。它采用径向基函数作为激活函数,并利用神经网络的非线性映射能力,通过训练网络参数来拟合时间序列数据,实现时间序列的预测。以下是

    2024年02月16日
    浏览(50)
  • LSTM神经网络实现对股市收盘价格的预测实战(python实现 附源码 超详细)

    源码或数据集请点赞关注收藏后评论区留言或者私信博主要 由于独特的设计结构 LSTM适合于处理和预测时间序列中间隔和延迟非常长的重要事件。 LSTM是一种含有LSTM区块(blocks)或其他的一种类神经网络,文献或其他资料中LSTM区块可能被描述成智能网络单元,因为它可以记忆

    2024年02月11日
    浏览(41)
  • 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图)

    效果一览 基本介绍 车速预测 | Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 程序设计 完整程序和数据获取方式:私信博主回复 Matlab基于RBF径向基神经网络的车速预测模型(多步预测,尾巴图) 。 参考资料 [1] http://t.csdn.cn/pCWSp [2] https://download.csdn.net/d

    2024年01月20日
    浏览(51)
  • Python深度学习实战-基于class类搭建BP神经网络实现分类任务(附源码和实现效果)

    实现功能 上篇文章介绍了用Squential搭建BP神经网络,Squential可以搭建出上层输出就是下层输入的顺序神经网络结构,无法搭出一些带有跳连的非顺序网络结构,这个时候我们可以选择类class搭建封装神经网络结构。 第一步:import tensorflow as tf:导入模块 第二步:制定输入网络

    2024年02月08日
    浏览(58)
  • RBF-UKF径向基神经网络结合无迹卡尔曼滤波估计锂离子电池SOC(附MATLAB代码)RBF神经网络训练部分

    1.清空变量 2.导入数据用以RBF神经网络训练,一共14组,训练数据P(第一列为电压值,第二列为SOC值,第三列为电流值。),并将所有数据存储在变量PP中,所有电压数据存储在变量TT中。 3. 用第1、2、3、4、5组数据来训练网络 , 用第六组数据来测试网络的精度 。   4.建立

    2023年04月22日
    浏览(58)
  • Python深度学习实战-基于tensorflow原生代码搭建BP神经网络实现分类任务(附源码和实现效果)

            前面两篇文章分别介绍了两种搭建神经网络模型的方法,一种是基于tensorflow的keras框架,另一种是继承父类自定义class类,本篇文章将编写原生代码搭建BP神经网络。 本人读研期间发表5篇SCI数据挖掘相关论文,现在某研究院从事数据挖掘相关科研工作,对数据挖掘

    2024年02月08日
    浏览(52)
  • Matlab实现神经网络(附上完整仿真源码)

    神经网络是一种模仿人类神经系统,以处理信息为目的的计算模型。它由大量节点(或称神经元)和连接它们的边组成,每个节点代表一个变量,边表示变量之间的关系。在神经网络中,信息通过节点之间的连接传递,并在各个节点之间进行处理和转换。 Matlab是一种常用的科

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包