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

news2024/11/17 3:41:17

基于水循环优化的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/108549079

水循环算法的参数设置为:

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.coloradmin.cn/o/1065678.html

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

相关文章

10月7日星期六今日早报简报微语报早读

10月7日,星期六,早报简报微语早读分享。 1、中秋国庆假期国内旅游8.26亿人次,旅游收入7534.3亿; 2、2023国庆档新片票房破27亿; 3、石宇奇、李诗沣会师决赛,国羽提前包揽男单金银牌; 4、德国大…

前端vue 自定义组件

Vue组件的使用之props 为了提高组件的复用性,在封装vue组件时需要遵守如下原则: ① 组件的DOM结构、Style样式要尽量复用 ② 组件中要显示的数据,尽量由组件的使用者提供 为了方便使用者为组件提供要展示的数据,vue组件提供了…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes,所谓仿函数【不懂,跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

Postgresql中的C/C++混编(JIT)

1 Postgresql编译JIT 整体上看使用了GCC、G编译文件,最后用G汇总: GCC编译的三个.o文件llvmjit、llvmjit_deform、llvmjit_expr llvmjit.c -> llvmjit.o gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -…

VF11MR8M 冲销原因 小结

VF11&MR8M 冲销原因 小结 1.后台设置路径: SPRO->财务会计->总账会计->业务交易->调整过账/冲销->定义冲销原因 反记账: 2.前台操作使用01–当前期间回转 不会反记账,冲销凭证 过账日期 按 原凭证过账日期&#xff0…

CCF CSP认证 历年题目自练Day23

CCF CSP认证 历年题目自练Day23 题目一 试题编号: 202006-1 试题名称: 线性分类器 时间限制: 1.0s 内存限制: 512.0MB 题目分析(个人理解) 题目很长,专门吓唬人的,第一行输入…

安卓‘进度条ProgressBar’中‘setIndeterminate()’方法

在进度条的设置中,setIndeterminate()方法是用来设置进度条是否采用‘模糊模式’(Indeterminate的意思就是‘不确定的,模糊的,不明确的’ 也就是进度是否是确定的) 当设置setIndeterminate(true)参数为真时&#xff0c…

Compose中的Text组件

纵向布局为:Column 横向布局为:Row 设置内容 text属性设置内容。 设置权重 Modifier.weight(1.0f, true)权重设置,第一个参数 Float类型设置占比权重,第二个参数当为true时,元素将占据分配的整个宽度。 fontSize…

李沐深度学习记录3:11模型选择、欠拟合和过拟合

通过多项式拟合探索欠拟合与过拟合 import math import numpy as np import torch from torch import nn from d2l import torch as d2l#生成数据集 max_degree 20 # 多项式的最大阶数 n_train, n_test 100, 100 # 训练和测试数据集大小 true_w np.zeros(max_degree) # …

VMware 17pro安装流程附带密钥手把手教

VMware 17pro centos-8.5.2111-isos-x86_64安装包下载_开源镜像站-阿里云 安装VMware 17pro 下一步 勾选我接营许可协议中的条款点击下一步 更改路径后点击下一步 注意两个都要取消勾选不然会自动更新 下一步即可 最后一步为安装就行(我电脑上有VMware 16pro所以我的…

3.绘制一个点(鼠标点击)

愿你出走半生,归来仍是少年! 通过鼠标点击交互,实现在gl中绘制点。 1.知识点 1.1.点击坐标转换为Gl坐标 通过canvas的点击事件将会获得鼠标在浏览器客户区中的坐标。通过移除canvas自身位置后可获取鼠标在canvas中的点击位置。同时通过canvas的长宽将坐…

Mini-dashboard 和meilisearch配合使用

下载的meilisearch一般是development模式,内置客户端,修改客户端后需要重要全部编译,花时间太长了。前后端分离才是正道,客户端修改不用重新编译后端。 方法如下: 1、修改配置文件/etc/meilisearch.toml,…

磁盘io使用率高问题排查

Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 1.小文件读写的磁盘性能瓶颈是寻址(随机读写性能更差)评估标准:TPS 2.大文件读写的磁盘性能瓶颈…

cereal:支持C++11的开源序列化库

cereal:支持C11的开源序列化库 文章目录 一:引言二、cereal简介三、cereal的下载和使用 一:引言 序列化 (Serialization) 程序员在编写应用程序的时候往往需要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另…

认识计算机主板

目录 定义主要部件简单图示 主要功能 定义 计算机主板(Motherboard)是计算机系统中的核心组件之一,也被称为系统板、主板或母板。它是一个电子电路板,用于连接和支持计算机的各种硬件组件,包括中央处理器(…

零售业:别让数据安全成为业务的绊脚石!(附文件下载)

零售业上榜! 截至2023年8月31日,南都大数据研究院通过各地行政执法公示平台、媒体报道等公开渠道,收集到146起依据《数据安全法》作出行政处罚决定的案例。梳理发现,零售业以10.27%的占比位居行业第三,成为数据安全行…

尚硅谷Nginx教程由浅入深--笔记

尚硅谷Nginx教程由浅入深--笔记 Nginx简介Nginx相关概念反向代理负载均衡动静分离 Nginx安装Nginx命令Nginx配置Nginx配置实例反向代理1反向代理2负载均衡动静分离 Nginx简介 Nginx是一个高性能的HTTP和反向代理服务器,特点是内存占用少,并发能力强。 …

高铁站高速稳定用网秘籍,赶紧收藏

中秋国庆黄金周将至,销售旺季即将来临。车来车往、人潮涌动,稳定可靠的网络连接,成为了各大小商户抢占市场、掌握流量密码的关键。 在湖南省郴州市,某食品连锁商店负责人正在为店铺网络问题发愁。该连锁店部分销售网点位于繁忙的高…

Pikachu靶场——暴力破解

文章目录 1. 暴力破解1.1 基于表单的暴力破解1.2 验证码绕过(on server)1.3 验证码绕过(on client)1.4 token防爆破?1.5 漏洞防御 1. 暴力破解 暴力破解漏洞是指攻击者通过尝试各种组合的用户名和密码,以暴力方式进入系统或应用程序的方法。它利用了系统或应用程序…

睿趣科技:新手无货源怎么开抖音小店

抖音小店的开设对于许多商家来说是一个有吸引力的选择,尤其是对于那些喜欢短视频和社交媒体的年轻人。然而,对于没有货源的新手来说,这可能是一个令人头疼的问题。这篇文章将为你提供一些解决方案。 首先,你可以考虑从批发市场购买…