主成分分析PCA及其代码实现

本章会简要介绍一下主成分分析PCA的基本原理,重点讲解代码实现

一、PCA降维原理

多个⾃变量之间存在强的相关性或者说变量反映的内容是有重复的。这时,由于有太多的⾃变量,我们希望减少⾃变量,⽤新的⾃变量来代替原始的变量来做下⼀步分析。同时,这些新的变量是包含了原始变量的信息的,也能更好的简化和解释问题。
利⽤降维(线性变换)的思想,把多个⾃变量转化为⼏个不相关的主成分。会损失少量信息,PCA就是使降维后,同⼀维度的⽅差最⼤,不同维度相关为0。
主成分是原始变量的线性组合,主成分的数量相对于原始变量数量更少,主成分保留了原始变量的⼤部分信息,各主成分之间相互独⽴。

1.特征根(特征值)

每个主成分都会有⼀个特征根,它可以理解为该主成分携带了多少⾃变量的信息。某⼀特征值除以所有特征值的和就是该特征向量的⽅差贡献率,⽅差⽐例。

2.提取主成分, 相关系数矩阵 OR 协⽅差矩阵

相关矩阵反映的是变量之间的关联程度。是标准的主成分的⽅法。⽤这种⽅法,各变量在主成分分析中权重相同。
协⽅差矩阵,如果某些变量的⽅差也是你想在降维中需要考虑的因素,可以选这个。但可能存在各变量量纲不⼀样的问题。
sklearn中默认是协⽅差矩阵,建议先标准化。

二、py实现PCA

1.加载相应的库

from sklearn.decomposition import PCA
from sklearn import preprocessing
from sklearn import datasets

2.读取数据与标准化

preprocessing.scale()对数据全局进行Z标准化;如果要划分训练集、测试集,不能分别用 scale (),必须用 StandardScaler

iris = datasets.load_iris()
X = preprocessing.scale(iris.data) # Z标准化

3.进行主成分训练

PCA()的第一个参数n_components=2 代表返回前2个主成分;n_components=0.98,指返回满⾜主成分⽅差累计贡献率达到98%的主成分;n_components=None,返回所有主成分。
第二个参数copy是bool类型, 取值维False/True。代表是否将原数据复制。降维,数据会变动。
copy=True时,直接 fit_transform(X),就能够显示出降维后的数据。
copy=False时,需要 fit(X).transform(X) ,才能够显示出降维后的数据。

pca = PCA(n_components=2)
pca.fit(X)
print(f"主成分系数矩阵:{pca.components_}")
print(f"特征值:{pca.explained_variance_}")
print(f"方差解释率{pca.explained_variance_ratio_}")
posted @ 2026-06-18 16:34  王新文  阅读(12)  评论(0)    收藏  举报