基于鹰栖息优化的BP神经网络(分类应用) - 附代码

news2025/1/19 11:04:32

基于鹰栖息优化的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/123363341

鹰栖息算法的参数设置为:

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

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

相关文章

华为云云耀云服务器L实例性能测评|华为云云耀云服务器L实例评测使用体验

华为云云耀云服务器L实例性能测评 文章目录 华为云云耀云服务器L实例性能测评1. 云耀云服务器L实例简介1.2 云耀云服务器与弹性云服务器区别1.3 云耀负载均衡 2. 云耀云服务器L实例购买2.1 云耀服务器L实例购买2.1.1 云耀服务器L实例初始化配置2.1.2 远程登录云耀服务器L实例 3…

【Java 进阶篇】HTML DOM样式控制详解

当我们讨论网页设计时,样式是一个至关重要的方面。它使我们能够改变文本、图像和其他页面元素的外观,从而创造出吸引人的网页。在HTML DOM(文档对象模型)中,我们可以使用JavaScript来操作和控制样式。这篇博客将详细介…

OneDrive打不开了,怎么办?使用管理员身份也无效,分享解决办法如下

文章目录 1、问题描述2、解决办法2.1 修改注册表信息2.2 修改本地组策略 1、问题描述 电脑自带的 OneDrive 突然打不开了,双击也没有任何反应,以管理员身份打开也不行。去看了好多资料才解决这个问题,现分享如下; 2、解决办法 …

计网 七层网络模型

计网 七层网络模型 一.协议(protocol) 1.什么是协议 数据在网络中传输时按照的规则就是协议(protocol) 协议(protocol)规定了数据在网络中传输的顺序,格式,以及携带哪些内容 二…

【解决】运行vue项目,启动报错 in ./node_modules/@intlify/core-base/dist/core-base.cjs

我的处理方式: 一开始查了好多方法,删除node_modules,重新安装,切换node版本等,但是发现并没有用 之后来发现是安装依赖包的时候有些包安装失败导致的,只要有针对性的重新安装依赖就可以了 例如: in ./n…

【vue2.x】如何快速实现每个月倒计时

代码一 //获取这个月最后一天getLastDay(){var year new Date().getFullYear(); //获取年份var month new Date().getMonth() 1; //获取月份var lastDate new Date(year, month , 0).getDate(); //获取当月最后一日month month < 10 ? 0 month : month ; //月份补 0…

6 个可解锁部分 GPT-4 功能的 Chrome 扩展(无需支付 ChatGPT Plus 费用)

在过去的几个月里&#xff0c;我广泛探索了 ChatGPT 的所有可用插件。在此期间&#xff0c;我发现了一些令人惊叹的插件&#xff0c;它们改进了我使用 ChatGPT 的方式&#xff0c;但现在&#xff0c;我将透露一些您需要了解的内容。 借助 Chrome 扩展程序&#xff0c;所有 Chat…

深度学习(生成式模型)——DDPM:denoising diffusion probabilistic models

文章目录 前言DDPM的基本流程前向过程反向过程DDPM训练与测试伪代码 前向过程详解反向过程详解DDPM损失函数推导结语 前言 本文将总结扩散模型DDPM的原理&#xff0c;首先介绍DDPM的基本流程&#xff0c;接着展开介绍流程里的细节&#xff0c;最后针对DDPM的优化函数进行推导&…

网络通信——与WEB服务器交换数据(三十)

1. 与WEB服务器交换数据 1.1 知识点 &#xff08;1&#xff09;可以通过地址重写的方式进行Web Server的访问&#xff1b; &#xff08;2&#xff09;可以采用POST方式进行请求的提交&#xff1b; &#xff08;3&#xff09;可以读取网络上的图片信息&#xff1b; 1.2 具体…

javaEE - 1(9000字详解多线程第一篇)

