【树叶识别】PNN神经网络树叶类别【Matlab 741期】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【树叶识别】PNN神经网络树叶类别【Matlab 741期】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3970字,纯文字阅读大概需要6分钟。
内容图文
![【树叶识别】PNN神经网络树叶类别【Matlab 741期】](/upload/InfoBanner/zyjiaocheng/999/5d3f4307fbe64244a4e09fbf6e9b2185.jpg)
一、简介
1 概述
1.1 模式分类的贝叶斯决策理论
2 概率神经网路的网络结构(PNN)
总结:
1、输入层接收样本的值,神经元个数与输入向量长度相等。
2、隐藏层为径向基层,每个神经元对应一个中心(对应一个样本数据)。
3、输入数据分为了i类,因为PNN就是用来分类的,就是先用样本训练网络,然后输入数据,用此网络来鉴别,是属于哪一类数据。
4、上式Xij其实与RBF神经网络一致,就是求每个输入与样本的欧式距离,只不过此隐藏层把数据分为了i个类,并且设第i个类有j个数据。
5、然后下图可以看出,求和层的神经元个数与数据分类的个数相等,此求和层求得上式中,每类数据的平均值。
6、然后比较每一类平均值的大小,把此数据分类到值最大的那一类。
7、下文中,提出在实际计算中,用来理解的公式与实际计算中公式不同,
注意:上边的求和层的神经元个数与模式分类的个数相等。也就是说只有对应类别的样本( 隐藏层的神经元)连接, 不与其他无关的样本连接。
3 概率神经网络的优点
二、源代码
%% 清空环境变量
clc;
clear all
close all
nntwarn off;
warning off;
%% 训练数据预测数据提取及归一化
%下载五类叶片特征参数
load shu1 h1 %女贞
load shu2 h2 %银杏
load shu3 h3 %五角枫
load shu4 h4 %杨树
load shu5 h5 %石楠
%五个特征参数矩阵合成一个矩阵
data(1:30,:)=h1(1:30,:);
data(31:60,:)=h2(1:30,:);
data(61:90,:)=h3(1:30,:);
data(91:120,:)=h4(1:30,:);
data(121:150,:)=h5(1:30,:);
%% 测试数据预测数据提取及归一化
load cece1 g1 %女贞
load cece2 g2 %银杏
load cece3 g3 %五角枫
load cece4 g4 %杨树
load cece5 g5 %石楠
%五个特征参数矩阵合成一个矩阵
test(1:12,:)=g1(1:12,:);
test(13:24,:)=g2(1:12,:);
test(25:36,:)=g3(1:12,:);
test(37:48,:)=g4(1:12,:);
test(49:60,:)=g5(1:12,:);
%% 选取训练数据和测试数据
p_train1=data(:,2:16)';
[p_train,inputps]=mapminmax(p_train1);
t_train=data(:,1)';
p_test1=test(:,2:16)';
p_test=mapminmax('apply',p_test1,inputps);
t_test=test(:,1)';
%% 将期望类别转换为向量
t_train=ind2vec(t_train);
t_train_temp=data(:,1)';
%% 使用newpnn函数建立PNN
Spread=0.1;
net=newpnn(p_train,t_train,Spread)
%% 训练数据回代 查看网络的分类效果
% Sim函数进行网络预测
Y=sim(net,p_train);
% 将网络输出向量转换为指针
Yc=vec2ind(Y);
%% 通过作图 观察网络对训练数据分类效果
figure(1)
subplot(1,2,1)
plot(1:length(Yc),Yc,'bo')
hold on
plot(1:length(Yc),t_train_temp,'r*')
title('PNN网络训练后的效果')
xlabel('样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])
subplot(1,2,2)
H=Yc-t_train_temp;
plot(H)
title('PNN网络训练后的误差图')
xlabel('样本编号')
%% 网络预测未知数据效果
Y2=sim(net,p_test);
Y2c=vec2ind(Y2);
figure(2)
plot(1:length(Y2c),Y2c,'b^')
hold on
plot(1:length(Y2c),t_test,'r*')
title('PNN网络的预测效果')
xlabel('预测样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])
x=[0.1:0.1:2];
a=[1 0.9933 0.96 0.9467 0.94 0.90 0.90 0.90 0.8933 0.8933 0.8933 0.8867 0.8867 0.8867 0.8867 0.8867 0.8867 0.8867 0.8867 0.88];
f=[1 1 1 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833 0.9833];
plot(x,a,'b-*')
hold on
plot(x,f,'r-o')
hold off
%% 将期望类别转换为向量
t_train1=ind2vec(t_train);
t_train_temp=output1(n(1:150))';
%% 使用newpnn函数建立PNN
Spread=0.2;
net=newpnn(inputn,t_train1,Spread)
%% 训练数据回代 查看网络的分类效果
% Sim函数进行网络预测
Y=sim(net,inputn);
% 将网络输出向量转换为指针
Yc=vec2ind(Y);
%% 通过作图 观察网络对训练数据分类效果
figure(1)
subplot(1,2,1)
plot(1:length(Yc),Yc,'bo')
hold on
plot(1:length(Yc),t_train_temp,'r*')
title('PNN网络训练后的效果')
xlabel('样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])
subplot(1,2,2)
H=Yc-t_train_temp;
plot(H)
title('PNN网络训练后的误差图')
xlabel('样本编号')
%% 网络预测未知数据效果
Y2=sim(net,inputn1);
Y2c=vec2ind(Y2);
figure(2)
plot(1:length(Y2c),Y2c,'b^')
hold on
plot(1:length(Y2c),t_test,'r*')
title('PNN网络的预测效果')
xlabel('预测样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])
%%识别正确率
percent1=length(find(H==0))/length(H)
B=Y2c-t_test;
percent2=length(find(B==0))/length(B)
三、运行结果
四、备注
完整代码或者代写添加QQ 912100926
内容总结
以上是互联网集市为您收集整理的【树叶识别】PNN神经网络树叶类别【Matlab 741期】全部内容,希望文章能够帮你解决【树叶识别】PNN神经网络树叶类别【Matlab 741期】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。