57、基于概率神经网络(PNN)的分类(matlab)

1、基于概率神经网络(PNN)的分类简介

PNN(Probabilistic Neural Network,概率神经网络)是一种基于概率论的神经网络模型,主要用于解决分类问题。PNN最早由马科夫斯基和马西金在1993年提出,是一种非常有效的分类算法。

PNN的原理可以简单概括为以下几个步骤:

  1. 数据输入层:将输入的样本数据分别输入到模型中。
  2. 模式层:对每个输入数据进行模式匹配,计算其与指定类别之间的相似度得分。
  3. 模式比较层:将所有类别的相似度得分进行比较,找到得分最高的类别作为最终分类结果。

PNN具有以下特点:

  1. 高效性:PNN的训练速度较快,且在实际应用中表现出较高的分类准确率。
  2. 鲁棒性:PNN对噪声和异常值具有较强的鲁棒性,能够有效处理复杂的分类问题。
  3. 容易解释:PNN的结果可以直观地解释,使得用户可以更好地理解模型的分类依据。

总的来说,PNN是一种非常有效的分类算法,适用于各种不同领域的分类问题,如图像识别、文本分类等。

2、基于概率神经网络(PNN)的分类说明及关键函数

1)说明

此处有三个二元输入向量 X 和它们相关联的类 Tc。
创建 y 概率神经网络,对这些向量正确分类。

2)重要函数

newpnn()函数:设计概率神经网络

概率神经网络(PNN)是一种适用于分类问题的径向基网络。

语法

net = newpnn(P,T,spread)%接受两个或三个参数,并返回一个新的概率神经网络。

参数

P:Q个输入向量的r × Q矩阵

T:Q个目标类向量的s × Q矩阵

spread:传播径向基函数的扩展(默认= 0.1)

如果扩散接近于零,则网络作为最近邻分类器。当扩展变大时,所设计的网络会考虑附近的几个设计向量。

sim()函数:模拟神经网络

语法

[Y,Xf,Af] = sim(net,X,Xi,Ai,T) 
参数

net:网络   

X:网络的输入

Xi:初始输入延迟条件(默认= 0)

Ai:初始层延迟条件(default = 0)

T:网络目标(默认= 0)

3、数据集及显示

代码

X = [1 2; 2 2; 1 1]';
Tc = [1 2 3];
figure(1)
plot(X(1,:),X(2,:),'.','markersize',30)
for i = 1:3, text(X(1,i)+0.1,X(2,i),sprintf('class %g',Tc(i))), end
axis([0 3 0 3])
title('三个二元向量及分类')
xlabel('X(1,:)')
ylabel('X(2,:)')

视图效果

4d5fefa895b64a729f35c0ae3f875dfa.png

4、 基于设计输入向量测试网络

1)说明

将目标类索引 Tc 转换为向量 T
用 NEWPNN 设计 y 概率神经网络
 SPREAD 值 1,因为这是输入向量之间的 y 典型距离。

2)测试网络

代码

T = ind2vec(Tc);
spread = 1;
net = newpnn(X,T,spread);
%测试网络
%基于输入向量测试网络。通过对网络进行仿真并将其向量输出转换为索引来实现目的。
Y = net(X);
Yc = vec2ind(Y);
figure(2)
plot(X(1,:),X(2,:),'.','markersize',30)
axis([0 3 0 3])
for i = 1:3,text(X(1,i)+0.1,X(2,i),sprintf('class %g',Yc(i))),end
title('测试网络')
xlabel('X(1,:)')
ylabel('X(2,:)')

视图效果 

99dcaabffb554913b0d153b807c6b7e2.png

3)新数据测试网络

 代码

x = [2; 1.5];
y = net(x);
ac = vec2ind(y);
hold on
figure(3)
plot(x(1),x(2),'.','markersize',30,'color',[1 0 0])
text(x(1)+0.1,x(2),sprintf('class %g',ac))
hold off
title('新数据分类')
xlabel('X(1,:) and x(1)')
ylabel('X(2,:) and x(2)')

视图效果

03a46217cb4840ddb1d7a4da2b249be4.png

