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: 白化,使得每个特征具有相同的方差。
特征选择原因
- 冗余:部分特征的相关度高,容易消耗计算性能
- 噪声:部分特征对预测结果有负影响
主成分分析【PCA】
-
本质:PCA是一种分析、简化数据集的技术
-
目的:是数据维数压缩,尽可能降低原数据的维数(复杂度),损失少量信息。
-
作用:可以削减回归分析或者聚类分析中特征的数量
下面是使用scikit-learn
中PCA模块的一般流程:
- 导入PCA模块和需要的其他模块
from sklearn.decomposition import PCA
import numpy as np
- 载入数据,将包含多维特征的数据集存储在一个2维numpy数组中
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
- 实例化PCA对象,并选择降维后的特征数
pca = PCA(n_components=2)
- 用fit_transform()方法对数据进行拟合和转换
pca.fit_transform(data)
- 获取转换后的数据、特征值和特征向量
transformed_data = pca.fit_transform(data)
# 方差比例
variance_ratio = pca.explained_variance_ratio_
components = pca.components_
pca.components_
是指在PCA降维过程中所得到的主成分(principal components)。
在PCA中,首先需要计算各个原始特征之间的协方差矩阵,然后通过特征值分解求出该矩阵的特征向量和特征值。PCA采用这些特征向量作为新的坐标系,将原始数据投影到新的坐标系中,得到降维后的特征。
其中,特征向量的数量等于原始数据的特征数量,而主成分的数量等于希望降维到的维度数量。使用pca.components_
可以获得降维后的主成分向量。这些主成分向量是原始特征经过降维后的代表性向量,即它们代表原始特征中的最大方差方向。