基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码

news2025/1/17 5:52:42

基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码

文章目录

  • 基于材料生成算法优化概率神经网络PNN的分类预测 - 附代码
    • 1.PNN网络概述
    • 2.变压器故障诊街系统相关背景
      • 2.1 模型建立
    • 3.基于材料生成优化的PNN网络
    • 5.测试结果
    • 6.参考文献
    • 7.Matlab代码

摘要:针对PNN神经网络的光滑因子选择问题,利用材料生成算法优化PNN神经网络的光滑因子的选择,并应用于变压器故障诊断。

1.PNN网络概述

概率神经网络( probabilistic neural networks , PNN )是 D. F. Specht 博士在 1 989 年首先提出的,是一种基于 Bayes 分类规则与 Parzen窗的概率密度面数估计方法发展而来的并行算 法。它是一类结胸简单、训练简洁、应用广泛的人工神经网络 。在实际应用中,尤其是在解决分类问题的应用中, PNN 的优势在于用线性学习算法来完成非线性学 习算法所傲的工作,同 时保持非线性算法的高精度等特性;这种网络对应的权值就是模式样本的分布,网络不需要训练,因而能够满足训练上实时处理的要求。

PNN 网络是由径向基函数网络发展而来的一种前馈型神经网络,其理论依据是贝叶斯最小风险准则(即贝叶斯决策理论), PNN作为径向基网络的一种,适合于模式分类。当分布密度 SPREAD 的值接近于 0 时,它构成最邻分类器; 当 SPREAD 的值较大时,它构成对几个训练样本的临近分类器 。 PNN 的层次模型,由输入层、模式层、求和层、输出层共 4 层组成 , 其基本结构如图 1 所示。
f ( X , w i ) = e x p [ − ( X − w i ) T ( X − W i ) / 2 δ ] (1) f(X,w_i)=exp[-(X-w_i)^T(X-W_i)/2\delta]\tag{1} f(X,wi)=exp[(Xwi)T(XWi)/2δ](1)
式中, w i w_i wi为输入层到模式层连接的权值 ; δ \delta δ为平滑因子,它对分类起着至关重要的作用。第 3 层是求和层,是将属于某类的概率累计 ,按式(1)计算 ,从而得到故障模式的估计概率密度函数。每一类只有一个求和层单元,求和层单元与只属于自己类的模式层单元相连接,而与模式层中的其他单元没有连接。因此求和层单元简单地将属于自己类的模式层单元 的输出相加,而与属于其他类别的模式层单元的输出无关。求和层单元的输出与各类基于内 核的概率密度的估计成比例,通过输出层的归一化处理 , 就能得到各类的概率估计。网络的输 出决策层由简单的阔值辨别器组成,其作用是在各个故障模式的估计概率密度中选择一个具 有最大后验概率密度的神经元作为整个系统的输出。输出层神经元是一种竞争神经元,每个神经元分别对应于一个数据类型即故障模式,输出层神经元个数等于训练样本数据的种类个 数,它接收从求和层输出的各类概率密度函数,概率密度函数最大的那个神经元输出为 1 ,即 所对应的那一类为待识别的样本模式类别,其他神经元的输出全为 0 。

图1.PNN网络结构

2.变压器故障诊街系统相关背景

运行中的变压器发生不同程度的故障时,会产生异常现象或信息。故障分析就是搜集变压器的异常现象或信息,根据这些现象或信息进行分析 ,从而判断故障的类型 、严重程度和故障部位 。 因此 , 变压器故障诊断的目的首先是准确判断运行设备当前处于正常状态还是异常状态。若变压器处于异常状态有故障,则判断故障的性质、类型和原因 。 如是绝缘故障、过热故障还是机械故障。若是绝缘故障,则是绝缘老化 、 受潮,还是放电性故障 ;若是放电性故障又 是哪种类型的放电等。变压器故障诊断还要根据故障信息或根据信息处理结果,预测故障的可能发展即对故障的严重程度、发展趋势做出诊断;提出控制故障的措施,防止和消除故障;提出设备维修的合理方法和相应的反事故措施;对设备的设计、制造、装配等提出改进意见,为设备现代化管理提供科学依据和建议。

2.1 模型建立

