PCA算法详解

摘要

本文将介绍PCA算法,包括PCA算法的数学理解以及如何用代码逻辑

一、简介

PCA(Principal Component Analysis,主成分分析)是一种常用的数据分析方法。PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量,常用于高维数据的降维。

参考文章

二、数学相关概念

内积与投影

在线性代数中,基(basis)(也称为基底)是描述、刻画向量空间的基本工具。向量空间的基是它的一个特殊的子集,基的元素称为基向量。向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。如果基中元素个数有限,就称向量空间为有限维向量空间,将元素的个数称作向量空间的维数。

使用基底可以便利地描述向量空间。比如说,考察从一个向量空间 V V {\displaystyle \mathrm {V} }{\mathrm {V}} VV射出的线性变换 f f {\displaystyle f}f ff,可以查看这个变换作用在向量空间的一组基 B B {\displaystyle {\mathfrak {B}}}{\mathfrak {B}} BB上的效果。掌握了 f ( B ) f ( B ) {\displaystyle f({\mathfrak {B}})}f({\mathfrak {B}}) f(B)f(B),就等于掌握了 f f 对 V V {\displaystyle f}f对{\displaystyle \mathrm {V} }{\mathrm {V}} ffVV中任意元素的效果。

不是所有空间都拥有由有限个元素构成的基底。这样的空间称为无限维空间。某些无限维空间上可以定义由无限个元素构成的基。如果承认选择公理,那么可以证明任何向量空间都拥有一组基。一个向量空间的基不止一组,但同一个空间的两组不同的基,它们的元素个数或势(当元素个数是无限的时候)是相等的。一组基里面的任意一部分向量都是线性无关的;反之,如果向量空间拥有一组基,那么在向量空间中取一组线性无关的向量,一定能将它扩充为一组基。在内积向量空间中,可以定义正交的概念。通过特别的方法,可以将任意的一组基变换成正交基乃至标准正交基。

方差的概念

方差是在概率论和统计方差衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。

协方差的概念

在概率论和统计学中,协方差(Covariance)用于衡量两个随机变量的联合变化程度。而方差是协方差的一种特殊情况,即变量与自身的协方差。

期望值分别为 E ( X ) = μ E ( X ) = μ 与 E ( Y ) = ν E ( Y ) = ν {\displaystyle E(X)=\mu }E(X)=\mu与{\displaystyle E(Y)=\nu }E(Y)=\nu E(X)=μE(X)=μE(Y)=νE(Y)=ν的两个具有有限二阶矩的实数随机变量X 与Y 之间的协方差定义为:

cov ⁡ ( X , Y ) = E ⁡ ( ( X − μ ) ( Y − ν ) ) = E ⁡ ( X ⋅ Y ) − μ ν . cov ⁡ ( X , Y ) = E ⁡ ( ( X − μ ) ( Y − ν ) ) = E ⁡ ( X ⋅ Y ) − μ ν . {\displaystyle \operatorname {cov} (X,Y)=\operatorname {E} ((X-\mu )(Y-\nu ))=\operatorname {E} (X\cdot Y)-\mu \nu .}{\displaystyle \operatorname {cov} (X,Y)=\operatorname {E} ((X-\mu )(Y-\nu ))=\operatorname {E} (X\cdot Y)-\mu \nu .} cov(X,Y)=E((Xμ)(Yν))=E(XY)μν.cov(X,Y)=E((Xμ)(Yν))=E(XY)μν.
协方差表示的是两个变量的总体的误差,这与只表示一个变量误差的方差不同。 如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。

如果X 与Y 是统计独立的,那么二者之间的协方差就是0,这是因为

E ( X ⋅ Y ) = E ( X ) ⋅ E ( Y ) = μ ν , E ( X ⋅ Y ) = E ( X ) ⋅ E ( Y ) = μ ν {\displaystyle E(X\cdot Y)=E(X)\cdot E(Y)=\mu \nu ,}E(X \cdot Y)=E(X) \cdot E(Y)=\mu\nu E(XY)=E(X)E(Y)=μν,E(XY)=E(X)E(Y)=μν,
但是反过来并不成立,即如果X 与Y 的协方差为0,二者并不一定是统计独立的。

协方差矩阵

在统计学与概率论中,协方差矩阵(也称离差矩阵、方差-协方差矩阵)是一个矩阵,其 i, j 位置的元素是第 i 个与第 j 个随机变量之间的协方差。这是从标量随机变量到高维度随机向量的自然推广。

实对称矩阵

