PCA基本流程:

1、训练集矩阵算协方差矩阵A;

2、算协方差矩阵特征值与特征向量;

3、按特征值的大小排列特征矩阵,得B,对应的特征值(按从大到小排列)组成向量a;

4、A*B得到去关联的新矩阵C,A与C的对应位置物理意义相同(指样本维度和样本数),但是去掉了关联,并且按特征贡献度大小排列;

5、选贡献度百分比或降维后的维度。例如百分之90,则是取满足sum(a(1:n))/sum(a)>90%的最小的n;如果直接定降维后的维度,则直接设置个n;

6、任一样本的降维公式相同,对于样本x:x*B(1:n,:)。

原理说明:

步骤3,4本质上是基变换原理。4可以去关联的原理与马氏距离相仿。贡献度的原理与协方差矩阵的数学意义相关。转换矩阵相关的计算必须在训练集上完成是因为协方差矩阵的计算需要一个样本集,如将测试集样本加入这个样本集,则训练集中已经包含了测试集信息(例如某一维特征的均值)。

matlab函数说明:

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

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

coeff:步骤3算出来的矩阵B,本质上是一个基变换矩阵。数学意义是协方差矩阵按特征值的大小排列的特征矩阵。

score:步骤4算出来的矩阵C,与A同维同物理意义。

latent:步骤3算出来的向量a,存储了贡献度,数学意义是协方差矩阵特征值从大到小排列。 

用途:

根据latent计算满足某贡献度所需的样本维度,或直接定一个样本维度,然后feature*coeff(1:n,:)降维。把训练集中所有样本计算feature*coeff就是score,当然,feature*coeff(1:n,:)这个式子更大的用途是计算测试集中的样本。

重点!!!

pca内建函数在算协方差的时候先减了个样本均值,所以这里feature*coeff不是score,需要先算:

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

然后x0*coeff才是score。

参考原文:matlab_PCA,训练集与测试集分开,原理和用法

MATLAB自带工具箱实现PCA降维代码的更多相关文章

  1. PCA 降维算法详解 以及代码示例

    转载地址:http://blog.csdn.net/watkinsong/article/details/38536463 1. 前言 PCA : principal component analys ...

  2. MATLAB实例:PCA降维

    MATLAB实例:PCA降维 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 1. iris数据 5.1,3.5,1.4,0.2,1 4.9,3.0,1 ...

  3. [综] PCA降维

    http://blog.json.tw/using-matlab-implementing-pca-dimension-reduction 設有m筆資料, 每筆資料皆為n維, 如此可將他們視為一個mx ...

  4. Matlab计算机视觉/图像处理工具箱推荐

    Matlab计算机视觉/图像处理工具箱推荐 转载http://cvnote.info/matlab-cv-ip-toolbox/ 计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理 ...

  5. PCA降维—降维后样本维度大小

    之前对PCA的原理挺熟悉,但一直没有真正使用过.最近在做降维,实际用到了PCA方法对样本特征进行降维,但在实践过程中遇到了降维后样本维数大小限制问题. MATLAB自带PCA函数:[coeff, sc ...

  6. matlab 小波工具箱

    wavemenu --- >wavelet ---->wavelet packet1-D Matlab小波工具箱的使用1 转载▼ http://blog.sina.com.cn/s/blo ...

  7. PCA降维2

    前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码.全文主要分六个部分展开: 1)简单示例.通过简单的例子 ...

  8. 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

    相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...

  9. 机器学习公开课笔记(8):k-means聚类和PCA降维

    K-Means算法 非监督式学习对一组无标签的数据试图发现其内在的结构,主要用途包括: 市场划分(Market Segmentation) 社交网络分析(Social Network Analysis ...

随机推荐

  1. 【Demo】jQuery 设置简单的分页

    功能描述: (1)设定起始页位置和每页的大小: (2)绑定自定义的分页事件,在事件中隐藏当前页不需要显示的行: (3)为表格添加页链接: (4)绑定链接的单击事件,在事件中触发表格分页事件. 效果图: ...

  2. request.getPathInfo() 方法的作用

    request.getPathInfo(); 这个方法返回请求的实际URL相对于请求的serlvet的url的路径.(个人理解.) 比如,有一个Servlet的映射是这样配置的: <servle ...

  3. 4: 模块化应用程序开发 Modular Application Development Using Prism Library 5.0 for WPF (英汉对照版)

    A modular application is an application that is divided into a set of loosely coupled functional uni ...

  4. 火影忍者之~鸣人 (字符串处理,strcmp)

    火影忍者的男主角漩涡鸣人,因为身上封印着邪恶的九尾妖狐,无父无母的他受尽了村人的冷眼与歧视,他下定决心要成为第六代火影,让所有人都认同他的存在,火影是动漫火影忍者中主人公鸣人所在的国家的最强忍者的头衔 ...

  5. 嵌套类,PIMPL

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  6. 随机生成验证码及python中的事务

    1.随机生成验证码 # import random # print(random.random()) #-1的小数 # print(random.randint(,)) #包括1和3 # print( ...

  7. LeetCode OJ:Ugly Number II(丑数II)

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  8. 【html】META http-equiv 大全

    meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码: <head><meta http-equiv="content ...

  9. FMDB给表添加新的字段

    1.首先判断添加的字段是否存在,如果不存在就添加. 2.代码演示: (1)判断是否存在,判断之前先导入头文件确保可以调用FMDB的api(#import “FMDatabaseAdditions.h” ...

  10. 在创建一个MVC控制器,显示运行所选代码生成器时出错(带读写,使用EF)

    在创建一个MVC控制器,在Controllers文件夹选择添加->控制器,如下图: 显示运行所选代码生成器时出错 解决方法: 第一步:Install-Package Microsoft.aspn ...