本案例在对油中溶解气体分 析法进行深入分析后,以改良三比值法为基础,建立基于概率神经网络的故障诊断模型。案例数据中的 data. mat 是 33 × 4 维的矩阵,前3列为改良三比值法数值,第 4 列为分类的输出,也就是故障的类别 。 使用前 23 个样本作为 PNN 训练样本,后10个样本作为验证样本 。

3.基于材料生成优化的PNN网络

材料生成算法原理请参考:https://blog.csdn.net/u011835903/article/details/124221652

利用材料生成算法对PNN网络的光滑因子进行优化。适应度函数设计为训练集与测试集的分类错误率:
f i t n e s s = a r g m i n { T r a i n E r r o r R a t e + P r e d i c t E r r o r R a t e } (2) fitness = argmin\{TrainErrorRate + PredictErrorRate\}\tag{2} fitness=argmin{TrainErrorRate+PredictErrorRate}(2)

适应度函数表明,如果网络的分类错误率越低越好。

5.测试结果

材料生成参数设置如下:

%% 材料生成参数
pop=20; %种群数量
Max_iteration=20; %  设定最大迭代次数
dim = 1;%维度,即权值与阈值的个数
lb = 0.01;%下边界
ub = 5;%上边界

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

从结果来看,材料生成-pnn能够获得好的分类结果。

6.参考文献

书籍《MATLAB神经网络43个案例分析》,PNN原理部分均来自该书籍

7.Matlab代码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1239504.html

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

相关文章

Gradle常用命令与参数依赖管理和版本决议

一、Gradle 常用命令与参数 本课程全程基于 Gradle8.0 环境 1、Gradle 命令 介绍 gradle 命令之前我们先来了解下 gradle 命令怎么在项目中执行。 1.1、gradlew gradlew 即 Gradle Wrapper,在学习小组的第一课时已经介绍过了这里就不多赘述。提一下执行命令&am…

msvcp140.dll是什么?msvcp140.dll丢失的有哪些解决方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要采取一些措施来修复丢失的msvcp140.dll文件。本文将详细介绍5个解决msvcp140.dl…

所有产品都值得用AI再做一遍,让AGI与品牌营销双向奔赴

微软 CEO Satya Nadella 曾经说过:“所有的产品都值得用 AI 重做一遍。” AI 大模型的出现,开启了一个全新的智能化时代,重新定义了人机交互。这让生成式 AI 技术变得「触手可得」,也让各行业看到 AGI 驱动商业增长的更大可能性。…

【开源】基于Vue和SpringBoot的高校宿舍调配管理系统

项目编号: S 051 ,文末获取源码。 \color{red}{项目编号:S051,文末获取源码。} 项目编号:S051,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能需求2.1 学生端2.2 宿管2.3 老师端 三、系统…

Axios 请求响应结果的结构

