资源简介
代码包含MATLAB自带的princomp函数以及自己编写的PCA函数进行PCA降维,实现功能相同,准确率略有差异。
代码片段和文件信息
% 1这部分是自己用MATLAB自带的princomp函数进行PCA降维;
clc;clear;
nperson=40; %输入的样本类别数
imgMatrix=inputImg(nperson0); %输入的图片数据转换为矩阵,行表示样本数,列表示特征维数;
[Coeff~latent]=princomp(imgMatrix‘econ‘); %PCA降维;latent为特征值,Coeff为相应特征值下的特征向量;
img_train_reduced=imgMatrix*Coeff(:1:30); %降维后的训练数据;
multiSVMstruct=multiSVMtrain(img_train_reducednperson); %进行多分类的SVM训练;
[imgMatrix_testrealclass]=inputImg(nperson1); %输入测试数据;
img_test_reduced=imgMatrix_test*Coeff(:1:30);
% 降维后的测试数据;此处不用重新计算特征向量的原因是测试集跟训练集必须保证投影在同个特征空间里;
class=multiSVM(img_test_reducedmultiSVMstructnperson); %对每个测试样本进行分类,分类结果存储于class;
accuracy=sum(class==realclass‘)/length(class); %计算准确率;
msgbox([‘识别准确率:‘num2str(accuracy*100)‘%‘]); %显示结果;
%2以下部分是用自己写的PCA函数进行降维;
clc;clear;
nperson=40; %输入的样本类别数
imgMatrix=inputImg(nperson0); %输入的图片数据转换为矩阵,行表示样本数,列表示特征维数;
mA=mean(imgMatrix); %求数据矩阵每一列的平均值;
[Vimg_train_reduced]=fpca(imgMatrix30mA); %得到降维后的数据img_train_reduced;
lowvec=min(img_train_reduced[]1); %沿列向求最小值;
upvec=max(img_train_reduced[]1); %沿列向求最大值;
% % img_train_reduced = scaling(img_train_reducedlowvecupvec); %数据归一化
multiSVMstruct=multiSVMtrain(img_train_reducednperson); %进行多分类的SVM训练;
[imgMatrix_testrealclass]=inputImg(nperson1); %输入测试数据;
%使得测试数据均值为0;
m=size(imgMatrix_test1);
mdata_testMatrix=repmat(mAm1);
testdata=imgMatrix_test-mdata_testMatrix;
%降维后的测试数据;此处不用重新计算特征向量V的原因是测试集跟训练集必须保证投影在同个特征空间里;
img_test_reduced=testdata*V;
% % img_test_reduced = scaling(img_test_reducedlowvecupvec);
class=multiSVM(img_test_reducedmultiSVMstructnperson); %对每个测试样本进行分类,分类结果存储于class;
accuracy=sum(class==realclass‘)/length(class); %计算准确率;
msgbox([‘识别准确率:‘num2str(accuracy*100)‘%‘]); %显示结果;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2113 2016-12-17 16:02 PCAsvmbyMyself\demo.m
文件 594 2016-12-17 15:57 PCAsvmbyMyself\fpca.m
文件 609 2016-12-16 23:12 PCAsvmbyMyself\inputImg.m
文件 329 2016-12-16 23:01 PCAsvmbyMyself\multiSVM.m
文件 283 2016-12-16 22:56 PCAsvmbyMyself\multiSVMtrain.m
文件 190 2016-12-17 11:37 PCAsvmbyMyself\scaling.m
目录 0 2016-12-17 16:08 PCAsvmbyMyself
----------- --------- ---------- ----- ----
4118 7
- 上一篇:三相SPWM逆变器仿真
- 下一篇:遗传算法matlab程序m文件
评论
共有 条评论