精华内容
下载资源
问答
  • matlab pca 函数 输入输出数据的意义
    2021-04-22 01:33:04

    pca虽然看了好多遍,但是到实际应用的时候还是觉得,没那么顺手,主要是输入数据的格式,输出的结果到底是什么东西,搞不清楚。

    COEF=PCA(X)

    x是输入的数据,解释说,rows of x correspond to observations and comlums to variables,啥意思呢?我的理解是一行代表一个观测,打个比方,我们在统计摩托车的属性信息,这些属性包括很多,比如,价格,重量,加速情况,耗油量等等,那么每一行代表我们采样的一辆摩托车的这些属性值,假如我们采样了20台车,那么行数就是20,这些属性值假设有100个,那么x就是100列。这个是解释x的数据意义。我觉得是个andrew ng 机器学习里用的表示方法不一样,一般用一列表示一个obervation,行数代表属性值个数,matlab 里的表示刚好相反。这是输入数据的意义。

    下面看输出数据的意义,COEF,each column of coef contains coeffients for one principal component, chef里的每一列,代表一个主成分系数,输入数据是 20*100,即变量的维数是100,假设我们要降到1维,那么我们就用 x 乘以 coef 里的第一列 就得到原始数据的第一主成分,是20*1的结果。

    还有个专业名词叫loadings,也是coef 矩阵,其实这个COEF 对应于x协方差矩阵里的右奇异矩阵,具体见

    这个里面收藏的博文。

    未完待续。。。

    更多相关内容
  • 完整代码,可直接运行
  • matlabPCA故障诊断.zip

    2020-06-12 21:15:11
    利用PCA进行故障监测,传统的统计指标有两种:Hotelling-T2和平方预测误差(Squared prediction error, SPE)。T2统计量反映了每个主成分在变化趋势和幅值上偏离模型的程度,是对模型内部化的一种度量,它可以用来对多...
  • 基于MATLAB平台的PCA的人脸识别系统,可识别ORL和YALE人脸库,方法实现统一,包括GUI界面。另外可二次开发成摄像头的实时人脸系统,识别出库外人脸,可做成门禁系统,考勤系统,打卡签到系统。实现登记出勤,报警等...
  • 整理了各位博主的伪代码,并写成matlab程序,然后自己利用matlab自带的pca函数进行计算,两种方法进行比较,程序只需要导入自己数据就能运行。
  • Matlab PCA and ICA Package matlab开发-PCA和包装。实现主成分分析(PCA)和独立成分分析(ICA)
  • 特征脸代码matlab PCA_faces 在 Matlab 中使用 PCA 进行人脸识别。 有关 的理论,请参阅维基百科。 主要出发点: PCA_debug.m - 启用所有调试的最简单的脚本,从这里开始。 PCA_training_set_size.m - 创建准确度...
  • Matlab PCA 算法

    2021-04-24 13:06:43
    Matlab 自带PCA函数形式为[mappedX, mapping] = pca(X, no_dims)自己编写PCA函数的步骤%第一步:输入样本矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%data=rand(10,8)+randn(10,8)+ones(10,8);%现对其进行pca降维%%...

    Matlab 自带PCA函数形式为

    [mappedX, mapping] = pca(X, no_dims)

    自己编写PCA函数的步骤

    %第一步:输入样本矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

    data=rand(10,8)+randn(10,8)+ones(10,8);

    %现对其进行pca降维

    %%

    %第二步:计算样本中每一维的均值,然后计算观察值与均值之间的偏差,再计算协方差矩阵

    data=bsxfun(@minus,data,mean(data));%对样本矩阵去均值

    C=data'*data;

    C=C./(size(data,1)-1);%根据协方差公式计算协方差,得到协方差矩C

    %第三步:计算协方差矩阵的特征值和特征向量矩阵

    fprintf(1,'Calculating generalized eigenvectors and eigenvalues...\n');

    [eigvectors, eigvalues] = eig(C);%eigvectors为特征向量组成的矩阵,eigvalues特征值组成的对角矩阵

    fprintf(1,'Sorting eigenvectors according to eigenvalues...\n');

    d1=diag(eigvalues);%返回矩阵对角线上的值,为列向量。

    [dsort index]=sort(d1,'descend'); %以降序排序,dsort为排列后的值,index为索引值

    vsort=eigvectors(:,index); %将特征向量按照特征值大小按列排序

    %第四步:计算总能量,并选取贡献率最大的特征值

    dsum=sum(d2); %对所有的特征值求和

    dsum_extract = 0;%求前几个特征值之和,当前几个特征值之和大于90%时,可以认为这几个特征值可以表征当前矩阵

    p = 0;

    while( dsum_extract/dsum < 0.9)

    p = p + 1;

    dsum_extract = sum(dsort(1:p));

    end

    %第五步:计算前p个特征值所对应的的特征向量组成的矩阵,计算降维后的样本矩阵

    vsort = vsort(:,1:p);%提取前p列特征向量获得d*p矩阵

    fprintf(1,'Feature extraction and calculating newData...\n');

    newdata=data*vsort;%生成N行p列的矩阵,达到降维的效果

    展开全文
  • 由于本人最近需要处理的数据特征太多,导致分类不准确,...整理了各位博主的伪代码,并写成matlab程序,然后自己利用matlab自带的pca函数进行计算,两种方法进行比较,程序已全副武装,只需要导入自己数据就能运行。
  • matlab pca源码.zip

    2022-02-04 20:53:53
    【工控老马出品,必属精品,亲测校正,质量保证】 资源名:matlab pca源码.zip 资源类型:程序源代码 源码说明: matlab 实现pca功能程序源码 适合人群:新手及有一定经验的开发人员
  • 包含代码和人脸数据库,更改文件夹地址后即可运行,Matlab人脸识别,包含GUI界面设计
  • matlab PCA算法聚类.zip

    2021-10-06 23:50:48
    matlab PCA算法聚类.zip
  • matlab pca源码下载AC-PCA AC-PCA同时执行尺寸减小和调整以消除变化。 如果您在发表的研究中使用AC-PCA,请引用:Z. Lin,C. Yang,Y. Zhu,JC Duchi,Y. Fu,Y. Wang,B. Jiang,M. Zamanighomi,X. Xu,M. Li,N. ...
  • 完整代码,可直接运行
  • matlab实现pca聚类

    2017-12-04 21:21:35
    matlab 实现pca聚类算法,仅有matlab脚本文件.。。。。
  • PCA理论,看这个: ...request_id=161615945916780261996670&

    PCA理论,看这个:

    机器学习——PCA降维(我至今为止遇见的最好的博文)

    求解步骤:

    1. n行m列矩阵X

    2. 每行零均值化

    3. 求协方差 C = 1 m X X T C=\frac{1}{m}XX^T C=m1XXT

    4. 求C的特征值及对应的特征向量

    5. 将特征向量按特征值的大小,从上到下排列成矩阵,取前k行组成矩阵P

    6. Y=PX即为降维到K维的数据

    对应的程序(按步骤标出):

    #2
    	in_mean=mean(in_Matrix);
    	xmean=in_Matrix-in_mean;
    
    #3
    	sigma=xmean*xmean';     % M * M 阶矩阵 得出协方差矩阵
    	
    #4
    	[v,d]=eig(sigma);       % 求特征向量v,特征值构成的对角矩阵d
    
    #5
    	d1=diag(d);             % 读取矩阵d的对角线,得到一个列向量
    	[~,index]=sort(d1);    %以升序排序 
    	cols=size(v,2);         % 特征向量矩阵的列数
    
    	for i=1:cols      
    	    vsort(:,i) = v(:, index(cols-i+1) ); % vsort 是一个M*col(:col一般等于M)阶矩阵,保存的是按降序排列的特征向量,每一列构成一个特征向量      
        	dsort(i)   = d1( index(cols-i+1) );  % dsort 保存的是按降序排列的特征值,是一维行向量 
    	end
    
    	for j=1:k
    	    base(:,j)=dsort(j)^(-1/2) * vsort(:,j);
    	end
    	
    #6
    	out_Matrix = base' * xmean;
    
    展开全文
  • MATLAB pca函数使用指南

    千次阅读 2020-05-24 20:44:03
    因为pca在各个学科都有使用,每个学科对于名词的叫法都不太一样,使用的目的都不太一样,我就是单纯的想使用降维,发现matlab函数的pca函数的输入参数除了数据集X还有10个....弄了一段时间才明白....这里分享一下.有错误...

    转自:https://blog.csdn.net/qq_25800311/article/details/83385029

    matlab 自带函数pca的用法
         因为pca在各个学科都有使用,每个学科对于名词的叫法都不太一样,使用的目的都不太一样,我就是单纯的想使用降维,发现matlab函数的pca函数的输入参数除了数据集X还有10个....弄了一段时间才明白....这里分享一下.有错误和不清楚的还请大家指正

    数据集X(每行为一个样本,行数为样本数)
    - coeff = pca(X)
    - coeff = pca(X,Name,Value)
    - [coeff,score,latent] = pca(___)
    - [coeff,score,latent,tsquared] = pca(___)
    - [coeff,score,latent,tsquared,explained,mu] = pca(___)
    i.e 

    Input Argument 0
    X :--数据集 假设n个样本, 每个样本p维,则 X是n-by-p的matrix

    Input Argument 1
    'Algorithm' — Principal component algorithm
    'svd' (default) | 'eig' | 'als'
    解释:PCA 涉及到求协方差矩阵的特征向量, 在matlab 有3中算法
    默认 :SVD,
    eig (Eigenvalue decomposition )算法, 此算法当n(number of examples) > p (features) 时,速度快于SVD,但是计算的结果没有SVD精确
    als( Alternating least squares )算法,此算法为了处理数据集X中有少许缺失数据时的情况(i.e 0), 但是对于X为稀疏数据集(缺失数据过多)时,不好用

    Input Argument 2
    'Centered' — Indicator for centering columns
    true (default) | false
    解释:选择是否对数据进行中心化, 也是数据的特征是否进行零均值化(i.e.按列减去均值, 为了得到covariance            
            matrix), 如果选择了true,  则可用score*coeff'恢复中心化后的X, 若选择了false,则可用score*coeff'
            恢复原始的X

    默认:true(中心化)

    Input Argument 3
    'Economy' — Indicator for economy size output
    true (default) | false
    解释: 有时候输出的coeff(映射矩阵p-by-p)过大, 而且是没有必要的(因为我们要降维),所以可以只输出coeff(以及score,latent)的前d列,
    d是数据集的自由度,数据集没NAN的时候d=n-1; 具体的解释见matlab.总之如果将看见完整的PCA结果,可以设置为false.
    默认:true ,(默认ture以后对于初次使用matlab这个函数的人非常迷惑).

    Input Argument 4
    'NumComponents' — Number of components requested
    number of variables (default) | scalar integer
    解释:输出指定的components 也就是更为灵活的Economy,但是经过试验发现指定成分数 仅在小于d(自由度)时有效,大于d时无效;
    默认: number of variables ( i.e p,特征数目)

    Input Argument 5
    'Rows' — Action to take for NaN values
    'complete' (default) | 'pairwise' | 'all'
    解释: 此选项是为了智能处理数据集X中含有NAN的情况,
              complete: 计算之前.移除X中含有NAN的行(i.e 样本),计算完成后,含有NAN的行被重新插入到
                         score and tsquared相应的位置中(coeff呢?)
      pairwise :      首先这个选项必须配合 'Argorithm'中 'eig'进行使用.如果没有指定'eig'(默认svd),
                       当指定pairwise时,则会自动切换为eig; 指定为svd,则会发送warning message,
                       然后自动切换为eig;若指定为als, 则会发送warning message然后忽略 'Rows'此选项.
                            成功使用此选项时,若计算协方差(i,j)处值时遇到NAN,则使用X中第i或j列中不含NAN
                       的行此处来计算的协方差值.
        all : 当确定X中无缺失数据,使用'all',则pca会使用X中所有的数据,当遇到NAN时则会自动终止.
    默认:complete

    Input Argument 6
    'Weights' — Observation weights
    ones (default) | row vector
    解释: 基于observations(i.e 样本)的权重pca,有需求的可以自己查查

    Input Argument 7
    'VariableWeights' — Variable weights
    row vector | 'variance'
    解释:基于variables(i.e.features)的权重pca,有需求的自己查
    默认: 无默认值, 也就是默认不使用此选项

    Input Argument 8
    'Coeff0' — Initial value for coefficients
    matrix of random values (default) | p-by-k matrix
    解释: Initial value for the coefficient matrix coeff, 不是太看的懂,但是要配合'Algorithm'中的
             'als'使用
    默认:   p-by-random

    Input Argument 9
    'Score0' — Initial value for scores
    matrix of random values (default) | k-by-m matrix
    解释: Initial value for scores matri score.不是太看的懂,但是要配合'Algorithm'中的 'als'使用
    默认 : n-by-random

    Input Argument 10
    'Options' — Options for iterations
    structure(此用法是个结构体)
    解释:用于迭代的选项,仅配合'Algorithm'中的'als'使用. 因为'als'是使用迭代的方法进行计算的
          对这个不感兴趣, 有兴趣的可以去help一下
              附上help中的使用方法 opt = statset('pca'); opt.MaxIter = 2000; coeff =pca(X,'Options',opt);

    Output Argument 1
    coeff : 主成分系数 应该就是协方差矩阵的特征向量矩阵(也就是映射矩阵).
               完整输出的情况下是一个p-by-p 的matrix.每一列都是一个特征向量.按对应的特征值
               的大小,从大到小进行排列.
    Output Argument 2
    score: 进行旋转(也就是利用映射矩阵coeff进行)后的结果i.e. score = X * coeff.  n-by-p matrix
              这里有个坑 如果你使用pca时使用的是默认的中心化(i.e 不对'Centered'设置'false'),
              拿X *coeff 和score对比的时候, 记得把X中心化后再乘以coeff,之后再和score对比....;
              同样如果pca使用的是默认值, 恢复的X = score * coeff' (注意转置)是中心化后的数据

    Output Argument 3
    latent: 主成分方差 也就是各特征向量对应的特征值,从大到小进行排列

    Output Argument 4
    tsquared :层次不够 无法解释......

    Output Argument 5
    explained : 每一个主成分所贡献的比例,可以更直观的选择所需要降维的维数了,不用再用特征值去求了

    Output Argument 6
    mu: X 按列的均值,当前仅当 'Centered'置于'true'(默认值)时才会返回此变量
     

     


    [pc,score,latent,tsquare] = pca(feature);%我们这里需要他的pc和latent值做分析

    feature是被降维的特征,每一行是一个特征,列数代表总的特征个数,比如一个图片的HOG特征是96维,总共有8000个HOG特征,那么feature的维度是8000×96,我们的目标就是将其降维(假设将96维降到50维,)那么我们期望的降维后feature就变成了我们需要的feature_after_PCA:8000×50

    latent用来计算降维后取多少维度能够达到自己需要的精度, 
    通过下面的代码运行结果可以得到取pc中对应每一维度对原始数据的精度:
     

    cumsum(latent)./sum(latent)
        0.2763
        0.3954
        0.8765
        0.8854
        0.8931
        0.8995
        0.9055
        0.9111
        0.9808
        0.9819
        0.9828
        0.9838
        0.9846
        0.9854
        0.9862
        0.9869
        0.9876
        0.9883
        0.9999
        1.0000
    ---------------------
    

    结果应该是有96维,但是太长,这里随机删减了一部分,我们可以看到只去取第一维的话和原始数据的准确度只有27%,很低,取全部的维度最后的精度就是100%,如果我们觉得精度达到90%就能接受的话我们就只需要取精度为90%对应的维度,这里假设第50维的精度是90%. 
    因此我们需要取pc中的1:50列来做最后的变换矩阵:
     

    tran=pc(:,1:50);

    因此我们最终的feature降维后的矩阵feature_after_PCA就通过下式计算:

     
    1. feature= bsxfun(@minus,feature,mean(feature,1));

    2. feature_after_PCA= feature*tran;

    至此我们PCA降维完成.这里需要人工介入的地方就是选取多少维度来确定和原始数据的精度问题.

    补充:上面计算feature_after_PCA的方法是正确的,但是pca函数其实已经给出了所有的转换后矩阵表示,也就是输出的score项,因此在确定需要降维到50维度以后,只需要取score中对应的列就能得到feature_after_PCA:
     

    feature_after_PCA=score(:,1:50);
    展开全文
  • 完整代码,可直接运行
  • matlab pca源码下载格拉斯曼平均PCA C ++库 主页: 该库是Grassmann Averages的一个实现,用于以健壮和线性的方式计算PCA,如本文所述: “可扩展健壮PCA的格拉斯曼平均值”,Soren Hauberg,Aasa Feragen和Michael ...
  • 基于matlab实现PCA降维算法,可用于多维数据的损失最小化压缩,内附全代码
  • matlab pca函数的使用方法

    千次阅读 2018-12-10 20:12:31
    转载自 ...matlab 自带函数pca的用法 因为pca在各个学科都有使用,每个学科对于名词的叫法都不太一样,使用的目的都不太一样,我就是单纯的想使用降维,发现matlab函数的pca...
  • 热图像均值matlab代码PCA-图像压缩 图像压缩 要开始使用 PCA 进行图像压缩,可以将图像表示为像素颜色值矩阵,其中 X 和 Y 的值是图像中像素的坐标,f(x,y) 是相应的灰度级别。 在图像压缩中,样本是图像矩阵的列。 ...
  • matlab PCA的m文件。数据集Iris是常用的分类实验数据集,由Fisher, 1936收集整理。 CSDN上原来有一个arff格式的鸢尾花数据集,不方便matlab直接调用。 我的这个数据集是txt格式的,在matlab下可以直接一句命令“load...
  • 这是如何使用 PCA 对 2D 数据集进行分类的演示。 这是 PCA 的最简单形式,但您可以轻松地将其扩展到更高的维度,并且您可以使用 PCA 进行图像分类 ...注意:MATLAB 有一个内置的 PCA 函数。 此文件显示 PCA 的工作原理
  • ANENNA DESIGN FILES ALL GREAT
  • 降维算法PCAmatlab平台下的使用demo,采用自带函数,注释详细。
  • 1 PCA 1.1 数据降维 降维的方法包括:主成分分析(PCA)、因子分析(FA)、和独立成分分析(ICA) 主成分分析:寻找向量,使各个样本到该向量的投影之和最小。 因子分析: 独立成分分析: 1.2 PCA:目的是降维,降维...
  • 基于PCA的图像压缩Matlab代码
  • PCA降维MATLAB程序

    2018-11-05 11:00:14
    PCA降维MATLAB程序,主要用于光谱的降维PCA降维MATLAB程序,主要用于光谱的降维
  • 完整代码已上传我的资源:【语音分离】基于matlab PCA+ICA语音信号采集+混合+分离【含Matlab源码 1592期】 获取代码方式2: 通过订阅紫极神光博客付费专栏,凭支付凭证,私信博主,可获得此代码。 备注: 订阅紫极...

空空如也

空空如也

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

matlab pca

matlab 订阅
友情链接: juin.rar