首页/新闻资讯/正文详情

UMAP 结果可视化与诊断:umap.plot 完整实战指南

发布时间:2026/9/26 21:09:45 来源:云帆数科 栏目:资讯中心
UMAP 结果可视化与诊断:umap.plot 完整实战指南
机器学习数据可视化【免费下载链接】umapUniform Manifold Approximation and Projection项目地址https://gitcode.com/gh_mirrors/um/umap点击查看免费下载UMAPUniform Manifold Approximation and Projection最常见的用途之一就是降维到 2 维后进行可视化。为此umap包内置了umap.plot工具模块实现位于 umap/plot.py它以极简的 API 提供散点图、大数据集渲染、交互式图表、连通性图以及多种诊断图让开发者无需掌握 matplotlib、datashader、bokeh 的复杂细节就能快速产出高质量图表。阅读本文后你将掌握如何用umap.plot.points绘制带标签/连续值着色的嵌入散点图如何自动切换 datashader 渲染大规模数据如何用 bokeh 构建带 hover 提示的交互图以及如何用umap.plot.diagnostic从 PCA 色彩、向量量化、局部维度、邻域保持度四个角度评估嵌入质量。环境准备与依赖umap.plot并不属于umap的默认依赖。核心包依赖仅包含 numpy、scipy、scikit-learn、numba、pynndescent、tqdm 等见 pyproject.toml而绘图模块额外需要matplotlib静态散点图的渲染与坐标轴控制pandas构建 hover 数据、组织绘图数据datashader大数据集栅格化渲染与边捆绑edge bundlingbokeh交互式图表与 hover 工具holoviews大数据量交互图的 datashader 后端集成另外源码还会用到colorcet与scikit-image见 umap/plot.py。这些库均可用 pip 或 conda 安装。通过 pip 可以一条命令装齐全部绘图依赖pip install umap-learn[plot]或使用 condaconda install pandas matplotlib datashader bokeh holoviews colorcet scikit-image在 pyproject.toml 中plot可选依赖还额外包含了seaborn与dask。若缺少任一绘图依赖导入umap.plot会抛出ImportError并在警告信息中给出上述安装提示。安装完成后即可导入import umap.plot准备示例数据本文沿用官方文档的演示流程先加载三份经典数据集手写数字 pendigits、完整 MNIST 与 Fashion-MNIST。import sklearn.datasets import pandas as pd import numpy as np import umap pendigits sklearn.datasets.load_digits() mnist sklearn.datasets.fetch_openml(mnist_784) fmnist sklearn.datasets.fetch_openml(Fashion-MNIST)首先在 pendigits 上拟合一个标准的 UMAP 模型mapper umap.UMAP().fit(pendigits.data)umap.plot系列绘图函数的核心输入就是这个训练完毕的mapper对象——它们会从mapper.embedding_中读取嵌入坐标从mapper.metric、mapper.n_neighbors、mapper.min_dist等属性读取参数信息见 umap/plot.py并在图中自动加水印标注。基础散点图umap.plot.points最直接的用法是把训练好的 UMAP 模型直接传给umap.plot.pointsumap.plot.points(mapper)points函数会自动根据数据密度选择点的大小并把本次训练使用的 UMAP 参数n_neighbors、min_dist若使用了非标准metric还会附带 metric 名称以水印形式标注在图上。该函数返回 matplotlib 的 axes 对象因此你可以继续调用任意 matplotlib 函数来添加标题、轴标签等。按类别标签着色数据常常带有标签来自真值、聚类或其他途径此时只需通过labels关键字传入标签数组umap.plot.points会自动按类别选择分类色映射着色umap.plot.points(mapper, labelspendigits.target)按连续值着色如果附加数据是连续型变量则应使用values关键字数据会按连续色映射着色umap.plot.points(mapper, valuespendigits.data.mean(axis1), themefire)注意labels与values互斥同时传入会抛出ValueError见 umap/plot.py。主题theme与精细控制points内置了 9 种预定义主题每种主题统一规定了连续色映射、分类色映射、背景色与边色主题连续 cmap分类 color_key_cmap背景firefirerainbowblackviridisviridisSpectralblackinfernoinfernoSpectralblackblueBluestab20whiteredRedstab20bwhitegreenGreenstab20cwhitedarkbluedarkbluerainbowblackdarkreddarkredrainbowblackdarkgreendarkgreenrainbowblack这些主题的实际定义可以在 umap/plot.py 中查看其中fire、darkblue、darkgreen、darkred、darkpurple等专用色映射由colorcet生成并注册进 matplotlib见 umap/plot.py。指定theme会覆盖对应的cmap、color_key_cmap、background参数。若想完全自定义可以同时指定color_key_cmap分类色映射与background背景色例如用黑色背景配合 Paired 分类色映射umap.plot.points(mapper, labelspendigits.target, color_key_cmapPaired, backgroundblack)points还支持以下参数完整签名见 umap/plot.pycolor_key字典标签 →#RRGGBB颜色字符串或数组为每个类别提供一个颜色用于精确指定类别颜色cmap连续色映射名默认Blues无标签/值时会用于按密度着色width/height输出图像像素尺寸默认 800 × 800show_legend是否显示图例默认Truesubset_points布尔数组只绘制被选中的子集点ax传入 matplotlib axes 对象以在既有坐标系上绘制alpha透明度取值 01超出范围会抛错见 umap/plot.py。需要说明的是umap.plot的目标是简单易用并不追求对绘图细节的全面掌控需要精细调优的读者官方建议直接使用 matplotlib、datashader 与 bokeh 本身。大数据集绘制自动切换 datashader当数据量很大时普通散点图容易被过度绘制overplotting欺骗密集簇的标记层层堆叠会让人误以为其中只有少量点。调小点大小或增加 alpha 通道只能部分缓解无法根治。umap.plot.points内置了自动切换逻辑见 umap/plot.py当点数超过width * height // 10即每 10 个像素超过 1 个点时自动改用 datashader 渲染否则使用 matplotlib。以 Fashion-MNIST 为例mapper umap.UMAP().fit(fmnist.data) umap.plot.points(mapper)渲染管线由_datashade_points实现见 umap/plot.py先把嵌入坐标包装为 pandas DataFrame用ds.Canvas建画布按ds.count密度、ds.count_cat按类别计数配合color_key或color_key_cmap或按值分桶聚合再经tf.shade着色并设置背景。datashader 路径下 alpha 被换算为 0255 的整数范围见 umap/plot.py。所有与points相同的选项标签、主题、值着色等在 datashader 路径下依然生效用户无需感知后端差异umap.plot.points(mapper, labelsfmnist.target, themefire)交互式绘图与 hover 工具静态图之外umap.plot还提供基于 bokeh 的交互式绘图支持平移、缩放以及对数据点悬停查看详细信息。先训练一个 Fashion-MNIST 前 30000 条子集的模型mapper umap.UMAP().fit(fmnist.data[:30000])hover 提示信息通过一个 DataFrame 构造每一行对应一个数据点顺序与嵌入一致每一列是要在提示框中展示的字段。这里构造包含索引、目标类别号以及类别名称的 hover 数据hover_data pd.DataFrame({index: np.arange(30000), label: fmnist.target[:30000]}) hover_data[item] hover_data.label.map( { 0: T-shirt/top, 1: Trouser, 2: Pullover, 3: Dress, 4: Coat, 5: Sandal, 6: Shirt, 7: Sneaker, 8: Bag, 9: Ankle Boot, } )在 notebook 中展示 bokeh 图需要先启用 notebook 输出模式umap.plot.output_notebook()然后调用umap.plot.interactive其 API 与umap.plot.points高度一致额外支持hover_data关键字bokeh 有多个输出目标在 notebook 内展示还需对结果调用showp umap.plot.interactive(mapper, labelsfmnist.target[:30000], hover_datahover_data, point_size2) umap.plot.show(p)plotting_interactive_example.html 就是官方通过 doc/plotting_example_interactive.py 生成的交互示例页面后者展示了用umap.plot.output_file(...)输出到独立 HTML 文件的等价做法。interactive支持与points相同的全部美学参数主题、按标签/值着色等并额外提供tools自定义 bokeh 工具列表默认pan,wheel_zoom,box_zoom,save,reset,help若列表中包含HoverTool则不会自动生成基于hover_data的提示框见 umap/plot.pypoint_size固定点大小默认按数据量估算interactive_text_search在图上添加文本搜索框输入关键字可高亮匹配点匹配点 alpha 为interactive_text_search_alpha_contrast非匹配点为1 - alpha搜索列默认取 hover_data 各列与标签列可通过interactive_text_search_columns指定实现见 umap/plot.py。值得注意的是当点数量超过阈值时interactive会切换到 holoviews datashader 渲染见 umap/plot.py此时 hover 提示、文本搜索与 alpha 参数不可用函数会发出警告并建议对数据做子采样。绘制连通性connectivityUMAP 内部先构造一个近似流形的拓扑表示实践中可简化为带权图即mapper.graph_。把该图叠加到嵌入坐标上可以直观理解嵌入结果与原始连通结构的关系也常作为诊断视图。使用umap.plot.connectivityumap.plot.connectivity(mapper, show_pointsTrue)其实现见 umap/plot.py将mapper.graph_.tocoo()转为(source, target, weight)边表用 datashader 的ds.Canvas画布与tf.shade渲染边show_pointsTrue时叠加用_datashade_points绘制的点通过tf.stack合成否则仅显示边。相关参数edge_cmap边的色映射默认gray_r主题会覆盖它edge_bundling边捆绑方法支持None或hammer。connectivity与points共享标签/值着色、主题、背景、宽高等参数。若启用 hammer 边捆绑umap.plot.connectivity(mapper, edge_bundlinghammer)hammer 边捆绑能显著减少视觉杂乱但对大图计算代价很高源码会在执行前发出明确警告见 umap/plot.py大数据集需谨慎使用。诊断绘图umap.plot.diagnosticumap.plot.diagnostic提供多种嵌入质量诊断视图见 umap/plot.pydiagnostic_type支持pca、ica、vq、local_dim、neighborhood以及一次输出全部子图的all完整类型列表定义于 umap/plot.py。以下以完整 MNIST 数据为例mapper umap.UMAP().fit(mnist.data)PCA 全局结构诊断diagnostic_typepca先用保留全局结构的 PCA 把数据降到 3 维将 3 维坐标归一化到 01 后映射为 RGB 颜色再用这些颜色给嵌入点着色从而观察大规模全局结构在嵌入中的表现umap.plot.diagnostic(mapper, diagnostic_typepca)期望看到的是颜色整体平滑过渡、布局大体尊重颜色渐变。若相邻聚类之间存在颜色翻转例如某个簇上下颠倒、与邻近簇色调不连续通常意味着优化过程中该簇曾被垂直翻转且未被纠正提示嵌入在该区域存在全局结构失真。向量量化VQ诊断diagnostic_typevq用 KMeans 找到 3 个代表中心以每个点到这三个中心的距离归一化作为 RGB 颜色实现见 umap/plot.py。与 PCA 类似它也刻画数据的宏观全局结构umap.plot.diagnostic(mapper, diagnostic_typevq)通过对比 PCA 与 VQ 两种视图可以更可靠地判断哪些簇发生了翻转、哪些区域嵌入较好。局部维度诊断diagnostic_typelocal_dim估计每个点周围的局部维度对每个点的近邻做 PCA取累计解释方差比首次超过local_variance_threshold默认 0.8的维数作为局部维度估计见 umap/plot.py。理想情况下局部维度应接近嵌入维度局部维度高的区域说明该处数据本身自由度大UMAP 在二维下更难准确表示因此嵌入在这些区域的可靠性较低。local_dims umap.plot.diagnostic(mapper, diagnostic_typelocal_dim)MNIST 图中左下角数字 1簇局部维度最低书写方式自由度小而中间区域局部维度较高——高维数据压缩到二维必然有妥协这些区域的嵌入要谨慎解读。上例中该函数返回的local_dims是局部维度数组本身diagnostic支持return_diagnosticsTrue返回(ax, 诊断数据)与plot_resultFalse不绘图、直接返回诊断数据便于你拿这些数值做进一步分析。邻域保持度诊断diagnostic_typeneighborhood用 Jaccard 指数衡量高维空间中每个点的局部邻域在嵌入中被保留的程度交集大小除以两个邻域高维与嵌入空间的并集大小。数值越高表示该点局部邻域保持得越准确。实现上高维邻域取自模型内部的 kNN 搜索_nhood_search见 umap/plot.py小数据用成对距离矩阵、大数据用_knn_search_index嵌入邻域用 KDTree 查询二者通过 numba 加速的_nhood_compare计算 Jaccard 指数见 umap/plot.pynhood_size参数控制邻域大小默认 15。umap.plot.diagnostic(mapper, diagnostic_typeneighborhood)从图上可以看到局部维度较低的点与上一张图对照通常邻域保持得更好簇边缘边界清晰的保持度往往高于簇中心。这张图直观标出了哪些区域可以信赖、哪些区域在压缩到二维时不得不做出妥协。一键输出全部诊断diagnostic_typeall会把pca、ica、vq、local_dim、neighborhood五个子图排成网格一次性输出见 umap/plot.py适合快速总览嵌入质量。辅助工具show 与近邻距离分布umap.plot.show(plot_to_show)统一调度显示matplotlib axes 走plt.show()bokeh figure 走 bokeh 的showholoviews DynamicMap 会被渲染为 bokeh 后端后显示无法识别的类型会抛ValueError见 umap/plot.pyumap.plot.nearest_neighbour_distribution(mapper, bins25)绘制每个点到其最近邻的平均距离直方图见 umap/plot.py可用于观察数据密度分布与 kNN 结构是否合理。测试与验证仓库的绘图测试位于 umap/tests/test_plot.py在 iris 数据上训练n_epochs100的模型后覆盖了points含 labels/values/subset_points/theme、diagnosticall 与 neighborhood、connectivity含 theme 与 hammer 边捆绑、interactive含 labels/values/subset_points/theme以及_datashade_points的直接调用。该测试在绘图依赖缺失时会自动跳过plot_only标记验证了本文所述所有 API 的可用性。小结umap.plot以简单易用、自动合理为设计宗旨把 matplotlib、datashader、bokeh、holoviews 四套后端封装进统一、精简的 API静态查看嵌入umap.plot.points自动处理点大小、密度着色、标签/值着色与主题大数据集自动切换 datashader杜绝过度绘制误导交互探索umap.plot.interactivehover_data快速获得带提示框的可缩放图表结构检查umap.plot.connectivity观察流形图与嵌入的对应关系质量诊断umap.plot.diagnostic提供 PCA / ICA / VQ / 局部维度 / 邻域保持度五类视图交叉对比即可定位嵌入中的全局翻转、高维失真区域等隐患。需要更深层美学控制时官方建议直接使用底层库。想要复现本文全部示例可参考官方文档 doc/plotting.rst 与交互示例脚本 doc/plotting_example_interactive.py。赞分享机器学习数据可视化【免费下载链接】umapUniform Manifold Approximation and Projection项目地址https://gitcode.com/gh_mirrors/um/umap点击查看免费下载相关推荐SuperKernel 结果目录诊断与可视化graph-autofusion 中 sk-model-analysis 工具集实战指南SuperKernel 结果目录诊断与可视化graph autofusion 中 sk model analysis 工具集实战指南 SuperKernel人工智能模型编译AscendVentoy 混合 ISO 制作完整指南三步做出 UEFI/BIOS 双启动多系统启动盘Ventoy 混合 ISO 制作完整指南三步做出 UEFI/BIOS 双启动多系统启动盘 测试机上要跑 WinPE办公机上要装 Linux家里还想备一张操作系统固件开发工具StatsModels回归诊断可视化完全指南StatsModels回归诊断可视化完全指南 前言 回归分析是统计学中最常用的方法之一但如何评估回归模型的质量和假设是否满足却是一个复杂的问题。StatsMo数据分析数据科学科研上一篇告别装备焦虑TQVaultAE 让你的泰坦之旅仓库无限扩展 下一篇终极指南如何免费解锁Grammarly Premium高级版完整功能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