5、 概率神经网络将输入空间分为三个类。

说明

分为三类

代码

x1 = 0:.05:3;
x2 = x1;
[X1,X2] = meshgrid(x1,x2);
xx = [X1(:) X2(:)]';
yy = net(xx);
yy = full(yy);
m = mesh(X1,X2,reshape(yy(1,:),length(x1),length(x2)));
m.FaceColor = [0 0.5 1];
m.LineStyle = 'none';
hold on
m = mesh(X1,X2,reshape(yy(2,:),length(x1),length(x2)));
m.FaceColor = [0 1.0 0.5];
m.LineStyle = 'none';
m = mesh(X1,X2,reshape(yy(3,:),length(x1),length(x2)));
m.FaceColor = [0.5 0 1];
m.LineStyle = 'none';
plot3(X(1,:),X(2,:),[1 1 1]+0.1,'.','markersize',30)
plot3(x(1),x(2),1.1,'.','markersize',30,'color',[1 0 0])
hold off
view(2)
title('三分类')
xlabel('X(1,:) and x(1)')
ylabel('X(2,:) and x(2)')

试图效果

d9f88e5a4a194cdab4a7d4c903d77645.png

6、总结

概率神经网络(PNN)是一种用于模式分类的人工神经网络。它基于贝叶斯定理和高斯混合模型,可以用于处理各种类型的数据,包括连续型数据和离散型数据。PNN在处理分类问题时比传统的神经网络更加灵活,具有更高的准确性和泛化能力。

PNN的基本工作原理是将输入数据集分别与样本集中的每个样本计算相似度,并根据相似度来对输入数据进行分类。PNN由四层组成:输入层、模式层、竞争层和输出层。输入数据首先通过输入层传递到模式层,再通过竞争层计算相似度,最后根据相似度在输出层进行分类。

在Matlab中,可以使用相关工具箱或自行编程来实现PNN分类。首先需要准备训练数据集和测试数据集,然后通过训练数据集来训练PNN模型。训练完成后,可以使用测试数据集来评估PNN的分类性能,并进行预测。

总的来说,PNN是一种强大的分类方法,适用于各种分类问题。在实际应用中,可以根据具体问题选择合适的特征和模型参数,以提高分类性能。Matlab提供了丰富的工具和函数支持,使得实现和应用PNN变得更加便捷。

7、源代码 

代码

%% 基于概率神经网络(PNN)的分类(matlab)
%此处有三个二元输入向量 X 和它们相关联的类 Tc。
%创建 y 概率神经网络,对这些向量正确分类。
%重要函数:NEWPNN 和 SIM 函数
%% 数据集及显示
X = [1 2; 2 2; 1 1]';
Tc = [1 2 3];
figure(1)
plot(X(1,:),X(2,:),'.','markersize',30)
for i = 1:3, text(X(1,i)+0.1,X(2,i),sprintf('class %g',Tc(i))), end
axis([0 3 0 3])
title('三个二元向量及分类')
xlabel('X(1,:)')
ylabel('X(2,:)')
%% 基于设计输入向量测试网络
%将目标类索引 Tc 转换为向量 T
%用 NEWPNN 设计 y 概率神经网络
% SPREAD 值 1,因为这是输入向量之间的 y 典型距离。
T = ind2vec(Tc);
spread = 1;
net = newpnn(X,T,spread);
%测试网络
%基于输入向量测试网络。通过对网络进行仿真并将其向量输出转换为索引来实现目的。
Y = net(X);
Yc = vec2ind(Y);
figure(2)
plot(X(1,:),X(2,:),'.','markersize',30)
axis([0 3 0 3])
for i = 1:3,text(X(1,i)+0.1,X(2,i),sprintf('class %g',Yc(i))),end
title('测试网络')
xlabel('X(1,:)')
ylabel('X(2,:)')
%数据测试
x = [2; 1.5];
y = net(x);
ac = vec2ind(y);
hold on
figure(3)
plot(x(1),x(2),'.','markersize',30,'color',[1 0 0])
text(x(1)+0.1,x(2),sprintf('class %g',ac))
hold off
title('新数据分类')
xlabel('X(1,:) and x(1)')
ylabel('X(2,:) and x(2)')
%% 概率神经网络将输入空间分为三个类。
x1 = 0:.05:3;
x2 = x1;
[X1,X2] = meshgrid(x1,x2);
xx = [X1(:) X2(:)]';
yy = net(xx);
yy = full(yy);
m = mesh(X1,X2,reshape(yy(1,:),length(x1),length(x2)));
m.FaceColor = [0 0.5 1];
m.LineStyle = 'none';
hold on
m = mesh(X1,X2,reshape(yy(2,:),length(x1),length(x2)));
m.FaceColor = [0 1.0 0.5];
m.LineStyle = 'none';
m = mesh(X1,X2,reshape(yy(3,:),length(x1),length(x2)));
m.FaceColor = [0.5 0 1];
m.LineStyle = 'none';
plot3(X(1,:),X(2,:),[1 1 1]+0.1,'.','markersize',30)
plot3(x(1),x(2),1.1,'.','markersize',30,'color',[1 0 0])
hold off
view(2)
title('三分类')
xlabel('X(1,:) and x(1)')
ylabel('X(2,:) and x(2)')



 

 

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

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

