HDBSCAN#

class sklearn.cluster.HDBSCAN(min_cluster_size=5, min_samples=None, cluster_selection_epsilon=0.0, max_cluster_size=None, metric='euclidean', metric_params=None, alpha=1.0, algorithm='auto', leaf_size=40, n_jobs=None, cluster_selection_method='eom', allow_single_cluster=False, store_centers=None, copy=False)[源代码]#

使用基于密度的分层集群对数据进行集群。

HDBSCAN -含噪音应用程序的基于分层密度的空间集群。执行 DBSCAN 超过不同的RST值,并综合结果以找到比RST提供最佳稳定性的集群。这使得HDSCAN能够找到不同密度的集群(不像 DBSCAN ),并且对参数选择更加稳健。阅读更多的 User Guide .

有关如何使用HDSCAN的示例,以及与 DBSCAN ,请参阅 plotting demo .

Added in version 1.3.

参数:
min_cluster_sizeint,默认=5

The minimum number of samples in a group for that group to be considered a cluster; groupings smaller than this size will be left as noise.

min_samplesint,默认=无

参数 k 用于计算点之间的距离 x_p 及其第k个最近的邻居。当 None ,默认为 min_cluster_size .

cluster_selection_epsilonfloat,默认=0.0

距离阈值。低于此值的群集将被合并。看到 [5] for more information.

max_cluster_sizeint,默认=无

返回的集群大小限制 "eom" 集群选择算法。没有限制时 max_cluster_size=None .如果 cluster_selection_method="leaf" .

metric字符串或可调用,默认='欧几里德'

计算要素数组中实例之间的距离时使用的指标。

  • 如果指标是字符串或可调用,则它必须是允许的选项之一 pairwise_distances 其指标参数。

  • 如果度量是“预先计算的”,则假设X是距离矩阵并且必须是平方。

metric_paramsdict,默认=无

参数传递给距离指标。

alphafloat,默认=1.0

鲁棒单联动中使用的距离缩放参数。看到 [3] for more information.

algorithm{“Auto”,“brude”,“kd_tree”,“ball_tree”},默认=“Auto”

具体使用哪种算法来计算核心距离;默认情况下,此设置为 "auto" 它试图使用 KDTree 如果可能的话,树,否则它使用 BallTree 树两 "kd_tree""ball_tree" 算法使用 NearestNeighbors 估计者。

如果 X 期间通过 fit 稀疏或 metric 对两者都无效 KDTreeBallTree ,然后它决定使用 "brute" 算法

leaf_sizeint,默认=40

当KDTree或BallTree用作核心距离算法时,负责快速最近邻查询的树的叶子大小。数据集大小大且小 leaf_size 可能会导致过多的内存使用。如果内存不足,请考虑增加 leaf_size 参数.忽略 algorithm="brute" .

n_jobsint,默认=无

并行运行以计算距离的作业数量。 None 意思是1,除非在a中 joblib.parallel_backend 上下文 -1 意味着使用所有处理器。看到 Glossary 了解更多详细信息。

cluster_selection_method{“eom”,“leaf”},default=“eom”

用于从精简树中选择集群的方法。HDSCAN * 的标准方法是使用质量过剩 ("eom" )找到最持久的集群的算法。或者,您可以选择树叶上的集群--这提供了粒度最细且均匀的集群。

allow_single_cluster布尔,默认=假

默认情况下,HDBSCAN* 不会生成单个集群,将其设置为True将覆盖此,并在您认为这是数据集的有效结果的情况下允许单个集群结果。

store_centers字符串,默认=无

其中(如果有的话)以计算和存储为中心。选项包括:

  • None 它既不计算也不存储任何中心。

  • "centroid" 它通过取其位置的加权平均值来计算中心。请注意,该算法使用欧几里得度量,并且不保证输出将是观察到的数据点。

  • "medoid" 它通过选取匹配数据中的点来计算中心,从而最小化与集群中所有其他点的距离。这比“重心”慢,因为它需要计算同一集群的点之间的额外成对距离,但确保输出是观察到的数据点。medoid对于任意度量也是明确定义的,并且不依赖于欧几里得度量。

  • "both" 它计算和存储两种形式的中心。

copy布尔,默认=假

如果 copy=True 那么随时都会进行就地修改,从而覆盖传递给 fit ,将首先制作一个副本,以保证原始数据不变。目前,它只适用于 metric="precomputed" ,当经过密集阵列或CSR稀疏矩阵时,以及当 algorithm="brute" .

属性:
labels_形状的nd数组(n_samples,)

为数据集中的每个点提供集群标签 fit .离群值标记如下:

  • 有噪音的样本标有-1。

  • 具有无限个元素(+/- NP.inf)的样本被指定为标签-2。

  • 具有缺失数据的样本被赋予标签-3,即使它们也有无限个元素。

probabilities_形状的nd数组(n_samples,)

