python主成分分析相关系数_主成分分析(PCA)

主成分分析PCA是一种无监督的降维方法,通过线性变换找到数据的主要成分。PCA通过对数据进行规范化处理,消除不同变量量纲的影响,然后通过求协方差矩阵的特征值和特征向量得到主成分。在Python中,可以使用sklearn库进行PCA操作,通过调整n_components参数保留所需主成分。PCA在数据分析和机器学习预处理中广泛应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主成分分析(Principal Component Analysis,PCA)是一种常用的无监督学习方法

利用正交变换把由线性相关变量表示的观测数据 转换为 少数几个由线性无关变量表示的数据,线性无关的变量 称为 主成分

主成分的个数通常小于原始变量的个数,所以PCA属于降维方法

主要用于发现数据中的基本结构,即数据中变量之间的关系,是数据分析的有力工具,也用于其他机器学习方法的前处理

PCA属于多元统计分析的经典方法

1. 总体主成分分析

第一轴选取方差最大的轴 y1

主成分分析 的主要目的是降维,所以一般选择 k( k≪mk\ll

mk≪m)个主成分(线性无关变量)来代替m个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息(原有变量的方差)。

在实际问题中,不同变量可能有不同的量纲,直接求主成分有时会产生不合理的结果。

为了消除这个影响,常常对各个随机变量实施规范化,使其均值为0,方差为1。

主成分分析的结果可以用于其他机器学习方法的输入。

将样本点投影到以主成分为坐标轴的空间中,然后应用聚类算法,就可以对样本点进行聚类

定义:

假设 x\pmb xxxx 为 mmm 维随机变量,均值为 μ\muμ,协方差矩阵为 Σ\SigmaΣ

随机变量 x\pmb xxxx 到 mmm 维随机变量 y\pmb yyyy 的线性变换

yi=αiTx=∑k=1mαkixk,i=1,2,...,my_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m

\alpha_{ki}x_k, \quad i=1,2,...,myi=αiTxxx=k=1∑mαkixk,i=1,2,...,m

其中 αiT=(α1i,α2i,...,αmi)\alpha_i^T =

(\alpha_{1i},\alpha_{2i},...,\alpha_{mi})αiT=(α1i,α2i,...,αmi)

如果该线性变换满足以下条件,称之为总体主成分:

αiTαi=1,i=1,2,...,m\alpha_i^T\alpha_i = 1, i = 1,

2,...,mαiTαi=1,i=1,2,...,m

cov(yi,yj)=0(i≠j)cov (y_i,y_j) = 0(i \neq j)cov(yi,yj)=0(i=j)

y1y_1y1 是 x\pmb xxxx 的所有线性变换中方差最大的,y2y_2y2 是与 y1y_1y1 不相关的 x\pmb xxxx

的所有线性变换中方差最大的,以此类推,y1,y2,...,ymy_1,y_2,...,y_my1,y2,...,ym 称为第一主成分…第 mmm

主成分

假设 x\pmb xxxx 是 mmm 维随机变量,其协方差矩阵 Σ\SigmaΣ 的特征值分别是 λ1≥λ2≥...≥λm≥0\lambda_1

\ge \lambda_2 \ge ... \ge \lambda_m \ge 0λ1≥λ2≥...≥λm≥0,特征值对应的单位特征向量分别是

α1,α2,...,αm\alpha_1,\alpha_2,...,\alpha_mα1,α2,...,αm,则 x\pmb xxxx 的第 iii

主成分可写作:

yi=αiTx=∑k=1mαkixk,i=1,2,...,my_i = \alpha_i^T \pmb x = \sum\limits_{k=1}^m

\alpha_{ki}x_k, \quad i=1,2,...,myi=αiTxxx=k=1∑mαkixk,i=1,2,...,m

并且,x\pmb xxxx 的第 iii 主成分的方差是协方差矩阵 Σ\SigmaΣ 的第 iii 个特征值,即:

var(yi)=αiTΣαi=λivar (y_i) = \alpha_i^T\Sigma\alpha_i =

\lambda_ivar(yi)=αiTΣαi=λi

主成分性质:

主成分 y\pmb yyyy 的协方差矩阵是对角矩阵 cov(y)=Λ=diag(λ1,λ2,...,λm)cov(\pmb y) =

\Lambda =

diag(\lambda_1,\lambda_2,...,\lambda_m)cov(yyy)=Λ=diag(λ1,λ2,...,λm)

主成分 y\pmb yyyy 的方差之和等于随机变量 x\pmb xxxx 的方差之和

∑i=1mλi=∑i=1mσii\sum\limits_{i=1}^m \lambda_i = \sum\limits_{i=1}^m

\sigma_{ii}i=1∑mλi=i=1∑mσii

其中 σii\sigma_{ii}σii 是 xix_ixi 的方差,即协方差矩阵 Σ\SigmaΣ 的对角线元素

主成分 yky_kyk 与变量 xix_ixi 的 相关系数 ρ(yk,xi)\rho(y_k,x_i)ρ(yk,xi)

称为因子负荷量(factor loading),它表示第 kkk 个主成分 yky_kyk 与变量 xix_ixi 的相关关系,即 yky_kyk 对

