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 PCA 算法的更多相关文章

  1. PCA算法学习(Matlab实现)

    PCA(主成分分析)算法,主要用于数据降维,保留了数据集中对方差贡献最大的若干个特征来达到简化数据集的目的. 实现数据降维的步骤: 1.将原始数据中的每一个样本用向量表示,把所有样本组合起来构成一个矩 ...

  2. 我所认识的PCA算法的princomp函数与经历 (基于matlab)

    我接触princomp函数,主要是因为实验室的项目需要,所以我一接触的时候就希望快点学会怎么用. 项目中需要利用PCA算法对大量数据进行降维. 简介:主成分分析 ( Principal Compone ...

  3. 模式识别(1)——PCA算法

    作者:桂. 时间:2017-02-26  19:54:26 链接:http://www.cnblogs.com/xingshansi/articles/6445625.html 声明:转载请注明出处, ...

  4. matlab pca基础知识

    PCA的一些基本资料 最近因为最人脸表情识别,提取的gabor特征太多了,所以需要用PCA进行对提取的特征进行降维. 本来最早的时候我没有打算对提取的gabor特征进行降维,但是如果一个图像时64*6 ...

  5. PCA算法是怎么跟协方差矩阵/特征值/特征向量勾搭起来的?

    PCA, Principle Component Analysis, 主成份分析, 是使用最广泛的降维算法. ...... (关于PCA的算法步骤和应用场景随便一搜就能找到了, 所以这里就不说了. ) ...

  6. 三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  7. 降维之pca算法

    pca算法: 算法原理: pca利用的两个维度之间的关系和协方差成正比,协方差为0时,表示这两个维度无关,如果协方差越大这表明两个维度之间相关性越大,因而降维的时候, 都是找协方差最大的. 将XX中的 ...

  8. OpenCV学习(35) OpenCV中的PCA算法

    PCA算法的基本原理可以参考:http://www.cnblogs.com/mikewolf2002/p/3429711.html     对一副宽p.高q的二维灰度图,要完整表示该图像,需要m = ...

  9. PCA算法的最小平方误差解释

    PCA算法另外一种理解角度是:最小化点到投影后点的距离平方和. 假设我们有m个样本点,且都位于n维空间 中,而我们要把原n维空间中的样本点投影到k维子空间W中去(k<n),并使得这m个点到投影点 ...

随机推荐

  1. Unity 基础-------------------------关于Anchor锚点的理解

    Unity进阶技巧 - RectTransform详解 Zui 关注 2016.02.17 01:27 字数 1704 阅读 22157评论 13喜欢 57赞赏 2 RectTransform属性一览 ...

  2. CI框架 -- 自动加载资源

    CodeIgniter 的"自动加载"特性可以允许系统每次运行时自动初始化类库.辅助函数和模型. 如果你需要在整个应用程序中全局使用某些资源,为方便起见可以考虑自动加载它们. 支持 ...

  3. Xcode密钥没有备份或者证书过期,出现Valid Signing错误

    密钥没有备份 或者证书过期,和Xcode 4.4中的证书,出现  Valid Signing 错误时   1.生成私有证书,打开钥匙串,钥匙串访问 – 证书助理 – 从证书颁发机构请求证书…,填入iD ...

  4. linux nginx,php开机启动

    nginx开机启动 1.首先,在linux系统的/etc/init.d/目录下创建nginx文件 vim /etc/init.d/nginx 2.加入脚本 #!/bin/bash # nginx St ...

  5. Android学习之——ListView

    背景知识 ListView在Android应用中使用非常广泛,手机上必备的微博.网易新闻等,都使用了ListView.

  6. 常用Dos(转)

    先介绍一下通配符的概念. 通配符*和? *表示一个字符串 ?只代表一个字符 注意通配符只能通配文件名或扩展名,不能全都表示.例如我们要查找以字母y开头的所有文件,可以输入以下命令:dir y*.*:如 ...

  7. ambari HDFS-HA 回滚

    curl -u admin:admin -H "X-Requested-By: ambari" -X GET http://zwshen86:8080/api/v1/cluster ...

  8. C#常用数据加密类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Sec ...

  9. java的final关键字——修饰变量

    final修饰的变量不可变,指的是引用不可变,(除基本类型)而不是内容. final修饰的成员变量必须被初始化

  10. 安装 运行yum报错:No module named yum

    报错情况: There was a problem importing one of the Python modulesrequired to run yum. The error leading ...