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中的整除运算及其应用场景

    在Python编程中,整除运算(也称为整商运算)是一个常见的操作,它用于计算两个数相除后的整数部分,下面就跟随小编一起来了解一下它的语法,工作原理和实际应用案例吧
    2024-11-11
  • python修改和新增字典中键值对的2种方法

    python修改和新增字典中键值对的2种方法

    这篇文章主要给大家介绍了关于python修改和新增字典中键值对的2种方法,在Python中字典是一系列键值对,每个键都与一个值相关联,与键相关联的值可以是数、字符串、列表乃至字典,需要的朋友可以参考下
    2023-07-07
  • python中try Except抛出异常的使用方式

    python中try Except抛出异常的使用方式

    这篇文章主要介绍了python中try Except抛出异常的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Python中else怎么用?else的用法总结

    Python中else怎么用?else的用法总结

    这篇文章主要介绍了Python中else的用法总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 使用Python判断IP地址合法性的方法实例

    使用Python判断IP地址合法性的方法实例

    这篇文章主要介绍了使用Python判断IP地址合法性的方法实例,需要的朋友可以参考下
    2014-03-03
  • 详解python with 上下文管理器

    详解python with 上下文管理器

    这篇文章主要介绍了python with和上下文管理器的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-09-09
  • 对python自动生成接口测试的示例讲解

    对python自动生成接口测试的示例讲解

    今天小编就为大家分享一篇对python自动生成接口测试的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python的dict判断key是否存在的方法

    python的dict判断key是否存在的方法

    在本篇内容里小编给大家整理的是一篇关于python的dict判断key是否存在的方法,有需要的朋友们可以参考下。
    2020-12-12
  • Pytorch torch.repeat_interleave()用法示例详解

    Pytorch torch.repeat_interleave()用法示例详解

    torch.repeat_interleave() 是 PyTorch 中的一个函数,用于按指定的方式重复张量中的元素,这篇文章主要介绍了Pytorch torch.repeat_interleave()用法示例详解,需要的朋友可以参考下
    2024-01-01
  • Python环境变量设置方法

    Python环境变量设置方法

    默认情况下,在windows下安装python之后,系统不会自动添加相应的环境变量。此时在命令行输入python命令是不能执行的,配置方法如下
    2016-08-08

最新评论