%% 清空环境变量
clear
close all
clc
warning off
%% 数据载入
data=xlsread('数据.xlsx');
data=data(randperm(size(data,1)),:); %此行代码用于打乱原始样本,使训练集测试集随机被抽取,有助于更新预测结果,选取合适的数据集划分方式。可以删掉这行代码,不影响程序。
%% 选取训练数据和测试数据
input=data(:,1:end-1);
output=data(:,end);
m=100; %训练的样本数目
input_train=input(1:m,:)';
output_train=output(1:m)';
input_test=input(m+1:end,:)';
output_test=output(m+1:end)';
%% 数据归一化
[inputn,inputps]=mapminmax(input_train);%归一化到[-1,1]之间,inputps用来作下一次同样的归一化
inputn_test=mapminmax('apply',input_test,inputps);% 对测试样本数据进行归一化
%类别转换为向量
T=ind2vec(output_train);
%% 使用newpnn函数建立PNN
Spread=0.8;
net=newpnn(inputn,T,Spread);
%% 训练数据回代 查看网络的分类效果
Y=sim(net,input_train);
%网络输出向量转换为类别
Yc=vec2ind(Y);
%% 网络测试
Y2=sim(net,inputn_test);
Y2c=vec2ind(Y2);
rightratio=sum(output_test==Y2c)/length(Y2c); %计算预测的确率
%% 作图
%网络对训练数据分类效果
figure
stem(1:length(Yc),Yc,'bo')
hold on
stem(1:length(Yc),output_train,'r*')
title('PNN 网络训练后的效果')
legend('预测类别','真实类别')
xlabel('样本编号')
ylabel('分类结果')
set(gca,'fontsize',12)
figure
H=Yc-output_train;
stem(H)
title('PNN 网络训练后的误差图')
xlabel('样本编号')
ylabel('误差')
set(gca,'fontsize',12)
%网络对测试数据分类效果
figure
stem(1:length(Y2c),Y2c,'b^')
hold on
stem(1:length(Y2c),output_test,'r*')
title({'PNN 网络的预测效果',['测试集正确率 = ',num2str(rightratio*100),' %']})
xlabel('预测样本编号')
ylabel('分类结果')
legend('预测类别','真实类别')
set(gca,'fontsize',12)
%输出准确率
disp('---------------------------测试准确率-------------------------')
disp(rightratio)
%% 算法咨询
% 注 可以删掉以下命令 不影响本程序
consult()
Matlab-pnn神经网络分类matlab代码
需积分: 5 50 浏览量
2024-05-01
18:00:47
上传
评论
收藏 12KB RAR 举报
温柔-的-女汉子
- 粉丝: 885
- 资源: 4012
最新资源
- 基于opencv的人脸识别考勤系统python源码+数据.zip
- IOT安装包 iotech-iot-1.5-dev-1.5.0-amd64.deb
- 基于物品的协同过滤算法(推荐视频)工具类(见仁见智)
- 21信管2班 武学芹组+独立样本T检验数据分析案例.zip
- demo_ccms_global_open_wlan.py
- 小程序项目源码-小契约(交友互动小程序).zip
- 小程序项目源码-健身房预约课程小程序.zip
- 小程序项目源码-wechat-app-xiaoyima-master小程序.zip
- 小程序项目源码-滑动选项卡小程序.zip
- 小程序项目源码-学习Demo影视推荐、音乐播放、地图小程序.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