每个样本作为其指定集群成员的强度。

  • 经过筛选的样本的概率与它们作为集群一部分持续存在的程度成正比。

  • 有噪音的样本的概率为零。

  • 具有无限元素(+/- NP.inf)的样本的概率为0。

  • 数据缺失的样本有可能 np.nan .

n_features_in_int

期间看到的功能数量 fit .

feature_names_in_ :nd形状数组 (n_features_in_ ,)nd数组形状(

Names of features seen during fit. Defined only when X has feature names that are all strings.

centroids_形状的nd数组(n_classes,n_features)

包含根据标准欧几里得度量计算的每个集群的重心的集合。如果集群本身是非凸的,那么这些中心可能会落在其各自的集群“外面”。

注意 n_clusters 仅计算非离群值集群。也就是说 -1, -2, -3 排除离群值集群的标签。

medoids_形状的nd数组(n_classes,n_features)

一个集合,包含根据传递给 metric 参数. medoids是原始集群中的点,它们在所选度量下最小化到该集群中所有其他点的平均距离。这些可以被认为是投射的结果 metric - 基于质心回到集群上。

注意 n_clusters 仅计算非离群值集群。也就是说 -1, -2, -3 排除离群值集群的标签。

参见

DBSCAN

含噪音应用程序的基于密度的空间聚集。

OPTICS

确定集群结构的排序点。

Birch

内存高效的在线学习算法。

注意到

The min_samples parameter includes the point itself, whereas the implementation in scikit-learn-contrib/hdbscan does not. To get the same results in both versions, the value of min_samples here must be 1 greater than the value used in scikit-learn-contrib/hdbscan.

引用

[3]

Chaudhuri, K., & Dasgupta, S. Rates of convergence for the cluster tree. <https://papers.nips.cc/paper/2010/hash/ b534ba68236ba543ae44b22bd110a1d6-Abstract.html> _

[4]

Moulavi, D., Jaskowiak, P.A., Campello, R.J., Zimek, A. and Sander, J. Density-Based Clustering Validation. <https://www.dbs.ifi.lmu.de/~zimek/publications/SDM2014/DBCV.pdf> _

示例

>>> import numpy as np
>>> from sklearn.cluster import HDBSCAN
>>> from sklearn.datasets import load_digits
>>> X, _ = load_digits(return_X_y=True)
>>> hdb = HDBSCAN(min_cluster_size=20)
>>> hdb.fit(X)
HDBSCAN(min_cluster_size=20)
>>> hdb.labels_.shape == (X.shape[0],)
True
>>> np.unique(hdb.labels_).tolist()
[-1, 0, 1, 2, 3, 4, 5, 6, 7]
dbscan_clustering(cut_distance, min_cluster_size=5)[源代码]#

DBSCAN给出的返回集群,没有边界点。

Return clustering that would be equivalent to running DBSCAN* for a particular cut_distance (or epsilon) DBSCAN* can be thought of as DBSCAN without the border points. As such these results may differ slightly from cluster.DBSCAN due to the difference in implementation over the non-core points.

这也可以被认为是从通过单个连锁树的恒定高度切割而来的平坦集群。

这表示为稳健的单连锁聚类选择切割值的结果。的 min_cluster_size 允许平面集群声明噪音点(并且集群小于 min_cluster_size ).

参数:
cut_distance浮子

相互可达性距离切割值用于生成平坦集群。

min_cluster_sizeint,默认=5

小于该值的集群被称为“噪音”,并且在生成的平面集群中保持未集群。

返回:
labels形状的nd数组(n_samples,)

集群标签阵列,每个数据点一个。离群值标记如下:

  • 有噪音的样本标有-1。

  • 具有无限个元素(+/- NP.inf)的样本被指定为标签-2。

  • 具有缺失数据的样本被赋予标签-3,即使它们也有无限个元素。

fit(X, y=None)[源代码]#

基于层次密度聚类查找聚类。

参数:
X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 形状的nd数组(n_samples,n_samples)

特征数组或样本之间的距离数组,如果 metric='precomputed' .

y没有一

忽视

返回:
self对象

返回自我。

fit_predict(X, y=None)[源代码]#

集群X并返回关联的集群标签。

参数:
X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 形状的nd数组(n_samples,n_samples)

特征数组或样本之间的距离数组,如果 metric='precomputed' .

y没有一

忽视

返回:
y形状的nd数组(n_samples,)

集群标签。

get_metadata_routing()[源代码]#

获取此对象的元数据路由。

请检查 User Guide 关于路由机制如何工作。

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

get_params(deep=True)[源代码]#

获取此估计器的参数。

参数:
deep布尔,默认=True

如果为True,将返回此估计量和包含的作为估计量的子对象的参数。

返回:
paramsdict

参数名称映射到其值。

set_params(**params)[源代码]#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline ).后者具有以下形式的参数 <component>__<parameter> 以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。