相关文章

OpenCV MEI相机模型(全向模型)

文章目录 一、简介二、实现代码三、实现效果参考文献一、简介 对于针孔相机模型,由于硬件上的限制(如进光量等),他的视野夹角往往有效区域只有140度左右,因此就有研究人员为每个针孔相机前面再添加一个镜片,如下所示: 通过折射的方式增加了相机成像的视野,虽然仍然达不…

精讲:java之多维数组的使用

一、多维数组简介 1.为什么需要二维数组 我们看下面这个例子?“ 某公司2022年全年各个月份的销售额进行登记。按月份存储,可以使用一维数组。如果改写为按季度为单位存储怎么办呢? 或许现在学习了一维数组的你只能申请四个一维数组去存储每…

修改服务器挂载目录

由于我们的项目通常需要挂载一个大容量的数据盘来存储文件数据,所以我们每台服务器都需要一个默认的挂载目录来存放这些数据,但是由于我们的误操作,导致挂载目录名字建错了,这时候后端就读不到挂载目录了,那我们我们的…

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作

公司内部配置GitLab,通过SSH密钥来实现免密clone、push等操作。以下是配置SSH密钥以实现免密更新的步骤: 1.生成SSH密钥 在本地计算机上打开终端或命令提示符。输入以下命令以生成一个新的SSH密钥:ssh-keygen -t rsa -b 4096 -C "your…

AGE Cypher 查询格式

使用 ag_catalog 中的名为 cypher 的函数构建 Cypher 查询,该函数返回 Postgres 的记录集合。 Cypher() Cypher() 函数执行作为参数传递的 Cypher 查询。 语法:cypher(graph_name, query_string, parameters) 返回: A SETOF records 参…

高铁站客运枢纽IPTV电视系统-盐城高铁站西广场IP电视系统应用浅析

高铁站客运枢纽IPTV电视系统-盐城高铁站西广场IP电视系统应用浅析 由北京海特伟业科技有限公司任洪卓于2024年7月9日发布 随着科技的飞速发展,特别是“互联网”战略的深入推进,高铁站客运枢纽的信息化建设成为提升服务质量、增强乘客体验的重要手段。盐…

FTP与TFTP

1、TFTP(简单文件传输协议) TFTP是TCP/IP协议族中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 基于UDP协议 端口号:69 特点:简单、轻量级、易于实现 传输过程&…

20240710 每日AI必读资讯

🤖微软:不会像 OpenAI 一样阻止中国访问 AI 模型 - OpenAI 将于周二(7 月 9 日)开始阻止中国用户访问其 API。 - 微软发言人表示:Azure OpenAI API服务在中国的提供方式没有变化。 - 公司仍然通过部署在中国以外地区…

uniapp——银行卡号脱敏

样式 代码 {{bankNumber.replace(/(\d{4})(?\d)/g, "●●●● ").replace(/(\d{2})(?\d{2}$)/, " $1")}} 将银行卡号按照每四位一组的方式进行处理,前面的变成 剩下的正常显示

