尧图精选

UMAP 文档导读:Uniform Manifold Approximation and Projection 降维技术全景指南

🕒 发布时间:2026/9/26 7:44:06 📁 来源:尧图网络
机器学习数据可视化【免费下载链接】umapUniform Manifold Approximation and Projection项目地址https://gitcode.com/gh_mirrors/um/umap点击查看免费下载output文章UMAP 文档导读Uniform Manifold Approximation and Projection 降维技术全景指南本篇文章是 umap-learnGitHub 加速计划 / um / umap 仓库官方文档入口页 doc/index.rst 的深度导读。UMAPUniform Manifold Approximation and Projection均匀流形近似与投影是一种基于流形学习的非线性降维技术既可用于类似 t-SNE 的可视化也可作为通用的非线性降维预处理手段。读完本文你将掌握 UMAP 的理论立足点、在 conda/PyPI 上的安装方式、sklearn 风格的调用 API、核心参数调优要点以及整套官方文档的导航地图用户指南、背景理论、示例与 API 参考并能沿仓库源码与测试用例进一步深入其底层实现。UMAP 是什么从三个数学假设到模糊拓扑结构根据文档入口页 doc/index.rst 的定位UMAP 与 t-SNE 类似可用于数据可视化但它更强调作为通用的非线性降维方法。整个算法建立在关于数据的三个核心假设之上数据在黎曼流形上均匀分布The data is uniformly distributed on a Riemannian manifold黎曼度量是局部恒定的The Riemannian metric is locally constant, or can be approximated as such流形是局部连通的The manifold is locally connected。基于这三个假设可以用模糊拓扑结构fuzzy topological structure对数据所在的流形进行建模。UMAP 的嵌入过程本质上是在低维空间中寻找一个投影使得该投影的模糊拓扑结构与高维数据的最接近。也就是说UMAP 把降维问题转化为“两个模糊拓扑结构尽可能等价”的优化问题。从源码结构看这一思想在 umap/umap_.py 中得到了完整落地该文件定义了核心类UMAP见 umap/umap_.py#L1454包含从构造近邻图、计算模糊 simplicial 集到谱初始化与随机梯度下降优化嵌入的完整流水线。算法细节可参考论文McInnes, L, Healy, J,UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction, ArXiv e-prints 1802.03426, 2018。此外README 还提到该项目于 2024 年发表了面向科研社区的综述性文章Nature Reviews Methods Primers 4, 82, 2024。补充文档入口页强调“你不必担心这些数学细节”——UMAP 可以像 sklearn 的 t-SNE 一样即插即用地进行降维与可视化这一设计直接体现在其继承 sklearnBaseEstimator的类结构上。安装 umap-learnconda 与 PyPI 双通道官方文档入口页给出了两种主流的安装方式均以umap-learn为包名注意不是umap方式一conda推荐经 conda-forge 团队维护conda install -c conda-forge umap-learnconda-forge 的预编译包覆盖 Linux、OS XmacOS与 Windows 64 位平台。方式二PyPIpippip install umap-learn前提是你已经安装了 numba 与 scikit-learn以及它们依赖的 numpy、scipy。依赖清单与可选扩展依据仓库 pyproject.toml 的声明当前版本0.5.12的运行时依赖为numpy 1.23scipy 1.3.1scikit-learn 1.6numba 0.51.2pynndescent 0.5tqdm并声明requires-python 3.10。README 中给出的基础要求numpy、scipy、scikit-learn、numba、tqdm、pynndescent与之一致。UMAP 之所以依赖 numba是因为其核心计算近邻图构建、嵌入优化大量使用 JIT 编译以换取性能README 也说明原始版本曾用 Cython后迁移到 numba 以获得更好的代码清晰度、简洁性与性能。按需安装的可选扩展组见 pyproject.toml#L48-L62# 绘图功能所需的 matplotlib、datashader、holoviews 等 pip install umap-learn[plot] # Parametric UMAP 所需的 TensorFlowCPU 版 pip install umap-learn[parametric_umap] # x86 处理器上额外的 CPU 优化tbb pip install umap-learn[tbb]其中 Parametric UMAP 依赖 TensorFlow 2.1若未安装 TensorFlow导入umap时 umap/init.py 会给出 ImportWarning并提供一个抛出ImportError的占位类。如果 pip 拉取依赖遇到困难README 建议先用 conda 手动安装依赖再通过 pip 安装 umap-learnconda install numpy scipy conda install scikit-learn conda install numba pip install umap-learn快速上手sklearn 风格的调用 APIumap包从 sklearn 类继承而来因此可以无缝嵌入 sklearn 的 transformer 生态调用 API 与 sklearn 其他变换器一致。文档入口页与 README 都给出了最简示例import umap from sklearn.datasets import load_digits digits load_digits() embedding umap.UMAP().fit_transform(digits.data)只用三行代码即可完成对 64 维手写数字数据集的降维。若需要更可复现或更精细的控制可以先fit得到mapperUMAP 对象再单独变换import umap import umap.plot from sklearn.datasets import load_digits digits load_digits() mapper umap.UMAP().fit(digits.data) umap.plot.points(mapper, labelsdigits.target)其中umap.plot是需要单独导入的绘图子包额外依赖 matplotlib、datashader 与 holoviews见 pyproject.toml 的plot可选组它能快速产出散点图、带悬停交互的交互式图形以及多种诊断图并尽量避免过度绘制。UMAP 还支持稀疏矩阵数据的拟合详见 doc/sparse.rst以及通过 sklearn 标准的transform方法把新数据映射到已有嵌入中从而可作为 sklearn Pipeline 中的预处理步骤使用详见 doc/transform.rst。核心参数从默认值到调优语义文档入口页和 README 重点强调了三个最常用的核心参数它们直接控制流形近似的局部性与嵌入的紧凑程度n_neighbors局部流形近似的邻域规模决定用于局部近似流形结构的邻近点数量。更大的值保留更多全局结构但会损失细节化的局部结构更小的值则侧重保留局部数据关系。一般建议取值在 550 之间1015 是合理的默认选择。源码中该参数的默认值为15取值范围建议在 2100 之间见 umap/umap_.py#L1462。min_dist嵌入点的最小间距控制嵌入允许把点压缩到多近。更大的值让嵌入点分布更均匀更小的值允许算法更精确地针对局部结构进行优化。建议取值范围 0.0010.5默认0.1。该值应与spread默认 1.0决定嵌入点的整体散布尺度配合理解两者共同决定嵌入点聚集/分散的程度。metric输入空间的距离度量决定高维空间中度量距离所用的度量函数。UMAP 内置了大量预定义度量包括常用几何度量euclidean、manhattan、chebyshev、minkowski、canberra、braycurtis、mahalanobis、seuclidean、haversine等非度量距离cosine、correlation、jaccard、dice、hamming、yule等更专用的度量hellinger、ll_dirichlet等。需要参数的度量如minkowski的p、mahalanobis等可通过metric_kwds字典传入参数。用户也可以传入自定义度量函数但为了性能必须是用 numba JIT 编译过的函数从源码结构看距离实现集中在 umap/distances.py。一个完整的带参示例import umap from sklearn.datasets import load_digits digits load_digits() embedding umap.UMAP(n_neighbors5, min_dist0.3, metriccorrelation).fit_transform(digits.data)更多值得关注的参数源码 docstring 依据除上述三个参数外umap/umap_.py#L1454-L1653 的类文档还给出了完整参数清单以下几个对结果影响显著n_components嵌入目标维度默认 2便于可视化可在 2100 内取值——这正是 UMAP 可以作为通用降维手段而非仅可视化工具的原因n_epochs嵌入优化轮数默认 None由数据集规模自动选择大数据集 200、小数据集 500init嵌入初始化方式可选spectral默认对模糊 1-骨架做谱嵌入、random、pca、tswspectral或直接传入一个 numpy 数组作为初始位置learning_rate嵌入优化初始学习率默认 1.0set_op_mix_ratio在模糊并集与交集之间插值以合并局部模糊 simplicial 集取值 0.01.0默认 1.0纯模糊并集local_connectivity局部连通数默认 1不应超过流形的局部内蕴维数repulsion_strength与negative_sample_rate控制低维嵌入优化中负样本的权重与采样数量默认 1.0 与 5random_state控制随机性便于结果复现也见 doc/reproducibility.rstdensmap开启密度保持目标densMAP详见下文。这些参数共同构成了 UMAP 的“可调空间”完整的调参指南见 doc/parameters.rst。文档地图官方文档的全景导航doc/index.rst 作为 Sphinx 文档的master_doc见 doc/conf.py 中master_doc index通过多个toctree把全部文档组织为四大板块。以下链接均已转换为以仓库根目录为起点的相对路径可直接在仓库中继续阅读用户指南 / 教程User Guide / Tutorial涵盖从最基础的用法到高级特性basic_usage.rst基本用法从零开始的完整入门parameters.rst参数详解与调优plotting.rstumap.plot绘图子包的使用reproducibility.rst可复现性与随机种子transform.rst将新数据变换到已有嵌入inverse_transform.rst从嵌入空间反推高维样本parametric_umap.rstParametric UMAP神经网络学习 UMAP 变换transform_landmarked_pumap.rst基于地标点的 Parametric UMAP 变换sparse.rst稀疏矩阵数据支持supervised.rst监督与半监督降维clustering.rst与聚类结合使用如配合 HDBSCANoutliers.rst异常点检测视角下的 UMAPcomposing_models.rst多模型组合densmap_demo.rstdensMAP 密度保持演示mutual_nn_umap.rst互近邻约束的 UMAPdocument_embedding.rst文档/文本嵌入应用embedding_space.rst嵌入空间分析aligned_umap_basic_usage.rst对齐 UMAP 基本用法aligned_umap_politics_demo.rst对齐 UMAP 的实际演示时间演化数据precomputed_k-nn.rst使用预计算的 k 近邻图benchmarking.rst性能基准测试release_notes.rst版本发布记录faq.rst常见问题解答背景理论Background on UMAPhow_umap_works.rstUMAP 算法原理详解含doc/images/下“how_umap_works_*.png”系列原理示意图performance.rst性能分析与规模化建议应用示例Examples of UMAP usageinteractive_viz.rst交互式可视化exploratory_analysis.rst探索性数据分析scientific_papers.rst科研论文中的应用案例API 参考API Referenceapi.rstUMAP 仅有UMAP与继承自它的ParametricUMAP两个公开类该页通过 autodoc 生成完整 API 文档并列出umap.umap_模块中可供细粒度调用的内部函数。配套的交互式 HTML 示例如 doc/aligned_umap_plotly_plot.html、doc/basic_usage_bokeh_example.html、doc/plotting_interactive_example.html也位于 doc 目录中可离线打开体验。超越基础从文档走向源码与测试官方文档索引页以“使用”为主线仓库内还提供了大量可验证的源码与测试证据帮助你理解 UMAP 的实现细节核心实现umap/umap_.py 中的UMAP类负责近邻搜索、模糊 simplicial 集构造与嵌入优化全流程umap/distances.py 集中实现了各种距离度量umap/layouts.py 提供嵌入优化欧氏与通用度量的实现umap/spectral.py 实现谱初始化umap/sparse.py 处理稀疏数据的距离与近邻计算umap/parametric_umap.py 与 umap/aligned_umap.py 则分别实现 Parametric UMAP 与 Aligned UMAP。测试佐证umap/tests 目录下包含 20 余个测试文件覆盖了数据输入test_data_input.py、参数校验test_umap_validation_params.py、度量test_umap_metrics.py、稀疏支持、densMAP、对齐 UMAP、复合模型与谱初始化等可作为你验证自己理解的最小复现样本。可运行示例examples 目录提供了开箱即用的脚本如 examples/digits/digits.py 与 examples/iris/iris.pydoc/conf.py的 sphinx-gallery 配置也以../examples作为示例源notebooks 下还有 Parametric UMAP 系列与参数调优等 Jupyter Notebook 教程。扩展特性速览README 与源码共同佐证densMAP通过umap.UMAP(densmapTrue)开启密度保持目标额外参数dens_frac默认 0.3、dens_lambda默认 2.0、dens_var_shift、output_dens为 True 时fit_transform返回(embedding, radii_original, radii_embedding)元组文档建议 densMAP 场景使用更大的n_neighbors如 30以可靠估计局部密度详见 doc/densmap_demo.rst监督/半监督降维把标签作为y传入fit即可相关参数为target_metric默认categorical-1视为未标注、target_weight默认 0.5Parametric UMAP用神经网络学习 UMAP 变换支持对新数据快速推理、更稳健的逆变换与自编码器式 UMAP示例见 notebooks/Parametric_UMAP。引用与协议如果论文或软件对你的工作有帮助官方文档建议引用算法论文McInnes, L, Healy, J,UMAP: Uniform Manifold Approximation and Projection for Dimension Reduction, ArXiv e-prints 1802.03426, 2018软件论文JOSSMcInnes, Leland, Healy, John, Saul, Nathaniel, Grossberger, Lukas,UMAP: Uniform Manifold Approximation and Projection, The Journal of Open Source Software 3(29):861, 2018综述文章Healy, J., McInnes, L.,Uniform manifold approximation and projection, Nature Reviews Methods Primers 4, 82, 2024另有 densMAPNature Biotechnology, 2021与 Parametric UMAParXiv:2009.12981的专门引用条目完整 BibTeX 见仓库 README.rst 的 Citation 一节。umap 包采用 3-clause BSD 许可见 LICENSE.txt文档本身由 Sphinx 构建doc/Makefile 与 doc/make.bat 分别提供 Unix 与 Windows 的构建脚本。 /output文章赞分享机器学习数据可视化【免费下载链接】umapUniform Manifold Approximation and Projection项目地址https://gitcode.com/gh_mirrors/um/umap点击查看免费下载相关推荐UMAPUniform Manifold Approximation and Projection技术指南原理、核心参数、densMAP 扩展与实战应用UMAPUniform Manifold Approximation and Projection技术指南原理、核心参数、densMAP 扩展与实战应用机器学习数据可视化如何在 AMD 显卡上跑通未改动的 CUDA 应用ZLUDA 完整入门如何在 AMD 显卡上跑通未改动的 CUDA 应用ZLUDA 完整入门 ZLUDA 是一个 CUDA 兼容层让未经修改的 CUDA 应用直接在 AMD GP高性能计算编译器如何用UMAP实现革命性降维初学者必看的完整指南如何用UMAP实现革命性降维初学者必看的完整指南 Uniform Manifold Approximation and ProjectionUMAP是一种机器学习数据可视化上一篇MobileViT-v2模型对比分析为什么选择mobilevitv2_175.cvnets_in22k_ft_in1k下一篇Django-Select2入门教程从安装到实现高级搜索的5个简单步骤创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →