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

news2024/11/24 9:06: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/118800934

供需算法的参数设置为:

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

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

相关文章

css样式导入模板

直入主题 添加<link>标签到标题下面&#xff0c;输入rel"stylesheet",type"text/css",在href属性里写入路径 <title>标题</title> <link rel"stylesheet" type"text/css" href"xxx.css" /> 像这样就…

接口测试(含文档)

1、简介 测试系统组件之间的接口。 2、分类 2.1 外部接口 被测系统和外部系统之间的接口。&#xff08;例如电商与支付宝之间的支付接口&#xff0c;只需要测试正例即可&#xff09; 2.2 内部接口 2.2.1 提供给内部系统使用的内部接口。&#xff08;只需要测试正例即可&a…

Android Handler/Looper视角看UI线程的原理

概述 Handler/Looper机制是android系统非重要且基础的机制&#xff0c;即使在rtos或者linux操作系统上开发应用框架时&#xff0c;也经常借鉴这个机制。通过该机制机制可以让一个线程循环处理事件&#xff0c;事件处理逻辑即在Handler的handleMessge种。本文建议android8.1源码…

Step 1 搭建一个简单的渲染框架

Step 1 搭建一个简单的渲染框架 万事开头难。从萌生到自己到处看源码手抄一个mini engine出来的想法&#xff0c;到真正敲键盘去抄&#xff0c;转眼过去了很久的时间。这次大概的确是抱着认真的想法&#xff0c;打开VS从零开始抄代码。不知道能坚持多久呢。。。 本次的主题是搭…

一文让你玩转Linux多进程开发

Linux多进程开发 主要介绍多进程开发时的要点 进程状态转换 进程反应了进程执行的变化。 进程的状态分为三种 ,运行态,阻塞态,就绪态 在五态模型中分为以下几种,新建态&#xff0c;就绪态&#xff0c;运行态&#xff0c;阻塞态,终止态。 运行态&#xff1a;进程占用处理器正在运…

CSS结构选择器的使用

