基于水基湍流优化的BP神经网络(分类应用) - 附代码

基于水基湍流优化的BP神经网络(分类应用) - 附代码

文章目录

  • 基于水基湍流优化的BP神经网络(分类应用) - 附代码
    • 1.鸢尾花iris数据介绍
    • 2.数据集整理
    • 3.水基湍流优化BP神经网络
      • 3.1 BP神经网络参数设置
      • 3.2 水基湍流算法应用
    • 4.测试结果:
    • 5.Matlab代码

摘要:本文主要介绍如何用水基湍流算法优化BP神经网络,利用鸢尾花数据,做一个简单的讲解。

1.鸢尾花iris数据介绍

本案例利用matlab公用的iris鸢尾花数据,作为测试数据,iris数据是特征为4维,类别为3个类别。数据格式如下:

特征1特征2特征3类别
单组iris数据5.32.11.21

3种类别用1,2,3表示。

2.数据集整理

iris数据总共包含150组数据,将其分为训练集105组,测试集45组。如下表所示:

训练集(组)测试集(组)总数据(组)
10545150

类别数据处理:原始数据类别用1,2,3表示为了方便神经网络训练,类别1,2,3分别用1,0,0;0,1,0;0,0,1表示。

当进行数据训练对所有输入特征数据均进行归一化处理。

3.水基湍流优化BP神经网络

3.1 BP神经网络参数设置

通常而言,利用智能算法一般优化BP神经网络的初始权值和阈值来改善BP神经网络的性能。本案例基于iris数据,由于iris数据维度不高,采用简单的BP神经网络。神经网络参数如下:

神经网络结构

图1.神经网络结构

神经网络参数如下:

