hdbscan

hdbscan

灵活高效的层次密度聚类算法

HDBSCAN是一种高性能的层次密度聚类算法,能够处理不同密度的聚类并对参数选择更加稳健。该算法主要参数直观易选,无需复杂调优,适合探索性数据分析。HDBSCAN具有快速可靠的特点,能返回有意义的聚类结果。此外,它还支持异常检测和分支检测,并提供可视化工具辅助理解聚类结果。该开源项目在GitHub上提供详细文档和示例,支持Python 2和3版本。

HDBSCAN聚类算法密度聚类数据分析机器学习Github开源项目

.. image:: https://img.shields.io/pypi/v/hdbscan.svg :target: https://pypi.python.org/pypi/hdbscan/ :alt: PyPI 版本 .. image:: https://anaconda.org/conda-forge/hdbscan/badges/version.svg :target: https://anaconda.org/conda-forge/hdbscan :alt: Conda-forge 版本 .. image:: https://anaconda.org/conda-forge/hdbscan/badges/downloads.svg :target: https://anaconda.org/conda-forge/hdbscan :alt: Conda-forge 下载量 .. image:: https://img.shields.io/pypi/l/hdbscan.svg :target: https://github.com/scikit-learn-contrib/hdbscan/blob/master/LICENSE :alt: 许可证 .. image:: https://travis-ci.org/scikit-learn-contrib/hdbscan.svg :target: https://travis-ci.org/scikit-learn-contrib/hdbscan :alt: Travis 构建状态 .. image:: https://codecov.io/gh/scikit-learn-contrib/hdbscan/branch/master/graph/badge.svg :target: https://codecov.io/gh/scikit-learn-contrib/hdbscan :alt: 测试覆盖率 .. image:: https://readthedocs.org/projects/hdbscan/badge/?version=latest :target: https://hdbscan.readthedocs.org :alt: 文档 .. image:: http://joss.theoj.org/papers/10.21105/joss.00205/status.svg :target: http://joss.theoj.org/papers/10.21105/joss.00205 :alt: JOSS 文章 .. image:: https://mybinder.org/badge.svg :target: https://mybinder.org/v2/gh/scikit-learn-contrib/hdbscan :alt: 在 Binder 中启动示例笔记本

======= HDBSCAN

HDBSCAN - 基于分层密度的带噪声应用空间聚类。它在不同的 epsilon 值上执行 DBSCAN,并整合结果以找到在 epsilon 上提供最佳稳定性的聚类。这使得 HDBSCAN 能够找到不同密度的聚类(不同于 DBSCAN),并且对参数选择更加稳健。

实际上,这意味着 HDBSCAN 无需或仅需很少的参数调整就能直接返回良好的聚类结果 —— 而且主要参数"最小聚类大小"是直观且易于选择的。

HDBSCAN 非常适合探索性数据分析;它是一种快速且稳健的算法,你可以信赖它返回有意义的聚类(如果存在的话)。

基于以下论文:

McInnes L, Healy J. *加速分层密度聚类* 
发表于:2017 IEEE 国际数据挖掘研讨会论文集 (ICDMW),IEEE,第 33-42 页。
2017 `[pdf] <http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8215642>`_

R. Campello, D. Moulavi, 和 J. Sander, *基于分层密度估计的密度聚类*
发表于:知识发现与数据挖掘进展,Springer,第 160-172 页。
2013

文档(包括教程)可在 ReadTheDocs 上查阅:http://hdbscan.readthedocs.io/en/latest/

以下笔记本可供参考:比较 HDBSCAN 与其他聚类算法 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/Comparing%20Clustering%20Algorithms.ipynb>HDBSCAN 工作原理解析 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/How%20HDBSCAN%20Works.ipynb> 以及 与其他 Python 聚类实现的性能比较 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/Benchmarking%20scalability%20of%20clustering%20implementations-v0.7.ipynb>_。


如何使用 HDBSCAN

hdbscan 包继承自 sklearn 类,因此可以与其他 sklearn 聚类器无缝对接,调用 API 完全相同。同样,它支持多种输入格式:形状为 (样本数 x 特征数) 的数组(或 pandas 数据框、稀疏矩阵);给出样本间距离矩阵的数组(或稀疏矩阵)。

.. code:: python

import hdbscan
from sklearn.datasets import make_blobs

data, _ = make_blobs(1000)

clusterer = hdbscan.HDBSCAN(min_cluster_size=10)
cluster_labels = clusterer.fit_predict(data)

性能

