当前位置: 首页 > news >正文

58、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理

1)原理简介

基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实现对非线性关系的拟合。

RBFNN的基本原理是将输入空间中的数据映射到高维空间中,然后利用线性回归方法对数据进行拟合。在RBFNN中,通常使用高斯函数作为径向基函数,其数学表达式为:

eq?%5CPhi%20%28x%29%3Dexp%28-%5Cfrac%7B%5Cleft%20%5C%7C%20z-c_%7Bi%7D%5Cright%20%5C%7C%5E%7B2%7D%7D%7B2%5Csigma%20_%7Bi%7D%5E%7B2%7D%7D%29

其中,ci​为高斯函数中心点,σi​为高斯函数的标准差。RBFNN的结构包括输入层、隐含层和输出层。输入层接收输入样本,隐含层包括多个径向基函数,输出层进行线性组合输出。

在曲线拟合中,首先需要确定隐含层中的径向基函数的数量和参数,可以通过交叉验证等方法来确定。然后利用训练数据对网络进行训练,通过计算输出与实际值的误差,使用梯度下降等方法来更新网络参数,直到达到一定的训练误差或迭代次数。

通过训练后的RBFNN可以用来进行曲线拟合,即输入一个新的数据点,网络输出对应的预测值。在实际应用中,RBFNN能够较好地拟合非线性数据,具有较高的预测精度和泛化能力。

总的来说,基于径向基神经网络的曲线拟合利用径向基函数对数据进行映射,通过线性回归方法实现对非线性数据的拟合,是一种常用的曲线拟合方法。

2) 径向基神经网络简介

径向基神经网络(Radial Basis Function Neural Network, RBFNN)是一种人工神经网络,它通过在输入空间中使用径向基函数来进行数据处理和模式识别。RBFNN通常由输入层、隐含层和输出层组成,其中隐含层使用径向基函数来处理输入数据。

RBFNN的训练过程通常包括两个阶段:中心点确定和权重确定。在中心点确定阶段,通常使用聚类算法(如k-means算法)来确定隐含层中径向基函数的中心点;在权重确定阶段,通过最小化损失函数(通常是均方误差)来确定隐含层到输出层的权重。

RBFNN在模式识别、函数逼近、时间序列预测等领域有着广泛的应用。它具有记忆能力强、高度非线性、泛化能力强等优点,在一些问题上比传统的前馈神经网络具有更好的性能。

总的来说,径向基神经网络是一种利用径向基函数进行非线性数据映射和处理的人工神经网络,具有良好的泛化能力和逼近能力,在多个领域得到广泛应用。

3)技术方案

使用 NEWRB 函数创建一个径向基网络,该网络可逼近由一组数据点定义的函数。


2、基于径向基神经网络的曲线拟合实现

1)输入数据集

说明:定义 21 个输入 P 和相关目标 T。

代码

X = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
figure(1)
plot(X,T,'+');
title('径向基神经网络');
xlabel('输入向量P');
ylabel('目标向量T');

视图效果

0772f856aa0e42ae9ffedcb8cf845ed5.png

2) 使用径向基网络来实现数据点的拟合

说明:径向基网络具有两个层,分别是径向基神经元的隐藏层和线性神经元的输出层。
隐含层使用的径向基传递函数。

代码

x = -3:.1:3;
a = radbas(x);
figure(2)
plot(x,a)
title('Radial Basis Transfer Function');
xlabel('Input p');
ylabel('Output a');

视图效果

8350108b858a421fae5266888e603ef7.png

3) 创建径向基网络

代码

eg = 0.02; % 和平方误差目标
sc = 1;    % 传播常数
net = newrb(X,T,eg,sc);
%绘制训练集
figure(3)
plot(X,T,'+');
xlabel('Input');X = -1:.01:1;
Y = net(X);hold on;
plot(X,Y);
hold off;
legend({'Target','Output'})

视图效果

