news 2026/7/22 6:07:36

机器学习特征预处理之PCA降维

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器学习特征预处理之PCA降维

示例

def apply_pca(X_train, X_test, n_components=None, explained_variance=0.95): """PCA降维""" if n_components is None and explained_variance: pca = PCA(n_components=explained_variance) else: pca = PCA(n_components=n_components) X_train_pca = pca.fit_transform(X_train) X_test_pca = pca.transform(X_test) cols = [f'PC{i + 1}' for i in range(X_train_pca.shape[1])] return pd.DataFrame(X_train_pca, columns=cols, index=X_train.index), \ pd.DataFrame(X_test_pca, columns=cols, index=X_test.index)

函数功能

这是一个用于主成分分析(PCA)降维的Python函数,可以对训练集和测试集进行降维处理。

参数说明

  • X_train:训练集特征数据

  • X_test:测试集特征数据

  • n_components:指定降维后的维度数(默认为None)

  • explained_variance:累积解释方差比例(默认0.95,即保留95%的信息)

代码逐行解析

1. PCA对象创建

if n_components is None and explained_variance: pca = PCA(n_components=explained_variance) else: pca = PCA(n_components=n_components)
  • 如果用户没有指定维度数(n_components=None)但指定了方差比例,则按方差比例降维

  • 否则使用指定的维度数降维

  • PCA(n_components=0.95)表示选择能保留95%方差的主成分数量

2. 训练和转换

X_train_pca = pca.fit_transform(X_train) # 拟合并转换训练集 X_test_pca = pca.transform(X_test) # 只转换测试集
  • 训练集使用fit_transform:学习PCA参数并转换数据

  • 测试集只使用transform:应用训练集学到的参数转换(避免数据泄露)

3. 列名生成

python

cols = [f'PC{i + 1}' for i in range(X_train_pca.shape[1])]
  • 生成主成分列名:PC1, PC2, PC3...

  • shape[1]是降维后的特征数量

4. 返回DataFrame

return pd.DataFrame(X_train_pca, columns=cols, index=X_train.index), \ pd.DataFrame(X_test_pca, columns=cols, index=X_test.index)
  • 将NumPy数组转换为DataFrame,方便后续操作

  • 保留原始数据的索引,便于追溯

使用示例

python

# 方式1:按方差比例降维 X_train_pca, X_test_pca = apply_pca(X_train, X_test, explained_variance=0.95) # 方式2:指定维度数 X_train_pca, X_test_pca = apply_pca(X_train, X_test, n_components=10) # 方式3:不降维(使用全部主成分) X_train_pca, X_test_pca = apply_pca(X_train, X_test, n_components=None)

注意事项

  1. 数据泄露防范:测试集只应用训练集的PCA参数,这是正确的做法

  2. 参数优先级:当同时指定n_componentsexplained_variance时,n_components优先

  3. 返回格式:返回两个DataFrame便于后续分析和可视化

这个函数是机器学习中特征降维的标准实现,特别适合处理高维数据。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/20 12:37:40

WSL SSH连接配置与优化指南

1. 为什么需要SSH连接WSL?在Windows Subsystem for Linux(WSL)环境中直接使用终端确实方便,但SSH连接能带来三个不可替代的优势:跨平台统一管理:通过SSH协议可以用同一套工具(如MobaXterm/Xshel…

作者头像 李华
网站建设 2026/7/20 12:37:36

非平稳时间序列预测实战:差分策略、GARCH建模与业务诊断三步法

1. 项目概述:为什么非平稳时间序列预测是实际业务中的“硬骨头”“Statistical Forecasting for Time Series Data Part 6: Forecasting Non-Stationary Time Series using…”这个标题一出来,我就知道它戳中了工业界和金融建模一线最常被低估、却最常导…

作者头像 李华
网站建设 2026/7/20 12:37:31

瀑布图实战指南:用差分可视化讲清业务变化逻辑

1. 项目概述:为什么瀑布图是仪表盘里最被低估的“叙事型图表”你有没有在做业务复盘时,面对一堆KPI数字发愁——营收涨了12%,但成本也涨了9%,利润只微增3%;或者市场活动投入50万,带来新增用户8000人&#x…

作者头像 李华
网站建设 2026/7/20 12:37:12

大模型入门:从工作原理、提示词到 Embedding 与 RAG

大模型入门:从工作原理、提示词到 Embedding 与 RAG前言1. 从普通模型到大语言模型1.1 模型究竟是什么1.2 大语言模型“大”在哪里1.3 自监督学习为什么重要1.4 普通任务模型与 LLM 的区别1.5 主流大语言模型2. LLM 的主要能力2.1 语言理解与创作2.2 知识关联、逻辑…

作者头像 李华
网站建设 2026/7/20 12:36:39

智能全维数字赋能,助力中小企实现定制业务全域经营突破

在济南中小微企业赛道中,非标定制、工程配套、个性化服务类商家,普遍存在线上经营碎片化问题。多数企业有优质的工艺、成熟的定制方案、真实的落地案例,却没有系统化的线上展示与获客体系。传统人工运营成本高、输出不稳定,常规线…

作者头像 李华