PCA主成分分析的MATLAB和Eigen实现以及应用

本文介绍了PCA主成分分析的基本理论,并详细阐述了如何在MATLAB和C++矩阵库Eigen中实现PCA。PCA通过计算协方差矩阵和特征值分解来提取数据的主要方向。在MATLAB中,作者展示了多种计算协方差矩阵的方法,并进行了PCA变换。在Eigen中,PCA过程同样被实现。最后,PCA的应用展示为模型矫正的结果。
摘要由CSDN通过智能技术生成

目前在项目中需要对模型的位置进行矫正,想到了使用主成分分析,提取主方向,将模型方向进行变换得到正确的方向。以下对PCA过程首先在matlab中进行实现,然后在C++矩阵库Eigen中实现,总体较为简单。

PCA实现和应用

PCA理论

PCA(Principal component analysis)主成分分析, 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分[参考百度百科]。通俗来讲,PCA就是将数据从一个空间映射到一个各个维度不相关的一个空间,这样就提取了主方向。
比如下面的数据:
这里写图片描述
如果以xy两维【垂直和水平的轴】,来描述数据,我们发现数据相差较近,方差较小,不易区分。因此我们求取主成分,变换后的空间的主轴是如图所示的椭圆的两个轴。如果压缩到一维的空间,我们可以只选取长轴,这样也尽可能多的表达原数据的方差;如果选取两个轴,我们将各个方向的方差达到了最大,将原数据尽可能区分。

计算协方差矩阵

进行PCA计算的第一步是计算协方差矩阵,协方差是数据每一个维度之间的相互关系,计算公式如下:
这里写图片描述
我们可以应用以上任意一个公式进行计算,但注意样本方差和总体方差的转化【会在后面代码中提示,但博主也不完全清楚其中的理论==】

PCA过程

  1. 计算协方差矩阵的特征向量和特征值
  2. 对特征向量进行排序,降序排序
  3. 按照特征值的顺序对特征向量进行排序,组成变换矩阵【这里我们可以选取需要保留的维度个数】
  4. 对原数据进行变换

MATLAB实现

求协方差矩阵

这里提供了三种方式:
1. 使用matlab自带的求协方差矩阵
2. 分别使用以上的两个公式

// 初步展示
data = rand(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值