精华内容
下载资源
问答
  • PCA MATLAB

    2018-05-02 20:35:14
    主成成分分析的MATLAB实现。。。。博士期间积累的。。。。
  • PCA matlab代码

    2017-10-15 17:17:08
    主成分分析的matlab代码,适用于初学者,希望能帮助大家
  • PCA Matlab

    2011-10-06 12:54:01
    PCA 主成分分析 matlab源代码 用于数据降维技术
  • This file contain PCA pdf
  • PCA主成分分析法,直接替换数据就可以进行计算。最终所得结果为所给数据中比较重要的数据,是降维后的结果。
  • pca_d_PCAmatlab_源码

    2021-10-01 06:35:04
    This folder contains the code for Face Recognition on PCA Matlab
  • PCA Matlab源码

    2020-04-07 09:47:47
    代码介绍:为PCAMatlab实现,使用一张图片代替了多个向量数据的输入,自己可以进行更改即可,其中关于项目中的内容以及裁剪,基本保留了PCA的功能,是从PCA原理一步步实现的,可以起到较好的学习左右,了解到PCA的...
  • L1_PCA降维
  • PCA matlab版 直接可以用 很方便PCA matlab版 直接可以用 很方便PCA matlab版 直接可以用 很方便PCA matlab版 直接可以用 很方便PCA matlab版 直接可以用 很方便PCA matlab版 直接可以用 很方便PCA matlab版 直接...
  • PCA是一种无监督学习方式,对目标数据降至二维进行分析
  • 记录一下自己学到的关于主成分分析的东西(转)
  • pca matlab代码调用 title: "README.md" date: 2015-05-10 13:08:43 tags: ##k-means/spectral clustering/normalized cut/normalized spectral clustering 算法的matlab代码 k_means.m 是kmeans算法的代码; load_...
  • 数据降维,特征选择的相关论文,可以下载学习
  • matlab代码调用光场编辑 创建“光场编辑”存储库以包括许多光场编辑算法的脚本。 该存储库将包含覆盖不同光场编辑工具的代码,这些工具包括光场空间超分辨率,角度超分辨率,光场修补和光场去噪等。 该存储库的目的...
  • pca进行图像读取,包括人脸识别,车牌识别等都可以借鉴一下
  • 主元分析法对TE过程的故障诊断。。。。
  • PCA MATLAB代码

    2012-12-03 19:38:48
    PCA人脸识别的matlab代码,可以自己搜集人脸
  • 稀疏PCA matlab代码 UFLDL exercises UFLDL有两个版的教程页面, , , 这两个的内容是一样的, 第一个是更新的一个版本, 刚开始本人follow的是第一个, 但目前没有整理完善, 组织顺序也很奇怪, 后来才转到第二个. ex1和...
  • pca matlab代码调用USMO(顺序最小优化中的未标记数据) 纸的Matlab代码 如何运行代码 安装依赖项。 下载,将存档解压缩到USMO的主目录中,最后编译Matlab版本的LIBSVM(使用未压缩文件夹中的make.m文件)。 以demo1...
  • PCA基本思想,用于了解PCA其中的基本思想,代码中含注释
  • 记录一下自己学到的关于主成分分析的东西(转)
  • The PCA space consists of k principal components. The principal components are orthonormal
  • PCA matlab程序

    2016-05-05 13:47:28
    matlab pca函数,pca支持线性降维
  • 降维算法PCAmatlab平台下的使用demo,采用自带函数,注释详细。
  • 关于主元分析(PCA)理论介绍,详细介绍了PCA的应用及过程。
  • PCA-L1AR-master_pca_L1PCA_PCAmatlab_pca降维_降维.zip
  • PCA-L1AR-master_pca_L1PCA_PCAmatlab_pca降维_降维_源码.zip
  • PCA matlab 代码

    2011-04-10 23:14:33
    一个用于故障诊断的MATLAB程序。运行该程序可实现工业过程的在线PCA建模和诊断。共生成七幅图,实现故障检测及其诊断。
  • PCA matlab实现

    千次阅读 2014-03-10 18:28:12
    PCA 流程如下: 程序设计步骤: 1、去均值 2、计算协方差矩阵 3.计算协方差特征值和特征向量 4、降序排列特征值选取较大的特征值,选择相应的特征值和特征向量 一下按照步骤编写matlab代码。   1. 去均值: ...

    PCA 流程如下:

    1、去均值  2、计算协方差矩阵 3、计算协方差特征值和特征向量 4、降序排列特征值选取较大的特征值,选择相应的特征值和特征向量

    以下按照步骤编写matlab代码。

     

    1.去均值

    Matlab函数mean可得:如下

    Mean_Image=mean(Train_SET,2); 
    Train_SET=Train_SET-Mean_Image*ones(1,Train_NUM);

    2.计算协方差矩阵


    协方差定义:

    具体求解:


    *注意分母为(n-1)而不是n,因为这样定义的协方差方差是总体方差的无偏估计(具体可见:

    http://en.wikipedia.org/wiki/Unbiased_estimator#Sample_variancehttp://www.zhihu.com/question/20099757

     

    协方差矩阵如下:

    其元素aij表示变量i,j之间的协方差cov(i,j);

    (关于协方差矩阵的含义,可见blog:http://blog.csdn.net/ice110956/article/details/14250745

     

    计算方法:

    A.

    其中Xj为去中心化之后的特征向量。

    去中心化后,可表示为如下:


    求和之后,可以得到协方差矩阵。

     

    B.

    同理,上面的向量相加我们可以直接用矩阵相乘的形式得到。

    设X为去中心后的特征矩阵,那么


     

    C.

    直接用matlab自带的协方差的函数cov()计算,不过注意cov按行计算,实际运用时要转置。

     

    我们使用矩阵形式,得到如下代码:

    R=Train_SET*Train_SET'/(Train_NUM-1);

    3.计算特征值与特征向量

     

    根据PCA的原理,我们需要寻找使协方差矩阵对角化的变换矩阵

    (可见blog:http://blog.csdn.net/ice110956/article/details/14250745)。


    一个方阵可以写成如下形式:

     

    其中Q为其特征向量组成的矩阵,为其特征值组成的对角矩阵,转化一下式子,得到:

    于是,我们现在只要得到协方差矩阵的归一化特征向量,组成转化矩阵Q即可。

     

    使用matlab自带的函数eig(),

    代码:

    [V,S]=eig(R);

    **小样本问题:

    上面的代码存在一个问题,就是常见的小样本问题。样本维数>>样本个数,这样得到的协方差矩阵很大,直接求解时间复杂度过高。于是我们通过另一种方式来求解。

     

    SVD(奇异值分解):

     

    A.奇异值

    设A为m*n阶实矩阵,则存在m阶正交阵U和n阶正交阵V,使得

     

      A = U*S*V’

     

    其中S=diag(σi,σ2,……,σr),σi>0 (i=1,…,r),r=rank(A)。

     

    其中:

     

    对任意矩阵A,它的奇异值就是AA'或A'A的非零特征值的开方(它们有相同的非零特征值),这些特征值都是正数。

    U 为AA'单位特征向量矩阵。

    V为A’A单位特征向量矩阵。

     

    B.奇异值与特征值的联系

    奇异值有类似于特征值的性质,当矩阵为共轭对称矩阵时,特征值=奇异值。不过一般情况是不相同的。

    如果把矩阵看做一个线性变换,那么特征值表征了其特征向量方向的能量大小。根据定义我们可以看出,奇异值也有类似的性质

     

    C.奇异值分解与PCA的关系

    通过变换,我们可以得到:


    也就是,已知A,V,我们可以求得U。

     

    如上,如果AA’维数过大,计算机不好求解其特征向量U,那么我们可以转而求A’*A的特征向量V。

    求解PCA的过程中,对于小样本问题,样本维数M>>样本个数N,那么X*X’得到的协方差矩阵为M*M,不好特征分解。如果我们根据SVD的原理,解X’*X(N*N)的特征向量,最后再变化,也能达到同样的目的。

     

    (SVD具体可见:

    http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html

    http://szshdy.blog.163.com/blog/static/1322012512010511156587/

     

    通过奇异值分解,得到协方差矩阵特征向量,代码如下:

    R=Train_SET'*Train_SET/(Train_NUM-1);
     
      [V,S]=Find_K_Max_Eigen(R,Eigen_NUM);
      disc_value=S;
      disc_set=zeros(NN,Eigen_NUM);
     
      Train_SET=Train_SET/sqrt(Train_NUM-1);
      for k=1:Eigen_NUM
       disc_set(:,k)=(1/sqrt(disc_value(k)))*Train_SET*V(:,k);
      end

    4.完整代码

    最终,整合上述的代码,得到如下完整的PCA代码:

    function [disc_set,disc_value,Mean_Image]=Eigenface_f(Train_SET,Eigen_NUM)
    
    
    [NN,Train_NUM]=size(Train_SET);
    
    if NN<=Train_NUM 
        
       Mean_Image=mean(Train_SET,2);  
       Train_SET=Train_SET-Mean_Image*ones(1,Train_NUM);
       R=Train_SET*Train_SET'/(Train_NUM-1);
       
       [V,S]=Find_K_Max_Eigen(R,Eigen_NUM);
       disc_value=S;
       disc_set=V;
    
    else % 小样本问题,svd
        
       Mean_Image=mean(Train_SET,2);  
       Train_SET=Train_SET-Mean_Image*ones(1,Train_NUM);
    
      R=Train_SET'*Train_SET/(Train_NUM-1);
      
      [V,S]=Find_K_Max_Eigen(R,Eigen_NUM);
      disc_value=S;
      disc_set=zeros(NN,Eigen_NUM);
      
      Train_SET=Train_SET/sqrt(Train_NUM-1);
      for k=1:Eigen_NUM
        disc_set(:,k)=(1/sqrt(disc_value(k)))*Train_SET*V(:,k);
      end
    
    end
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    function [Eigen_Vector,Eigen_Value]=Find_K_Max_Eigen(Matrix,Eigen_NUM)
    
    [NN,NN]=size(Matrix);
    [V,S]=eig(Matrix); %Note this is equivalent to; [V,S]=eig(St,SL); also equivalent to [V,S]=eig(Sn,St); %
    
    S=diag(S);
    [S,index]=sort(S);
    
    Eigen_Vector=zeros(NN,Eigen_NUM);
    Eigen_Value=zeros(1,Eigen_NUM);
    
    p=NN;
    for t=1:Eigen_NUM
        Eigen_Vector(:,t)=V(:,index(p));
        Eigen_Value(t)=S(p);
        p=p-1;
    end
    


    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,560
精华内容 4,224
关键字:

pcamatlab

matlab 订阅
友情链接: mainwindow.rar