谷粒商城-个人笔记(集群部署篇三)

前言 ​学习视频:​Java项目《谷粒商城》架构师级Java项目实战,对标阿里P6-P7,全网最强​学习文档: 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…

昇思MindSpore25天学习打卡Day17:K近邻算法实现红酒聚类

昇思MindSpore25天学习打卡Day17:K近邻算法实现红酒聚类 1 实验目地2 K近邻算法(KNN)原理介绍2.1 分类问题2.2 回归问题2.3 距离的定义 3 实验环境4 数据处理4.1 数据准备4.2 数据读取与处理4.2.1 导入MindSpore模块和辅助模块 5 模型构建--计算距离6 模型预测 及 打…

java算法day9

232.用栈实现队列 用队列实现栈 有效的括号 删除字符串中的所有相邻重复项 逆波兰表达式求值 解决栈和队列的基本数据结构 Queue(队列) 在java中是一个接口。定义的方法: //boolean add(E e): 将指定的元素插入此队列(如果…

软考高级里《系统架构设计师》容易考吗?

我还是22年通过的架构考试。系统架构设计师属于软考高级科目,难度比初级和中级都要大,往年的通过率也比较低,一般在10-20%左右。从总体来说,这门科目确实是不好过的,大家如果想要备考系统架构设计师的话,还…

【界面态】霍尔效应表征氮化对SiC/SiO2界面陷阱的影响

引言 引言主要介绍了硅碳化物(SiC)金属-氧化物-半导体场效应晶体管(MOSFETs)作为新一代高压、低损耗功率器件的商业化背景。SiC MOSFETs因其优越的电气特性,在高电压和高温应用领域具有巨大的潜力。然而,尽…

Leedcode刷题——7 滑动窗口 双指针

注&#xff1a;以下代码均为c 1. 两数之和2&#xff08;输入有序数组&#xff09; // 法1&#xff1a;暴力 vector<int> twoSum1(vector<int>& numbers, int target) {vector<int> ans(2);int n numbers.size();for(int i 0; i < n-1; i){if(i ! 0…

预算有限?如何挑选经济适用的安全管理系统?

如今&#xff0c;无论是信息安全、生产安全还是人员安全&#xff0c;都直接关系到企业的稳定运营和长远发展。然而&#xff0c;对于许多中小企业而言&#xff0c;高昂的安全管理系统投入往往成为一大难题。那么&#xff0c;在预算有限的情况下&#xff0c;如何挑选一款既经济适…

Camera Raw:常规工具

在 Camera Raw 窗口右下角提供了四个常用的工具&#xff0c;它们分别是&#xff1a;缩放工具、抓手工具、切换取样器叠加以及切换网格叠加工具。 ◆ ◆ ◆ 缩放工具 Zoom Tool 用于放大或缩小预览图像&#xff0c;便于查看和编辑细节。 快捷键&#xff1a;Z 1、双击“缩放工具…

瓦罗兰特游戏帧数低怎么办 瓦罗兰特游戏帧率提不上去怎么解决

瓦罗兰特是一款由拳头游戏&#xff08;Riot Games&#xff09;开发的5v5英雄射击游戏。结合了MOBA元素&#xff0c;每个角色都拥有四个独特的技能&#xff1b;提供了多种游戏模式&#xff0c;如5V5战术射击等&#xff1b;角色和皮肤设计丰富。游戏中&#xff0c;玩家将扮演各具…

uniapp 表格,动态表头表格封装渲染

1.接口表格数据&#xff1a; {"headers": [{"label": "实例名","name": "v1","order": 1,"hide": false,"dateTypeValue": null},{"label": "所属科室","name&quo…

MATLAB数据统计描述和分析

描述性统计就是搜集、整理、加工和分析统计数据&#xff0c; 使之系统化、条理化&#xff0c;以显示出数据资料的趋势、特征和数量关系。它是统计推断的基础&#xff0c;实用性较强&#xff0c;在数学建模的数据描述部分经常使用。 目录 1.频数表和直方图 2 .统计量 3.统计…