gusucode.com > 《MATLAB神经网络超级学习手册》随书光盘源码程序 > code/16/N16_7/N14_7.m

    clc;
clear all

nntwarn off;
warning off;
%数据载入
load data1

%选取训练数据和测试数据
Train=data(1:40,:);
Test=data(41:end,:);
p_train=Train(:,1:3)';
t_train=Train(:,4)';
p_test=Test(:,1:3)';
t_test=Test(:,4)';

% 将期望类别转换为向量
t_train=ind2vec(t_train);
t_train_temp=Train(:,4)';

% 使用newpnn函数建立PNN SPREAD选取为1.5
Spread=1.5;
net=newpnn(p_train,t_train,Spread)

% 训练数据回代 查看网络的分类效果
% Sim函数进行网络预测
Y=sim(net,p_train);
% 将网络输出向量转换为指针
Yc=vec2ind(Y);

% 通过作图 观察网络对训练数据分类效果
figure(1)
subplot(1,2,1)
stem(1:length(Yc),Yc,'bo')
hold on
stem(1:length(Yc),t_train_temp,'r*')
title('训练后的效果')
xlabel('样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])
subplot(1,2,2)
H=Yc-t_train_temp;
stem(H)
title('训练后的误差图')
xlabel('样本编号')


% 网络预测未知数据效果
Y2=sim(net,p_test);
Y2c=vec2ind(Y2)
figure(2)
stem(1:length(Y2c),Y2c,'b^')
hold on
stem(1:length(Y2c),t_test,'r*')
title('PNN 网络的预测效果')
xlabel('预测样本编号')
ylabel('分类结果')
set(gca,'Ytick',[1:5])