PCA(主成分分析)降维详解

一、什么是 PCA

PCA(Principal Component Analysis,主成分分析)是一种常用的数据降维方法。它通过线性变换将原始的高维数据映射到低维空间,同时尽可能保留原数据的主要信息(即方差信息)。

一句话总结:

PCA 找到数据变化最大的方向,把数据投影到这些方向上,从而减少维度、压缩数据,同时降低冗余和噪声。


二、PCA 的主要作用

  1. 数据降维
    减少特征数量,加快模型训练速度。

  2. 降噪
    去除方差较小、贡献不大的特征,减少噪声影响。

  3. 特征提取
    把原特征组合成新的主成分,减少相关性。

  4. 可视化
    将高维数据映射到二维或三维,方便绘图观察。


三、PCA 的核心思想

PCA 的核心思想是:

  1. 找到数据方差最大的方向(主成分方向)

  2. 将数据投影到这些方向上

  3. 选择前 k 个主成分作为新的特征空间

方差越大,表示数据在该方向的变化信息越多,保留它可以最大化信息量。


四、PCA 数学推导(简化版)

假设数据集为 X(已中心化):

  1. 计算协方差矩阵

  2. 求特征值和特征向量

    • 特征向量 vi 表示主成分方向

    • 特征值 λi 表示方差大小

  3. 按特征值从大到小排序
    取前 k 个特征向量组成投影矩阵 W

  4. 降维


五、PCA 实现步骤

  1. 数据标准化(均值为 0,方差为 1)

  2. 计算协方差矩阵

  3. 求特征值和特征向量

  4. 选择前 k 个主成分

  5. 将数据投影到新空间


六、PCA 的优缺点

优点

  • 降维有效,速度快

  • 去除冗余特征,减少过拟合

  • 对噪声有一定抑制作用

缺点

  • 仅适用于线性降维

  • 主成分是特征组合,不易解释含义

  • 对特征缩放敏感,需要标准化


七、PCA 应用场景

  • 图像压缩(如人脸识别中的特征提取)

  • 高维数据可视化(如基因数据、股票数据)

  • 机器学习前的数据预处理


八、PCA() 函数原型和参数表

class sklearn.decomposition.PCA(n_components=None,*,copy=True,whiten=False,svd_solver='auto',tol=0.0,iterated_power='auto',n_oversamples=10,power_iteration_normalizer='auto',random_state=None
)

参数类型 / 取值范围默认值作用说明
n_componentsint / float / 'mle' / NoneNone- int:降到指定维度- float ∈ (0,1]:保留的累计方差比例(svd_solver='full' 时有效)- 'mle':自动估计最佳维度(svd_solver='full' 时)- None:保留 min(n_samples, n_features) 个主成分
copyboolTrue是否在降维前复制数据,False 则在原数组上执行(可能修改原数据)
whitenboolFalse是否将输出的主成分缩放为单位方差(去相关+标准化),可能改变原数据的尺度含义
svd_solver'auto' / 'full' / 'arpack' / 'randomized' / 'covariance_eigh''auto'- 'auto':自动选择- 'full':精确 SVD- 'arpack':截断 SVD(适合小规模特征子集)- 'randomized':随机近似 SVD(高维快)- 'covariance_eigh':特征值分解协方差矩阵(样本≫特征时快)
tolfloat0.0SVD 收敛阈值(对迭代方法有效)
iterated_powerint / 'auto''auto'随机 SVD 的迭代次数(通常保持默认)
n_oversamplesint10随机 SVD 的过采样参数(svd_solver='randomized' 时)
power_iteration_normalizer'auto' / 'QR' / 'LU' / None'auto'随机 SVD 的幂迭代归一化方式
random_stateint / RandomState / NoneNone随机种子(svd_solver='randomized' 时保证结果可复现)