xix_ixi 的贡献程度

ρ(yk,xi)=λkαikσii,k,i=1,2,...,m\rho(y_k, x_i) =

\frac{\sqrt{\lambda_k}\alpha_{ik}}{\sqrt{\sigma_{ii}}},k,i=1,2,...,mρ(yk,xi)=σiiλkαik,k,i=1,2,...,m

2. 样本主成分分析

是基于样本协方差矩阵的主成分分析

给定样本矩阵 XXX

XXX 的样本协方差矩阵

S=[sij]m×n,sij=1n−1∑k=1m(xik−xˉi)(xjk−xˉj)i=1,2,...,m,j=1,2,...,m,其中xˉi=1n∑k=1nxikS

= [s_{ij}]_{m \times n}, \quad s_{ij} =

\frac{1}{n-1}\sum\limits_{k=1}^m(x_{ik}-\bar x_i)(x_{jk}-\bar x_j)\\

i = 1,2,...,m,\quad j = 1,2,...,m, 其中 \bar x_i =

\frac{1}{n}\sum\limits_{k=1}^n

x_{ik}S=[sij]m×n,sij=n−11k=1∑m(xik−xˉi)(xjk−xˉj)i=1,2,...,m,j=1,2,...,m,其中xˉi=n1k=1∑nxik

给定样本 XXX,考虑 x\pmb xxxx 到 y\pmb yyyy 的线性变换 y=ATx\pmb y = A^T \pmb

xyyy=ATxxx

如果满足以下条件,称之为样本主成分:

样本第一主成分 y1=α1Txy_1 = \alpha_1^T \pmb xy1=α1Txxx 是在

α1Tα1=1\alpha_1^T\alpha_1 = 1α1Tα1=1 条件下,使得 α1Txj(j=1,2,...,n)\alpha_1^T \pmb

x_j (j=1,2,...,n)α1Txxxj(j=1,2,...,n) 的样本方差 α1TSα1\alpha_1^TS\alpha_1α1TSα1

最大的 x\pmb xxxx 的线性变换,以此类推。

样本第 iii 主成分 yi=αiTxy_i = \alpha_i^T \pmb xyi=αiTxxx 是在

αiTαi=1\alpha_i^T\alpha_i = 1αiTαi=1 和 αiTxj\alpha_i^T\pmb x_jαiTxxxj 与

αkTxj(k

3. 主成分分析方法

3.1 相关矩阵的特征值分解算法

针对 m×nm \times nm×n 样本矩阵 XXX ,求样本相关矩阵 R=1n−1XXTR =

\frac{1}{n-1}XX^TR=n−11XXT

再求样本相关矩阵的 kkk 个特征值和对应单位特征向量,构造正交矩阵

V=(v1,v2,...,vk)V = (v_1,v_2,...,v_k)V=(v1,v2,...,vk)

VVV 的每一列对应一个主成分,得到 k×nk \times nk×n 样本主成分矩阵 Y=VTXY=V^TXY=VTX

3.2 矩阵奇异值分解算法

针对 m×nm \times nm×n 样本矩阵 XXX ,X′=1n−1XTX' =

\frac{1}{\sqrt{n-1}}X^TX′=n−11XT

对矩阵 XXX 进行截断奇异值分解,保留 kkk 个奇异值、奇异向量

得到 X′=USVTX' = USV^TX′=USVT

VVV 的每一列对应一个主成分,得到 k×nk \times nk×n 样本主成分矩阵 Y=VTXY=V^TXY=VTX

4. sklearn.decomposition.PCA

sklearn.decomposition.PCA 官网介绍

class sklearn.decomposition.PCA(n_components=None, copy=True,

whiten=False, svd_solver='auto', tol=0.0,

iterated_power='auto', random_state=None)

参数:

郑州哪个人流医院好 http://www.csyhjlyy.com/

n_components:保留主成分个数,没有赋值,特征个数不变

属性:

components_:主成分

explained_variance_:各特征方差

explained_variance_ratio_:各特征方差百分比

singular_values_:主成分的奇异值

n_components_:保留特征个数

import numpy as np

from sklearn.decomposition import PCA

import matplotlib.pyplot as plt

X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])

plt.scatter(X[:, 0], X[:, 1])

plt.show()

for n in range(1, 3):

print("PCA n_components = {}".format(n))

pca = PCA(n_components=n)

pca.fit(X)

print("特征方差")

print(pca.explained_variance_)

print("特征方差占比")

print(pca.explained_variance_ratio_)

print("主成分奇异值")

print(pca.singular_values_)

print("主成分")

print(pca.components_)

print("主成分个数")

print(pca.n_components_)

PCA n_components = 1

特征方差

[7.93954312]

特征方差占比

[0.99244289]

主成分奇异值

[6.30061232]

主成分

[[-0.83849224 -0.54491354]]

主成分个数

1

PCA n_components = 2

特征方差

[7.93954312 0.06045688]

特征方差占比

[0.99244289 0.00755711]

主成分奇异值

[6.30061232 0.54980396]

主成分

[[-0.83849224 -0.54491354]

[ 0.54491354 -0.83849224]]

主成分个数

2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值