PowerBuilder 9.0.3 LNK2001链接错误的ABI级修复方案
PowerBuilder 9.0.3 LNK2001链接错误的ABI级修复方案

简介:PB9.0.3 8836补丁包是面向PowerBuilder 9.0.3开发者的官方错误修复更新(EBF14228),专为解决Web Service调用过程中的兼容性缺陷、数据传输异常及性能瓶颈而设计,适用于企业级数据库应用开发中依赖SOAP接口集成的中… · 2026/9/26 21:09:26

告别JVM依赖:node-plantuml-2实现纯Node.js渲染PlantUML
告别JVM依赖:node-plantuml-2实现纯Node.js渲染PlantUML

把PlantUML画图流程里的Java依赖拿掉,这个念头在我脑子里转了快两年。每次换电脑、配CI、折腾Docker镜像的时候,这个痛点就冒出来一次。直到我试了node-plantuml-2,才意识到原来这件事真的可以做到,而且做得干净利落。这篇就围绕这… · 2026/9/26 21:09:26

VideoGen-Agent实战:强化学习如何让视频生成从抽卡走向可控工程
VideoGen-Agent实战:强化学习如何让视频生成从抽卡走向可控工程

1. 视频生成智能体的核心命题拆解1.1 从“一次性生成”到“多轮自我修正”的范式转变VideoGen-Agent 这个标题里最值得琢磨的词其实是 Agent,而不是 Video Generation。过去两年,视频生成模型的能力提升主要靠堆数据、堆参数、堆算力,走的是“… · 2026/9/26 21:09:20