一&#xff1a;认识线程 1.1 线程的概念 线程是操作系统中执行的最小单位&#xff0c;它是进程中的一个实体。一个进程可以包含多个线程&#xff0c;并且这些线程共享进程的资源&#xff0c;如内存、文件句柄等&#xff0c;但每个线程有自己的独立执行流程和栈空间。 线程在…

SOAR安全事件编排自动化响应-安全运营实战

SOAR是最近几年安全市场上最火热的词汇之一。各个安全产商都先后推出了相应的产品&#xff0c;但大部分都用得不是很理想。SOAR不同与传统的安全设备&#xff0c;买来后实施部署就完事&#xff0c;SOAR是一个安全运营系统&#xff0c;是实现安全运营过程中人、工具、流程的有效…

【GlobalMapper精品教程】063:线转面,面转线、线折点转点、面折点转点、点生成线、点生成面案例教程

本文讲解globalmapper中进行矢量线转面,面转线、线折点转点、面折点转点、点生成线、点创建面的方法。 文章目录 一、 面转线二、线转面三、线折点转点四、面折点转点五、点生成线六、点生成面一、 面转线 加载《GlobalMapper中文实战精品教程》(订阅专栏,获取所有文章阅读…

C语言的offsetof宏模拟和用宏实现交换奇偶位

目录 1. offsetof宏模拟 2. 宏实现交换奇偶位 1. offsetof宏模拟 作用&#xff1a;该宏的作用是计算一个结构体中成员的偏移量 模拟实现&#xff1a; #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名…

python:talib.BBANDS 画股价-布林线图

python 安装使用 TA_lib 安装主要在 http://www.lfd.uci.edu/~gohlke/pythonlibs/ 这个网站找到 TA_Lib-0.4.24-cp310-cp310-win_amd64.whl pip install /pypi/TA_Lib-0.4.24-cp310-cp310-win_amd64.whl 编写 talib_boll.py 如下 # -*- coding: utf-8 -*- import os impor…

jni:as 进行 JNI / NDK 开发:初步配置及使用

AndroidStudio 进行 JNI / NDK 开发&#xff1a;初步配置及使用-CSDN博客版权声明&#xff1a; 本文为博主原创文章&#xff0c;转载请标明出处。AndroidStudio 进行 JNI / NDK 开发&#xff1a;初步配置及使用-CSDN博客 一、相关名词解释 JNI&#xff1a;java native interf…

《数据结构、算法与应用C++语言描述》使用C++语言实现数组队列

《数据结构、算法与应用C语言描述》使用C语言实现数组队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…

Matlab/C++源码实现RGB通道与HSV通道的转换(效果对比Halcon)

HSV通道的含义 HSV通道是指图像处理中的一种颜色模型&#xff0c;它由色调&#xff08;Hue&#xff09;、饱和度&#xff08;Saturation&#xff09;和明度&#xff08;Value&#xff09;三个通道组成。色调表示颜色的种类&#xff0c;饱和度表示颜色的纯度或鲜艳程度&#xf…

JAVA基础(JAVA SE)学习笔记(三)流程控制语句

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 正文 JAVA基础&#xff08;JAVA SE&#xff09;学习笔记&#xff08;一&#xff09;JAVA学习路线、行业了解、…

Sql Server Report Service 使用简单说明

ReportServices做为报表服务器&#xff0c;结合sql直接访问数据库提供基本的报表格式设置显示&#xff0c;可以快速开发报表&#xff0c;主要包含两部分内容&#xff1a; 1.ReportServices服务器配置搭建&#xff0c;承载报表的运行平台 2.设计报表 ReportServices配置 1&am…

【C++初阶(二)】缺省参数函数重载

目录 前言 1. 缺省参数 1.1 什么是缺省参数 1.2 缺省参数的分类 1.2.1 全缺省参数 1.2.2 半缺省参数 2. 函数重载 2.1 什么是函数重载 2.2 缺省参数与函数重载 2.3 函数重载的使用 3. C支持函数重载的原因 总结 前言 在学习C语言时我们就会发现&#xff0c;C语言中存在的许多…