基于粒子群算法优化概率神经网络PNN的分类预测 - 附代码

基于粒子群算法优化概率神经网络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网络

粒子群算法原理请参考:网络博客

利用粒子群算法对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代码

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

职业迷茫,我该如何做好职业规划

案例25岁男,入职2月,感觉自己在混日子,怕能力没有提升,怕以后薪资也提不起来。完全不知道应该往哪个方向进修,感觉也没有自己特别喜欢的。感觉自己特别容易多想,想多年的以后一事无成的样子。 我觉得这个案…

Tektronix(泰克)示波器TBS1102B测试电压

对于 Tektronix TBS1102B 示波器来说,测试电压的步骤基本如下: 连接测量点: 将被测电路的测量点连接到示波器的输入通道。使用正确的探头并确保连接的极性正确。 选择通道: 选择示波器上的通道,你想要测量的电压可能连…

20231112_DNS详解

DNS是实现域名与IP地址的映射。 1.映射图2.DNS查找顺序图3.DNS分类和地址4.如何清除缓存 1.映射图 图片来源于http://egonlin.com/。林海峰老师课件 2.DNS查找顺序图 3.DNS分类和地址 4.如何清除缓存

单链表按位序与指定结点 删除

按位序删除(带头结点) #define NULL 0 #include<stdlib.h>typedef struct LNode {int data;struct LNode* next; }LNode, * LinkList;//按位序删除&#xff08;带头结点&#xff09; bool ListInsert(LinkList& L, int i, int& e) {if (i < 1)return false;L…

【Spring Cloud】声明性REST客户端:Feign

Spring Cloud Feign ——fallback 服务降级 1. Feign 简介2. Feign 的基础使用2.1 普通 HTTP 请求2.2 Feign 远程调用上传文件接口 1. Feign 简介 Feign 是一个声明式的 HTTP 客户端&#xff0c;它简化了编写基于 REST 的服务间通信代码的过程。在 Spring Cloud 中&#xff0c…

如何从零开始手写一个消息中间件(从宏观角度理解消息中间件的技术原理)

如何从零开始手写一个消息中间件&#xff08;从宏观角度理解消息中间件的技术原理&#xff09; 什么是消息中间件消息中间件的作用逐一拆解消息中间件的核心技术消息中间件核心技术总览IOBIONIOIO多路复用AIOIO多路复用详细分析selectpollepoll Java中的IO多路复用 协议序列化消…

【算法每日一练]-快速幂,倍增,滑动窗口(保姆级教程 篇1) #麦森数 #青蛙跳

之前是考试准备&#xff0c;所以有几天没更新&#xff0c;今天开始继续更新 目录 快速幂模板 题目&#xff1a;麦森数 思路&#xff1a; 题目&#xff1a;青蛙跳 思路&#xff1a; 快速幂模板 #include <bits/stdc.h> #define ll long long using namespa…

.net在使用存储过程中IN参数的拼接方案,使用Join()方法

有时候拼接SQL语句时&#xff0c;可能会需要将list中的元素都加上单引号&#xff0c;并以逗号分开&#xff0c;但是Join只能简单的分开&#xff0c;没有有单引号&#xff01; 1.第一种拼接方案 List<string> arrIds new List<string>(); arrIds.Add("aa&qu…

JavaScript_动态表格_删除功能

