Skip to content

PCA 主成分分析

本章目标

  1. 明确本分册对应的 PCA 源码入口与运行方式。
  2. 理解当前 PCA 文档各章节分别负责解释什么内容。
  3. 建立从数据、模型、训练到降维可视化的整体阅读路线——注意这是无监督降维,label 仅用于着色对照。

对应代码速览

组件路径说明
数据生成data_generation/dimensionality.pyDimensionalityData.pca() 生成低秩高维合成数据
数据导出data_generation/__init__.py导出 pca_data
训练封装model_training/dimensionality/pca.pytrain_model(...) 封装 sklearn.decomposition.PCA 训练
端到端流水线pipelines/dimensionality/pca.py完成标准化、2D/3D PCA 训练、投影和降维可视化
降维可视化result_visualization/dimensionality_plot.py绘制降维后的 2D/3D 散点图(按类别着色,轴标注解释占比)

默认配置速览(来自源码)

项目当前实现
训练模型PCA(n_components=2, svd_solver='auto', random_state=42)
数据来源低秩合成数据:base(400×3)@ projection(3×10)+ 高斯噪声(σ=0.5),含伪标签 label
特征预处理StandardScaler().fit_transform(X)——使各特征同等贡献于协方差矩阵
训练方式model.fit(X_scaled)——无监督,不传入标签。先后训练 2D 和 3D 两个独立模型
投影方式model.transform(X_scaled)——将 10 维特征投影到低维主成分空间
评估呈现2D/3D 降维散点图(按伪标签着色)+ explained_variance_ratio_ 日志(各方向 + 累计)

阅读路线

  1. 数学原理
  2. 数据构成
  3. 思路与直觉
  4. 模型构建
  5. 训练与预测
  6. 评估与诊断
  7. 工程实现
  8. 练习与参考文献

如何运行

示例代码

bash
python -m pipelines.dimensionality.pca

理解重点

  • 这个命令会串起当前 PCA 分册中最核心的工程流程。
  • 运行后会先后训练 2D PCA 和 3D PCA 两个独立模型,分别生成 2D 和 3D 降维散点图。
  • 当前流程是无监督降维——label 是数据生成时构造的伪标签,仅用于可视化着色,不参与 fit()。这与 LDA(有监督降维)有本质区别。
  • 同时训练 2D 和 3D 两个模型的做法在所有算法分册中独一无二——旨在展示不同降维程度下的结构保留对比。

先修

小结

  • 本分册严格对应当前仓库中的 PCA 源码实现。
  • PCA 的核心特点:无监督降维 + 最大化投影方差 + 维数无类别限制 + SVD 数值求解——与 LDA(有监督、最大化类间/类内散度比、K1 维上限)在建模目标上有本质区别。
  • 当前使用低秩合成数据(3 个真实方向隐藏在 10 维特征中)+ PCA(n_components=2),是展示无监督方差压缩最经典的教学配置。