pca

PCA Scaling with ggbiplot

烈酒焚心 提交于 2019-11-28 07:03:06
I'm trying to plot a principal component analysis using prcomp and ggbiplot . I'm getting data values outside of the unit circle, and haven't been able to rescale the data prior to calling prcomp in such a way that I can constrain the data to the unit circle. data(wine) require(ggbiplot) wine.pca=prcomp(wine[,1:3],scale.=TRUE) ggbiplot(wine.pca,obs.scale = 1, var.scale=1,groups=wine.class,ellipse=TRUE,circle=TRUE) I tried scaling by subtracting mean and dividing by standard deviation before calling prcomp : wine2=wine[,1:3] mean=apply(wine2,2,mean) sd=apply(wine2,2,mean) for(i in 1:ncol(wine2)

Why is the accuracy coming as 0% ? MATLAB LIBSVM

随声附和 提交于 2019-11-28 06:22:12
问题 I extracted PCA features using: function [mn,A1,A2,Eigenfaces] = pca(T,f1,nf1) m=mean(T,2), %T is the whole training set train=size(T,2); A=[]; for i=1:train temp=double(T(:,i))-m; A=[A temp]; end train=size(f1,2); %f1 - Face 1 images from training set 'T' A=[]; for i=1:train temp=double(f1(:,i))-m; A1=[A1 temp]; end train=size(nf1,2); %nf1 - Images other than face 1 from training set 'T' A=[]; for i=1:train temp=double(nf1(:,i))-m; A2=[A2 temp]; end L=A'*A; [V D]=eig(L); for i=1:size(V,2) if

How to label the training projections obtained by PCA to use for training SVM for classification? MATLAB

*爱你&永不变心* 提交于 2019-11-28 05:58:40
问题 I have a "training set" of images. I have formed the 'Eigenspace'. Now i need to label the projections to train the SVM. The projections of "face 1" to the Eigenspace has to be labelled +1 and the projections of all the other faces to the Eigenspace has to be labelled -1. I don't know how to do this.Any suggestions would be really helpful! I formed the eigenspace using the following : function [signals,V] = pca2(data) [M,N] = size(data); data = reshape(data, M*N,1); % subtract off the mean

PCA算法学习_2(PCA理论的matlab实现)

こ雲淡風輕ζ 提交于 2019-11-28 04:05:40
   前言   在前面的博文 PCA算法学习_1(OpenCV中PCA实现人脸降维) 中已经初步介绍了PCA算法的大概流程及在人脸降维上面的应用。本文就进一步介绍下其理论基础和matlab的实现(也是网上学者的代码)。   开发环境:Matlab2012a    基础   假设X是一个m*n的矩阵,是由样本数据构成的矩阵。其中m表示样本的属性维数,n表示样本的个数。现在要对X进行线性变换变成另一个矩阵Y,使得Y的协方差矩阵为对角矩阵,这样的Y就认为是对原始矩阵X提取主成分后的矩阵,实际过程中只需取Y的前面主要的行即可。   X变换到Y的线性变换公式为:      X和Y的协方差计算方法为:         从下面的公式可以看出Cy和Cx的关系为:      因为Cx是对称矩阵,对Cx进行特征值分解就可以将其变换成对角矩阵,见下面的公式推导:      公式中的P和E满足:      其中D是由Cx的特征向量构成的对角矩阵。P是线性变换矩阵,P的每一行都是Cx矩阵的特征向量,且P是正交矩阵,一般情况下把特征值大的特征向量排在矩阵前面几行。   由此可知,求出P后就可以求出X主成分矩阵了。   另外,还可以求出PCA的白化矩阵,PCA的白化矩阵就是特征向量去相关的矩阵,白化矩阵的协方差阵一般为单位矩阵,在PCA中可以这么求:inv(sqrt(D))*E'

PCA

老子叫甜甜 提交于 2019-11-28 04:05:27
PCA本质上是一个有损的特征压缩过程,但是我们期望损失的精度尽可能地少,也就是希望压缩的过程中保留最多的原始信息。要达到这种目的,我们希望降维(投影)后的数据点尽可能地分散。 基于这种思想,我们希望投影后的数据点尽可能地分散。而这种分散程度在数学上可以利用方差来表示。设降维后的特征为 A,也就是希望 $var(A)= \frac{1}{m}\sum_{i}^{m}({a}_{i}-{\mu}_{a} )^{2}$,而由于在PCA降维前,一般已经做了特征零均值化处理,为了方便,记$var(A)= \frac{1}{m}\sum_{i}^{m}({a}_{i})^{2}$,同样,为了减少特征的冗余信息,我们希望降维后的各特征之间互不相关。而不相关性可以用协方差来衡量。设降维后的两个特征为A、B的协方差为0。 所以问题就是对Y进行对角化,即方差最大而协方差为0。运用到谱分解(特征向量和特征值)。 来源: http://www.cnblogs.com/xcxy-boke/p/11405052.html

PCA的数学原理