我们为提高 hdbscan 实现的速度做出了巨大努力。它比 Java 中的参考实现 快几个数量级 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/Python%20vs%20Java.ipynb>,目前甚至比 C 和 C++ 中高度优化的单链接实现还要快。 版本 0.7 的性能可以在这个笔记本中查看 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/Benchmarking%20scalability%20of%20clustering%20implementations-v0.7.ipynb>。 特别是,在低维数据上的性能优于 sklearn 的 DBSCAN <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/Benchmarking%20scalability%20of%20clustering%20implementations%202D%20v0.7.ipynb>_, 而且通过支持 joblib 缓存,使用不同参数重新聚类几乎可以零成本完成。


附加功能

hdbscan 包配备了可视化工具,帮助你理解聚类结果。拟合数据后,聚类器对象具有以下属性:

  • 压缩的聚类层次结构
  • 稳健单链接聚类层次结构
  • 可达距离最小生成树

所有这些都配备了绘图方法,并可转换为 Pandas 或 NetworkX 以进行进一步分析。有关示例和更多详细信息,请参阅 HDBSCAN 工作原理 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/How%20HDBSCAN%20Works.ipynb>_ 笔记本。

聚类器对象还有一个属性提供聚类成员强度,从而实现可选的软聚类(无需额外计算成本)。最后,每个聚类还会得到一个持续性得分,表示该聚类在数据中存在的距离尺度范围内的稳定性。这提供了聚类相对强度的度量。


异常检测

HDBSCAN 聚类器对象还支持 GLOSH 异常检测算法。 将聚类器拟合到数据后,可以通过 outlier_scores_ 属性访问异常分数。结果是一个分数值向量,每个拟合的数据点对应一个分数。较高的分数表示更异常的对象。 通过上四分位数选择异常通常是一种好方法。

基于以下论文: R.J.G.B. Campello, D. Moulavi, A. Zimek 和 J. Sander 用于数据聚类、可视化和异常检测的分层密度估计, ACM 数据发现知识交易,第 10 卷,第 1 期(2015 年 7 月),1-51 页。


稳健单链接

hdbscan 包还提供了对 Chaudhuri 和 Dasgupta 提出的稳健单链接聚类算法的支持。与 HDBSCAN 实现一样,这是该算法的高性能版本,性能优于 scipy 的标准单链接实现。稳健单链接 层次结构可作为稳健单链接聚类器的属性使用,同样可以绘制或导出层次结构,并在给定 截断级别和 gamma 值下提取平面聚类。

使用示例:

.. code:: python

import hdbscan
from sklearn.datasets import make_blobs

data, _ = make_blobs(1000)

clusterer = hdbscan.RobustSingleLinkage(cut=0.125, k=7)
cluster_labels = clusterer.fit_predict(data)
hierarchy = clusterer.cluster_hierarchy_
alt_labels = hierarchy.get_clusters(0.100, 5)
hierarchy.plot()

基于以下论文: K. Chaudhuri 和 S. Dasgupta. "聚类树的收敛率。" 发表于:神经信息处理系统进展,2010。


分支检测

hdbscan 包支持 Bot 等人 <https://arxiv.org/abs/2311.15887>_ 提出的分支检测后处理步骤。聚类形状, 如分支结构,可以揭示在基于密度的聚类层次结构中未表达的有趣模式。 BranchDetector 类模仿 HDBSCAN API,可用于检测聚类中的分支层次结构。它提供压缩 分支层次结构、分支持续性和分支成员资格,并支持 joblib 的缓存功能。有一个笔记本 演示 BranchDetector 的使用 <http://nbviewer.jupyter.org/github/scikit-learn-contrib/hdbscan/blob/master/notebooks/How%20to%20detect%20branches.ipynb>_。

使用示例:

.. code:: python

import hdbscan
from sklearn.datasets import make_blobs

data, _ = make_blobs(1000)

clusterer = hdbscan.HDBSCAN(branch_detection_data=True).fit(data)
branch_detector = hdbscan.BranchDetector().fit(clusterer)
branch_detector.cluster_approximation_graph_.plot(edge_width=0.1)

基于以下论文: D. M. Bot, J. Peeters, J. Liesenborgs 和 J. Aerts "FLASC:一种对突发敏感的聚类算法:扩展 HDBSCAN 以检测聚类中的分支"* Arxiv 2311.15887, 2023。


安装

最简单的安装方法,如果你使用 Anaconda(感谢 conda-forge,它太棒了!):

.. code:: bash

conda install -c conda-forge hdbscan

使用 PyPI 安装,假设你的 pip 是最新版本:

.. code:: bash

pip install hdbscan

