资源简介
由于本人最近需要处理的数据特征太多,导致分类不准确,特此学习了两天的PCA,找了许多资料。整理了各位博主的伪代码,并写成matlab程序,然后自己利用matlab自带的pca函数进行计算,两种方法进行比较,程序已全副武装,只需要导入自己数据就能运行。
代码片段和文件信息
%% 感谢@chenyu19880302 博主的博客内容,它用通俗易懂的语言介绍了pca算法的原理和代码,
%%% 本人将它的代码进行整理,并换成自己的数据进行运算,发现它没有用matlab自带的pca函数
%%% 由于本人研究的是ERP内容,数据格式可能不一样,所以运行的时候请自行修改一些参数
%%% 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
%%% 本文链接:https://blog.csdn.net/chenyu19880302/article/details/9163303
%%% 导入数据格式为n*m,n为样本数,m为特征数
%% 第一步:输入样本矩阵%%%%%%%%%%%%%% 500个样本 62导联 24个维度
vector=dataA; % 此为导入数据,只需要修改dataA为自己的数据即可运行
newfeature=[];
%现对其进行pca降维
for chan=1:62
%第二步:计算样本中每一维的均值,然后计算观察值与均值之间的偏差,再计算协方差矩阵
feature=vector(:(chan-1)*24+1:(chan*24)); % 按导联分开
s=sum(feature1);%计算每一列的均值
[nSmpnFea] = size(feature);
feature=feature-repmat(mean(feature)nSmp1);%把每一维的均值复制成nSmp*nFea矩阵,然后计算偏差
W=zeros(nFeanFea);%建立一个nFea*nFea的零矩阵
W=W+feature‘*feature;
W=W/(nSmp-1);%根据协方差公式计算协方差,得到协方差矩阵W
%第三步:计算协方差矩阵的特征值和特征向量矩阵
fprintf(1‘Calculating generalized eigenvectors and eigenvalues...\n‘);
[eigvectors eigvalues] = eig(W);%eigvectors为特征向量组成的矩阵,eigvalues特征值组成的对角矩阵
fprintf(1‘Sorting eigenvectors according to eigenvalues...\n‘);
d1=diag(eigvalues);%返回对角矩阵上的值
[d2index]=sort(d1); %以升序排序,d2为排列后的值,index为索引值
cols=size(eigvectors2);% 特征向量矩阵的列数
for i=1:cols
vsort(:i) = eigvectors(: index(cols-i+1) ); % vsort 是一个M*col(注:col一般等于M)阶矩阵,保存的是按降序排列的特征向量每一列构成一个特征向量
dsort(i) = d1( index(cols-i+1) ); % dsort 保存的是按降序排列的特征值,是一维行向量
end %完成降序排列
%第四步:计算总能量,并选取贡献率最大的特征值
dsum = sum(dsort);%对所有的特征值求和
dsum_extract = 0;%求前几个特征值之和当前几个特征值之和大于预设值时,可以认为这几个特征值可以表征当前矩阵
p = 0;
- 上一篇:matlab读取hdf文件
- 下一篇:含过时信息多智能体系统一致性Matlab仿真
相关资源
- KPCA的MATLAB程序1
- pca-Matlab250774
- CroppedYale人脸数据降维 MATLAB
- KPCA+SVM源代码
- PCA人脸识别定位matlab代码
- 基于matlab,gui的人脸识别(PCA)
- 2dpca的matlab源代码 rar
- 基于PCA及SVM的人脸识别
- exact_alm_rpca
- matlab实现基于PCA的人脸识别算法
- KPCA(经典的MATLAB程序)
- pca与KL变换的综合matlab实现代码
- RPCA 源码 matlab yi Ma
- 基于PCA法的故障检测含matlab代码
- 图像融合算法
- PCA和IHS图像融合
- 国外资源 基于PCA的人脸识别matlab代码
- 利用PCA降维方法处理高光谱图像matl
- KPCA故障诊断matlab实现182088
- 基于PCA的图像压缩Matlab代码
- MATLAB人脸识别PCALDAKPCABP,可视化界面
- 一个非常经典的KPCA程序
- PCA和LDA人脸识别matlab代码最紧邻分类
- 基于pca实现人脸识别matlab代码
- 掌纹识别PCA
- DPCA 程序编写
- PCA-SIFT 源代码 matlab
- MATLAB人脸识别PCALDAKPCABP,可视化界面
- TwoDPCA用matlab实现的2dpca人脸识别程序
- 用于图像识别的2DPCA算法程序matlab
评论
共有 条评论