基于阿基米德优化优化的BP神经网络(分类应用) - 附代码

news2024/11/19 22:42:33

基于阿基米德优化优化的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/119999874

阿基米德优化算法的参数设置为:

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/1094963.html

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

相关文章

Java代码获取当天最晚时间写入数据库自动变为下一天的00:00:00

背景 有个需求要求将用户上传的年/月/日格式时间转为当天最晚时间23:59:59,例如上传2023/10/15,转换为2023/10/15 23:59:59,并将其存入数据库,数据库字段类型为datetime。 部分代码如下: public static Date getEndO…

游戏设计模式专栏(九):用装饰模式定制化游戏元素

点击上方亿元程序员关注和★星标 引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 装饰模式是一种结构性设…

Qt6开发的网络通信工具(支持TCP和UDP)

1. 页面展示 1.2 通信展示 1.2.1 UDP 通信显示 注意:前面的R表示时接收消息,S表示的是发送消息。 1.2.2 TCP通信显示 注:勾选服务器后,出现客户端连接列表,可以群发消息和私发消息。 3. 程序下载 应用程序免费下载&a…

(2022|CVPR,无语言模型,StyleGAN2,CLIP,图文特征对齐)LAFITE:迈向文本到图像生成的无语言训练

LAFITE: Towards Language-Free Training for Text-to-Image Generation 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 相关工作 3. LAFITE:一种无…

JDBC技术(java数据库连接技术)

引入:USB技术介绍 USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范与外部设备的连接和通讯 USB是一个技术统称,有三部分组成 第一部分:USB的规范和…

深度学习电脑配置

目录 你真的需要这么一块阵列卡 你真的需要这么一块阵列卡 如何从硬件上保证数据安全?以下面这个 阵列卡 为例,它可以给硬盘组建磁盘阵列,其中用的比较多的是 RAID1 和 RAID5 。

【Linux】线程属性的定义如何修改线程属性(附图解与代码实现)

我们知道,在创建线程时,会用到pthread_create()函数 ,我们来简单介绍一下该函数: pthread_create(线程的tid , 线程属性 , 工作函数名 , 函数需要的参数); 这篇博客要讲的线程属性&#xff0c…

卷积和反卷积的一些计算细节记录

一、卷积计算 多通道输入的情况 维度计算公式 参考: https://blog.csdn.net/qq_42596142/article/details/111467409 https://blog.csdn.net/v_july_v/article/details/51812459 https://www.cnblogs.com/wenshinlee/p/12591492.html 二、反卷积计算&#xff…

【音视频|ALSA】ALSA是什么?ALSA框架详细介绍

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…

相似性搜索:第 5 部分--局部敏感哈希 (LSH)

SImilarity 搜索是一个问题,给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 一、介绍 在数据科学中,相似性搜索经常出现在NLP领域,搜索引擎或推荐系统中,其中需要检索最相关的文档或项目以进行查询。在大量数据中…

Linux常用命令——consoletype命令

在线Linux命令查询工具 consoletype 输出已连接的终端类型 补充说明 consoletype命令用于打印已连接的终端类型到标准输出,并能够检查已连接的终端是当前终端还是虚拟终端。 语法 consoletype实例 [rootlocalhost ~]# consoletype pty在线Linux命令查询工具

云原生场景下高可用架构的最佳实践

作者:刘佳旭(花名:佳旭),阿里云容器服务技术专家 引言 随着云原生技术的快速发展以及在企业 IT 领域的深入应用,云原生场景下的高可用架构,对于企业服务的可用性、稳定性、安全性越发重要。通…

Springboot+vue的人事管理系统(有报告),Javaee项目,springboot vue前后端分离项目。

演示视频: Springbootvue的人事管理系统(有报告),Javaee项目,springboot vue前后端分离项目。 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的人事管理系统,采用M(model…

2023年【四川省安全员B证】报名考试及四川省安全员B证考试内容

题库来源:安全生产模拟考试一点通公众号小程序 四川省安全员B证报名考试根据新四川省安全员B证考试大纲要求,安全生产模拟考试一点通将四川省安全员B证模拟考试试题进行汇编,组成一套四川省安全员B证全真模拟考试试题,学员可通过…

程序装载:“640K内存”真的不够用么?

目录 背景 程序装载面临的挑战 内存分段 内存分页 小结 背景 计算机这个行业的历史上有过很多成功的预言,最著名的自然是“摩尔定律”。当然免不了的也有很多“失败”的预测,其中一个最著名的就是,比尔盖茨在上世纪 80 年代说的“640K …

计网面试复习自用

五层: 应用层:应用层是最高层,负责为用户提供网络服务和应用程序。在应用层,用户应用程序与网络进行交互,发送和接收数据。典型的应用层协议包括HTTP(用于网页浏览)、SMTP(用于电子邮…

操作系统学习笔记5-内存管理

文章目录 1、CPU执行程序的基本过程2、CPU位数、OS位数、内存地址总线数、内存数据总线数目、逻辑地址位数、物理地址位数3、内存管理逻辑图4、编译、链接5、装入操作6、绝对装入7、静态重定位装入8、动态重定位装入9、内存保护10、单一连续分配10、固定分区分配11、动态分区分…

Java并发面试题:(三)sleep和wait方法区别,notify 和 notifyAll方法

sleep和wait wait, notify 和 notifyAll这些方法不在thread类里面? JAVA提供的锁是对象级的而不是线程级的,每个对象都有锁,通过线程获得。如果线程需要等待某些锁那么调用对象中的wait()方法就有意义了。如果wait()方法定义在Thread类中,线…

文件操作合集 - C语言

前言 由于我们每次打开程序写入的数据都是在内存中处理,关闭程序就直接没有了,下次还需要重新进行操作录入数据等,这里我们就可以使用文件来保存数据,更加持久化,下面我们基于c语言来介绍一些文件操作. 文件指针: 文件的打开和关闭 文件在读写之前应该先打开文件,在…

Linux:进程控制

目录 一、进程创建 写时拷贝 二、进程终止 echo $? 如何终止进程 _exit与exit 三、进程等待 进程等待的必要性 进程等待的操作 wait waitpid status 异常退出情况 status相关宏 options 四、进程程序替换 1、关于进程程序替换 2、如何进行进程程序替换 程序…