0
点赞
收藏
分享

微信扫一扫

【PNN分类】基于pnn神经网络实现数据分类

1 简介

主要对不同思维脑电信号运用时域回归方法进行预处理,然后用AR模型提取特征,最后应用PNN算法对AR系数特征进行分类.实验表明,此方法可以达到很好的分类效果.

2 完整代码

%% 清空环境变量
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)

3 仿真结果

【PNN分类】基于pnn神经网络实现数据分类_归一化

【PNN分类】基于pnn神经网络实现数据分类_神经网络_02

【PNN分类】基于pnn神经网络实现数据分类_数据_03

4 参考文献

[1]贾花萍. 基于PNN神经网络的EEG信号分类方法研究[J]. 河南科学, 2011, 29(7):4.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

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

【PNN分类】基于pnn神经网络实现数据分类_神经网络_04


举报

相关推荐

0 条评论