↘锁芯ラ 提交于 2019-11-28 04:05:06
原帖地址: http://blog.codinglabs.org/articles/pca-tutorial.html PCA(Principal Component Analysis)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。网上关于PCA的文章有很多,但是大多数只描述了PCA的分析过程,而没有讲述其中的原理。这篇文章的目的是介绍PCA的基本数学原理,帮助读者了解PCA的工作机制是什么。 当然我并不打算把文章写成纯数学文章,而是希望用直观和易懂的方式叙述PCA的数学原理,所以整个文章不会引入严格的数学推导。希望读者在看完这篇文章后能更好的明白PCA的工作原理。 数据的向量表示及降维问题 一般情况下,在数据挖掘和机器学习中,数据被表示为向量。例如某个淘宝店2012年全年的流量及交易情况可以看成一组记录的集合,其中每一天的数据是一条记录,格式如下: (日期, 浏览量, 访客数, 下单数, 成交数, 成交金额) 其中“日期”是一个记录标志而非度量值,而数据挖掘关心的大多是度量值,因此如果我们忽略日期这个字段后,我们得到一组记录,每条记录可以被表示为一个五维向量,其中一条看起来大约是这个样子: 注意这里我用了转置,因为习惯上使用列向量表示一条记录(后面会看到原因),本文后面也会遵循这个准则

PCA算法

丶灬走出姿态 提交于 2019-11-28 04:04:48
作者:桂。 时间:2017-02-26 19:54:26 链接: http://www.cnblogs.com/xingshansi/articles/6445625.html 前言 本文为模式识别系列第一篇,主要介绍主成分分析算法(Principal Component Analysis,PCA)的理论,并附上相关代码。全文主要分六个部分展开:   1)简单示例。通过简单的例子,引出PCA算法;   2)理论推导。主要介绍PCA算法的理论推导以及对应的数学含义;   3)算法步骤。主要介绍PCA算法的算法流程;   4)应用实例。针对PCA的实际应用,列出两个应用实例;   5)常见问题补充。对于数据预处理过程中常遇到的问题进行补充;   6)扩展阅读。简要介绍PCA的不足,并给出K-L变换、Kernel-PCA(KPCA)的相关链接。 本文为个人总结,内容多有不当之处,麻烦各位批评指正。 一、简单示例    A-示例1:降维 先来看一组学生的成绩 学生1 学生2 学生3 学生4 ... 学生N 语文成绩 85 85 85 85 ... 85 数学成绩 96 93 78 64 ... 97 为了方便分析,我们假设N=5; 学生1 学生2 学生3 学生4 学生5 语文成绩 85 85 85 85 85 数学成绩 96 93 78 64 97 问题:

PCA与RPCA

半世苍凉 提交于 2019-11-28 03:36:24
PCA与RPCA PCA和RPCA从名字看是有一些相似性的,两者的区别在于对于误差的假设不同,PCA假设数据误差是服从高斯分布的,即数据噪声较小;RPCA假设数据噪声是稀疏的,并且可能是强的噪声; 一般推导主成分分析可以有两种方法: 最近可重构性:样本点到超平面要尽可能近; 最大可分性:样本点在这个超平面上的投影尽可能分开,即最大化投影方差; 下面基于最大化投影方差来回归该算法,首先,先回顾一下PCA操作的步骤: 对样本数据进行中心化处理(这步操作比较重要,特别是对推导公式) 求样本的协方差矩阵; 对样本的协方差矩阵进行特征值分解,并通过前k个特征值对应的特征向量进行映射: \[ \boldsymbol{x}_{i}^{\prime}=\left[\begin{array}{c}{\boldsymbol{\omega}_{1}^{\mathrm{T}} \boldsymbol{x}_{i}} \\ {\boldsymbol{\omega}_{2}^{\mathrm{T}} \boldsymbol{x}_{i}} \\ {\vdots} \\ {\boldsymbol{\omega}_{d}^{\mathrm{T}} \boldsymbol{x}_{i}}\end{array}\right] \] 最大方差推导: 假设原始的坐标为 \(\left\{\boldsymbol{v}_{1

How to use eigenvectors obtained through PCA to reproject my data?

落花浮王杯 提交于 2019-11-28 01:25:04
问题 I am using PCA on 100 images. My training data is 442368x100 double matrix. 442368 are features and 100 is number of images. Here is my code for finding the eigenvector. [ rows, cols] = size(training); maxVec=rows; maxVec=min(maxVec,rows); train_mean=mean(training,2); A=training-train_mean*ones(1,cols); A=A'*A; [evec,eval]=eig(A); [eval ind] = sort(-1*diag(eval)); evec= evec(:, ind(1:100)); Now evec is an eigenvector matrix of order of 100x100 double and now I have got 100 eigenvectors sorted

How to implement ZCA Whitening? Python

天大地大妈咪最大 提交于 2019-11-27 23:09:15
Im trying to implement ZCA whitening and found some articles to do it, but they are a bit confusing.. can someone shine a light for me? Any tip or help is appreciated! Here is the articles i read : http://courses.media.mit.edu/2010fall/mas622j/whiten.pdf http://bbabenko.tumblr.com/post/86756017649/learning-low-level-vision-feautres-in-10-lines-of I tried several things but most of them i didnt understand and i got locked at some step. Right now i have this as base to start again : dtype = np.float32 data = np.loadtxt("../inputData/train.csv", dtype=dtype, delimiter=',', skiprows=1) img = (