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 许可。尽情使用吧。

编辑推荐精选

商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

Keevx

Keevx

AI数字人视频创作平台

Keevx 一款开箱即用的AI数字人视频创作平台,广泛适用于电商广告、企业培训与社媒宣传,让全球企业与个人创作者无需拍摄剪辑,就能快速生成多语言、高质量的专业视频。

即梦AI

即梦AI

一站式AI创作平台

提供 AI 驱动的图片、视频生成及数字人等功能,助力创意创作

扣子-AI办公

扣子-AI办公

AI办公助手,复杂任务高效处理

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

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

AI工具TraeAI IDE协作生产力转型热门
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI辅助写作AI工具蛙蛙写作AI写作工具学术助手办公助手营销助手AI助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

热门AI助手AI对话AI工具聊天机器人
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

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

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

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