1 简介

介绍概率神经网络(PNN)的模型和基本算法,以及利用M atlab神经网络工具箱设计PNN网络的方法和步骤,实现对网络的设计,训练,仿真.针对不同叶子实验数据,应用PNN的分类功能对实验数据进行训练仿真处理,得到对各种叶子的预测分类结果,验证了此方法的可靠性.

2 部分代码

%% 清空环境变量
  • 1.
clc;
  • 1.
clear all
  • 1.
close all
  • 1.
nntwarn off;
  • 1.
warning off;
  • 1.
  • 1.
%% 训练数据预测数据提取及归一化
  • 1.
  • 1.
%下载五类叶片特征参数
  • 1.
load shu1 h1                 %女贞
  • 1.
load shu2 h2                 %银杏
  • 1.
load shu3 h3                 %五角枫 
  • 1.
load shu4 h4                 %杨树
  • 1.
load shu5 h5                 %石楠
  • 1.
  • 1.
%五个特征参数矩阵合成一个矩阵
  • 1.
data(1:30,:)=h1(1:30,:);
  • 1.
data(31:60,:)=h2(1:30,:);
  • 1.
data(61:90,:)=h3(1:30,:);
  • 1.
data(91:120,:)=h4(1:30,:);
  • 1.
data(121:150,:)=h5(1:30,:);
  • 1.
  • 1.
%% 测试数据预测数据提取及归一化
  • 1.
load cece1 g1                 %女贞
  • 1.
load cece2 g2                 %银杏
  • 1.
load cece3 g3                 %五角枫
  • 1.
load cece4 g4                 %杨树
  • 1.
load cece5 g5                 %石楠
  • 1.
  • 1.
%五个特征参数矩阵合成一个矩阵
  • 1.
test(1:12,:)=g1(1:12,:);
  • 1.
test(13:24,:)=g2(1:12,:);
  • 1.
test(25:36,:)=g3(1:12,:);
  • 1.
test(37:48,:)=g4(1:12,:);
  • 1.
test(49:60,:)=g5(1:12,:);
  • 1.
%% 选取训练数据和测试数据
  • 1.
p_train1=data(:,2:16)';
  • 1.
[p_train,inputps]=mapminmax(p_train1);
  • 1.
t_train=data(:,1)';
  • 1.
p_test1=test(:,2:16)';
  • 1.
p_test=mapminmax('apply',p_test1,inputps);
  • 1.
t_test=test(:,1)';
  • 1.
  • 1.
  • 1.
%% 将期望类别转换为向量
  • 1.
  • 1.
%% 通过作图 观察网络对训练数据分类效果
  • 1.
figure(1)
  • 1.
subplot(1,2,1)
  • 1.
plot(1:length(Yc),Yc,'bo')
  • 1.
hold on
  • 1.
plot(1:length(Yc),t_train_temp,'r*')
  • 1.
title('PNN网络训练后的效果')
  • 1.
xlabel('样本编号')
  • 1.
ylabel('分类结果')
  • 1.
set(gca,'Ytick',[1:5])
  • 1.
subplot(1,2,2)
  • 1.
H=Yc-t_train_temp;
  • 1.
plot(H)
  • 1.
title('PNN网络训练后的误差图')
  • 1.
xlabel('样本编号')
  • 1.
  • 1.
  • 1.
%% 网络预测未知数据效果
  • 1.
Y2=sim(net,p_test);
  • 1.
Y2c=vec2ind(Y2);
  • 1.
figure(2)
  • 1.
plot(1:length(Y2c),Y2c,'b^')
  • 1.
hold on
  • 1.
plot(1:length(Y2c),t_test,'r*')
  • 1.
title('PNN网络的预测效果')
  • 1.
xlabel('预测样本编号')
  • 1.
ylabel('分类结果')
  • 1.
set(gca,'Ytick',[1:5])
  • 1.
  • 1.
%%识别正确率
  • 1.
percent1=length(find(H==0))/length(H)
  • 1.
B=Y2c-t_test;
  • 1.
percent2=length(find(B==0))/length(B)
  • 1.

3 仿真结果

【预测模型-PNN分类别】基于PNN神经网络树叶类别Matlab代码_数据

【预测模型-PNN分类别】基于PNN神经网络树叶类别Matlab代码_神经网络_02

【预测模型-PNN分类别】基于PNN神经网络树叶类别Matlab代码_归一化_03

4 参考文献

[1]鞠林波. (2012). 基于pnn神经网络的多属性预测密度曲线方法. 国外测井技术(3), 4.

部分理论引用网络文献,若有侵权联系博主删除。

【预测模型-PNN分类别】基于PNN神经网络树叶类别Matlab代码_归一化_04