主成分分析是多元线性统计里面的概念,它的英文是 Principal Components Analysis,简称
PCA。主成分分析旨在降低数据的维数,通过保留数据集中的主要成分来简化数据集。简化数据集在很多时候是非常必要的,因为复杂往往就意味着计算资源的大量消耗。通过对数据进行降维,我们就能在不较大影响结果的同时,减少模型学习时间。
主成分分析的数学基原理非常简单,通过对协方差矩阵进行特征分解,从而得出主成分(特征向量)与对应的权值(特征值)。然后剔除那些较小特征值(较小权值)对应的特征,从而达到降低数据维数的目的。
导入 PCA 方法可以通过from sklearn.decomposition import PCA完成。PCA 函数及其默认参数如下所示。
sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False, svd_solver='auto')
其中:
n_components=表示需要保留主成分(特征)的数量。
copy=表示针对原始数据降维还是针对原始数据副本降维。当参数为 False 时,降维后的原始数据会发生改变,这里默认为 True。
whiten=白化表示将特征之间的相关性降低,并使得每个特征具有相同的方差。
svd_solver=表示奇异值分解 SVD 的方法。有 4 参数,分别是:auto,full,arpack,randomized。
在使用 PCA 降维时,我们也会使用到PCA.fit()方法。.fit()是 scikit-learn 训练模型的通用方法,但是该方法本身返回的是模型的参数。所以,通常我们会使用PCA.fit_transform()方法直接返回降维后的数据结果。
import numpy as np# 导入数值计算模块
from sklearn.decomposition import PCA# 导入 PCA 模块
data = np.array([[1,2], [3,4], [5,6], [7,8]])# 新建一个 2 维数组
new_data = PCA(n_components=1).fit_transform(data)# 降维成 1 维并返回值
print(data)# 输出原数据
print(new_data)# 输出降维后的数据
data:[[1 2]
[3 4]
[5 6]
[7 8]]
new data:[[ 4.24264069]
[ 1.41421356]
[-1.41421356]
[-4.24264069]]
二维的数据被降成了一维的