Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)

锋哥原创的Scikit-learn Python机器学习视频教程:

2026版 Scikit-learn Python机器学习 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili

课程介绍

本课程主要讲解基于Scikit-learn的Python机器学习知识,包括机器学习概述,特征工程(数据集,特征抽取,特征预处理,特征降维等),分类算法(K-临近算法,朴素贝叶斯算法,决策树等),回归与聚类算法(线性回归,欠拟合,逻辑回归与二分类,K-means算法)等。

Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)

PCA通过线性变换将原始特征转换为一组线性不相关的变量(主成分),按方差大小排序。

PCA的核心思想是:将原始高维特征通过线性变换映射到新的低维坐标系中,这个新坐标系的坐标轴(主成分)按照能够保留原始数据最大方差的方向依次排列。

这意味着第一个新坐标轴(第一主成分)保留了数据中最大程度的方差,第二个新坐标轴(第二主成分)在与第一个正交的前提下保留次大方差,以此类推。

🧠 直观理解:一个经典的比喻

想象你在黑暗中从不同角度观察一个三维物体(比如一个倾斜的椭圆盘子),并记录下它在二维平面上的影子。

  • 某些角度 下的影子(比如正上方)可能看起来只是一个短线,丢失了大量关于盘子形状的信息。

  • 某些角度 下的影子(比如从盘子侧面)则能最大程度地展现它的形状和大小(一个椭圆)。

PCA要做的就是自动找到那个**"最佳观测角度"** ,使得投影后的影子(低维数据)能包含原始物体(高维数据)最多的信息。而这个"信息量",在PCA中就用方差来衡量。方差越大,意味着数据点在新坐标轴上分布得越分散,保留的信息就越多。

📊 数学原理与计算步骤(可分步理解)

假设有一个包含 m 个样本和 n 个特征的数据集 X ),其中 X = [x_1, x_2, ..., x_m] ,每个样本 x_i 是一个 n 维向量。

( 快速理解这个PCA算法原理,可以查看 视频 主成分分析 (PCA) 转载自 抖音 动画讲编程 )

⚙️ 关键参数与概念(以Scikit-learn为例)

参数/概念 说明
n_components 最重要的参数 。指定要保留的主成分个数 k。可以设为整数(如 2),也可以设为 01 之间的浮点数(如 0.95,表示保留95%的原始方差)。
svd_solver 指定求解器。通常使用默认的 'auto' 即可。对于大型数据,使用 'randomized' 的随机SVD方法会更高效。
explained_variance_ 属性。一个数组,表示每个主成分所捕获的方差大小(即特征值)。
explained_variance_ratio_ 属性 。一个数组,表示每个主成分所捕获的方差占总方差的百分比 。这是决定 k 取多少的关键依据。
components_ 属性。投影矩阵 W,每一行是一个主成分(特征向量)。

我们来看一个示例:

复制代码
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.datasets import load_iris

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

# 1. 标准化数据(至关重要!)
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 2. 初始化PCA,保留2个主成分用于可视化
pca = PCA(n_components=2)

# 3. 训练转换数据
X_pca = pca.fit_transform(X_scaled)

print("原始数据形状:", X.shape)
print("降维后数据:", X_pca)

运行结果:

相关推荐
计算机毕设残哥5 分钟前
紧跟大数据技术趋势:食物口味分析系统Spark SQL+HDFS最新架构实现
大数据·hadoop·python·sql·hdfs·架构·spark
MediaTea21 分钟前
Python 编辑器:Visual Studio Code
开发语言·ide·vscode·python·编辑器
深蓝电商API22 分钟前
HTML 解析入门:用 BeautifulSoup 轻松提取网页数据
前端·爬虫·python·beautifulsoup
前路不黑暗@37 分钟前
Java:代码块
java·开发语言·经验分享·笔记·python·学习·学习方法
tirvideo2 小时前
RK3588芯片与板卡全面解析:旗舰级AIoT与边缘计算的核心
人工智能·嵌入式硬件·深度学习·目标检测·机器学习·计算机视觉·边缘计算
程序猿小D2 小时前
【完整源码+数据集+部署教程】【智慧工地监控】建筑工地设备分割系统: yolov8-seg-efficientViT
python·yolo·计算机视觉·数据集·yolov8·yolo11·建筑工地设备分割系统
努力也学不会java2 小时前
【Java并发】揭秘Lock体系 -- 深入理解ReentrantLock
java·开发语言·人工智能·python·机器学习·reentrantlock
扫地的小何尚5 小时前
NVIDIA Dynamo深度解析:如何优雅地解决LLM推理中的KV缓存瓶颈
开发语言·人工智能·深度学习·机器学习·缓存·llm·nvidia
zl21878654489 小时前
Playwright同步、异步、并行、串行执行效率比较
开发语言·python·测试工具
larance9 小时前
asyncio数据流
python