%创建神经网络
inputnum = 4;     %inputnum  输入层节点数 4维特征
hiddennum = 10;     %hiddennum  隐含层节点数
outputnum = 3;     %outputnum  隐含层节点数
net = newff( minmax(input) , [hiddennum outputnum] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 200 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;

3.2 水基湍流算法应用

水基湍流算法原理请参考:https://blog.csdn.net/u011835903/article/details/121785889

水基湍流算法的参数设置为:

popsize = 10;%种群数量Max_iteration = 15;%最大迭代次数
lb = -5;%权值阈值下边界
ub = 5;%权值阈值上边界
%  inputnum * hiddennum + hiddennum*outputnum 为阈值的个数
%  hiddennum + outputnum 为权值的个数
dim =  inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum ;%  inputnum * hiddennum + hiddennum*outputnum维度

这里需要注意的是,神经网络的阈值数量计算方式如下:

本网络有2层:

第一层的阈值数量为:4*10 = 40; 即inputnum * hiddennum;

第一层的权值数量为:10;即hiddennum;

第二层的阈值数量为:3*10 = 30;即hiddenum * outputnum;

第二层权值数量为:3;即outputnum;

于是可知我们优化的维度为:inputnum * hiddennum + hiddennum*outputnum + hiddennum + outputnum = 83;

适应度函数值设定:

本文设置适应度函数如下:
f i t n e s s = a r g m i n ( T r a i n D a t a E r r o r R a t e + T e s t D a t a E r r o r R a t e ) fitness = argmin(TrainDataErrorRate + TestDataErrorRate) fitness=argmin(TrainDataErrorRate+TestDataErrorRate)
其中TrainDataErrorRate,TestDataErrorRate分别为训练集和测试集的错误分类率。适应度函数表明我们最终想得到的网络是在测试集和训练集上均可以得到较好结果的网络。

4.测试结果:

从水基湍流算法的收敛曲线可以看到,整体误差是不断下降的,说明水基湍流算法起到了优化的作用:
在这里插入图片描述
在这里插入图片描述

5.Matlab代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/112126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【OpenCV实现鼠标绘图,轨迹栏做调色板,图像的基本操作】

文章目录 鼠标绘图轨迹栏做调色板图像的基本操作 鼠标绘图 在OpenCV中操作鼠标事件 函数:cv.setMouseCallback() 目的是在鼠标双击的地方画一个圆。首先,我们需要创建一个鼠标回调函数,该函数会在鼠标事件发生时执行。鼠标事件包括左键按下…

C++QT---QT-day3

#include "widget.h" #include "ui_widget.h" //需要在.pro文件第一行加 texttospeechWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ui->lineEdit->setPlaceholderText("时:分:秒");//设…

移动端1px-从基本原理到开源解决方案介绍

1px 不够准确,应该说成 1 物理像素 为什么有 1px 这个问题?实现 1px 有哪些方法?这些方法分别有哪些优缺点?开源项目中使用的哪些解决方案?如何在项目中处理 1px 的相关问题? 基本概念 首先,我们…

Nginx Proxy代理

代理原理 反向代理产生的背景: 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成…

k8s集群授权prometheus(集群外部署)

一、前言 在集群外部prometheus想要调用k8s集群的apiserver获取监控数据需要通过token和ca验证,在集群内部部署的prometheus就不会有这个情况,因为集群内部部署prometheus pod的时候就已经注入了访问集群的token和ca文件,所以以下就针对k8s集…

什么是模拟芯片,模拟芯片都有哪些测试指标?

模拟芯片又称处理模拟信号的集成电路 模拟集成电路主要是指由电容、电阻、晶体管等组成的模拟电路集成在一起用来处理模拟信号的集成电路。有许多的模拟集成电路,如运算放大器、模拟乘法器、锁相环、电源管理芯片等。 模拟集成电路的主要构成电路有:放…

【jvm】虚拟机栈之局部变量表

目录 一、说明二、代码分析2.1 代码示例2.2 执行javap2.3 jclasslib插件查看 三、对slot的理解3.1 说明3.2 slot索引图3.3 实例方法的局部变量表3.4 long和double类型变量占2个slot 四、slot的重复利用4.1 说明4.2 变量c复用变量b的槽位 五、静态变量与局部变量对比 一、说明 1…

AQS中lock源码解析

什么是AQS? 就是基于双向链表CAS实现的锁的一种机制或者方法思想。就是AbstractQueuedSynchronizer,是Java并发包下的一个基类基于AQS实现的同步器包括:ReentrantLock、CountDownLatch、Samaphone、FutureTask、ReentrantWriteLock Abstrac…

如何用记事本制作一个简陋的小网页(3)——注册信息表

目录 前提须知: 一、表格建立之前: 二、表格的建立: 三、信息表的内容填充: 1.昵称 和 电话 : 2.密码: 3.性别: 4. 爱好: 5.民族: 6. 出生日期: 7.…

Linux远程管理工具

Linux远程管理服务器多基于 SSH 协议。本节给大家介绍 2 种常见的基于 SSH 协议的远程管理工具,分别是 PuTTY 和 SecureCRT。 在使用远程管理工具之前,应先设置宿主机 Windows 与虚拟机 Linux 能够连通。 这里要注意 VMware 的网卡设置,Lin…

怎么把图片转换成ico图标文件?

环境: Win10 专业版 问题描述: 怎么把图片转换成ico图标文件 解决方案: 要将图片转换为 ico 图标文件,可以使用以下几种方法: 方法 1:使用在线转换器 1.访问在线 ico 转换器,例如&#xf…

EtherNet/IP转Modbus TCP协议网关的接口

远创智控的YC-EIPM-TCP网关产品,它有什么作用呢?一起来了解一下吧! 远创智控YC-EIPM-TCP网关产品可以通过各种数据接口和工业领域的仪表、PLC、计量设备等产品连接,实时采集这些设备中的运行数据、状态数据等信息,并把…

STM32 HAL库高级定时器输入捕获脉宽测量

STM32 HAL库高级定时器输入捕获脉宽测量 📌相关篇《STM32 HAL库定时器输入捕获SlaveMode脉宽测量》 ✨相比于上面所使用的高级定时器输入捕获从模式来测量PWM信号,实现方法更为复杂一下,但是还是将实现的方法记录下来。 📌本篇实现…

0基础学习PyFlink——Map和Reduce函数处理单词统计

在很多讲解大数据的案例中,往往都会以一个单词统计例子来抛砖引玉。本文也不免俗,例子来源于PyFlink的《Table API Tutorial》,我们会通过几种方式统计不同的单词出现的个数,从而达到循序渐进的学习效果。 常规方法 # input.py …

正点原子嵌入式linux驱动开发——pinctrl和gpio子系统

在上一篇笔记中,学习编写了基于设备树的LED驱动,但是驱动的本质还是没变,都是配置LED灯 所使用的GPIO寄存器,驱动开发方式和裸机基本没区别。Linux是一个庞大而完善的系统,尤其是驱动框架,像GPIO这种最基本…

二叉树,堆排序及TopK问题

要讲二叉树的概念,就要先讲树的概念。 树是什么呢? 树其实是一种储存数据的结构,因为他的结构倒过来和生活中的树很相似所以才被称之为树。 这是一颗多叉树,从最顶端的节点可以找到下边的几个节点,下边的节点又可以找…

Chrome插件精选 — 标签效率管理插件

Chrome实现同一功能的插件往往有多款产品,逐一去安装试用耗时又费力,在此为某一类型插件挑选出比较好用的一款或几款,尽量满足界面精致、功能齐全、设置选项丰富的使用要求,便于节省一个个去尝试的时间和精力。 1. OneTab Plus 下…

从0-1,使用腾讯OCR进行身份证识别

目录 1.申请腾讯OCR权限 2.代码思路 3.Postman测试​ 1.申请腾讯OCR权限 获取 secretId 和 secretKey,见上文从0到1,申请cos服务器并上传图片到cos文件服务器-CSDN博客https://blog.csdn.net/m0_55627541/article/details/133902798 2.代码思路 入参…

【PXIE301-211】青翼科技基于PXIE总线的16路并行LVDS数据采集、1路光纤数据收发处理平台

板卡概述 PXIE301-211是一款基于PXIE总线架构的16路并行LVDS数据采集、1路光纤收发处理平台,该板卡采用Xilinx的高性能Kintex 7系列FPGA XC7K325T作为实时处理器,实现各个接口之间的互联。板载1组64位的DDR3 SDRAM用作数据缓存。板卡具有1个FMC&#xf…