sklearn之主成分分析pca

发布时间 2023-05-17 12:18:28作者: 三叶草body

sklearn之主成分分析pca

scikit-learn中,CA是主成分分析的缩写。主成分分析是一种常用的线性降维技术,可以将多维数据集降到较低的特征维度,并保留数据集的大部分特征信息。在sklearn中,使用PCA需要引入PCA模块,并通过实例化一个PCA对象来使用它的方法和属性。例如,可以使用PCA模块的fit_transform()函数来对数据进行训练和转换。在转换后,我们可以获取转换后的数据,以及相应的特征向量和奇异值,以便进一步分析数据。

PCA一般的步骤:

  • 对原始数据零均值化
  • 求协方差矩阵
  • 然后对协方差矩阵求特征向量和特征值,这些特征向量组成了新的特征空间

PCA类的参数:

  • sklearn.decomposition.PCA(n_components=None, copy=True, whiten=False)
    • n_components: CA算法中要保留的主成分个数n, 即保留下来的特征个数。
    • copy: 表示是否在运行算法时,将原始数据复制一份。若为True,则运行PCA算法后,原始训练数据的值不会改变;若为False,在原始数据上进行降维计算。
    • whiten: 白化,使得每个特征具有相同的方差。

特征选择原因

  1. 冗余:部分特征的相关度高,容易消耗计算性能
  2. 噪声:部分特征对预测结果有负影响

主成分分析【PCA】

  • 本质:PCA是一种分析、简化数据集的技术

  • 目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。

  • 作用:可以削减回归分析或者聚类分析中特征的数量

下面是使用scikit-learn中PCA模块的一般流程:

  1. 导入PCA模块和需要的其他模块
from sklearn.decomposition import PCA
import numpy as np
  1. 载入数据,将包含多维特征的数据集存储在一个2维numpy数组中
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
  1. 实例化PCA对象,并选择降维后的特征数
pca = PCA(n_components=2)
  1. 用fit_transform()方法对数据进行拟合和转换
pca.fit_transform(data)
  1. 获取转换后的数据、特征值和特征向量
transformed_data = pca.fit_transform(data)
# 方差比例
variance_ratio = pca.explained_variance_ratio_
components = pca.components_

pca.components_是指在PCA降维过程中所得到的主成分(principal components)。

在PCA中,首先需要计算各个原始特征之间的协方差矩阵,然后通过特征值分解求出该矩阵的特征向量和特征值。PCA采用这些特征向量作为新的坐标系,将原始数据投影到新的坐标系中,得到降维后的特征。

其中,特征向量的数量等于原始数据的特征数量,而主成分的数量等于希望降维到的维度数量。使用pca.components_可以获得降维后的主成分向量。这些主成分向量是原始特征经过降维后的代表性向量,即它们代表原始特征中的最大方差方向。