实对称矩阵有一系列非常好的性质:

  • 实对称矩阵不同特征值对应的特征向量必然正交。
  • 特征向量λ重数为r,则必然存在r个线性无关的特征向量对应于λ,因此可以将这r个特征向量单位正交化。
特征值特征向量

A为n阶矩阵,若数λ和n维非0列向量x满足Ax=λx,那么数λ称为A的特征值,x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成( A-λE)x=0,并且|λE-A|叫做A 的特征多项式。当特征多项式等于0的时候,称为A的特征方程,特征方程是一个齐次线性方程组,求解特征值的过程其实就是求解特征方程的解。

三、数学理论

在数学上,向量的表示是基于基向量的,如三维坐标中x轴,y轴,z轴就是一组三维基向量分别为: ( 1 , 0 , 0 ) T (1,0,0)^T (1,0,0)T, ( 0 , 1 , 0 ) T (0,1,0)^T (0,1,0)T, ( 0 , 0 , 1 ) T (0,0,1)^T (0,0,1)T,此时在三维坐标中的一个坐标,如: ( 3 , 4 , 6 ) T (3,4,6)^T (3,4,6)T,就是该向量分别在x轴,y轴,z轴上的投影的长度 $ (3,4,6)^T = 3 * (1,0,0)^T +4 * (0,1,0)^T +6 * (0,0,1)^T $

此时要是重新选择一组基向量,如何将向量转换到新的基向量所对应的坐标,这里就涉及到向量的变化。

这里可以直接得出结论:将向量与基向量进行内积所得到的向量就是该向量在基向量下的坐标。
(这里对基向量有要求,基向量的模需要为1,如果不唯一需要转换成模为1的基向量,或者在向量与基向量内积的时候除以基向量的模。)

3.1用向量解决转换

新向量B,向量 A T A^T AT,基向量 α 、 β 、 γ \alpha、\beta、\gamma αβγ。B、A和基向量都是n维
当基向量的模为1时:

B = ( α . A T , β . A T , γ . A T ) B = (\alpha.A^T,\beta.A^T,\gamma.A^T) B=(α.AT,β.AT,γ.AT)

当基向量的模不为1时:

B = ( α . A T ∣ ∣ α ∣ ∣ , β . A T ∣ ∣ β ∣ ∣ , γ . A T ∣ ∣ γ ∣ ∣ ) B = (\frac{\alpha.A^T}{||\alpha||},\frac{\beta.A^T}{||\beta||},\frac{\gamma.A^T}{||\gamma||}) B=(αα.AT,ββ.AT,γγ.AT)

3.2用矩阵解决转换

此时我们得到了向量转换的方法,再扩大问题,如果对于m个n维向量,新基向量为: α 1 , α 2 . . . . . . α n \alpha_1,\alpha_2......\alpha_n α1,α2......αn,基向量也为n维,此时如何将这m个n维向量转换为新基向量下的新坐标。

可以看出,问题只是稍微的变复杂了,并没有太过于复杂,看到m个n维向量,第一时间就应该想到矩阵,上面的问题我们可以用矩阵的方式来表达,如下:

m个n维向量矩阵表示:(每一列代表一个向量)
A = [ a 1 a 2 ⋯ a m ] = [ a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n m ] A = \begin{bmatrix} a_{1} & a_{2} & \cdots & a_{m} \end{bmatrix} = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1m}\\\\ a_{21} & a_{22} & \cdots & a_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ a_{n1} & a_{n2} & \cdots & a_{nm} \end{bmatrix} A=[a1a2am]=a11a21an1a12a22an2a1ma2manm

新向量组成的矩阵 B = ( α 1 α 2 ⋯ α n ) A = [ b 11 b 12 ⋯ b 1 m b 21 b 22 ⋯ b 2 m ⋮ ⋮ ⋱ ⋮ b n 1 b n 2 ⋯ b n m ] = [ b 1 b 2 ⋯ b m ] B = \begin{pmatrix} \alpha_1 \\\\ \alpha_2 \\\\ \cdots \\\\ \alpha_n \end{pmatrix} A = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1m}\\\\ b_{21} & b_{22} & \cdots & b_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ b_{n1} & b_{n2} & \cdots & b_{nm} \end{bmatrix} = \begin{bmatrix} b_{1} & b_{2} & \cdots & b_{m} \end{bmatrix} B=α1α2αnA=b11b21bn1b12b22bn2b1mb2mbnm=[b1b2bm]

以上就完成了以矩阵的形式进行m个n维向量转换,扩展到一般情况下任意矩阵都可以进行转换,接下来是在转换的基础上进行降维。

3.3用矩阵的形式进行降维