1、动态表格_删除功能 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>动态表格_添加和删除功能</title><style>table{border: 1px solid;margin: auto;width: 100%;}td,th{text-align: …

杂记 | 使用FRP搭建内网穿透服务(新版toml配置文件,搭配反向代理食用)

文章目录 01 需求与回顾02 下载程序包03 编辑.toml文件3.1 编辑frps.toml3.2 编辑frpc.toml 04 启动服务4.1 启动服务端4.2 启动客户端 05 配置反向代理&#xff08;可选&#xff09;06 windows设置为默认启动&#xff08;可选&#xff09;6.1 创建启动脚本6.2 设置为开机自启 …

【Java 进阶篇】Java与JQuery选择器:解锁前端开发的魔法大门

在前端开发的世界中&#xff0c;选择器是我们与HTML文档进行互动的钥匙&#xff0c;而Java和JQuery则为我们提供了强大的工具&#xff0c;使得前端开发不再是一个艰深的谜题。本篇博客将围绕Java与JQuery选择器展开&#xff0c;深入解析选择器的奥秘&#xff0c;为你打开前端开…

你一定要学会的Java语法 -- 【继承】

书接上回&#xff0c;我们已经学完了类和对象&#xff0c;今天内容可能有一点难&#xff0c;相信自己能跨过这道坎。 目录 一. 继承 1.什么是继承 2. 继承的概念 3. 继承的语法 4.父类成员访问 子类和父类成员变量同名 子类和父类成员方法同名 5.super关键字 6.子类构…

003、Nvidia Jetson Nano Developer KIT(b01)-深度学习环境配置

之——深度学习环境 杂谈 网上到处淘金&#xff0c;pytorch、opencv、torchvision。 正文 1.各种依赖库 1.1 pytorch的底层依赖库 sudo apt install build-essential make cmake cmake-curses-gui -ysudo apt install git g pkg-config curl -ysudo apt install libatlas-ba…

Java图像编程之:Graphics

一、概念介绍 1、Java图像编程的核心类 Java图像编程的核心类包括&#xff1a; BufferedImage&#xff1a;用于表示图像的类&#xff0c;可以进行像素级的操作。Image&#xff1a;表示图像的抽象类&#xff0c;是所有图像类的基类。ImageIcon&#xff1a;用于显示图像的类&a…

计算机中丢失msvcr120.dll文件怎么修复?找不到msvcr120.dll五种完美修复方案

今天我想和大家分享的是关于“msvcr120.dll丢失的问题的5个解决方法”。在我们日常的工作生活中&#xff0c;或许大家都曾遇到过这样的问题&#xff0c;那么&#xff0c;了解它的解决方法是非常必要的。 首先&#xff0c;让我们来了解一下msvcr120.dll是什么文件。简单来说&am…

“艾迪-东软杯”第六届武汉理工大学新生程序设计竞赛

A.Capoos Acronym Zero 题目描述 yz 和他的朋友 ea 和 zech 一起养了一群 Capoo。 这些 Capoo 非常聪明&#xff0c;但不知道为什么&#xff0c;它们并没有从三人那里学到怎么写算法题&#xff0c;而是出于某种原因开始研究语言学&#xff0c;并发明了一套自己的暗语。这门暗语…

二分图判定和二分图最大匹配

1.二分图的定义 二分图是一种特殊的无向图&#xff0c;它的节点可以被划分为两个互不相交的集合&#xff0c;使得同一集合中的任意两个节点之间没有边相连&#xff0c;而不同集合中的节点之间都有边相连。 换句话说&#xff0c;如果一个无向图可以被划分为两个集合&#xff0…

Keil文本对齐

摘要&#xff1a;通常我们写代码的时候&#xff0c;尤其是缩进和{}的使用&#xff0c;很多都需要自己手动去调整&#xff0c;如果有一个自动格式化代码的工具&#xff0c;每次编辑完代码&#xff0c;然后一键给将代码格式化&#xff0c;即省时又美观。为了解决这个问题&#xf…

面向对象高级

本期对应知识库&#xff1a;&#xff08;持续更新中&#xff01;&#xff09; 面向对象高级 (yuque.com) ​​​​​​​尚硅谷_宋红康_对象内存解析.pptx static 适用于公用变量 开发中&#xff0c;变量 经常把一些常量设置为静态static 例如 PI 方法 经常把工具类中的方…

Deepsort项目详解

一、目标追踪整体代码 代码目录如下图所示&#xff1a; 、 追踪相关代码&#xff1a; 检测相关代码和权重 调用 检测 和 追踪的代码&#xff1a; 首先代码分为三个部分&#xff1a; 目标追踪的相关代码和权重目标检测相关代码和权重&#xff0c;这里用的是yolov5.5目标检…