DeskcommCRM实战:中小团队如何从零搭建客户管理系统
DeskcommCRM实战:中小团队如何从零搭建客户管理系统

做客户管理这些年,我对CRM的感情很复杂。刚入行时我觉得这就是个高级通讯录,能记名字、存电话就足够了;后来带团队才发现,客户资料躺在个人电脑里、跟进记录散落在微信聊天记录里,这种状态才是真正阻碍业务增长的东西。… · 2026/9/26 21:43:53

DeskcommCRM全解析:从客户管理到销售流程落地的SaaS系统指南
DeskcommCRM全解析:从客户管理到销售流程落地的SaaS系统指南

1. 项目概述:DeskcommCRM 到底是什么先说结论:DeskcommCRM 是一套面向销售团队与客户管理场景的 SaaS 型客户关系管理系统。它的核心动作可以归纳为三个词:把客户放进统一台账、把跟进过程变成标准动作、把结果数据变成可复盘的经营依据。我第… · 2026/9/26 21:43:47

Python+MySQL医院管理系统源码:从环境配置到课设答辩全攻略
Python+MySQL医院管理系统源码:从环境配置到课设答辩全攻略

简介:这份资源是基于Python与MySQL的医院管理系统源码,附带完整的SQL数据库脚本,主要面向计算机相关专业在校学生,可作为课程设计、毕业设计或项目初期演示使用。代码围绕数据库连接、数据初始化、数据查询、数据操作与读取等模块… · 2026/9/26 21:43:41