结构选择器 style>ul li:first-child {//选出第一个孩子进行变色background-color: blue;}</style><ul><li>我是第1个孩子</li><li>我是第2个孩子</li><li>我是第3个孩子</li><li>我是第4个孩子</li><li>…

基于linux的基础线程知识大总结

文章目录 1.线程的基础概念认知1.1什么是线程1.2线程的优缺点1.3一些页表知识的额外补充1.4进程和线程的对比 2.线程的基本控制2.1POSIX线程库2.2创建一个新的线程2.3有关线程id的解释和线程栈区的地址空间布局2.4线程终止2.5线程等待2.6线程分离 3.线程间互斥3.1基本概念3.2互…

多城镇信息发布付费置顶公众号开源版开发

多城镇信息发布付费置顶公众号开源版开发 以下是多城镇信息发布付费置顶公众号的功能列表&#xff1a; 信息发布&#xff1a;用户可以在公众号上发布各类信息&#xff0c;如房屋租售、二手物品交易、招聘信息等。 信息置顶&#xff1a;用户可以选择付费将自己的信息置顶在公众…

《PyTorch深度学习实践》第三讲 梯度下降算法

《PyTorch深度学习实践》第三讲 梯度下降算法 问题描述梯度下降问题分析编程实现代码实现效果 随机梯度下降问题分析编程实现代码实现效果 参考资料 问题描述 梯度下降 问题分析 编程实现 代码 import matplotlib.pyplot as plt# 训练集数据 x_data [1.0, 2.0, 3.0] y_data …

C++算法 —— 贪心(1)介绍

文章目录 1、什么是贪心算法2、特点3、学习方向 1、什么是贪心算法 贪心应当是一个策略&#xff0c;通过局部找到最优&#xff0c;来找到全局最优。它把解决问题的过程分为若干步&#xff0c;解决每一步的时候&#xff0c;都选择当前看起来最优的解法&#xff0c;通过这样做希…

Python数据分析实战-实现F检验(附源码和实现效果)

实现功能 F 检验&#xff08;F-test&#xff09;是一种常用的统计方法&#xff0c;用于比较两个或多个样本方差是否存在显著差异。它可以应用于多种场景&#xff0c;其中一些常见的应用场景包括&#xff1a; 方差分析&#xff08;ANOVA&#xff09;&#xff1a;F 检验在方差分…

【软考-中级】系统集成项目管理工程师-进度管理历年案例

持续更新。。。。。。。。。。。。。。。 进度管理历年案例和解析 2023 上 试题二(20分)2023 上 试题二(20分) 问题1(5分) 结合案例: (1)请写出项目关键路径,并计算项目工期。 答案:项目关键路径 ACEFGJKN,项目工期 80 解析(2)如果活动L工期拖延10天,对整个工期是否有影响…

C语言-程序环境和预处理(1)编译、连接介绍以及预处理函数,预处理符号详解及使用说明。

前言 本篇文章讲述了程序的翻译环境和执行环境&#xff0c;编译、连接&#xff0c;预定义符号&#xff0c;#define&#xff0c;#符号和##符号的相关知识。 文章目录 前言1.程序的翻译环境和执行环境2.编译链接2.1 翻译环境2.2 运行环境 3.预处理详解&#xff08;各预处理符号使…

Java之SPI

Java的SPI&#xff08;Service Provider Interface&#xff09;是一种面向接口编程的机制&#xff0c;用于实现组件之间的解耦和扩展。通过SPI机制&#xff0c;我们可以定义接口&#xff0c;并允许第三方提供不同的实现&#xff0c;从而实现可插拔、可扩展的架构。 SPI讲解 它…

Studio One6.5最新中文版安装步骤

在唱歌效果调试当中&#xff0c;我们经常给客户安装的几款音频工作站。第一&#xff0c;Studio One 6是PreSonus公司开发的一款功能强大的音频工作平台&#xff0c;具有丰富的音频处理功能和灵活的工作流程。以下是Studio One6的一些主要特点&#xff1a; 1.多轨录音和编辑&…

ezEIP信息泄露

漏洞描述 ezEIP存在信息泄露漏洞&#xff0c;通过遍历Cookie中的参数值获取敏感信息 漏洞复现 漏洞Url为 /label/member/getinfo.aspx访问时添加Cookie&#xff08;通过遍历获取用户的登录名电话邮箱等信息&#xff09; WHIR_USERINFORwhir_mem_member_pid1;漏洞证明&…

同比增长29.89%,长城汽车9月销售新车超12万辆

10月8日&#xff0c;长城汽车股份有限公司&#xff08;股票代码601633.SH、02333.HK、82333.HK&#xff1b;以下简称“长城汽车”&#xff09;发布2023年9月产销数据。今年9月&#xff0c;长城汽车销售新车121,632辆&#xff0c;同比增长29.89%&#xff0c;1-9月累计销售864,04…

安捷伦E9321A射频传感器

安捷伦E9321A射频传感器 E9321A 是 Agilent 使用的 6 GHz 0.1 瓦射频传感器。电子测试设备传感器测量波形的功率&#xff0c;例如多音和调制射频 (RF) 波形。传感器使用二极管检测器收集高度精确的调制测量值。50 MHz 至 6 GHz 300 kHz 视频带宽 功率范围&#xff1a;-65 至 20…

Android JNI调用流程

文章目录 前言一、JNI是什么二、JNI的优劣三、JNI的开发流程Java调用C函数1、创建声明native方法的Java工程&#xff0c;加载native函数的动态库&#xff0c;生成.h文件2、创建实现C函数的C工程&#xff0c;将本地代码编译成动态库C函数和Java本地方法的隐式映射&#xff08;相…

压缩炸弹,Java怎么防止

一、什么是压缩炸弹&#xff0c;会有什么危害 1.1 什么是压缩炸弹 压缩炸弹(ZIP)&#xff1a;一个压缩包只有几十KB&#xff0c;但是解压缩后有几十GB&#xff0c;甚至可以去到几百TB&#xff0c;直接撑爆硬盘&#xff0c;或者是在解压过程中CPU飙到100%造成服务器宕机。虽然…