这里其实很简单,当对应的基向量个数k小于n个时,得到的新矩阵B的行数也小于n,也就是说新向量的维数为k小于n,就完成了降维。(是不是非常简单)

新向量组成的矩阵
B = ( α 1 α 2 ⋯ α k ) A = [ b 11 b 12 ⋯ b 1 m b 21 b 22 ⋯ b 2 m ⋮ ⋮ ⋱ ⋮ b k 1 b k 2 ⋯ b k m ] = [ b 1 b 2 ⋯ b m ] B = \begin{pmatrix} \alpha_1 \\\\ \alpha_2 \\\\ \cdots \\\\ \alpha_k \\\\ \end{pmatrix} A = \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1m}\\\\ b_{21} & b_{22} & \cdots & b_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ b_{k1} & b_{k2} & \cdots & b_{km}\\\\ \end{bmatrix} = \begin{bmatrix} b_{1} & b_{2} & \cdots & b_{m} \end{bmatrix} B=α1α2αkA=b11b21bk1b12b22bk2b1mb2mbkm=[b1b2bm]

3.4如何用常识选择合适的基向量

接下来就是理解PCA最重要的一步啦,以上我们已经可以对任意个任意维度的向量进行转换或者降维,但是可以看出上面的降维需要自己选择基向量,那么如何选择基向量呢?

首先大家降维的目的是让数据在尽可能的损失最少的信息时达到数据简单的目的,显然损失最少的信息就是我们的限制,向量在空间中就是一个点,他的坐标就代表了信息,不同向量之间的差别也就是以坐标来区别的。如果两个向量的相对位置在降维后没有改变,我们就可以说信息得到了保存。

常识

上图,就符合我们的期望,如何用数学表达表示出来呢,这里就是方差最大,就是让坐标点分布越均匀,坐标的信息就得以保全的更多,这样第一个维度的选择就得以解决。

V a r ( a ) = 1 m ∑ i = 1 m ( a i − μ ) 2 Var(a) = \frac{1}{m}\sum^m_{i=1}(a_i-\mu)^2 Var(a)=m1i=1m(aiμ)2

因为数据进行过归一话处理之后, μ = 0 \mu=0 μ=0,所以 V a r ( a ) = 1 m ∑ i = 1 m ( a i ) 2 Var(a) = \frac{1}{m}\sum^m_{i=1}(a_i)^2 Var(a)=m1i=1m(ai)2

于是上面的问题被形式化表述为:寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,方差值最大。

第一个维度问题解决,第二个维度呢,我们第一个维度利用了方差的性质,第二个维度就要用协方差的性质了,如果我们还是单纯只选择方差最大的方向,很明显,这个方向与第一个方向应该是“几乎重合在一起”,显然这样的维度是没有用的,因此,应该有其他约束条件。从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。

数学上可以用两个字段的协方差表示其相关性,由于已经让每个字段均值为0,则: C o v ( a , b ) = 1 m ∑ i = 1 m a i ∗ b i Cov(a,b)=\frac{1}{m}\sum^m_{i=1}a_i * b_i Cov(a,b)=m1i=1maibi

可以看到,在字段均值为0的情况下,两个字段的协方差简洁的表示为其内积除以元素数m。

当协方差为0时,表示两个字段完全独立。为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的。

至此,我们得到了降维问题的优化目标:将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位(模为1)正交基,使得原始数据变换到这组基上后,各字段两两间协方差为0,而字段的方差则尽可能大(在正交的约束下,取最大的K个方差)。

3.5如何用矩阵选择合适的基向量

这里就就要用到上面X讲的实对称矩阵、协方差矩阵还有特征值特征向量这些东西啦。(这些你要是不能很好理解可以去看线性代数。)

首先我们对m个n维向量组成的矩阵 A T A^T AT,每一个元素减去每一行的均值,这一步其实就是对数据的归一化。

X = [ a 11 − μ 1 a 12 − μ 1 ⋯ a 1 m − μ 1 a 21 − μ 2 a 22 − μ 2 ⋯ a 2 m − μ 2 ⋮ ⋮ ⋱ ⋮ a n 1 − μ n a n 2 − μ n ⋯ a n m − μ n ] X = \begin{bmatrix} a_{11}-\mu_1 & a_{12}-\mu_1 & \cdots & a_{1m}-\mu_1\\\\ a_{21}-\mu_2 & a_{22}-\mu_2 & \cdots & a_{2m}-\mu_2\\\\ \vdots & \vdots & \ddots & \vdots \\\\ a_{n1}-\mu_n & a_{n2}-\mu_n & \cdots & a_{nm}-\mu_n \end{bmatrix} X=a11μ1a21μ2an1μna12μ1a22μ2an2μna1mμ1a2mμ2anmμn