8ca9c9080b0e4a4f8c10fa30621a05f2.png

3、 径向基神经元欠叠

1)说明

径向基网络被训练为用目标输出响应特定输入。
因为径向基神经元的分布程度太低,网络需要许多神经元。


创建数据集代码

P = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(P,T,'+r');

视图效果

3b159f6ebb4c42968296508e3186f2ae.png

 2)创建网络和训练网络

说明:函数 NEWRB 可快速创建一个逼近由 P 和 T 定义的函数的径向基网络。
除了训练集和目标,NEWRB 还使用了两个参量,分别为误差平方和目标与分布常数。径向基神经元的分布设置为非常小的数量。

代码

eg = 0.02; %和平方误差目标
sc = .01;  %传播常数
hold on

3)结果显示

说明:将结果绘制在与训练集相同的图上。测试向量显示该函数已过拟合!如果有更高的分布常数,网络可以做得更好。


代码

net = newrb(P,T,eg,sc);
X = -1:.01:1;
Y = net(X);
plot(X,Y);

视图效果

05d5b5d98fcf49479771ee70fda2754a.png

4、 径向基神经元过叠

1)说明

径向基网络被训练为用目标输出响应特定输入。
由于径向基神经元的分布程度太高,每个神经元的响应基本相同,因此无法设计网络。

数据集代码

P = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(P,T,'+r');

 视图效果

2228cd83190f44e2a7aeeb3182fab18a.png

 2)创建网络和训练网络

说明:函数 NEWRB 可快速创建一个逼近由 P 和 T 定义的函数的径向基网络。
除了训练集和目标,NEWRB 还使用了两个参量,分别为误差平方和目标与分布常数。径向基神经元的分布设置为非常大的数量。


代码

eg = 0.02; % 和平方误差目标
sc = 100;  % 传播常数
net = newrb(P,T,eg,sc);

3)结果显示

说明

由于径向基神经元的输入区域有很大的重叠,NEWRB 无法正确设计径向基网络。
所有神经元始终输出 1,因此不能用于产生不同响应。要查看网络在训练集上的表现,请使用原始输入对网络进行仿真。将结果绘制在与训练集相同的图上。

代码

Y = net(P);
hold on;
plot(P,Y);

视图效果

70be3555e18f455b8659513505509c5d.png

5、总结 

在MATLAB中,可以利用径向基神经网络(RBFNN)进行曲线拟合。以下是基于RBFNN的曲线拟合主要步骤的总结:

  1. 准备数据:

    • 准备训练数据集,包括输入特征 �X 和对应的输出标签 �Y。
    • 如果需要对训练数据进行预处理,可以进行数据标准化或归一化等操作。
  2. 创建和训练RBFNN模型:

    • 使用 MATLAB 的 Neural Network Toolbox 创建 RBFNN 模型。
    • 设置 RBFNN 模型的参数,包括隐含层神经元数量、高斯函数的标准差等。
    • 利用训练数据对 RBFNN 模型进行训练,可以使用 MATLAB 的 train 函数。
  3. 模型评估:

    • 使用测试数据对训练好的 RBFNN 模型进行评估,可以计算预测结果与实际结果的 MSE(均方误差)等指标来评估模型性能。
  4. 曲线拟合:

    • 输入待预测的样本数据,使用训练好的 RBFNN 模型进行预测。
    • 通过绘制实际数据点和 RBFNN 预测结果的曲线来展示曲线拟合效果。

下面是一个简单的用 MATLAB 进行曲线拟合的示例代码:

% 准备数据 
X = % 输入特征 
Y = % 输出标签 % 创建和训练RBFNN模型 
net = newrb(X, Y); % 创建RBFNN模型 
net = train(net, X, Y); % 训练模型 % 模型评估Y_predicted = net(X); % 使用模型进行预测 
MSE = mse(Y - Y_predicted); % 计算均方误差% 曲线拟合展示 
plot(X, Y, 'b'); % 绘制原始数据曲线 
hold on plot(X, Y_predicted, 'r--'); % 绘制预测数据曲线 
legend('实际数据', '预测数据');