九、PCA Python 实战

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  # 使用微软雅黑字体
plt.rcParams['axes.unicode_minus'] = False  # 处理负号显示异常# 1. 加载数据
iris = load_iris()
X = iris.data
y = iris.target# 2. 创建 PCA 模型(降到 2 维)
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X)# 3. 可视化
plt.figure(figsize=(8,6))
for target, color, label in zip([0,1,2], ['r','g','b'], iris.target_names):plt.scatter(X_pca[y == target, 0], X_pca[y == target, 1], c=color, label=label)plt.xlabel('主成分 1')
plt.ylabel('主成分 2')
plt.title('PCA 降维后的鸢尾花数据')
plt.legend()
plt.show()# 4. 方差贡献率
print("各主成分方差贡献率:", pca.explained_variance_ratio_)
# 输出结果:各主成分方差贡献率: [0.92461872 0.05306648]

输出示例:

各主成分方差贡献率: [0.92461872 0.05306648]

说明前两个主成分保留了约 97.7% 的信息。


十、PCA 可视化原理

PCA 本质上是在找一组新的坐标轴(主成分轴),数据被重新投影到这些轴上,从而实现降维。
在二维图中,这些主成分轴相当于旋转后的新坐标系。


十一、总结

  • PCA 是通过最大化方差来提取主要特征的线性降维方法。

  • 核心步骤是计算协方差矩阵求特征值和特征向量投影到主成分。

  • 适合在特征数量大、存在相关性、需要可视化的场景使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93255.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93255.shtml
英文地址,请注明出处:http://en.pswp.cn/web/93255.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

把 AI 装进“冰箱贴”——基于超低功耗语音合成的小屏电子价签

标签:电子价签、语音合成、TTS、超低功耗、电子墨水、BLE、离线语音 ---- 1. 背景:价签也要开口说话? 超市做促销,顾客拿价签一扫,“今日番茄 2.99 元/斤,会员再享 9 折” 直接语音播放。 硬件限制&#xf…

挖漏洞是什么意思?挖漏洞赚钱入门到精通,收藏这篇就够了!

挖漏洞是什么意思?挖漏洞赚钱入门到精通,收藏这篇就够了! 什么是漏洞挖掘 漏洞挖掘是指通过分析软件、系统或网络中存在的安全漏洞来发现并利用这些漏洞。漏洞挖掘是信息安全领域的一项重要工作,可以帮助企业和组织提高系统的安…

如何理解AP中SM中宿主进程?

在AUTOSAR Adaptive Platform(AP)中,状态管理(State Management, SM)的宿主进程(Host Process) 是实现状态机运行的核心载体,其本质与运作机制可通过以下结构化解析深入理解&#xf…

无人机光电探测模块技术分析

一、技术要点1. 多光谱成像技术 可见光与红外融合:白天依赖可见光高分辨率成像(识别外形、颜色),夜间或低光照条件下切换至红外热成像(捕捉0.5℃级温差),通过双波段互补提升全天候能力。 激光…

第40周——GAN入门

目录 目录 目录 前言 一、定义超参数 二、下载数据 三、配置数据 四、定义鉴别器 五、训练模型并保存 总结 前言 🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、定义超参数 import argparse import os i…

Nginx性能优化与安全配置:打造高性能Web服务器

系列文章索引: 第一篇:《Nginx入门与安装详解:从零开始搭建高性能Web服务器》第二篇:《Nginx基础配置详解:nginx.conf核心配置与虚拟主机实战》第三篇:《Nginx代理配置详解:正向代理与反向代理…

二分算法(模板)

