吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

简介: 吴恩达《Machine Learning》精炼笔记 9:PCA 及其 Python 实现

系列文章:


吴恩达《Machine Learning》精炼笔记 1:监督学习与非监督学习

吴恩达《Machine Learning》精炼笔记 2:梯度下降与正规方程

吴恩达《Machine Learning》精炼笔记 3:回归问题和正则化

吴恩达《Machine Learning》精炼笔记 4:神经网络基础

吴恩达《Machine Learning》精炼笔记 5:神经网络

吴恩达《Machine Learning》精炼笔记 6:关于机器学习的建议

吴恩达《Machine Learning》精炼笔记 7:支持向量机 SVM

吴恩达《Machine Learning》精炼笔记 8:聚类 KMeans 及其 Python实现



在本文中主要介绍的是数据降维相关的内容,重点讲解了PCA算法

  • 为什么要实施降维
  • 数据压缩
  • 数据可视化
  • PCA算法
  • PCA和线性回归算法的区别
  • PCA算法特点
  • Python实现PCA
  • sklearn中实现PCA



为何降维


在现实高维数据情况下,会有数据样本稀疏、距离计算困难等问题,被称为维数灾难。

解决的方法就是降维,也称之为“维数约简”,即通过某种数据方法将原始高维属性空间转成一个低维“子空间”。在这个子空间中,样本密度大大提高,将高维空间中的一个低维“嵌入”。

image.png



降维Dimensionality Reduction


数据降维主要是有两个动机:

  • 数据压缩Data Compression
  • 数据可视化Data Visualization


数据压缩Data Compression


image.png


上图解释:

  1. 在一个三维空间中的特征向量降至二维的特征向量。
  2. 将三维投影到一个二维的平面上,迫使所有的数据都在同一个平面上。
  3. 这样的处理过程可以被用于把任何维度的数据降到任何想要的维度,例如将1000维的特征降至100维。


数据可视化Data Visualization


降维能够帮助我们进行数据的可视化工作。


image.pngimage.png

image.png

上面图的解释:

  1. 假设给定数据,具有多个不同的属性
  2. 某些属性表示的含义可能相同,在图形中可以放到同一个轴上,进行数据的降维



PCA- Principal Component Analysis


在PCA中,要做的是找到一个方向向量(Vector direction),当把所有的数据都投射到该向量上时,PCA的关键点就是找到一个投影平面使得投影误差最小化。


方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。


image.pngimage.png

image.png