需要注意的是,在实际应用中,为了获得更好的模型性能,可能需要进行参数调优、交叉验证等操作。通过以上步骤,可以利用基于径向基神经网络的曲线拟合方法在 MATLAB 中进行实现和应用。

6、源代码

代码

%% 基于径向基神经网络的曲线拟合
%使用 NEWRB 函数创建一个径向基网络,该网络可逼近由一组数据点定义的函数。
%% 输入数据集
%定义 21 个输入 P 和相关目标 T。
X = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
figure(1)
plot(X,T,'+');
title('径向基神经网络');
xlabel('输入向量P');
ylabel('目标向量T');
%% 使用径向基网络来实现数据点的拟合
%径向基网络具有两个层,分别是径向基神经元的隐藏层和线性神经元的输出层。
%隐含层使用的径向基传递函数。
x = -3:.1:3;
a = radbas(x);
figure(2)
plot(x,a)
title('Radial Basis Transfer Function');
xlabel('Input p');
ylabel('Output a');
%% 创建径向基网络
eg = 0.02; % 和平方误差目标
sc = 1;    % 传播常数
net = newrb(X,T,eg,sc);
%绘制训练集
figure(3)
plot(X,T,'+');
xlabel('Input');X = -1:.01:1;
Y = net(X);hold on;
plot(X,Y);
hold off;
legend({'Target','Output'})%% 径向基神经元欠叠 
%径向基网络被训练为用目标输出响应特定输入。
%因为径向基神经元的分布程度太低,网络需要许多神经元。
%快速创建一个逼近由 P 和 T 定义的函数的径向基网络
P = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(P,T,'+r');
%函数 NEWRB 可快速创建一个逼近由 P 和 T 定义的函数的径向基网络。
%除了训练集和目标,NEWRB 还使用了两个参量,分别为误差平方和目标与分布常数。径向基神经元的分布设置为非常小的数量。
eg = 0.02; %和平方误差目标
sc = .01;  %传播常数
hold on
%将结果绘制在与训练集相同的图上。测试向量显示该函数已过拟合!如果有更高的分布常数,网络可以做得更好。
net = newrb(P,T,eg,sc);
X = -1:.01:1;
Y = net(X);
plot(X,Y);%% 径向基神经元过叠
%径向基网络被训练为用目标输出响应特定输入。
%由于径向基神经元的分布程度太高,每个神经元的响应基本相同,因此无法设计网络。
P = -1:.1:1;
T = [-.9602 -.5770 -.0729  .3771  .6405  .6600  .4609 ....1336 -.2013 -.4344 -.5000 -.3930 -.1647  .0988 ....3072  .3960  .3449  .1816 -.0312 -.2189 -.3201];
plot(P,T,'+r');
%函数 NEWRB 可快速创建一个逼近由 P 和 T 定义的函数的径向基网络。
%除了训练集和目标,NEWRB 还使用了两个参量,分别为误差平方和目标与分布常数。径向基神经元的分布设置为非常大的数量。
eg = 0.02; % 和平方误差目标
sc = 100;  % 传播常数
net = newrb(P,T,eg,sc);
%由于径向基神经元的输入区域有很大的重叠,NEWRB 无法正确设计径向基网络。
%所有神经元始终输出 1,因此不能用于产生不同响应。要查看网络在训练集上的表现,请使用原始输入对网络进行仿真。将结果绘制在与训练集相同的图上。Y = net(P);
hold on;
plot(P,Y);

 

 

相关文章:

58、基于径向基神经网络的曲线拟合(matlab)

1、基于径向基神经网络的曲线拟合简介及原理 1)原理简介 基于径向基神经网络(Radial Basis Function Neural Network, RBFNN)的曲线拟合是一种常用的非线性拟合方法,通过在输入空间中使用径向基函数对数据进行处理,实…...