首先我们得到协方差矩阵:矩阵X是矩阵A减去均值得到的矩阵
C = X X T = [ a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n m ] n ∗ m [ a 11 a 12 ⋯ a 1 m a 21 a 22 ⋯ a 2 m ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n m ] m ∗ n T = [ ∑ i = 1 m ( a i 1 ) 2 ∑ i = 1 m a i 1 a i 2 ⋯ ∑ i = 1 m a i 1 a i n ∑ i = 1 m a i 1 a i 2 ∑ i = 1 m ( a i 2 ) 2 ⋯ ∑ i = 1 m a i 2 a i n ⋮ ⋮ ⋱ ⋮ ∑ i = 1 m a i 1 a i n ∑ i = 1 m a i 2 a i n ⋯ ∑ i = 1 ( m a i n ) 2 ] n ∗ n C = XX^T = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1m}\\\\ a_{21} & a_{22} & \cdots & a_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ a_{n1} & a_{n2} & \cdots & a_{nm}\\\\ \end{bmatrix}_{n*m} \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1m}\\\\ a_{21} & a_{22} & \cdots & a_{2m}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ a_{n1} & a_{n2} & \cdots & a_{nm}\\\\ \end{bmatrix}^T _{m*n} = \begin{bmatrix} \sum^m_{i=1}(a_{i1})^2 & \sum^m_{i=1}a_{i1}a_{i2} & \cdots & \sum^m_{i=1}a_{i1}a_{in}\\\\ \sum^m_{i=1}a_{i1}a_{i2} & \sum^m_{i=1}(a_{i2})^2 & \cdots & \sum^m_{i=1}a_{i2}a_{in}\\\\ \vdots & \vdots & \ddots & \vdots\\\\ \sum^m_{i=1}a_{i1}a_{in} & \sum^m_{i=1}a_{i2}a_{in} & \cdots & \sum^m_{i=1(}a_{in})^2\\\\ \end{bmatrix}_{n*n} C=XXT=a11a21an1a12a22an2a1ma2manmnma11a21an1a12a22an2a1ma2manmmnT=i=1m(ai1)2i=1mai1ai2i=1mai1aini=1mai1ai2i=1m(ai2)2i=1mai2aini=1mai1aini=1mai2aini=1(main)2nn

显然,协方差矩阵是一个实对称矩阵,而且对角线的值为每一个维度对应的方差,其余值为对应的协方差,用一个协方差矩阵就直接求出了方差和协方差。

现在进行数学推导,首先原始数据矩阵为A,进行归一化减去均值后得到的矩阵为X,矩阵X对应的协方差矩阵为 C = X X T C = XX^T C=XXT,基向量对应的矩阵为P,降维后得到的数据矩阵为 Y = P X Y=PX Y=PX,Y对应的协方差矩阵为 D = Y Y T D=YY^T D=YYT,以上为所有变量。现在推导D与C的关系。P为未知,Y为未知,C和X为已知。

D = Y Y T = P X ( P X ) T = P X X T P T = P C P T D = YY^T = PX(PX)^T = PXX^TP^T = PCP^T D=YYT=PX(PX)T=PXXTPT=PCPT

如果学过线性代数就可以得知。现在事情很明白了!我们需要使方差最大,协方差为0.就是使D为对角矩阵。

我们要找的P不是别的,而是能让原始协方差矩阵对角化的P。换句话说,优化目标变成了寻找一个矩阵P,满足PCPT是一个对角矩阵,并且对角元素按从大到小依次排列,那么P的前K行就是要寻找的基,用P的前K行组成的矩阵乘以X就使得X从N维降到了K维并满足上述优化条件。

3.6用SVD(奇异值分解来实现PCA算法)

以上其实已经从数学逻辑和代码实现上说明了如何实现PCA算法,但其实还有另外一个方法。利用奇异值分解。

本质上和利用实对称矩阵的方法没有太大区别,也是利用方差和协方差,构建协方差矩阵。但在求特征值和特征向量时有所不同。

原方法是利用协方差矩阵是实对称矩阵很方便的求特征向量和特征值。但在这里可以使用奇异值分解来求解协方差矩阵的特征值和特征向量。

3.7如何用奇异值分解求解特征值和特征向量

这里作者还没学会,等学会了再来更新哈(嘿嘿)

3.8为什么要使用奇异值分解来求解

