本站原创文章,转载请说明来自《老饼讲解-BP神经网络》www.bbbdata.com
概率神经网络全称为Probabilistic Neural Network
它由D.F.Speeht在1989年提出,是径向基网络的一个分支
它与广义神经网络类似,但概率神经网络仅用于模式识别(分类)
本文主要讲述在matlab工具箱里如何训练与使用概率神经网络(newpnn)
matlab工具箱建立概率神经网络(newpnn)进行分类的Demo代码
(2014b版matlab实测已跑通)
% 训练数据
P = [1 2 3 4 5 6 7]; % 输入数据
Tc = [1 2 3 2 2 3 1]; % 输出数据:类别编号
T = ind2vec(Tc); % 将类标转换为onehot编码格式
%设计一个PNN神经网络,并测试
net = newpnn(P,T); % 生成一个概率神经网络
Y = sim(net,P) % 用网络进行预测
Yc = vec2ind(Y) % 将预测结果转为类别编号
本节翻译matlab给出的doc newrb 文档
帮助大家更进一步使用newrb
为方便大家理解,本人作了些少改动
语法:
net = newpnn(P,T,spread)
说明:
概率神经网络(PNN)是一种径向基神经网络,适用于解决分类问题。
net = newpnn(P,T,spread) 需要2或3个入参。返回一个新的概率神经网络
入参说明:
P: R行Q列的输入矩阵,R个输入变量,Q个样本。
T: S行Q列的目标输出矩阵,S个输出变量,Q个样本。
spread :径向基函数的扩展系数(默认=1.0)
如果spread 近似于0,那么网络的表现为一个最邻近分类器。
随着spread 变大,网络会考虑几个邻近的样本
If spread is near zero, the network acts as a nearest neighbor classifier.
As spread becomes larger, the designed network takes into account several nearby design vectors.
本节简单介绍PNN的构建算法原理和预测时的计算逻辑
PNN的构建算法说明
newpnn是不需要训练的,
因为它实际是用训练样本来估算新本,
因此,只要把训练样本存到网络中即可
PNN神经网络的构建
它的输入层-隐层的权重W21,存的就是训练样本的输入
它的隐层阈值B2,存的是由参数spread生成的控制径向基肥瘦的参数
它的隐层-输出层W32,存的则是训练数据的输出
✍️备注:概率神经网络的输出层没阈值
PNN神经网络的预测
预测时,
1. 先计算隐节点值激活值(hide active)
2. 利用隐节点值计算输出值
End