多个平台的二进制轮子可用,这要感谢 Ryan Helinski rlhelinski@gmail.com 的工作。

如果 pip 在拉取依赖项时遇到困难,我们建议先将 pip 升级到至少 10 版本,然后再试一次:

.. code:: bash

pip install --upgrade pip
pip install hdbscan

否则,使用 anaconda 手动安装依赖项,然后从 pip 拉取 hdbscan:

.. code:: bash

conda install cython
conda install numpy scipy
conda install scikit-learn
pip install hdbscan

要手动安装 GitHub 上的最新代码:

.. code:: bash

pip install --upgrade git+https://github.com/scikit-learn-contrib/hdbscan.git#egg=hdbscan

或者下载软件包,安装所需依赖,并手动运行安装程序:

.. code:: bash

wget https://github.com/scikit-learn-contrib/hdbscan/archive/master.zip
unzip master.zip
rm master.zip
cd hdbscan-master

pip install -r requirements.txt

python setup.py install

运行测试

安装后可以使用以下命令运行软件包测试:

.. code:: bash

nosetests -s hdbscan

或者,如果已安装 nosenosetests 不在您的 PATH 变量中:

.. code:: bash

python -m nose -s hdbscan

如果有一个或多个测试失败,请在 https://github.com/scikit-learn-contrib/hdbscan/issues/new 报告错误


Python 版本

hdbscan 库同时支持 Python 2 和 Python 3。但如果您可以使用,我们推荐 Python 3 作为更好的选择。


帮助和支持

对于简单问题,您可以查阅文档中的 FAQ <https://hdbscan.readthedocs.io/en/latest/faq.html>。 如果您的问题在那里没有得到适当解决,请查看 GitHub 上的 问题 <https://github.com/scikit-learn-contrib/hdbscan/issues>。最后,如果那里没有可用的解决方案,请随时 提出问题 <https://github.com/scikit-learn-contrib/hdbscan/issues/new>_;作者将尝试在合理的时间内回复。


贡献

我们欢迎任何形式的贡献!对文档的协助,特别是扩展教程,总是受欢迎的。要贡献,请 fork 项目 <https://github.com/scikit-learn-contrib/hdbscan/issues#fork-destination-box>_,进行更改并提交拉取请求。我们将尽最大努力解决任何问题,并将您的代码合并到主分支中。


引用

如果您在科学出版物中使用了这个代码库并希望引用它,请使用 开源软件期刊文章 <http://joss.theoj.org/papers/10.21105/joss.00205>_。

L. McInnes, J. Healy, S. Astels, *hdbscan: Hierarchical density based clustering*
In: Journal of Open Source Software, The Open Journal, volume 2, number 11.
2017

.. code:: bibtex

@article{mcinnes2017hdbscan,
  title={hdbscan: Hierarchical density based clustering},
  author={McInnes, Leland and Healy, John and Astels, Steve},
  journal={The Journal of Open Source Software},
  volume={2},
  number={11},
  pages={205},
  year={2017}
}

要引用这个库中开发的高性能算法,请引用我们在 ICDMW 2017 会议论文集中的论文。

McInnes L, Healy J. *Accelerated Hierarchical Density Based Clustering* 
In: 2017 IEEE International Conference on Data Mining Workshops (ICDMW), IEEE, pp 33-42.
2017

.. code:: bibtex

@inproceedings{mcinnes2017accelerated,
  title={Accelerated Hierarchical Density Based Clustering},
  author={McInnes, Leland and Healy, John},
  booktitle={Data Mining Workshops (ICDMW), 2017 IEEE International Conference on},
  pages={33--42},
  year={2017},
  organization={IEEE}
}

如果您在科学出版物中使用了这个代码库的分支检测功能并希望引用它,请使用 Arxiv 预印本 <https://arxiv.org/abs/2311.15887>_:

D. M. Bot, J. Peeters, J. Liesenborgs and J. Aerts
*"FLASC: A Flare-Sensitive Clustering Algorithm: Extending HDBSCAN\* for Detecting Branches in Clusters"*
Arxiv 2311.15887, 2023.

.. code:: bibtex

@misc{bot2023flasc,
    title={FLASC: A Flare-Sensitive Clustering Algorithm: Extending HDBSCAN* for Detecting Branches in Clusters}, 
    author={D. M. Bot and J. Peeters and J. Liesenborgs and J. Aerts},
    year={2023},
    eprint={2311.15887},
    archivePrefix={arXiv},
    primaryClass={cs.LG},
    url={https://arxiv.org/abs/2311.15887}, 
}

许可

hdbscan 包采用 3 条款 BSD 许可。尽情使用吧。

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多