3.上传图片(阿里云空间,oss验证)

笔记 20240710 未验证&#xff0c;现在还没有阿里云空间&#xff0c;等买个sit环境就可以验证一下。 前端 页面 <!--页面--> <el-form-item label"优惠券图片" prop"couponImg"><single-upload v-model"dataForm.couponImg"&g…...

仪表板展示|DataEase看中国:2023年中国新能源汽车经济运行情况分析

背景介绍 随着政府机构、企业和个人对环保和可持续发展的高度关注&#xff0c;“新能源汽车”在全球范围内成为了一个热门话题。新能源汽车是指使用非传统燃料&#xff08;如电能、氢能等&#xff09;作为动力源的汽车。 在中国市场&#xff0c;新能源汽车产业蓬勃发展&#…...

“Numpy数据分析与挖掘:高效学习重点技能“

目录 # 开篇 # 补充 zeros & ones eye 1. numpy数组的创建 1.1 array 1.2 range 1.3 arange 1.4 常见的数据类型 1.5 astype 1.6 random.random() & round 2. numpy数组计算和数组计算 2.1 reshape 2.2 shape 2.3 将一维数组变成多维数组 2.4 指定一维…...

百川工作手机实现销售管理微信监控系统

在瞬息万变的商业战场中&#xff0c;每一分效率的提升都是企业制胜的关键。传统销售管理模式已难以满足现代企业对精准、高效、合规的迫切需求。今天&#xff0c;让我们一同探索如何利用工作手机这一创新工具&#xff0c;为您的销售团队装上智能翅膀&#xff0c;开启销售管理的…...

RAG 工业落地方案框架(Qanything、RAGFlow、FastGPT、智谱RAG)细节比对!CVPR自动驾驶最in挑战赛赛道,全球冠军被算力选手夺走了

RAG 工业落地方案框架&#xff08;Qanything、RAGFlow、FastGPT、智谱RAG&#xff09;细节比对&#xff01;CVPR自动驾驶最in挑战赛赛道&#xff0c;全球冠军被算力选手夺走了。 本文详细比较了四种 RAG 工业落地方案 ——Qanything、RAGFlow、FastGPT 和智谱 RAG&#xff0c;重…...

华为防火墙 拓扑搭建1

拓扑图 要求 1.DMZ区内的服务器&#xff0c;生产区仅能在办公时间内&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;可以访问&#xff0c;办公区设备全天可以访问 配置安全策略 设置办公时间 2.生产区不允许访问互联网&#xff0c;办公区和游客区允许访问互联网…...

Linux 利用命名空间创建一个自己的“容器“

Linux 利用命名空间创建一个自己的"容器" 前置条件 创建一个目录存放容器mkdir /myapp准备静态编译busybox&#xff0c;操作系统自带的往往是依赖动态库的(本文使用的debian apt install busybox-static) 开始 使用unshare起一个独立命名空间.# 进入后/myapp目录…...

RAG的学习与实践——LangChain和LlamaIndex学习笔记

RAG RAG(Retrieval Augmented Generation)系统&#xff0c;代表“检索增强生成”。RAG由五个关键步骤组成&#xff1a; 加载&#xff1a;这是指将数据从其所在位置&#xff08;无论是文本文件、PDF、其他网站、数据库还是 API&#xff09;获取到您的管道中。LlamaHub提供数百…...

Python爬虫原理以及3个小案例(源码)

一、爬虫原理 网络爬虫是一种用于自动获取网页内容的程序。它模拟用户浏览网页的过程&#xff0c;通过发送HTTP请求获取网页的源代码&#xff0c;并利用解析和提取技术来获取所需的数据。 1. HTTP请求与响应过程 爬虫向目标网站发送HTTP请求&#xff0c;请求包含URL、请求方…...

