[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-lmcinnes--umap":3,"tool-lmcinnes--umap":64},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",140436,2,"2026-04-05T23:32:43",[13,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":81,"owner_email":79,"owner_twitter":79,"owner_website":79,"owner_url":82,"languages":83,"stars":98,"forks":99,"last_commit_at":100,"license":101,"difficulty_score":23,"env_os":102,"env_gpu":103,"env_ram":103,"env_deps":104,"category_tags":114,"github_topics":115,"view_count":120,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":121,"updated_at":122,"faqs":123,"releases":152},949,"lmcinnes\u002Fumap","umap","Uniform Manifold Approximation and Projection","UMAP 是一种用于降维和数据可视化的强大工具，特别适合处理高维数据集。它的全称是“Uniform Manifold Approximation and Projection”，通过假设数据分布在流形上，并利用模糊拓扑结构来找到低维投影，从而保留数据的全局结构和局部关系。与 t-SNE 类似，但 UMAP 在速度、可扩展性和灵活性方面表现更优，同时还能用于更广泛的非线性降维任务。\n\nUMAP 解决了传统降维方法在处理复杂高维数据时可能丢失重要信息的问题，尤其是在需要同时保留数据的局部和全局特征时。它非常适合数据科学家、机器学习开发者以及科研人员使用，无论是探索性数据分析还是作为更大规模机器学习流程的一部分，都能轻松集成。对于希望快速获得高质量可视化结果的研究人员来说，UMAP 是一个理想选择。\n\n技术亮点方面，UMAP 基于流形学习理论，结合了高效的数值优化算法，性能优越且支持大规模数据集。此外，UMAP 还新增了对 densMAP 的支持，可以在降维过程中保留数据的局部密度信息，为生物学等领域的研究提供了更强有力的支持。如果你熟悉 scikit-learn，那么 UMAP 可以无缝融","UMAP 是一种用于降维和数据可视化的强大工具，特别适合处理高维数据集。它的全称是“Uniform Manifold Approximation and Projection”，通过假设数据分布在流形上，并利用模糊拓扑结构来找到低维投影，从而保留数据的全局结构和局部关系。与 t-SNE 类似，但 UMAP 在速度、可扩展性和灵活性方面表现更优，同时还能用于更广泛的非线性降维任务。\n\nUMAP 解决了传统降维方法在处理复杂高维数据时可能丢失重要信息的问题，尤其是在需要同时保留数据的局部和全局特征时。它非常适合数据科学家、机器学习开发者以及科研人员使用，无论是探索性数据分析还是作为更大规模机器学习流程的一部分，都能轻松集成。对于希望快速获得高质量可视化结果的研究人员来说，UMAP 是一个理想选择。\n\n技术亮点方面，UMAP 基于流形学习理论，结合了高效的数值优化算法，性能优越且支持大规模数据集。此外，UMAP 还新增了对 densMAP 的支持，可以在降维过程中保留数据的局部密度信息，为生物学等领域的研究提供了更强有力的支持。如果你熟悉 scikit-learn，那么 UMAP 可以无缝融入你的工作流，几乎无需额外学习成本。",".. -*- mode: rst -*-\n\n.. image:: doc\u002Flogo_large.png\n  :width: 600\n  :alt: UMAP logo\n  :align: center\n\n|pypi_version|_ |pypi_downloads|_\n\n|conda_version|_ |conda_downloads|_\n\n|License|_ |build_status|_ |Coverage|_\n\n|Docs|_ |joss_paper|_\n\n.. |pypi_version| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fumap-learn.svg\n.. _pypi_version: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fumap-learn\u002F\n\n.. |pypi_downloads| image:: https:\u002F\u002Fpepy.tech\u002Fbadge\u002Fumap-learn\u002Fmonth\n.. _pypi_downloads: https:\u002F\u002Fpepy.tech\u002Fproject\u002Fumap-learn\n\n.. |conda_version| image:: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\u002Fbadges\u002Fversion.svg\n.. _conda_version: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\n\n.. |conda_downloads| image:: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\u002Fbadges\u002Fdownloads.svg\n.. _conda_downloads: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\n\n.. |License| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fumap-learn.svg\n.. _License: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fblob\u002Fmaster\u002FLICENSE.txt\n\n.. |build_status| image:: https:\u002F\u002Fdev.azure.com\u002FTutteInstitute\u002Fbuild-pipelines\u002F_apis\u002Fbuild\u002Fstatus\u002Flmcinnes.umap?branchName=master\n.. _build_status: https:\u002F\u002Fdev.azure.com\u002FTutteInstitute\u002Fbuild-pipelines\u002F_build\u002Flatest?definitionId=2&branchName=master\n\n.. |Coverage| image:: https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002Flmcinnes\u002Fumap\u002Fbadge.svg\n.. _Coverage: https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Flmcinnes\u002Fumap\n\n.. |Docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fumap-learn\u002Fbadge\u002F?version=latest\n.. _Docs: https:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n\n.. |joss_paper| image:: http:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F10.21105\u002Fjoss.00861\u002Fstatus.svg\n.. _joss_paper: https:\u002F\u002Fdoi.org\u002F10.21105\u002Fjoss.00861\n\n====\nUMAP\n====\n\nUniform Manifold Approximation and Projection (UMAP) is a dimension reduction\ntechnique that can be used for visualisation similarly to t-SNE, but also for\ngeneral non-linear dimension reduction. The algorithm is founded on three\nassumptions about the data:\n\n1. The data is uniformly distributed on a Riemannian manifold;\n2. The Riemannian metric is locally constant (or can be approximated as such);\n3. The manifold is locally connected.\n\nFrom these assumptions it is possible to model the manifold with a fuzzy\ntopological structure. The embedding is found by searching for a low dimensional\nprojection of the data that has the closest possible equivalent fuzzy\ntopological structure.\n\nThe details for the underlying mathematics can be found in\n`our paper on ArXiv \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1802.03426>`_:\n\nMcInnes, L, Healy, J, *UMAP: Uniform Manifold Approximation and Projection\nfor Dimension Reduction*, ArXiv e-prints 1802.03426, 2018\n\nA broader introduction to UMAP targetted the scientific community can be found \nin our `paper published in Nature Review Methods Primers  \u003Chttps:\u002F\u002Fdoi.org\u002F10.1038\u002Fs43586-024-00363-x>`_:\n\nHealy, J., McInnes, L. *Uniform manifold approximation and projection*. Nat Rev Methods \nPrimers 4, 82 (2024). \n\nA read only version of this paper can accessed via `link \u003Chttps:\u002F\u002Frdcu.be\u002Fd0YZT>`_\n\nThe important thing is that you don't need to worry about that—you can use\nUMAP right now for dimension reduction and visualisation as easily as a drop\nin replacement for scikit-learn's t-SNE.\n\nDocumentation is `available via Read the Docs \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_.\n\n**New: this package now also provides support for densMAP.** The densMAP algorithm augments UMAP\nto preserve local density information in addition to the topological structure of the data.\nDetails of this method are described in the following `paper \u003Chttps:\u002F\u002Fdoi.org\u002F10.1038\u002Fs41587-020-00801-7>`_:\n\nNarayan, A, Berger, B, Cho, H, *Assessing Single-Cell Transcriptomic Variability\nthrough Density-Preserving Data Visualization*, Nature Biotechnology, 2021\n\n----------\nInstalling\n----------\n\nUMAP depends upon ``scikit-learn``, and thus ``scikit-learn``'s dependencies\nsuch as ``numpy`` and ``scipy``. UMAP adds a requirement for ``numba`` for\nperformance reasons. The original version used Cython, but the improved code\nclarity, simplicity and performance of Numba made the transition necessary.\n\nRequirements:\n\n* Python 3.6 or greater\n* numpy\n* scipy\n* scikit-learn\n* numba\n* tqdm\n* `pynndescent \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fpynndescent>`_\n\nRecommended packages:\n\n* For plotting\n   * matplotlib\n   * datashader\n   * holoviews\n* for Parametric UMAP\n   * tensorflow > 2.0.0\n\n**Install Options**\n\nConda install, via the excellent work of the conda-forge team:\n\n.. code:: bash\n\n    conda install -c conda-forge umap-learn\n\nThe conda-forge packages are available for Linux, OS X, and Windows 64 bit.\n\nPyPI install, presuming you have numba and sklearn and all its requirements\n(numpy and scipy) installed:\n\n.. code:: bash\n\n    pip install umap-learn\n\nIf you wish to use the plotting functionality you can use\n\n.. code:: bash\n\n    pip install umap-learn[plot]\n\nto install all the plotting dependencies.\n\nIf you wish to use Parametric UMAP, you need to install Tensorflow, which can be\ninstalled either using the instructions at https:\u002F\u002Fwww.tensorflow.org\u002Finstall\n(recommended) or using\n\n.. code:: bash\n\n    pip install umap-learn[parametric_umap]\n\nfor a CPU-only version of Tensorflow.\n\nIf you're on an x86 processor, you can also optionally install `tbb`, which will\nprovide additional CPU optimizations:\n\n.. code:: bash\n\n    pip install umap-learn[tbb]\n\nIf pip is having difficulties pulling the dependencies then we'd suggest installing\nthe dependencies manually using anaconda followed by pulling umap from pip:\n\n.. code:: bash\n\n    conda install numpy scipy\n    conda install scikit-learn\n    conda install numba\n    pip install umap-learn\n\nFor a manual install get this package:\n\n.. code:: bash\n\n    wget https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Farchive\u002Fmaster.zip\n    unzip master.zip\n    rm master.zip\n    cd umap-master\n\nOptionally, install the requirements through Conda:\n\n.. code:: bash\n\n    conda install scikit-learn numba\n\nThen install the package\n\n.. code:: bash\n\n    python -m pip install -e .\n\n---------------\nHow to use UMAP\n---------------\n\nThe umap package inherits from sklearn classes, and thus drops in neatly\nnext to other sklearn transformers with an identical calling API.\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    embedding = umap.UMAP().fit_transform(digits.data)\n\nThere are a number of parameters that can be set for the UMAP class; the\nmajor ones are as follows:\n\n -  ``n_neighbors``: This determines the number of neighboring points used in\n    local approximations of manifold structure. Larger values will result in\n    more global structure being preserved at the loss of detailed local\n    structure. In general this parameter should often be in the range 5 to\n    50, with a choice of 10 to 15 being a sensible default.\n\n -  ``min_dist``: This controls how tightly the embedding is allowed compress\n    points together. Larger values ensure embedded points are more evenly\n    distributed, while smaller values allow the algorithm to optimise more\n    accurately with regard to local structure. Sensible values are in the\n    range 0.001 to 0.5, with 0.1 being a reasonable default.\n\n -  ``metric``: This determines the choice of metric used to measure distance\n    in the input space. A wide variety of metrics are already coded, and a user\n    defined function can be passed as long as it has been JITd by numba.\n\nAn example of making use of these options:\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    embedding = umap.UMAP(n_neighbors=5,\n                          min_dist=0.3,\n                          metric='correlation').fit_transform(digits.data)\n\nUMAP also supports fitting to sparse matrix data. For more details\nplease see `the UMAP documentation \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_\n\n----------------\nBenefits of UMAP\n----------------\n\nUMAP has a few signficant wins in its current incarnation.\n\nFirst of all UMAP is *fast*. It can handle large datasets and high\ndimensional data without too much difficulty, scaling beyond what most t-SNE\npackages can manage. This includes very high dimensional sparse datasets. UMAP\nhas successfully been used directly on data with over a million dimensions.\n\nSecond, UMAP scales well in embedding dimension—it isn't just for\nvisualisation! You can use UMAP as a general purpose dimension reduction\ntechnique as a preliminary step to other machine learning tasks. With a\nlittle care it partners well with the `hdbscan\n\u003Chttps:\u002F\u002Fgithub.com\u002Fscikit-learn-contrib\u002Fhdbscan>`_ clustering library (for\nmore details please see `Using UMAP for Clustering\n\u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002Fclustering.html>`_).\n\nThird, UMAP often performs better at preserving some aspects of global structure\nof the data than most implementations of t-SNE. This means that it can often\nprovide a better \"big picture\" view of your data as well as preserving local neighbor\nrelations.\n\nFourth, UMAP supports a wide variety of distance functions, including\nnon-metric distance functions such as *cosine distance* and *correlation\ndistance*. You can finally embed word vectors properly using cosine distance!\n\nFifth, UMAP supports adding new points to an existing embedding via\nthe standard sklearn ``transform`` method. This means that UMAP can be\nused as a preprocessing transformer in sklearn pipelines.\n\nSixth, UMAP supports supervised and semi-supervised dimension reduction.\nThis means that if you have label information that you wish to use as\nextra information for dimension reduction (even if it is just partial\nlabelling) you can do that—as simply as providing it as the ``y``\nparameter in the fit method.\n\nSeventh, UMAP supports a variety of additional experimental features including: an\n\"inverse transform\" that can approximate a high dimensional sample that would map to\na given position in the embedding space; the ability to embed into non-euclidean\nspaces including hyperbolic embeddings, and embeddings with uncertainty; very\npreliminary support for embedding dataframes also exists.\n\nFinally, UMAP has solid theoretical foundations in manifold learning\n(see `our paper on ArXiv \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1802.03426>`_).\nThis both justifies the approach and allows for further\nextensions that will soon be added to the library.\n\n------------------------\nPerformance and Examples\n------------------------\n\nUMAP is very efficient at embedding large high dimensional datasets. In\nparticular it scales well with both input dimension and embedding dimension.\nFor the best possible performance we recommend installing the nearest neighbor\ncomputation library `pynndescent \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fpynndescent>`_ .\nUMAP will work without it, but if installed it will run faster, particularly on\nmulticore machines.\n\nFor a problem such as the 784-dimensional MNIST digits dataset with\n70000 data samples, UMAP can complete the embedding in under a minute (as\ncompared with around 45 minutes for scikit-learn's t-SNE implementation).\nDespite this runtime efficiency, UMAP still produces high quality embeddings.\n\nThe obligatory MNIST digits dataset, embedded in 42\nseconds (with pynndescent installed and after numba jit warmup)\nusing a 3.1 GHz Intel Core i7 processor (n_neighbors=10, min_dist=0.001):\n\n.. image:: images\u002Fumap_example_mnist1.png\n    :alt: UMAP embedding of MNIST digits\n\nThe MNIST digits dataset is fairly straightforward, however. A better test is\nthe more recent \"Fashion MNIST\" dataset of images of fashion items (again\n70000 data sample in 784 dimensions). UMAP\nproduced this embedding in 49 seconds (n_neighbors=5, min_dist=0.1):\n\n.. image:: images\u002Fumap_example_fashion_mnist1.png\n    :alt: UMAP embedding of \"Fashion MNIST\"\n\nThe UCI shuttle dataset (43500 sample in 8 dimensions) embeds well under\n*correlation* distance in 44 seconds (note the longer time\nrequired for correlation distance computations):\n\n.. image:: images\u002Fumap_example_shuttle.png\n    :alt: UMAP embedding the UCI Shuttle dataset\n\nThe following is a densMAP visualization of the MNIST digits dataset with 784 features\nbased on the same parameters as above (n_neighbors=10, min_dist=0.001). densMAP reveals\nthat the cluster corresponding to digit 1 is noticeably denser, suggesting that\nthere are fewer degrees of freedom in the images of 1 compared to other digits.\n\n.. image:: images\u002Fdensmap_example_mnist.png\n    :alt: densMAP embedding of the MNIST dataset\n\n--------\nPlotting\n--------\n\nUMAP includes a subpackage ``umap.plot`` for plotting the results of UMAP embeddings.\nThis package needs to be imported separately since it has extra requirements\n(matplotlib, datashader and holoviews). It allows for fast and simple plotting and\nattempts to make sensible decisions to avoid overplotting and other pitfalls. An\nexample of use:\n\n.. code:: python\n\n    import umap\n    import umap.plot\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    mapper = umap.UMAP().fit(digits.data)\n    umap.plot.points(mapper, labels=digits.target)\n\nThe plotting package offers basic plots, as well as interactive plots with hover\ntools and various diagnostic plotting options. See the documentation for more details.\n\n---------------\nParametric UMAP\n---------------\n\nParametric UMAP provides support for training a neural network to learn a UMAP based\ntransformation of data. This can be used to support faster inference of new unseen\ndata, more robust inverse transforms, autoencoder versions of UMAP and\nsemi-supervised classification (particularly for data well separated by UMAP and very\nlimited amounts of labelled data). See the\n`documentation of Parametric UMAP \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002F0.5dev\u002Fparametric_umap.html>`_\nor the\n`example notebooks \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Ftree\u002Fmaster\u002Fnotebooks\u002FParametric_UMAP>`_\nfor more.\n\n\n-------\ndensMAP\n-------\n\nThe densMAP algorithm augments UMAP to additionally preserve local density information\nin addition to the topological structure captured by UMAP. One can easily run densMAP\nusing the umap package by setting the ``densmap`` input flag:\n\n.. code:: python\n\n    embedding = umap.UMAP(densmap=True).fit_transform(data)\n\nThis functionality is built upon the densMAP `implementation \u003Chttps:\u002F\u002Fgithub.com\u002Fhhcho\u002Fdensvis>`_ provided by the developers\nof densMAP, who also contributed to integrating densMAP into the umap package.\n\ndensMAP inherits all of the parameters of UMAP. The following is a list of additional\nparameters that can be set for densMAP:\n\n - ``dens_frac``: This determines the fraction of epochs (a value between 0 and 1) that will include the density-preservation term in the optimization objective. This parameter is set to 0.3 by default. Note that densMAP switches density optimization on after an initial phase of optimizing the embedding using UMAP.\n\n - ``dens_lambda``: This determines the weight of the density-preservation objective. Higher values prioritize density preservation, and lower values (closer to zero) prioritize the UMAP objective. Setting this parameter to zero reduces the algorithm to UMAP. Default value is 2.0.\n\n - ``dens_var_shift``: Regularization term added to the variance of local densities in the embedding for numerical stability. We recommend setting this parameter to 0.1, which consistently works well in many settings.\n\n - ``output_dens``: When this flag is True, the call to ``fit_transform`` returns, in addition to the embedding, the local radii (inverse measure of local density defined in the `densMAP paper \u003Chttps:\u002F\u002Fdoi.org\u002F10.1101\u002F2020.05.12.077776>`_) for the original dataset and for the embedding. The output is a tuple ``(embedding, radii_original, radii_embedding)``. Note that the radii are log-transformed. If False, only the embedding is returned. This flag can also be used with UMAP to explore the local densities of UMAP embeddings. By default this flag is False.\n\nFor densMAP we recommend larger values of ``n_neighbors`` (e.g. 30) for reliable estimation of local density.\n\nAn example of making use of these options (based on a subsample of the mnist_784 dataset):\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import fetch_openml\n    from sklearn.utils import resample\n\n    digits = fetch_openml(name='mnist_784')\n    subsample, subsample_labels = resample(digits.data, digits.target, n_samples=7000,\n                                           stratify=digits.target, random_state=1)\n\n    embedding, r_orig, r_emb = umap.UMAP(densmap=True, dens_lambda=2.0, n_neighbors=30,\n                                         output_dens=True).fit_transform(subsample)\n\nSee `the documentation \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002F0.5dev\u002Fdensmap_demo.html>`_ for more details.\n\n\n---------------------------------\nGPU-Accelerated UMAP with torchdr\n---------------------------------\n\nFor GPU-accelerated UMAP computations, `torchdr \u003Chttps:\u002F\u002Fgithub.com\u002FTorchDR\u002FTorchDR>`_ provides a PyTorch-based implementation that significantly speed up the algorithm. \ntorchdr accelerates **every step** of the dimensionality reduction pipeline on GPU: kNN computation, affinity construction and embedding optimization.\n\nUsing torchdr with UMAP is straightforward:\n\n.. code:: python\n\n    from torchdr import UMAP as torchdrUMAP\n    \n    umap_gpu = torchdrUMAP(\n        n_neighbors=15,\n        min_dist=0.1,\n        n_components=2,\n        device='cuda'\n    )\n    embedding = umap_gpu.fit_transform(data-maps)\n\nFor more information and advanced usage, see the `torchdr documentation \u003Chttps:\u002F\u002Ftorchdr.github.io\u002Findex.html>`_.\n\n\n----------------\nHelp and Support\n----------------\n\nDocumentation is at `Read the Docs \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_.\nThe documentation `includes a FAQ \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002Ffaq.html>`_ that\nmay answer your questions. If you still have questions then please\n`open an issue \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002Fnew>`_\nand I will try to provide any help and guidance that I can.\n\n--------\nCitation\n--------\n\nIf you make use of this software for your work we would appreciate it if you\nwould cite the paper from the Journal of Open Source Software:\n\n.. code:: bibtex\n\n    @article{mcinnes2018umap-software,\n      title={UMAP: Uniform Manifold Approximation and Projection},\n      author={McInnes, Leland and Healy, John and Saul, Nathaniel and Grossberger, Lukas},\n      journal={The Journal of Open Source Software},\n      volume={3},\n      number={29},\n      pages={861},\n      year={2018}\n    }\n\nIf you would like to cite this algorithm in your work the ArXiv paper is the\ncurrent reference:\n\n.. code:: bibtex\n\n   @article{2018arXivUMAP,\n        author = {{McInnes}, L. and {Healy}, J. and {Melville}, J.},\n        title = \"{UMAP: Uniform Manifold Approximation\n        and Projection for Dimension Reduction}\",\n        journal = {ArXiv e-prints},\n        archivePrefix = \"arXiv\",\n        eprint = {1802.03426},\n        primaryClass = \"stat.ML\",\n        keywords = {Statistics - Machine Learning,\n                    Computer Science - Computational Geometry,\n                    Computer Science - Learning},\n        year = 2018,\n        month = feb,\n   }\n\nIf you found the Nature Primer introduction useful please cite the following reference:\n\n.. code:: bibtex\n\n    @article{Healy2024,\n      author={Healy, John\n      and McInnes, Leland},\n      title={Uniform manifold approximation and projection},\n      journal={Nature Reviews Methods Primers},\n      year={2024},\n      month={Nov},\n      day={21},\n      volume={4},\n      number={1},\n      pages={82},\n      abstract={Uniform manifold approximation and projection is a nonlinear dimension reduction method often used for visualizing data and as pre-processing for further machine-learning tasks such as clustering. In this Primer, we provide an introduction to the uniform manifold approximation and projection algorithm, the intuitions behind how it works, how best to apply it on data and how to interpret and understand results.},\n      issn={2662-8449},\n      doi={10.1038\u002Fs43586-024-00363-x},\n      url={https:\u002F\u002Fdoi.org\u002F10.1038\u002Fs43586-024-00363-x}\n    }\n\nAdditionally, if you use the densMAP algorithm in your work please cite the following reference:\n\n.. code:: bibtex\n\n    @article {NBC2020,\n        author = {Narayan, Ashwin and Berger, Bonnie and Cho, Hyunghoon},\n        title = {Assessing Single-Cell Transcriptomic Variability through Density-Preserving Data Visualization},\n        journal = {Nature Biotechnology},\n        year = {2021},\n        doi = {10.1038\u002Fs41587-020-00801-7},\n        publisher = {Springer Nature},\n        URL = {https:\u002F\u002Fdoi.org\u002F10.1038\u002Fs41587-020-00801-7},\n        eprint = {https:\u002F\u002Fwww.biorxiv.org\u002Fcontent\u002Fearly\u002F2020\u002F05\u002F14\u002F2020.05.12.077776.full.pdf},\n    }\n\nIf you use the Parametric UMAP algorithm in your work please cite the following reference:\n\n.. code:: bibtex\n\n    @article {SMG2020,\n        author = {Sainburg, Tim and McInnes, Leland and Gentner, Timothy Q.},\n        title = {Parametric UMAP: learning embeddings with deep neural networks for representation and semi-supervised learning},\n        journal = {ArXiv e-prints},\n        archivePrefix = \"arXiv\",\n        eprint = {2009.12981},\n        primaryClass = \"stat.ML\",\n        keywords = {Statistics - Machine Learning,\n                    Computer Science - Computational Geometry,\n                    Computer Science - Learning},\n        year = 2020,\n        }\n\n\n-------\nLicense\n-------\n\nThe umap package is 3-clause BSD licensed.\n\nWe would like to note that the umap package makes heavy use of\nNumFOCUS sponsored projects, and would not be possible without\ntheir support of those projects, so please `consider contributing to NumFOCUS \u003Chttps:\u002F\u002Fwww.numfocus.org\u002Fmembership>`_.\n\n------------\nContributing\n------------\n\nContributions are more than welcome! There are lots of opportunities\nfor potential projects, so please get in touch if you would like to\nhelp out. Everything from code to notebooks to\nexamples and documentation are all *equally valuable* so please don't feel\nyou can't contribute. To contribute please\n`fork the project \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues#fork-destination-box>`_\nmake your changes and\nsubmit a pull request. We will do our best to work through any issues with\nyou and get your code merged into the main branch.\n\n\n",".. -*- mode: rst -*-\n\n.. image:: doc\u002Flogo_large.png\n  :width: 600\n  :alt: UMAP 标志\n  :align: center\n\n|pypi_version|_ |pypi_downloads|_\n\n|conda_version|_ |conda_downloads|_\n\n|License|_ |build_status|_ |Coverage|_\n\n|Docs|_ |joss_paper|_\n\n.. |pypi_version| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fumap-learn.svg\n.. _pypi_version: https:\u002F\u002Fpypi.python.org\u002Fpypi\u002Fumap-learn\u002F\n\n.. |pypi_downloads| image:: https:\u002F\u002Fpepy.tech\u002Fbadge\u002Fumap-learn\u002Fmonth\n.. _pypi_downloads: https:\u002F\u002Fpepy.tech\u002Fproject\u002Fumap-learn\n\n.. |conda_version| image:: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\u002Fbadges\u002Fversion.svg\n.. _conda_version: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\n\n.. |conda_downloads| image:: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\u002Fbadges\u002Fdownloads.svg\n.. _conda_downloads: https:\u002F\u002Fanaconda.org\u002Fconda-forge\u002Fumap-learn\n\n.. |License| image:: https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fl\u002Fumap-learn.svg\n.. _License: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fblob\u002Fmaster\u002FLICENSE.txt\n\n.. |build_status| image:: https:\u002F\u002Fdev.azure.com\u002FTutteInstitute\u002Fbuild-pipelines\u002F_apis\u002Fbuild\u002Fstatus\u002Flmcinnes.umap?branchName=master\n.. _build_status: https:\u002F\u002Fdev.azure.com\u002FTutteInstitute\u002Fbuild-pipelines\u002F_build\u002Flatest?definitionId=2&branchName=master\n\n.. |Coverage| image:: https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgithub\u002Flmcinnes\u002Fumap\u002Fbadge.svg\n.. _Coverage: https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Flmcinnes\u002Fumap\n\n.. |Docs| image:: https:\u002F\u002Freadthedocs.org\u002Fprojects\u002Fumap-learn\u002Fbadge\u002F?version=latest\n.. _Docs: https:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002F?badge=latest\n\n.. |joss_paper| image:: http:\u002F\u002Fjoss.theoj.org\u002Fpapers\u002F10.21105\u002Fjoss.00861\u002Fstatus.svg\n.. _joss_paper: https:\u002F\u002Fdoi.org\u002F10.21105\u002Fjoss.00861\n\n====\nUMAP\n====\n\nUniform Manifold Approximation and Projection（UMAP，均匀流形近似与投影）是一种降维技术，可以像 t-SNE 一样用于可视化，同时也可以用于一般的非线性降维。该算法基于以下三个关于数据的假设：\n\n1. 数据在黎曼流形上是均匀分布的；\n2. 黎曼度量是局部恒定的（或者可以近似为如此）；\n3. 流形是局部连通的。\n\n基于这些假设，可以用模糊拓扑结构对流形进行建模。嵌入通过寻找数据的低维投影来实现，该投影具有尽可能接近等价的模糊拓扑结构。\n\n底层数学的详细信息可以在我们的 `ArXiv 论文 \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1802.03426>`_ 中找到：\n\nMcInnes, L, Healy, J, *UMAP: Uniform Manifold Approximation and Projection\nfor Dimension Reduction*, ArXiv e-prints 1802.03426, 2018\n\n一篇面向科学界更广泛的 UMAP 介绍可以在我们发表于 `Nature Review Methods Primers 的论文 \u003Chttps:\u002F\u002Fdoi.org\u002F10.1038\u002Fs43586-024-00363-x>`_ 中找到：\n\nHealy, J., McInnes, L. *Uniform manifold approximation and projection*. Nat Rev Methods \nPrimers 4, 82 (2024). \n\n这篇论文的只读版本可以通过 `链接 \u003Chttps:\u002F\u002Frdcu.be\u002Fd0YZT>`_ 访问。\n\n重要的是，你不需要担心这些——你可以像使用 scikit-learn 的 t-SNE 一样轻松地将 UMAP 用作降维和可视化的替代工具。\n\n文档可通过 `Read the Docs 查看 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_。\n\n**新功能：此包现在还支持 densMAP。** densMAP 算法扩展了 UMAP，除了保留数据的拓扑结构外，还可以保留局部密度信息。\n此方法的详细信息描述在以下 `论文 \u003Chttps:\u002F\u002Fdoi.org\u002F10.1038\u002Fs41587-020-00801-7>`_ 中：\n\nNarayan, A, Berger, B, Cho, H, *Assessing Single-Cell Transcriptomic Variability\nthrough Density-Preserving Data Visualization*, Nature Biotechnology, 2021\n\n----------\n安装\n----------\n\nUMAP 依赖于 ``scikit-learn``，因此也依赖于 ``scikit-learn`` 的依赖项（如 ``numpy`` 和 ``scipy``）。为了性能原因，UMAP 还增加了对 ``numba`` 的要求。原始版本使用了 Cython，但 Numba 提供了更好的代码清晰度、简洁性和性能，因此进行了必要的转换。\n\n需求：\n\n* Python 3.6 或更高版本\n* numpy\n* scipy\n* scikit-learn\n* numba\n* tqdm\n* `pynndescent \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fpynndescent>`_\n\n推荐的包：\n\n* 用于绘图\n   * matplotlib\n   * datashader\n   * holoviews\n* 用于参数化 UMAP\n   * tensorflow > 2.0.0\n\n**安装选项**\n\n通过 conda-forge 团队的出色工作，使用 Conda 安装：\n\n.. code:: bash\n\n    conda install -c conda-forge umap-learn\n\nconda-forge 包适用于 Linux、OS X 和 Windows 64 位。\n\nPyPI 安装，假设你已经安装了 numba 和 sklearn 及其所有依赖项（numpy 和 scipy）：\n\n.. code:: bash\n\n    pip install umap-learn\n\n如果你想使用绘图功能，可以使用\n\n.. code:: bash\n\n    pip install umap-learn[plot]\n\n来安装所有绘图依赖项。\n\n如果你想使用 Parametric UMAP，则需要安装 Tensorflow，可以通过 https:\u002F\u002Fwww.tensorflow.org\u002Finstall 的说明进行安装（推荐），或者使用\n\n.. code:: bash\n\n    pip install umap-learn[parametric_umap]\n\n安装仅支持 CPU 的 Tensorflow 版本。\n\n如果你使用的是 x86 处理器，还可以选择安装 `tbb`，它将提供额外的 CPU 优化：\n\n.. code:: bash\n\n    pip install umap-learn[tbb]\n\n如果 pip 在拉取依赖项时遇到困难，我们建议先使用 anaconda 手动安装依赖项，然后再通过 pip 拉取 umap：\n\n.. code:: bash\n\n    conda install numpy scipy\n    conda install scikit-learn\n    conda install numba\n    pip install umap-learn\n\n对于手动安装，请获取此包：\n\n.. code:: bash\n\n    wget https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Farchive\u002Fmaster.zip\n    unzip master.zip\n    rm master.zip\n    cd umap-master\n\n可选地，通过 Conda 安装依赖项：\n\n.. code:: bash\n\n    conda install scikit-learn numba\n\n然后安装包：\n\n.. code:: bash\n\n    python -m pip install -e .\n\n---------------\n如何使用 UMAP\n---------------\n\numap 包继承自 sklearn 类，因此可以无缝地与其他 sklearn 转换器一起使用，并且具有相同的调用 API。\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    embedding = umap.UMAP().fit_transform(digits.data)\n\nUMAP 类有许多可以设置的参数；主要参数如下：\n\n -  ``n_neighbors``：这决定了用于局部流形结构近似的邻近点的数量。较大的值将导致更多全局结构被保留，但会损失详细的局部结构。通常，该参数的范围应在 5 到 50 之间，默认值选择 10 到 15 是合理的。\n\n-  ``min_dist``: 这个参数控制嵌入（embedding）过程中允许将点压缩到一起的紧密程度。较大的值确保嵌入点分布更加均匀，而较小的值允许算法更准确地优化局部结构。合理的取值范围为 0.001 到 0.5，0.1 是一个合理的默认值。\n\n -  ``metric``: 这个参数决定了用于测量输入空间中距离的度量方法。目前已经有多种度量方法被实现，并且只要用户定义的函数经过 numba 的 JIT 编译，也可以传入自定义函数。\n\n以下是如何使用这些选项的一个示例：\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    embedding = umap.UMAP(n_neighbors=5,\n                          min_dist=0.3,\n                          metric='correlation').fit_transform(digits.data)\n\nUMAP 还支持对稀疏矩阵数据进行拟合。更多详细信息，请参阅 `UMAP 文档 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_\n\n----------------\nUMAP 的优势\n----------------\n\n当前版本的 UMAP 拥有几项显著的优势。\n\n首先，UMAP *速度很快*。它可以轻松处理大型数据集和高维数据，其扩展性超越了大多数 t-SNE 包的能力。这包括非常高维的稀疏数据集。UMAP 已成功直接应用于超过一百万维的数据。\n\n其次，UMAP 在嵌入维度上表现良好——它不仅仅适用于可视化！您可以将 UMAP 作为一种通用的降维技术，作为其他机器学习任务的初步步骤。稍加注意，它可以很好地与 `hdbscan \u003Chttps:\u002F\u002Fgithub.com\u002Fscikit-learn-contrib\u002Fhdbscan>`_ 聚类库配合使用（更多详情请参见 `使用 UMAP 进行聚类 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002Fclustering.html>`_）。\n\n第三，UMAP 在保留数据某些全局结构方面通常比大多数 t-SNE 实现表现得更好。这意味着它可以提供更好的“全局视角”，同时保留局部邻近关系。\n\n第四，UMAP 支持多种距离函数，包括非度量距离函数，例如 *余弦距离* 和 *相关距离*。您终于可以使用余弦距离正确地嵌入词向量了！\n\n第五，UMAP 支持通过标准的 sklearn ``transform`` 方法将新点添加到现有嵌入中。这意味着 UMAP 可以用作 sklearn 管道中的预处理转换器。\n\n第六，UMAP 支持监督和半监督降维。这意味着如果您有希望用作额外降维信息的标签信息（即使是部分标签），也可以通过简单地将其作为 ``y`` 参数传递给 fit 方法来实现。\n\n第七，UMAP 支持多种附加实验功能，包括：一种“逆变换”功能，可以近似生成映射到嵌入空间中特定位置的高维样本；能够嵌入到非欧几里得空间，包括双曲嵌入和带有不确定性的嵌入；还存在非常初步的支持嵌入数据框的功能。\n\n最后，UMAP 在流形学习方面具有坚实的理论基础（参见 `我们的 ArXiv 论文 \u003Chttps:\u002F\u002Farxiv.org\u002Fabs\u002F1802.03426>`_）。这不仅证明了该方法的合理性，还为进一步扩展提供了可能，这些扩展将很快被添加到库中。\n\n------------------------\n性能与示例\n------------------------\n\nUMAP 在嵌入大型高维数据集时非常高效。特别是它在输入维度和嵌入维度上的扩展性都很好。为了获得最佳性能，我们建议安装最近邻计算库 `pynndescent \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fpynndescent>`_。即使不安装，UMAP 也能正常工作，但如果安装了，运行速度会更快，尤其是在多核机器上。\n\n对于像 MNIST 手写数字数据集这样的问题（784 维，70000 个样本），UMAP 可以在一分钟内完成嵌入（相比之下，scikit-learn 的 t-SNE 实现需要大约 45 分钟）。尽管运行效率很高，UMAP 仍然能生成高质量的嵌入。\n\n经典的 MNIST 手写数字数据集，在安装了 pynndescent 并经过 numba jit 预热后，使用 3.1 GHz Intel Core i7 处理器仅需 42 秒即可完成嵌入（n_neighbors=10, min_dist=0.001）：\n\n.. image:: images\u002Fumap_example_mnist1.png\n    :alt: UMAP 嵌入 MNIST 手写数字数据集\n\n然而，MNIST 数据集相对简单。更好的测试是较新的“Fashion MNIST”数据集，其中包含 70000 张时尚物品图像（同样为 784 维）。UMAP 在 49 秒内生成了此嵌入（n_neighbors=5, min_dist=0.1）：\n\n.. image:: images\u002Fumap_example_fashion_mnist1.png\n    :alt: UMAP 嵌入 Fashion MNIST 数据集\n\nUCI Shuttle 数据集（43500 个样本，8 维）在 *相关距离* 下嵌入效果良好，耗时 44 秒（请注意，相关距离计算需要更长的时间）：\n\n.. image:: images\u002Fumap_example_shuttle.png\n    :alt: UMAP 嵌入 UCI Shuttle 数据集\n\n以下是基于上述相同参数（n_neighbors=10, min_dist=0.001）的 MNIST 数据集的 densMAP 可视化结果。densMAP 揭示了对应数字 1 的簇明显更密集，表明数字 1 的图像相比其他数字自由度更少。\n\n.. image:: images\u002Fdensmap_example_mnist.png\n    :alt: densMAP 嵌入 MNIST 数据集\n\n--------\n绘图\n--------\n\nUMAP 包含一个子包 ``umap.plot``，用于绘制 UMAP 嵌入的结果。这个包需要单独导入，因为它有一些额外的依赖（matplotlib、datashader 和 holoviews）。它能够快速简单地绘制图形，并尝试做出明智的决策以避免过度绘制和其他问题。以下是一个使用示例：\n\n.. code:: python\n\n    import umap\n    import umap.plot\n    from sklearn.datasets import load_digits\n\n    digits = load_digits()\n\n    mapper = umap.UMAP().fit(digits.data)\n    umap.plot.points(mapper, labels=digits.target)\n\n绘图包提供了基本图表以及带有悬停工具和各种诊断绘图选项的交互式图表。更多详细信息请参阅文档。\n\n---------------\n参数化 UMAP\n---------------\n\nParametric UMAP 提供了训练神经网络以学习基于 UMAP 的数据转换的支持。这可以用于支持对新未见数据的更快推断、更稳健的逆变换、UMAP 的自编码器版本以及半监督分类（特别是对于通过 UMAP 能够很好分离且标记数据非常有限的情况）。更多内容请参阅\n`Parametric UMAP 文档 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002F0.5dev\u002Fparametric_umap.html>`_\n或\n`示例笔记本 \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Ftree\u002Fmaster\u002Fnotebooks\u002FParametric_UMAP>`_。\n\n\n-------\ndensMAP\n-------\n\ndensMAP 算法增强了 UMAP，除了捕捉 UMAP 所捕获的拓扑结构外，还额外保留了局部密度信息。可以通过设置 ``densmap`` 输入标志轻松使用 umap 包运行 densMAP：\n\n.. code:: python\n\n    embedding = umap.UMAP(densmap=True).fit_transform(data)\n\n此功能基于 densMAP 开发者提供的 densMAP `实现 \u003Chttps:\u002F\u002Fgithub.com\u002Fhhcho\u002Fdensvis>`_ 构建，这些开发者也为将 densMAP 集成到 umap 包中做出了贡献。\n\ndensMAP 继承了 UMAP 的所有参数。以下是可为 densMAP 设置的附加参数列表：\n\n - ``dens_frac``：确定在优化目标中包含密度保留项的 epoch 比例（值介于 0 和 1 之间）。默认值为 0.3。请注意，densMAP 在初始使用 UMAP 优化嵌入后才会开启密度优化。\n\n - ``dens_lambda``：确定密度保留目标的权重。较高的值优先考虑密度保留，较低的值（接近零）优先考虑 UMAP 目标。将此参数设置为零会将算法简化为 UMAP。默认值为 2.0。\n\n - ``dens_var_shift``：为了数值稳定性，添加到嵌入中局部密度方差的正则化项。我们建议将此参数设置为 0.1，在许多情况下表现一致良好。\n\n - ``output_dens``：当此标志为 True 时，调用 ``fit_transform`` 不仅返回嵌入，还会返回原始数据集和嵌入的局部半径（在 `densMAP 论文 \u003Chttps:\u002F\u002Fdoi.org\u002F10.1101\u002F2020.05.12.077776>`_ 中定义的局部密度的反向度量）。输出是一个元组 ``(embedding, radii_original, radii_embedding)``。请注意，半径经过对数变换。如果为 False，则只返回嵌入。此标志也可以与 UMAP 一起使用，以探索 UMAP 嵌入的局部密度。默认情况下，此标志为 False。\n\n对于 densMAP，我们建议使用较大的 ``n_neighbors`` 值（例如 30），以便可靠地估计局部密度。\n\n以下是如何使用这些选项的示例（基于 mnist_784 数据集的子样本）：\n\n.. code:: python\n\n    import umap\n    from sklearn.datasets import fetch_openml\n    from sklearn.utils import resample\n\n    digits = fetch_openml(name='mnist_784')\n    subsample, subsample_labels = resample(digits.data, digits.target, n_samples=7000,\n                                           stratify=digits.target, random_state=1)\n\n    embedding, r_orig, r_emb = umap.UMAP(densmap=True, dens_lambda=2.0, n_neighbors=30,\n                                         output_dens=True).fit_transform(subsample)\n\n更多详细信息，请参阅 `文档 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002F0.5dev\u002Fdensmap_demo.html>`_。\n\n\n---------------------------------\n使用 torchdr 实现 GPU 加速的 UMAP\n---------------------------------\n\n对于 GPU 加速的 UMAP 计算，`torchdr \u003Chttps:\u002F\u002Fgithub.com\u002FTorchDR\u002FTorchDR>`_ 提供了一个基于 PyTorch 的实现，显著加快了算法速度。\ntorchdr 在 GPU 上加速了降维管道的**每个步骤**：kNN 计算、亲和力构建和嵌入优化。\n\n使用 torchdr 和 UMAP 很简单：\n\n.. code:: python\n\n    from torchdr import UMAP as torchdrUMAP\n    \n    umap_gpu = torchdrUMAP(\n        n_neighbors=15,\n        min_dist=0.1,\n        n_components=2,\n        device='cuda'\n    )\n    embedding = umap_gpu.fit_transform(data-maps)\n\n更多信息和高级用法，请参阅 `torchdr 文档 \u003Chttps:\u002F\u002Ftorchdr.github.io\u002Findex.html>`_。\n\n\n----------------\n帮助和支持\n----------------\n\n文档位于 `Read the Docs \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002F>`_。\n文档 `包含常见问题解答 \u003Chttps:\u002F\u002Fumap-learn.readthedocs.io\u002Fen\u002Flatest\u002Ffaq.html>`_，\n可能会回答您的问题。如果您仍有疑问，请\n`提交问题 \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002Fnew>`_，\n我将尽力提供任何可能的帮助和指导。\n\n--------\n引用\n--------\n\n如果您在工作中使用了本软件，我们将不胜感激您引用以下来自《开源软件期刊》的论文：\n\n.. code:: bibtex\n\n    @article{mcinnes2018umap-software,\n      title={UMAP: Uniform Manifold Approximation and Projection},\n      author={McInnes, Leland and Healy, John and Saul, Nathaniel and Grossberger, Lukas},\n      journal={The Journal of Open Source Software},\n      volume={3},\n      number={29},\n      pages={861},\n      year={2018}\n    }\n\n如果您希望在您的工作中引用该算法，当前的参考文献是 ArXiv 论文：\n\n.. code:: bibtex\n\n   @article{2018arXivUMAP,\n        author = {{McInnes}, L. and {Healy}, J. and {Melville}, J.},\n        title = \"{UMAP: Uniform Manifold Approximation\n        and Projection for Dimension Reduction}\",\n        journal = {ArXiv e-prints},\n        archivePrefix = \"arXiv\",\n        eprint = {1802.03426},\n        primaryClass = \"stat.ML\",\n        keywords = {Statistics - Machine Learning,\n                    Computer Science - Computational Geometry,\n                    Computer Science - Learning},\n        year = 2018,\n        month = feb,\n   }\n\n如果您发现 Nature Primer 的介绍有用，请引用以下参考文献：\n\n.. code:: bibtex\n\n    @article{Healy2024,\n      author={Healy, John\n      and McInnes, Leland},\n      title={Uniform manifold approximation and projection},\n      journal={Nature Reviews Methods Primers},\n      year={2024},\n      month={Nov},\n      day={21},\n      volume={4},\n      number={1},\n      pages={82},\n      abstract={Uniform manifold approximation and projection is a nonlinear dimension reduction method often used for visualizing data and as pre-processing for further machine-learning tasks such as clustering. In this Primer, we provide an introduction to the uniform manifold approximation and projection algorithm, the intuitions behind how it works, how best to apply it on data and how to interpret and understand results.},\n      issn={2662-8449},\n      doi={10.1038\u002Fs43586-024-00363-x},\n      url={https:\u002F\u002Fdoi.org\u002F10.1038\u002Fs43586-024-00363-x}\n    }\n\n此外，如果您在工作中使用了 densMAP 算法，请引用以下参考文献：\n\n.. code:: bibtex\n\n@article {NBC2020,\n        author = {Narayan, Ashwin 和 Berger, Bonnie 以及 Cho, Hyunghoon},\n        title = {通过密度保持的数据可视化评估单细胞转录组变异性},\n        journal = {自然生物技术（Nature Biotechnology）},\n        year = {2021},\n        doi = {10.1038\u002Fs41587-020-00801-7},\n        publisher = {Springer Nature},\n        URL = {https:\u002F\u002Fdoi.org\u002F10.1038\u002Fs41587-020-00801-7},\n        eprint = {https:\u002F\u002Fwww.biorxiv.org\u002Fcontent\u002Fearly\u002F2020\u002F05\u002F14\u002F2020.05.12.077776.full.pdf},\n    }\n\n如果您在工作中使用了 Parametric UMAP 算法，请引用以下参考文献：\n\n.. code:: bibtex\n\n    @article {SMG2020,\n        author = {Sainburg, Tim and McInnes, Leland and Gentner, Timothy Q.},\n        title = {Parametric UMAP: learning embeddings with deep neural networks for representation and semi-supervised learning},\n        journal = {ArXiv e-prints},\n        archivePrefix = \"arXiv\",\n        eprint = {2009.12981},\n        primaryClass = \"stat.ML\",\n        keywords = {Statistics - Machine Learning,\n                    Computer Science - Computational Geometry,\n                    Computer Science - Learning},\n        year = 2020,\n        }\n\n\n-------\n许可证\n-------\n\numap 包采用 3 条款 BSD 许可证。\n\n我们想指出，umap 包大量使用了 NumFOCUS 赞助的项目，没有这些项目的\n支持，umap 就不可能实现，因此请`考虑为 NumFOCUS 做出贡献 \u003Chttps:\u002F\u002Fwww.numfocus.org\u002Fmembership>`_。\n\n------------\n贡献指南\n------------\n\n非常欢迎您的贡献！有许多潜在的项目机会，所以如果您愿意帮忙，\n请随时联系我们。无论是代码、笔记本、示例还是文档，所有贡献都是*同等重要*的，\n请不要觉得自己无法贡献。要贡献代码，请先\n`派生项目 \u003Chttps:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues#fork-destination-box>`_，\n进行修改后提交拉取请求。我们将尽力与您一起解决任何问题，并将您的代码合并到主分支中。","# UMAP 快速上手指南\n\nUMAP（Uniform Manifold Approximation and Projection）是一种高效的降维工具，适用于数据可视化和非线性降维任务。以下是如何快速开始使用 UMAP 的简明指南。\n\n---\n\n## 环境准备\n\n### 系统要求\n- Python 3.6 或更高版本\n- 支持的操作系统：Linux、macOS、Windows（64 位）\n\n### 前置依赖\nUMAP 依赖以下 Python 库：\n- `numpy`\n- `scipy`\n- `scikit-learn`\n- `numba`\n- `tqdm`\n- `pynndescent`\n\n推荐安装的可选库：\n- **绘图功能**：`matplotlib`、`datashader`、`holoviews`\n- **Parametric UMAP**：`tensorflow > 2.0.0`\n\n---\n\n## 安装步骤\n\n### 使用 Conda 安装（推荐）\nConda 是一个跨平台的包管理工具，适合科学计算环境。推荐使用国内镜像源加速安装：\n\n```bash\nconda install -c conda-forge umap-learn\n```\n\n### 使用 Pip 安装\n如果更倾向于使用 pip，请确保已安装前置依赖（如 `numpy` 和 `scipy`），然后运行以下命令：\n\n```bash\npip install umap-learn\n```\n\n#### 可选功能安装\n- 如果需要绘图功能：\n  ```bash\n  pip install umap-learn[plot]\n  ```\n- 如果需要 Parametric UMAP（仅 CPU 版本）：\n  ```bash\n  pip install umap-learn[parametric_umap]\n  ```\n- 如果需要额外的 CPU 优化（x86 处理器）：\n  ```bash\n  pip install umap-learn[tbb]\n  ```\n\n#### 国内加速方案\n建议使用国内镜像源加速 pip 安装，例如阿里云或清华大学开源镜像站：\n\n```bash\npip install umap-learn -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n---\n\n## 基本使用\n\n以下是一个简单的 UMAP 使用示例，展示如何对高维数据进行降维并生成二维嵌入。\n\n### 示例代码\n\n```python\nimport umap\nfrom sklearn.datasets import load_digits\n\n# 加载示例数据集（MNIST 手写数字）\ndigits = load_digits()\n\n# 使用 UMAP 进行降维\nembedding = umap.UMAP().fit_transform(digits.data)\n\n# 输出嵌入结果的形状\nprint(embedding.shape)  # 输出: (n_samples, 2)\n```\n\n### 参数说明\nUMAP 提供了多个可调参数，以下是一些常用选项：\n- `n_neighbors`: 控制邻近点的数量，影响局部与全局结构的平衡。默认值为 15。\n- `min_dist`: 控制嵌入点之间的最小距离，影响嵌入的紧凑程度。默认值为 0.1。\n- `metric`: 距离度量方法，默认为 `'euclidean'`，支持多种距离函数（如 `'correlation'` 和 `'cosine'`）。\n\n#### 自定义参数示例\n\n```python\nembedding = umap.UMAP(\n    n_neighbors=5,\n    min_dist=0.3,\n    metric='correlation'\n).fit_transform(digits.data)\n```\n\n---\n\n以上是 UMAP 的快速上手指南，更多高级功能和详细文档请参考 [官方文档](https:\u002F\u002Fumap-learn.readthedocs.io\u002F)。","一位生物信息学研究员正在分析单细胞 RNA 测序数据，试图从数万个细胞中发现不同的细胞类型和状态。\n\n### 没有 umap 时\n- 数据维度高达数千维，直接可视化几乎无法揭示任何有意义的模式  \n- 使用 t-SNE 进行降维耗时过长，且难以处理超过 10 万细胞的大规模数据集  \n- t-SNE 的结果对参数敏感，不同运行可能产生不一致的聚类效果  \n- 降维过程中丢失了局部密度信息，难以区分稀疏分布和密集分布的细胞群  \n- 难以在降维后解释数据的全局结构，限制了对细胞类型间关系的理解  \n\n### 使用 umap 后\n- 在几分钟内完成高维数据的降维，并生成清晰的二维或三维可视化图  \n- 能够轻松处理数十万细胞的大规模数据集，性能显著优于 t-SNE  \n- 结果更加稳定，对参数变化的敏感性较低，提升了分析的可靠性  \n- 借助 densMAP 扩展功能，保留了局部密度信息，能够更准确地反映细胞群的分布特征  \n- 不仅保留了局部结构，还更好地呈现了数据的全局关系，帮助研究员理解细胞类型间的层次关系  \n\numap 的高效性和准确性让研究员能够快速洞察复杂数据中的生物学意义，显著提升了数据分析效率和科学发现的速度。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Flmcinnes_umap_524c1702.png","lmcinnes","Leland McInnes","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Flmcinnes_f09990f8.jpg",null,"Tutte Institute for Mathematics and Computing","Ottawa, Ontario, Canada","https:\u002F\u002Fgithub.com\u002Flmcinnes",[84,88,92,95],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,{"name":89,"color":90,"percentage":91},"Shell","#89e051",0,{"name":93,"color":94,"percentage":91},"TeX","#3D6117",{"name":96,"color":97,"percentage":91},"Makefile","#427819",8139,861,"2026-04-05T13:53:33","BSD-3-Clause","Linux, macOS, Windows","未说明",{"notes":105,"python":106,"dependencies":107},"推荐使用 conda 安装依赖，支持通过 pip 安装扩展功能如绘图和 Parametric UMAP。可选安装 tbb 以获得额外 CPU 优化。","3.6+",[108,109,110,111,112,113],"numpy","scipy","scikit-learn","numba","tqdm","pynndescent",[13,51],[67,116,117,118,119],"dimensionality-reduction","visualization","machine-learning","topological-data-analysis",4,"2026-03-27T02:49:30.150509","2026-04-06T11:31:10.699782",[124,129,134,139,144,148],{"id":125,"question_zh":126,"answer_zh":127,"source_url":128},4186,"在 Jupyter 和 Anaconda 环境中运行 UMAP 时遇到类型错误怎么办？","问题可能与 Python 3.5 的兼容性有关。建议升级到 Python 3.6 或更高版本以解决问题。此外，确保正确配置 Conda 环境，推荐使用 Miniconda 并参考官方文档进行设置。","https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002F290",{"id":130,"question_zh":131,"answer_zh":132,"source_url":133},4187,"UMAP 在某些数据集上生成的结果是一个大团块，如何优化？","可以尝试调整参数，例如使用 `n_neighbors=12, min_dist=0.4, spread=0.5`。此外，避免使用默认的谱初始化方法，改用 `init='random'` 参数可能会改善结果。","https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002F2",{"id":135,"question_zh":136,"answer_zh":137,"source_url":138},4188,"UMAP 在处理大规模数据时卡在“Construct embedding”步骤怎么办？","可能是由于数据集中存在大量重复点导致的问题。可以通过设置 `unique=True` 参数（如 `umap.UMAP(n_neighbors=15, unique=True)`）来自动去重并优化计算过程。","https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002F771",{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},4189,"运行 UMAP 时出现 RecursionError 错误如何解决？","此问题已在最新版本中修复。建议更新到最新版本的 UMAP，并尝试使用参数 `n_neighbors=20, metric='cosine', min_dist=0.4, init='random'` 进行测试。","https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fissues\u002F99",{"id":145,"question_zh":146,"answer_zh":147,"source_url":128},4190,"如何正确设置 Conda 环境以避免安装或运行 UMAP 时出现问题？","推荐使用 Miniconda 来管理环境，并参考官方文档进行配置：[Miniconda 文档](https:\u002F\u002Fdocs.conda.io\u002Fen\u002Flatest\u002Fminiconda.html)。此外，Windows 用户可以使用 PowerShell Core 作为终端工具。",{"id":149,"question_zh":150,"answer_zh":151,"source_url":138},4191,"UMAP 中的 `unique=True` 参数有什么作用？","`unique=True` 参数会在计算过程中自动去除重复点，仅对唯一点进行嵌入学习，然后将所有点（包括重复点）映射到低维空间中。这可以显著减少计算负担并避免重复点带来的问题。",[153,158,163,168,173,178,183,188,193,198,203,208,213,218,223,228,233,238,242,246],{"id":154,"version":155,"summary_zh":156,"released_at":157},113307,"release-0.5.11","## What's Changed\r\n* Deterministic sort for fast_knn_indices by @bohemian-miser in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1236\r\n\r\n## New Contributors\r\n* @bohemian-miser made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1236\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.10.post2...release-0.5.11","2026-01-12T19:50:33",{"id":159,"version":160,"summary_zh":161,"released_at":162},113308,"release-0.5.10.post2","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.10.post1...release-0.5.10.post2","2025-12-11T21:33:32",{"id":164,"version":165,"summary_zh":166,"released_at":167},113309,"release-0.5.10.post1","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.10...release-0.5.10.post1","2025-12-10T21:22:21",{"id":169,"version":170,"summary_zh":171,"released_at":172},113310,"release-0.5.10","## What's Changed\r\n* Add reference to torchdr for GPU-accelerated UMAP by @huguesva in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1210\r\n* Add support for python 3.13 to build pipelines by @gclendenning in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1215\r\n* [MINOR:TYPO] Update precomputed_k-nn.rst by @cakiki in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1218\r\n* [MINOR:TYPO] Update transform_landmarked_pumap.rst by @cakiki in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1220\r\n* [MINOR:TYPO] Update index.rst by @cakiki in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1222\r\n* Fix crashes when computing the local dimension, and added the option of returning the local dimension by @gxli in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1226\r\n* Fix typo in the dataset explanation paragraph by @samuelpadron in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1229\r\n* Change to ensure_all_finite for scikit-learn continued compatibility.\r\n\r\n## New Contributors\r\n* @huguesva made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1210\r\n* @gxli made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1226\r\n* @samuelpadron made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1229\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.9.post2...release-0.5.10","2025-12-09T02:21:23",{"id":174,"version":175,"summary_zh":176,"released_at":177},113311,"release-0.5.9.post2","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.9.post1...release-0.5.9.post2","2025-07-02T23:35:45",{"id":179,"version":180,"summary_zh":181,"released_at":182},113312,"release-0.5.9.post1","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.9...release-0.5.9.post1","2025-07-02T21:14:57",{"id":184,"version":185,"summary_zh":186,"released_at":187},113313,"release-0.5.9","## What's Changed\r\n* Add the option to exclude raw data from the saved model by @bartbroere in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1126\r\n* Umap with Nomic Atlas by @mcembalest in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1202\r\n* Migrate the build system to newer methods by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1208\r\n\r\n## New Contributors\r\n* @bartbroere made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1126\r\n* @mcembalest made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1202\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.8...release-0.5.9","2025-07-02T20:01:28",{"id":189,"version":190,"summary_zh":191,"released_at":192},113314,"release-0.5.8","## What's Changed\r\n* Update README.rst by @jc-healy in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1162\r\n* [BUG]: Fix feature names for sklearn API by @fraimondo in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1166\r\n* Update basic_usage.rst to replace deprecated function. by @rattle99 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1188\r\n* Update requirements by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1189\r\n\r\n## New Contributors\r\n* @fraimondo made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1166\r\n* @rattle99 made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1188\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.7...release-0.5.8","2025-02-28T21:30:46",{"id":194,"version":195,"summary_zh":196,"released_at":197},113315,"release-0.5.7","## What's Changed\r\n* Update README.rst by @Slyderek in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1111\r\n* Allow consistent transform by UMAP by @IntelleKarl in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1129\r\n* docs: mention \"precomputed\" metric as a parameter by @NickCrews in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1137\r\n* Fix typo in AlignedUMAP documentation by @milesmcc in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1139\r\n* Add pre-release parameter in pipelines by @gclendenning in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1130\r\n* Update parametric_umap.py by @AMS-Hippo in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1147\r\n* Compile _optimize_layout_euclidean_single_epoch once by @kmkolasinski in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1152\r\n* Landmarked Re-Trainable Parametric UMAP by @jacobgolding in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1153\r\n* Small default functions for landmark-UMAP by @AMS-Hippo in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1156\r\n\r\n## New Contributors\r\n* @Slyderek made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1111\r\n* @IntelleKarl made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1129\r\n* @NickCrews made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1137\r\n* @milesmcc made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1139\r\n* @AMS-Hippo made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1147\r\n* @kmkolasinski made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1152\r\n* @jacobgolding made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1153\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.6...release-0.5.7","2024-10-28T17:28:43",{"id":199,"version":200,"summary_zh":201,"released_at":202},113316,"release-0.5.6","## What's Changed\r\n* Setting random state could still lead to stochastic results by @dannywhuang in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1081\r\n* Change release tag structure and switch to real PyPI by @gclendenning in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1085\r\n* Add Keras 3 support to ParametricUMAP by @fchollet in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1101\r\n* Finish refactoring ParametricUMAP by @fchollet in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1105\r\n* Add torch support to ParametricUMAP by @fchollet in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1104\r\n* Bit hamming by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1107\r\n\r\n## New Contributors\r\n* @dannywhuang made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1081\r\n* @fchollet made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1101\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002Frelease-0.5.5...release-0.5.6","2024-04-03T15:21:16",{"id":204,"version":205,"summary_zh":206,"released_at":207},113317,"release-0.5.5","## What's Changed\r\n* fix interactive plot if hover_data but no tools is provided by @timoleistner in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1058\r\n* Fixed bug causing digits data bokeh plot in tutorial to break by @Liqs-v2 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1067\r\n* Make `tbb` requirement optional by @mithaler in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1066\r\n* Fix `pkg_resources` deprecation warning by @laclouis5 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1072\r\n\r\n## New Contributors\r\n* @timoleistner made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1058\r\n* @Liqs-v2 made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1067\r\n* @mithaler made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1066\r\n* @laclouis5 made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1072\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002F0.5.4...release-0.5.5","2023-11-18T01:10:29",{"id":209,"version":210,"summary_zh":211,"released_at":212},113318,"0.5.4","## What's Changed\r\n* Add numerically stable cross entropy loss by @jgraving in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F856\r\n* Fix AlignedUMAP.update by @hndgzkn in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F861\r\n* Fixed numerical issue in make_epochs_per_sample by @GregDemand in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F875\r\n* Fix in1d() return type issue by @GregDemand in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F877\r\n* Fix use of relation_dicts in expand_relations by @GregDemand in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F880\r\n* Fix indexing issue with relations array by @GregDemand in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F882\r\n* Added uniqueness flag to intersect1d by @SkBlaz in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F896\r\n* Fix typos in docstrings by @sky-2002 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F903\r\n* consistency between install_requires and requirements.txt by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F908\r\n* Search index is optional for precomputed_knn by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F909\r\n* Fix doc build (a bit) by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F910\r\n* Fix the doc build by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F913\r\n* PCA initialization option by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F911\r\n* Allow points to be passed to umap.plot.points by @dribnet in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F912\r\n* feature: add ability to specify tools to interactive charts so richer exploration with images and other content is possible by @suneeta-mall in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F858\r\n* tighten test_umap_trustworthiness_random_init bound by @austereantelope in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F850\r\n* tighten test_umap_sparse_trustworthiness bound by @austereantelope in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F851\r\n* Get intermediate results at different epochs by @matthieuheitz in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F696\r\n* Update penguins doc by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F914\r\n* ignore force approximation with precomputed knn by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F927\r\n* Update deprecated matplotlib colormap registry by @yannikschaelte in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F929\r\n* Esm metagenomic atlas to Interactive Visualizations by @BioGeek in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F936\r\n* `get_feature_names_out` for `UMAP` + tests by @CarloLepelaars in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F939\r\n* Updated densMAP citation in README by @hhcho in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F945\r\n* sklearn parwise distances doesn't support np.matrix anymore by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F946\r\n* Minor performance improvements by @rohan-shah-nearmap in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F948\r\n* Anticipate stricter asarray handling in numpy by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F952\r\n* Aligned umap issues by @GregDemand in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F958\r\n* Update densmap_demo.rst by @aizardar in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F973\r\n* Allow UMAP to accept data with nan or inf values by @SamKlier in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F977\r\n* new spectral initialization option: a truncated SVD-warmed lobpcg  by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F924\r\n* fix: fix numpy.int and numpy.float deprecation to be compatible with numpy >= 1.20.0 by @TTTPOB in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1010\r\n* Docs | Add missing space in precomputed_k-nn.rst by @Odessit007 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1014\r\n* Docs | Fix typo in supervised.rst by @Odessit007 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1013\r\n* Update README.rst by @dsblank in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1016\r\n* Fix docstring formatting of init parameter of UMAP class by @felixdivo in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1019\r\n* Plotting Fix: fixing capitalization for Bokeh plotting for version 3.1.1 compatibility by @msakarvadia in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1023\r\n* Issue warning if setting n_jobs and random_state by @crypdick in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1002\r\n* docs : Fix formatting  in UMAP class documentation by @Hamza-nabil in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F992\r\n* docs: minor typos fix by @0xTiger in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F983\r\n* [TYPO] Update precomputed_k-nn.rst by @cakiki in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F922\r\n* Bug fix round pre0.5.4 by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1038\r\n* Fix unit tests by @hamelin in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1031\r\n* fix relations_dictionary problems which prevents from correctly updating aligned_umap by @hndgzkn in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F863\r\n* Drop requirements.txt, embrace setup.py for deps by @hamelin in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1044\r\n* Fix unit tests involving spectral initialization by @hamelin in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F1043\r\n* Drop dependency on TBB on non-Intel deployments by @hamelin in https:\u002F\u002Fgith","2023-09-15T15:26:00",{"id":214,"version":215,"summary_zh":216,"released_at":217},113319,"0.5.3","## What's Changed\r\n* Use labels in AlignedUMAP if provided by @gclen in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F802\r\n* Properly escape invalid escape sequences. by @brilee in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F807\r\n* Update parametric_umap.rst by @timsainb in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F811\r\n* homtopically -> homotopically by @faisito in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F820\r\n* covert -> convert by @faisito in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F819\r\n* super minor grammar by @faisito in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F818\r\n* Add Mutual-NN Description by @adalmia96 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F822\r\n* Loss needs to be handled independently now as well by @lmcinnes in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F808\r\n* Fix header for Mutual NN Doc  by @adalmia96 in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F823\r\n* Add missing links for graph layout methods by @jlmelville in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F829\r\n* tighten test_umap_trustworthiness_fast_approx bound by @austereantelope in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F832\r\n\r\n## New Contributors\r\n* @brilee made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F807\r\n* @faisito made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F820\r\n* @adalmia96 made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F822\r\n* @austereantelope made their first contribution in https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fpull\u002F832\r\n\r\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Flmcinnes\u002Fumap\u002Fcompare\u002F0.5.2...0.5.3","2022-04-13T21:19:42",{"id":219,"version":220,"summary_zh":221,"released_at":222},113320,"0.5.2","Various bug fixes for transform, update, etc.\r\nSupport for passing pre-defined knn-graphs as input.","2021-10-29T16:28:45",{"id":224,"version":225,"summary_zh":226,"released_at":227},113321,"0.5.1","A few minor fixes, including a bug fix against the upcoming numba 0.53","2021-02-08T20:01:30",{"id":229,"version":230,"summary_zh":231,"released_at":232},113322,"0.5.0","Adds support for ParametricUMAP, DensMAP, AlignedUMAP and more.","2021-01-11T21:27:54",{"id":234,"version":235,"summary_zh":236,"released_at":237},113323,"0.4.5","Fix some issues with the latest scipy sparse lil_matrix handling.","2020-06-30T15:26:06",{"id":239,"version":240,"summary_zh":79,"released_at":241},113324,"0.4.4","2020-06-05T01:10:39",{"id":243,"version":244,"summary_zh":79,"released_at":245},113325,"0.4.3","2020-05-15T04:25:33",{"id":247,"version":248,"summary_zh":79,"released_at":249},113326,"0.4.2","2020-04-29T16:26:08"]