Skip to main content

基于密度和可变密度簇的聚类

项目描述

PyPI 版本 康达锻造版 执照

HDBSCAN

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

在实践中,这意味着 HDBSCAN 在很少或没有参数调整的情况下立即返回良好的聚类 - 主要参数,最小聚类大小,直观且易于选择。

HDBSCAN 是探索性数据分析的理想选择;这是一种快速而强大的算法,您可以信任它来返回有意义的集群(如果有的话)。

根据论文:

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

文档(包括教程)可在http://hdbscan.readthedocs.io/en/latest/上的 ReadTheDocs 上获得。

提供了将HDBSCAN与其他聚类算法进行比较、解释HDBSCAN 工作原理以及与其他 python 聚类实现进行性能比较的笔记本。

如何使用 HDBSCAN

hdbscan 包继承自 sklearn 类,因此可以与其他具有相同调用 API 的 sklearn 集群器巧妙地结合在一起。同样,它支持多种格式的输入:形状为(num_samples x num_features) 的数组(或 pandas 数据帧,或稀疏矩阵);一个数组(或稀疏矩阵),给出样本之间的距离矩阵。

import hdbscan

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

表现

为了尽可能快地实现 hdbscan,我们付出了巨大的努力。它比 Java 中的参考实现快几个数量级,目前比 C 和 C++ 中高度优化的单链接实现快。 0.7版本的性能可以在这款笔记本上看到。特别是在低维数据上的性能优于 sklearn 的 DBSCAN,并且通过支持使用 joblib 进行缓存,使用不同参数重新聚类几乎是免费的。

附加功能

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

  • 精简的集群层次结构

  • 强大的单链接集群层次结构

  • 可达距离最小生成树

所有这些都配备了用于绘制和转换为 Pandas 或 NetworkX 以进行进一步分析的方法。有关示例和更多详细信息,请参阅有关HDBSCAN 工作原理的笔记本 。

群集器对象还具有提供群集成员强度的属性,从而导致可选的软群集(并且没有进一步的计算费用)。最后,每个集群还会收到一个持久性分数,该分数给出了集群在数据中存在的距离尺度范围内的稳定性。这提供了集群相对强度的度量。

异常值检测

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

根据论文:

RJGB Campello、D. Moulavi、A. Zimek 和 J. Sander 用于数据聚类、可视化和异常值检测的层次密度估计,ACM Trans。关于从数据中发现知识,第 10 卷,第 1 期(2015 年 7 月),1-51。

坚固的单连杆

hdbscan 包还为 Chaudhuri 和 Dasgupta 的强大的单链接 聚类算法提供支持。与 HDBSCAN 实现一样,这是算法的高性能版本,其性能优于 scipy 的标准单链接实现。强大的单链接层次结构可用作强大的单链接聚类器的属性,同样具有绘制或导出层次结构的能力,并在给定的切割级别和伽马值处提取平面聚类。

示例用法:

import hdbscan

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 年。

安装

最简单的安装,如果你有 Anaconda(感谢 conda-forge 太棒了!):

conda install -c conda-forge hdbscan

PyPI 安装,假设您已安装 sklearn 及其所有要求:

pip install hdbscan

如果 pip 在拉取依赖项时遇到困难,那么我们建议使用 anaconda 手动安装依赖项,然后从 pip 拉取 hdbscan:

conda install cython
conda install scikit-learn
pip install hdbscan

对于手动安装,请获取此软件包:

wget https://github.com/lmcinnes/hdbscan/archive/master.zip
unzip master.zip
rm master.zip
cd hdbscan-master

安装要求

sudo pip install -r requirements.txt

或者

conda install scikit-learn cython

安装包

python setup.py install

许可

hdbscan 包是 3-clause BSD 许可的。享受。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

hdbscan-with-cosine-distance-0.8.1.tar.gz (3.6 MB 查看哈希)

已上传 source