基于指数分布优化的BP神经网络(分类应用) - 附代码

news2024/12/31 4:48:29

基于指数分布优化的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/131025569

指数分布算法的参数设置为:

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

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

相关文章

计算一个Series序列元素的标准差Series.sem()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算Series序列中各元素的标准差 Series.sem() [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd a pd.Series([1,2,3]) print("【显示】a:\n",a) print(【执行】…

电路基础元件

文章目录 每周电子w5——电路元件基本电路元件电阻元件电容元件电感元件 每周电子w5——电路元件 基本电路元件 电路元件:是电路中最基本的组成单元 电路元件通过其端子与外部相连接;元件的特性则通过与端子有关的物理量描述每一种元件反映某种确定的电…

v-if和v-else-if、v-else或v-show

一、用于真正的隐藏和显示,显示时才会渲染dom元素 v-if"布尔类型条件":能出现n次 v-else-if"布尔类型条件":必须与v-if搭配使用,出现n次 v-else:必须和v-if搭配使用,只能出现1次 例子1&#xff1…

LeetCode讲解篇之113. 路径总和 II

文章目录 题目描述题解思路题解代码 题目描述 题解思路 深度优先遍历二叉树,遍历的同时记录路径,直到遍历到叶节点,若路径和为targetSum则添加到结果集中 题解代码 func pathSum(root *TreeNode, targetSum int) [][]int {var res make([…

win10下yolov5 tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署…

云原生概述

1. 何谓云原生 云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,CloudNative。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设…

算法学习 之 并查集

leecode 中这题就需要并查集 代码如下 typedef struct{int * parents;int * sizes; } UnionFind; // 下面建立一个初始化 UnionFind * NewUnionFind(int n){UnionFind * uf (UnionFind *) malloc(sizeof(UnionFind));uf->parents (int *) malloc (sizeof(int)*n);uf->s…

UGNX二次开发 实时查看 NX 日志文件

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 a18037198459 订阅本专栏,非常感谢。 简介 实时查看 NX 日志文件,有助于分析保存时间等。打开WindowsPowerShell并实时获取日志文件内容的小功能。 效果 代…

使用CMS后台资源,如何在小程序上不开调试模式能正常呈现出内容

配置合法域名 如何配置合法域名: 1.找到自己的合法域名:在微信开发者工具中“不勾选"不校验合法域名,就会看到报错说你的某个链接不是合法域名,那不就说明我们需要将这个链接设置为合法域名嘛。这就找到了我们的需要设置的…

二叉树;二叉树的前序、中序、后序遍历及查找;顺序存储二叉树;线索化二叉树

数组、链表和树存储方式分析 对于树结构,不论是查找修改还是增加删除,效率都比较高,结合了链表和数组的优点,如以下的二叉树: 1、数组的第一个元素作为第一个节点 2、数组的第二个元素3比7小,放在7的左边…

Win10系统2023年10月更新补丁(KB5031356)后 IE11无法打开使用解决办法

原因: 官方更新的最新系统补丁已经永久禁用IE11了 以下是官方说明: 最好的办法是: (已验证可行~) 1, 禁用系统自动更新 (注册表 或者 设置->更新->高级选项 等等 自行禁用掉系统自动更新即可) 2, 卸载禁用IE的更新补丁KB5031356 控制面板>程序>程序和功能>…

深入理解main函数

深入理解main函数 第三个参数指向环境变量

基于人工兔优化的BP神经网络(分类应用) - 附代码

基于人工兔优化的BP神经网络(分类应用) - 附代码 文章目录 基于人工兔优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.人工兔优化BP神经网络3.1 BP神经网络参数设置3.2 人工兔算法应用 4.测试结果&#x…

Qt第六十六章:展示数据的标签

目录 一、效果图 二、qtDesigner ①拖出一个frame作为组容器并贴上背景样式 ②拖出主要的三个控件:frame、line、frame、label*2 ③固定大小并设置字体、布局一下 ④拷贝三份并水平布局一下 ⑤设置样式 ⑥调整布局 三、ui文件 四、代码 一、效果图 二、qtD…

java蓝桥杯前10题总结

文章目录 1.单词分析1.代码2.知识点 2.成绩统计1.代码2.知识点1.如何四舍五入?2.如何保留小数点后几位小数呢? 3.最短路4.回文日期1.代码2.知识点1.日期类2.字符串细节3.连等的细节 5.门牌制作1.代码 6.卡片1.代码2.细节 7.数字三角形1.代码2.细节 8.成绩…

《向量数据库》——向量数据库MIlvus Cloud携手发起 AGI 黑客松,解锁行业更多可能

携手发起 AGI 黑客松,解锁行业更多可能 不止如此,双方在深度合作的基础上,还联合极客公园 Founder Park、智谱 AI 等,共同发起 AGI Playground Hackathon,旨在重新思考 AI Native 时代下的应用和服务,解决共同的行业发展问题。届时,Dify 将为参赛者提供接入了智谱 AI 模…

Domino中的源代码管理工具

大家好,才是真的好。 上次Notes/Domino 14 Drop2发布的时候,我们就提到,HCL一起发布了一款源代码管理工具。 这里还是简单科普一下,源代码管理工具,可以实现代码版本控制、备份,还有多个程序员之间的协作…

【ROOTFS】1-构建rootfs与nfs调试

简介 rootfs这一块比较简单,别怕,基本就是拿一个busybox过来,然后编译一下,就可以在指定的目录下生成一堆文件夹和文件,你可以把这个当成rootfs了; busybox: https://busybox.net/ 教程文档 【链接】 b…

绿盾控制台如何给未授权终端分配相应权限

环境: 绿盾控制台7.0 问题描述: 绿盾控制台如何给未授权终端分配相应权限 解决方案: 1.进入桌面管理系统 2.通过终端号,找到未授权终端下面,选择相应的未授权终端 3.点击鼠标右键,选择分配授权模块 4.下…

进阶课2——语音分类

语音分类主要是对语音从不同的维度进行识别和分类,这些维度可以包括语种、性别、年龄段、情绪、说话人身份等,具体如下: 语种分类:根据发音人的母语或者惯用语言,将语音分为不同的语种,例如中文、英文、法…