Scikit Learn PCA中fit_transform的作用、与fit的差异及transform步骤解析
Scikit-Learn中PCA的fit、transform与fit_transform区别
核心区别与作用
fit(X):仅完成PCA的统计建模,不对数据做变换。它会分析输入数据X,计算出后续变换所需的关键统计量:包括数据的全局均值(用于中心化)、协方差矩阵,进而推导得到主成分特征向量(沿方差最大方向的正交轴)和对应特征值(各主成分的方差占比)。这些结果会被存储在PCA模型实例中,供后续的transform步骤使用。transform(X):执行实际的PCA数据变换,依赖之前fit得到的统计量。具体操作分为两步:- 将输入数据X减去
fit阶段算出的均值,完成中心化; - 将中心化后的数据投影到
fit得到的主成分特征向量构成的新空间中。
最终输出的是数据在新主成分轴上的坐标,也就是降维后的特征矩阵。
- 将输入数据X减去
fit_transform(X):是fit(X)+transform(X)的合并操作,一次性完成模型统计量计算和对输入数据X的变换,返回变换后的结果。这是处理训练集时最常用的方式,避免重复调用两个方法。
代码示例
from sklearn.decomposition import PCA import numpy as np # 生成5维的随机示例数据 X = np.random.rand(100, 5) # 初始化PCA,指定保留3个主成分 pca = PCA(n_components=3) # 仅拟合统计量,无数据输出 pca.fit(X) # 用已拟合的模型变换数据 X_transformed = pca.transform(X) # 一步完成拟合+变换 X_fit_transformed = pca.fit_transform(X) # 验证两种变换结果一致 print(np.allclose(X_transformed, X_fit_transformed)) # 输出: True
内容的提问来源于stack exchange,提问作者user2138149
相关产品推荐
相关产品推荐