例题1: 704. 二分查找 - 力扣(LeetCode) 算法原理:(二分) 通过遍历也可以通过,但是二分更优且数据量越大越能体现。 二分思路: 1.mid1 (left right)/2 与 mid2 right (right …

VUE3 学习笔记2 computed、watch、生命周期、hooks、其他组合式API

computed 计算属性在vue3中,虽然也能写vue2的computed,但还是更推荐使用vue3语法的computed。在Vue3中,计算属性是组合式API,要想使用computed,需要先对computed进行引入:import { computed } from vuecomp…

【java面试day13】mysql-定位慢查询

文章目录问题💬 Question 1相关知识问题 💬 Question 1 Q:这条sql语句执行很慢,你如何分析呢? A:当一条 SQL 执行较慢时,可以先使用 EXPLAIN 查看执行计划,通过 key 和 key_len 判…

3分钟解锁网页“硬盘“能力:离线运行VSCode的新一代Web存储技术

Hi,我是前端人类学(之前叫布兰妮甜)! “这不是浏览器,这是装了个硬盘。” —— 用户对现代Web应用能力的惊叹 随着Origin Private File System和IndexedDB Stream等新技术的出现,Web应用现在可以在用户的设…

LT6911GXD,HD-DVI2.1/DP1.4a/Type-C 转 Dual-port MIPI/LVDS with Audio 带音频

简介LT6911GXD是一款高性能HD-DVI2.1/DP1.4a/Type-c转Dual-port MIPI/LVDS芯片,兼容 HDMI2.1、HDMI2.0b、HDMI1.4、DVI1.0、DisplayPort 1.4a、eDP1.4b 等多种视频接口标准。支持4K(38402160)60Hz的DSC直通。应用场景AR/VR设备LT6911GXD 支持高达 4K(384…

【100页PPT】数字化转型某著名企业集团信息化顶层规划方案(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92808811/91662628 资料解读:数字化转型某著名企业集团信息化顶层规划方案 详细资料请看本解读文章的最后内容 作为企业数字化转型领域的…

高精度标准钢卷尺优质厂家、选购建议

高精度标准钢卷尺的优质厂家通常具备精湛工艺与权威精度认证等特征,能为产品质量提供保障。其选购需兼顾精度标识、使用场景、结构细节等多方面,具体介绍如下:一、高精度标准钢卷尺优质厂家**1、河南普天同创:**PTTC-C5标准钢卷尺…

38 C++ STL模板库7-迭代器

C STL模板库7-迭代器 文章目录C STL模板库7-迭代器一、迭代器的核心作用二、迭代器的五大分类与操作三、关键用法与代码示例1. 迭代器的原理2. 迭代器用法与示例3. 迭代工具用法示例4. 使用技巧迭代器是C中连接容器与算法的通用接口,提供了一种访问容器元素的统一方…

【0基础3ds Max】学习计划

3ds Max 作为一款功能强大的专业 3D 计算机图形软件,在影视动画、游戏开发、建筑可视化、产品设计和工业设计等众多领域有着广泛的应用。 目录前言一、第一阶段:基础认知(第 1 - 2 周)​二、第二阶段:建模技术学习&…

用 Enigma Virtual Box 将 Qt 程序打包成单 exe

上一篇介绍了用windeployqt生成可运行的多文件程序,但一堆文件分发起来不够方便。有没有办法将所有文件合并成一个 exe? 答案是肯定的 用Enigma Virtual Box工具就能实现。本文就来讲解如何用它将 Qt 多文件程序打包为单一 exe,让分发更轻松。 其中的 一定要选 第二个 一…

【LeetCode 热题 100】45. 跳跃游戏 II

Problem: 45. 跳跃游戏 II 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向后跳转的最大长度。换句话说&#xff0c;如果你在索引 i 处&#xff0c;你可以跳转到任意 (i j) 处&#xff1a; 0 < j < nums[i] 且 i j &…

池式管理之线程池

1.初识线程池问&#xff1a;线程池是什么&#xff1f;答&#xff1a;维持管理一定数量的线程的池式结构。&#xff08;维持&#xff1a;线程复用 。 管理&#xff1a;没有收到任务的线程处于阻塞休眠状态不参与cpu调度 。一定数量&#xff1a;数量太多的线程会给操作系统带来线…

婴儿 3D 安睡系统专利拆解:搭扣与智能系带的锁定机制及松紧调节原理

凌晨2点&#xff0c;你盯着婴儿床里的小肉团直叹气。刚用襁褓裹成小粽子才哄睡的宝宝&#xff0c;才半小时就蹬开了裹布&#xff0c;小胳膊支棱得像只小考拉&#xff1b;你手忙脚乱想重新裹紧&#xff0c;结果越裹越松&#xff0c;裹布滑到脖子边&#xff0c;宝宝突然一个翻身&…

pandas中df.to _dict(orient=‘records‘)方法的作用和场景说明

df.to _dict(orientrecords) 是 Pandas DataFrame 的一个方法&#xff0c;用于将数据转换为字典列表格式。以下是详细解释及实例说明&#xff1a; 一、核心含义作用 将 DataFrame 的每一行转换为一个字典&#xff0c;所有字典组成一个列表。 每个字典的键&#xff08;key&#…