PCA与线性回归的区别

  1. 线性回归中的纵轴是预测值,PCA中是特征属性
  2. 误差不同:PCA是投射误差,线性回归是尝试最小化预测误差。
  3. 线性回归的目的是预测结果,`PCA·是不做任何分析。


image.png


PCA算法

主成分分析中,首先对给定数据进行规范化,使得数据每一变量的平均值为0,方差为1。

之后对数据进行正交变换,用来由线性相关表示的数据,通过正交变换变成若干个线性无关的新变量表示的数据。

新变量是可能的正交变换中变量的方差和(信息保存)最大的,方差表示在新变量上信息的大小。将新变量一次成为第一主成分,第二主成分等。通过主成分分析,可以利用主成分近似地表示原始数据,便是对数据降维。

PCA算法中从n维到k维的过程是

  • 均值归一化。计算所有特征的均值,令xj=xjμj,如果特征不在一个数量级上,需要除以标准差
  • 计算协方差矩阵 covariance matrix

image.png

  • 计算协方差矩阵∑的特征向量 eigenvectors


image.png

在西瓜书中的描述为


image.png


主成分个数确定


关于PCA算法中主成分个数k的确定,一般是根据公式:

image.png

不等式右边的0.01可以是0.05,或者0.1等,都是比较常见的。当为0.01的时候,表示保留了99%的方差数据,即大部分的数据特征被保留了。


image.png


当给定了个数k,协方差矩阵S中求解出来的各个特征值满足公式:

image.png

也就是满足:

image.png

这个和上面的公式是等价的。


重建的压缩表示


重建的压缩表示Reconstruction from Compressed Representation指的是将数据从低维还原到高维的过程。


image.png



将指定的点位置映射到一个三维曲面,反解前面的方程:

image.png


PCA特点

  1. PCA本质上是将方差最大的方向作为主要特征,让这些特征在不同正交方向上没有相关性。
  2. PCA是一种无参数技术,不需要进行任何参数的调节


Python实现PCA


利用numpy、pandas、matplotlib库实现PCA算法


image.png



sklearn中实现PCA


Linear dimensionality reduction using Singular Value Decomposition of the data to project it to a lower dimensional space. The input data is centered but not scaled for each feature before applying the SVD.

用sklearn学习PCA:

https://www.cnblogs.com/pinard/p/6243025.html


实现模块


在scikit-learn中,与PCA相关的类都在sklearn.decomposition包中。最常用的PCA类就是sklearn.decomposition.PCA。

白化:对降维后的数据的每个特征进行归一化,让方差都为1

class sklearn.decomposition.PCA(n_components=None, # 降维后的特征数目,直接指定一个整数
                                copy=True,
                                whiten=False, # 判断是否进行白化,默认是不白化
                                svd_solver='auto', # 指定奇异值分解SVD的方法
                                tol=0.0,
                                iterated_power='auto',
                                random_state=None)


demo


在这里讲解一个例子,利用PCA算法来进行IRIS数据的分类


image.png

相关文章
|
2月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
2月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
2月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
2月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
4月前
|
人工智能 Ruby Python
python__init__方法笔记
本文总结了Python中`__init__`方法的使用要点,包括子类对父类构造方法的调用规则。当子类未重写`__init__`时,实例化会自动调用父类的构造方法;若重写,则需通过`super()`或直接调用父类名称来显式继承父类初始化逻辑。文中通过具体代码示例展示了不同场景下的行为及输出结果,帮助理解类属性与成员变量的关系,以及如何正确使用`super()`实现构造方法的继承。
198 9
|
5月前
|
数据采集 JSON API
Python 实战:用 API 接口批量抓取小红书笔记评论,解锁数据采集新姿势
小红书作为社交电商的重要平台,其笔记评论蕴含丰富市场洞察与用户反馈。本文介绍的小红书笔记评论API,可获取指定笔记的评论详情(如内容、点赞数等),支持分页与身份认证。开发者可通过HTTP请求提取数据,以JSON格式返回。附Python调用示例代码,帮助快速上手分析用户互动数据,优化品牌策略与用户体验。
1021 3
|
5月前
|
数据采集 JSON API
Python 实战!利用 API 接口获取小红书笔记详情的完整攻略
小红书笔记详情API接口帮助商家和数据分析人员获取笔记的详细信息,如标题、内容、作者信息、点赞数等,支持市场趋势与用户反馈分析。接口通过HTTP GET/POST方式请求,需提供`note_id`和`access_token`参数,返回JSON格式数据。以下是Python示例代码,展示如何调用该接口获取数据。使用时请遵守平台规范与法律法规。
|
10月前
|
人工智能 API 开发工具
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
吴恩达发布的开源Python库aisuite,提供了一个统一的接口来调用多个大型语言模型(LLM)服务。支持包括OpenAI、Anthropic、Azure等在内的11个模型平台,简化了多模型管理和测试的工作,促进了人工智能技术的应用和发展。
514 1
aisuite:吴恩达发布开源Python库,一个接口调用多个大模型
|
11月前
|
搜索推荐 Python
Leecode 101刷题笔记之第五章:和你一起你轻松刷题(Python)
这篇文章是关于LeetCode第101章的刷题笔记,涵盖了多种排序算法的Python实现和两个中等难度的编程练习题的解法。
122 3
|
11月前
|
算法 C++ Python
Leecode 101刷题笔记之第四章:和你一起你轻松刷题(Python)
这篇博客是关于LeetCode上使用Python语言解决二分查找问题的刷题笔记,涵盖了从基础到进阶难度的多个题目及其解法。
102 0

推荐镜像

更多