Vagrant配合VirtualBox搭建虚拟机

目录 前言一、软件下载及安装1.下载2.安装扩展&#xff1a; 二、创建一个虚拟机1.Vagrant官方镜像仓库 三、使用远程工具连接虚拟机1.修改相关配置文件 四、虚拟机克隆及使用1.通用配置2.简单搭建一个java环境3.克隆虚拟机1.重命名虚拟机&#xff08;可选&#xff09;2.打包指定…...

Elasticsearch 建议(Suggesters):实现自动补全和拼写检查

引言 在现代搜索引擎中&#xff0c;自动补全和拼写检查功能已成为提升用户体验的重要工具。Elasticsearch&#xff0c;作为一款强大的分布式搜索和分析引擎&#xff0c;提供了多种Suggesters API来帮助开发者实现这些功能。本文将详细介绍Elasticsearch中的四种主要Suggester—…...

部署过docker后,防火墙firewall与iptables的基本指令

一、iptables【无需stop docker服务】 如果服务器中部署了docker&#xff0c;优先选用iptables 1. 记录关闭docker中运行的mongoDB的27017端口&#xff1a; 由于docker与iptables存在配置规则&#xff0c;因此要修改docker相关端口的可访问性时需要使用下面的语句&#xff1a…...

华为 RIP 协议中 RIP 兼容版本、RIPv1、RIPv2 在收发 RIP 报文时的区别

RIP (Routing Information Protocol&#xff0c;路由信息协议&#xff09; RIP 是一个比较早期的协议&#xff0c;在实际部署中较少使用&#xff0c;但RIP 协议的机制是所有矢量跻由协议的基础&#xff0c;因此&#xff0c;掌握 RIP 协议的工作原理对研究矢量路由协议有重要的…...

深度学习pytorch多机多卡网络配置桥接方法

1 安装pdsh&#xff08;Parallel Distributed Shell&#xff09; sudo apt install pdsh sudo -s # 切换超级用户身份 …...

服务器信息获取工具

功能介绍 SSH连接到远程服务器&#xff1a; 用户可以输入目标服务器的IP地址、用户名、密码以及SSH端口&#xff08;默认22&#xff09;。 工具会尝试连接到远程服务器&#xff0c;并在连接失败时显示错误信息。 运行命令并返回输出&#xff1a; 工具可以在远程服务器上运…...

uniapp 防止重复提交数据

当用户快速点击按钮时候。我们可以统一在 请求拦截 中做防止重复提交数据的处理 以下是使用uview2封装的request请求 import { autoLogin, getUserInfo } from /utils/method.js import { refreshToken } from /api/login.js const serversUrl require(./serversUrl.js).ser…...

线程池工具类

线程池简述 为什么需要一个线程池工具类&#xff1f; 答&#xff1a;整个项目&#xff0c;用到线程执行任务的地方很多&#xff0c;不可能哪里用到就在那里直接new一个线程执行&#xff0c;这样资源得不到重复利用&#xff0c;一旦线程过多就会导致内存不足。 线程池的好处是…...

印尼“支付宝” DANA 如何借力 OceanBase 实现3个“关键零”

当前&#xff0c;移动支付在东南亚正迅猛发展&#xff0c;据谷歌、淡马锡与贝恩公司发布的报告预测&#xff0c;东盟地区蓬勃兴起的移动支付市场有望在2030年突破至2万亿美元的交易规模。 在此背景下&#xff0c;DANA作为印尼——东南亚最大经济体中的一员&#xff0c;秉持着推…...

2018-2022 年份微博签到数据集

前阵子接到一个实验室老师的需求&#xff0c;采集五年前&#xff08;2024-52019&#xff09;过年前后的北京微博签到数据。 前两年采集的深圳签到数据是 2022 年是当年的尚可&#xff0c;这次虽然时间跨度只有两个月&#xff0c;但是由于时间太过久远&#xff0c;但是颇费了一…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...