发送请求 this.$axios.get(https://apis.jxcxin.cn/api/title?urlhttps://apis.jxcxin.cn/,{params: {id: 10}}).then(res > {console.log(res)})输出返回结果 confing 请求时的配置对象,如果请求的url,请求的方法,请求的参数&#xff0c…

如何解决msvcp110.dll丢失问题,分享5个有效的解决方法

最近,我在使用电脑时遇到了一个令人头疼的问题——msvcp110.dll丢失。这个错误通常会导致某些应用程序无法正常运行。为了解决这个问题,我们需要采取一些有效的方法来修复丢失的msvcp110.dll文件。那么,msvcp110.dll到底是什么呢?…

【python基础(三)】操作列表:for循环、正确缩进、切片的使用、元组

文章目录 一. 遍历整个列表1. 在for循环中执行更多操作2. 在for循环结束后执行一些操作 二. 避免缩进错误三. 创建数值列表1. 使用函数range()2. 使用range()创建数字列表3. 指定步长。4. 对数字列表执行简单的统计计算5. 列表解析 五. 使用列表的一部分-切片1. 切片2. 遍历切片…

一文搞懂什么是 GNU/Linux 操作系统

Author:rab 目录 前言一、UNIX二、Linux三、GNU 前言 你是否经常看见或听说过这么一句话:这是一个类 Unix 的 GNU/Linux 操作系统,你是怎么理解这句话的呢?想要搞懂这句话的含义,你需要了解以下三点基本常识。 一、U…

RedisTemplate使用详解

RedisTemplate介绍StringRedisTemplate介绍RedisConnectionFactory介绍RedisConnectionFactory源码解析 RedisOperations介绍RedisOperations源码解析 RedisTemplate使用连接池配置RedisTemplate连接池连接池配置 RedisTemplate应用场景RedisTemplate主要特点RedisTemplate使用…

Nuxt.js Next.js Nest.js

Nuxt.js和Next.js都是服务端渲染框架(SSR),属于前端框架,Nest.js则是node框架,属于后端框架。 其中Nuxt.js是vue的ssr框架,Next.js是react的ssr框架。 都是比vue和react更上层的前端框架。 文章目录 1.SSR2.Nuxt2.1 Nuxt的下载2.2 Nuxt的集成2.3 Nuxt…

【tomcat】java.lang.Exception: Socket bind failed: [730048

项目中一些旧工程运行情况处理 问题 1、启动端口占用 2、打印编码乱码 ʮһ�� 13, 2023 9:33:26 ���� org.apache.coyote.AbstractProtocol init ����: Fa…

【DevOps】Git 图文详解(八):后悔药 - 撤销变更

Git 图文详解(八):后悔药 - 撤销变更 1.后悔指令 🔥2.回退版本 reset3.撤销提交 revert4.checkout / reset / revert 总结 发现写错了要回退怎么办?看看下面几种后悔指令吧! ❓ 还没提交的怎么撤销&#x…

人工智能基础_机器学习047_用逻辑回归实现二分类以上的多分类_手写代码实现逻辑回归OVR概率计算---人工智能工作笔记0087

然后我们再来看一下如何我们自己使用代码实现逻辑回归的,对二分类以上,比如三分类的概率计算 我们还是使用莺尾花数据 首先我们把公式写出来 def sigmoid(z): 定义出来这个函数 可以看看到这需要我们理解OVR是如何进行多分类的,我们先来看这个 OVR分类器 思想 OVR(One-vs-…

如何用cmd命令快速搭建FTP服务

环境: Win10专业版 问题描述: 如何用cmd命令快速搭建FTP服务 解决方案: 1.输入以下命令来安装IIS(Internet Information Services): dism /online /enable-feature /featurename:IIS-FTPServer /all …

好用的博客评论系统 Valine 使用及避坑指南

评论系统,即网站的一个小功能,展示评论内容和用户输入框。开源免费的评论系统可不多,原来很火的"多说"评论系统都关闭了,而Disqus又是国外的访问受限。无意间发现了Valine,挺不错的,分享给大家。…

9、鸿蒙应用桌面图标外观和国际化

一、项目资源目录 项目下的resoueces目录为资源配置目录,其中base为基础配置,即在任何语言环境下都会加载的资源, color.json:用于配置颜色,如页面的背景和文字的颜色。 string.json:用于设置文字&#…

java_函数式接口

文章目录 一、什么是函数式接口二、四大核心函数式接口三、使用举例 一、什么是函数式接口 如果一个接口只有一个抽象方法,那么该接口就是一个函数式接口函数式接口的实例可以通过 lambda 表达式、方法引用或者构造方法引用来创建如果我们在某个接口上声明了 Funct…

Pandas一键爬取解析代理IP与代理IP池的维护

目录 前言 一、获取代理IP 二、解析代理IP 三、维护代理IP池 四、完整代码 总结 前言 在爬虫过程中,我们经常会使用代理IP来绕过一些限制,比如防止被封IP等问题。而代理IP的获取和维护是一个比较麻烦的问题,需要花费一定的时间和精力。…

重磅!这本30w人都在看的Python数据分析畅销书:更新了!

想学习python进行数据分析,这本《利用python进行数据分析》是绕不开的一本书。目前该书根据Python3.10已经更新到第三版。 Python 语言极具吸引力。自从 1991 年诞生以来,Python 如今已经成为最受欢迎的解释型编程语言。 pandas 诞生于2008年。它是由韦…

requests库中r.content 与 r.read() 的使用方式

目录 一、r.content属性 二、r.read()方法 三、两者区别 总结 requests库是Python中一个非常流行的HTTP客户端库,可以方便地发送所有类型的HTTP请求。在requests库中,r.content和r.read()是两个常用的方法,用于获取HTTP响应的内容。本文将…