python库umap有效地揭示高维数据的结构和模式初探

 更新时间:2024年01月22日 10:46:59   作者:小寒聊python  
这篇文章主要介绍了python库umap有效地揭示高维数据的结构和模式初探,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

python 库umap

今天给大家分享一个超强的 python 库,umap

https://github.com/lmcinnes/umap 

UMAP 是一种用于降维的算法,可用于类似于 t-SNE 的可视化。UMAP 基于流形学习的概念,旨在更有效地揭示高维数据中的结构和模式。

该算法基于关于数据的三个假设

  • 数据均匀分布在黎曼流形上

  • 黎曼度量是局部常数(或者可以近似为局部常数)

  • 流形是局部连接的

优点

UMAP 作为一种现代的降维技术,具有如下优点。

  • 速度快:UMAP 通常比其他降维技术,如 t-SNE,更快,尤其是在处理大型数据集时。

  • 良好的可扩展性:UMAP能够处理相当大的数据集,同时保持较低的计算和内存要求。

  • 保持全局结构:相比于 t-SNE,UMAP 在保持局部结构的同时,还能较好地保留全局数据结构。

  • 参数少且具有解释性:UMAP的参数较少,而且相对直观易懂,如邻域大小和最小距离。

  • 交互式可视化:其低维表示适合进行交互式数据探索和可视化。

  • 兼容性:UMAP可以与 scikit-learn 等 Python 机器学习库无缝集成。

数学原理

  • 构建高维空间的邻域图:对于每个点,UMAP 在高维空间中寻找其近邻,并基于距离或相似性构建一个加权图。这种加权是通过局部距离度量(如欧氏距离)来实现的。

  • 优化过程:UMAP 尝试找到一个低维表示,其中的点保持着类似于高维数据的局部和全局关系。这是通过最小化高维空间和低维空间之间的交叉熵损失来实现的。

  • 流形假设:UMAP 假设数据分布在某种低维流形上。这意味着即使数据原本存在于高维空间,也可以在更低维的空间中找到其近似表示。

相关公式

高维空间中的距离度量:对于每个点 ,UMAP定义了一个局部距离度量,通常为欧氏距离或其他度量。

交叉熵最小化:UMAP最小化的目标函数基于交叉熵,形式上为:

其中, 是高维空间中点  和  之间的连接概率,而  是低维表示中对应点的相似性度量。

概率分布匹配:UMAP 尝试匹配高维和低维空间中的两个概率分布  和 

优化算法:通常使用随机梯度下降或类似方法来最小化交叉熵损失。

初体验

库的安装

我们可以直接使用 pip 来进行安装,umap 依赖于 scikit-learn 和 numba,确保你已经安装了它们。

pip install umap-learn

如果你想使用绘图功能,可以使用。

pip install umap-learn[plot]

一个案例

这里,我们使用 MNIST 数据集来作为演示。

import umap
from sklearn.datasets import load_digits

digits = load_digits()

mapper = umap.UMAP(n_neighbors=10,min_dist=0.001).fit(digits.data)
umap.plot.points(mapper, labels=digits.target)

以上就是python库umap有效地揭示高维数据的结构和模式初探的详细内容,更多关于python库umap高维数据的资料请关注脚本之家其它相关文章!

相关文章

  • 基于Python实现贪吃蛇小游戏(附源码)

    基于Python实现贪吃蛇小游戏(附源码)

    本次我们将编写一个贪吃蛇的游戏。通过键盘上、下、左、右控制小蛇上、下、左、右移动,吃到食物后长度加1;蛇头碰到自身或窗口边缘,游戏失败,需要的可以参考一下
    2022-11-11
  • python实现优雅的打印json格式文本

    python实现优雅的打印json格式文本

    这篇文章主要介绍了python实现优雅的打印json格式文本方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-08-08
  • Python如何定义有可选参数的元类

    Python如何定义有可选参数的元类

    这篇文章主要介绍了Python如何定义有可选参数的元类,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • Python ckeditor富文本编辑器代码实例解析

    Python ckeditor富文本编辑器代码实例解析

    这篇文章主要介绍了Python ckeditor富文本编辑器代码实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 浅谈Python 中的复数问题

    浅谈Python 中的复数问题

    这篇文章主要介绍了在Python 中的复数问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-05-05
  • python argparse 模块命令行参数用法及说明

    python argparse 模块命令行参数用法及说明

    这篇文章主要介绍了python argparse 模块命令行参数用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例

    python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例

    这篇文章主要介绍了python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例,需要的朋友可以参考下
    2020-02-02
  • Python如何获取文件路径/目录

    Python如何获取文件路径/目录

    这篇文章主要介绍了Python如何获取文件路径/目录,帮助大家更好的利用python处理文件,感兴趣的朋友可以了解下
    2020-09-09
  • 利用Python学习RabbitMQ消息队列

    利用Python学习RabbitMQ消息队列

    RabbitMQ和邮局的主要区别就是RabbitMQ接收、存储和发送的是二进制数据----消息,本篇文章给大家介绍利用Python学习RabbitMQ消息队列,对python消息队列相关知识感兴趣的朋友参考下
    2015-11-11
  • python 类对象的析构释放代码演示

    python 类对象的析构释放代码演示

    这篇文章主要介绍了python 类对象的析构释放代码演示,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-09-09

最新评论