【PNN分类】基于pnn神经网络实现数据分类
1 简介
主要对不同思维脑电信号运用时域回归方法进行预处理,然后用AR模型提取特征,最后应用PNN算法对AR
系数特征进行分类.实验表明,此方法可以达到很好的分类效果.
2 完整代码
3 仿真结果
%% 清空环境变量clearclose allclcwarning 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); %计算预测的确率%% 作图%网络对训练数据分类效果
figurestem(1:length(Yc),Yc,'bo')hold
onstem(1:length(Yc),output_train,'r*')title('PNN 网络训练后的效果')legend('预测类
别','真实类别')xlabel('样本编号')ylabel('分类结果')set(gca,'fontsize',12)figureH=Yc-
output_train;stem(H)title('PNN 网络训练后的误差图')xlabel('样本编号')ylabel('误
差')set(gca,'fontsize',12)%网络对测试数据分类效果
figurestem(1:length(Y2c),Y2c,'b^')hold
onstem(1:length(Y2c),output_test,'r*')title({'PNN 网络的预测效果',['测试集正确率 =
',num2str(rightratio*100),' %']})xlabel('预测样本编号')ylabel('分类结果')legend('预测
类别','真实类别')set(gca,'fontsize',12)%输出准确率disp('---------------------------测
试准确率-------------------------')disp(rightratio)