我们可以看出使用基于特征值分解来求解PCA时需要计算协方差矩阵,在数据量很大时,协方差矩阵会非常大,不利于计算和效率。但在使用奇异值分解时可以不求出协方差矩阵就可以求出特征值和特征向量。这也是奇异值分解的一大优点。

四、PCA算法

总结一下PCA的算法步骤:

设有m条n维数据。

  1. 将原始数据按列组成n行m列矩阵X
  2. 将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
  3. 求出协方差矩阵 C = X X T C = XX^T C=XXT
  4. 求出协方差矩阵的特征值及对应的特征向量
  5. 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
  6. Y=PX即为降维到k维后的数据

五、总结

PCA算法是属于非监督的算法,实现比较简单,但数学逻辑比较有意思,而且思想很有意思。

PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1 ,2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴

PCA算法实现

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
机器学习算法详解▪ 一、线性回归 ◦ 1、代价函数 ◦ 2、梯度下降算法 ◦ 3、均值归一化 ◦ 4、最终运行结果 ◦ 5、使用scikit-learn库中的线性模型实现 ▪ 二、逻辑回归 ◦ 1、代价函数 ◦ 2、梯度 ◦ 3、正则化 ◦ 4、S型函数(即) ◦ 5、映射为多项式 ◦ 6、使用的优化方法 ◦ 7、运行结果 ◦ 8、使用scikit-learn库中的逻辑回归模型实现 ▪ 逻辑回归_手写数字识别_OneVsAll ◦ 1、随机显示100个数字 ◦ 2、OneVsAll ◦ 3、手写数字识别 ◦ 4、预测 ◦ 5、运行结果 ◦ 6、使用scikit-learn库中的逻辑回归模型实现 ▪ 三、BP神经网络 ◦ 1、神经网络model ◦ 2、代价函数 ◦ 3、正则化 ◦ 4、反向传播BP ◦ 5、BP可以求梯度的原因 ◦ 6、梯度检查 ◦ 7、权重的随机初始化 ◦ 8、预测 ◦ 9、输出结果 ▪ 四、SVM支持向量机 ◦ 1、代价函数 ◦ 2、Large Margin ◦ 3、SVM Kernel(核函数) ◦ 4、使用中的模型代码 ◦ 5、运行结果 ▪ 五、K-Means聚类算法 ◦ 1、聚类过程 ◦ 2、目标函数 ◦ 3、聚类中心的选择 ◦ 4、聚类个数K的选择 ◦ 5、应用——图片压缩 ◦ 6、使用scikit-learn库中的线性模型实现聚类 ◦ 7、运行结果 ▪ 六、PCA主成分分析(降维) ◦ 1、用处 ◦ 2、2D-->1D,nD-->kD ◦ 3、主成分分析PCA与线性回归的区别 ◦ 4、PCA降维过程 ◦ 5、数据恢复 ◦ 6、主成分个数的选择(即要降的维度) ◦ 7、使用建议 ◦ 8、运行结果 ◦ 9、使用scikit-learn库中的PCA实现降维 ▪ 七、异常检测 Anomaly Detection ◦ 1、高斯分布(正态分布) ◦ 2、异常检测算法 ◦ 3、评价的好坏,以及的选取 ◦ 4、选择使用什么样的feature(单元高斯分布) ◦ 5、多元高斯分布 ◦ 6、单元和多元高斯分布特点 ◦ 7、程序运行结果
在MATLAB中实现PCA算法可以通过以下步骤进行。首先,需要对数据进行中心化,即减去每个特征的均值。然后,计算协方差矩阵。接下来,求解协方差矩阵的特征值和特征向量。根据特征值的大小,选择主成分。最后,可以通过特征向量和原始数据进行矩阵相乘,实现降维和重构。\[1\] 在MATLAB中,可以使用自带的函数pca来实现PCA算法。该函数会自动对数据进行中心化,并返回特征向量和特征值。可以通过设置参数来选择保留的主成分数量。另外,如果已经有了协方差矩阵,也可以使用函数pcacov来计算PCA。\[2\]\[3\] 需要注意的是,MATLAB自带的函数在计算PCA时并不对数据进行标准化。如果需要标准化数据,可以使用zscore函数对数据进行标准化操作。即x=zscore(X)。这样可以确保不同特征的尺度对PCA结果的影响相同。 #### 引用[.reference_title] - *1* *2* [MATLAB PCA及其实现方法](https://blog.csdn.net/weixin_44463965/article/details/130790377)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MATLAB实例:PCA(主成成分分析)详解](https://blog.csdn.net/FDA_sq/article/details/122009888)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fadeGR

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值