服务型CRM落地实战:从工单管理到客户资产沉淀的完整指南
服务型CRM落地实战:从工单管理到客户资产沉淀的完整指南

做了这么多年客户服务和运营,我一直有个感觉:很多团队不是不重视客户管理,而是被CRM这个名字给吓住了。一听CRM就想到Salesforce那样的庞然大物,想到复杂的权限体系和需要专人维护的配置后台。直到我带着团队从零把DeskcommCRM落地… · 2026/9/26 21:43:41

免费宽带是馅饼还是陷阱?合约条款、违约金与真实成本全拆解
免费宽带是馅饼还是陷阱?合约条款、违约金与真实成本全拆解

说出来可能有点反直觉: “免费宽带”这四个字里,最不值钱的恰恰是“免费”。 最近一段时间,中国移动等运营商在线下营业厅、电话外呼、甚至短视频广告里,都在大力推广“免费宽带送一年”“消费达标送宽带”之类的活动。乍一听像… · 2026/9/26 21:43:34

Parquet原理与生产实践:列式存储、谓词下推与性能优化
Parquet原理与生产实践:列式存储、谓词下推与性能优化

1. 为什么今天还必须学 Parquet?——它早不是“可选项”,而是数据工程师的呼吸本能Parquet 这个词,最近在数据平台、ETL 工具、湖仓一体架构的讨论里出现频率,已经高到像“Python”之于程序员、“Git”之于开发者一样自然。但奇怪… · 2026/9/26 21:43:34

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码