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 - 具有噪声的层次密度聚类应用。执行不同epsilon值上的:class:~sklearn.cluster.DBSCAN ,并整合结果以找到在epsilon上最稳定的聚类。 这使得HDBSCAN能够找到不同密度的聚类(不同于:class:~sklearn.cluster.DBSCAN ),并且对参数选择更稳健。 更多信息请参见:ref:用户指南 <hdbscan>

有关如何使用HDBSCAN的示例,以及与:class:~sklearn.cluster.DBSCAN 的比较,请参见:ref:绘图演示 <sphx_glr_auto_examples_cluster_plot_hdbscan.py>

Added in version 1.3.

Parameters:
min_cluster_sizeint, default=5

一个组被视为聚类所需的最小样本数;小于此大小的分组将被视为噪声。

min_samplesint, default=None

一个点被视为核心点时其邻域中的样本数。这包括点本身。当 None 时,默认为 min_cluster_size

cluster_selection_epsilonfloat, default=0.0

一个距离阈值。低于此值的聚类将被合并。更多信息请参见[R6f313792b2b7-5]_。

max_cluster_sizeint, default=None

"eom" 聚类选择算法返回的聚类大小的限制。当 max_cluster_size=None 时没有限制。如果 cluster_selection_method="leaf" 则无效。

metricstr or callable, default=’euclidean’

计算特征数组中实例之间距离时使用的度量。

  • 如果度量是字符串或可调用对象,它必须是:func:~sklearn.metrics.pairwise_distances 的度量参数允许的选项之一。

  • 如果度量是”precomputed”,则假定X是一个距离矩阵,并且必须是方阵。

metric_paramsdict, default=None

传递给距离度量的参数。

alphafloat, default=1.0

在鲁棒单链接中使用的距离缩放参数。更多信息请参见[R6f313792b2b7-3]_。

algorithm{“auto”, “brute”, “kd_tree”, “ball_tree”}, default=”auto”

计算核心距离时使用的具体算法;默认设置为 "auto" ,如果可能,尝试使用:class:~sklearn.neighbors.KDTree 树,否则使用:class:~sklearn.neighbors.BallTree 树。 "kd_tree""ball_tree" 算法都使用:class:~sklearn.neighbors.NearestNeighbors 估计器。

如果在 fit 期间传递的 X 是稀疏的或 metric 对:class:~sklearn.neighbors.KDTree 和:class:~sklearn.neighbors.BallTree 都无效,则解析为使用 "brute" 算法。

Deprecated since version 1.4: 'kdtree' 选项在1.4版本中已弃用,并将在1.6版本中重命名为 'kd_tree'

Deprecated since version 1.4: 'balltree' 选项在1.4版本中已弃用,并将在1.6版本中重命名为 'ball_tree'

leaf_sizeint, default=40

当使用KDTree或BallTree作为核心距离算法时,用于快速最近邻查询的树的叶大小。大数据集大小和小 leaf_size 可能导致过度内存使用。如果内存不足,请考虑增加 leaf_size 参数。对于 algorithm="brute" 无效。

n_jobsint, default=None

并行计算距离的作业数。 None 表示1,除非在:obj:joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。更多详情请参见:term:Glossary <n_jobs>

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

从压缩树中选择聚类的方法。HDBSCAN*的标准方法是使用质量过剩( "eom" )算法来找到最持久的聚类。或者,您可以选择树的叶子处的聚类——这提供了最细粒度和同质化的聚类。

allow_single_clusterbool, default=False

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

store_centersstr, default=None

计算并存储哪些聚类中心。选项包括:

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

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

  • "medoid" ,通过取拟合数据中在所选度量下最小化到聚类中所有其他点的距离的点来计算中心。这比”centroid”慢,因为它需要计算同一聚类中点之间的额外成对距离,但保证输出是观察到的数据点。medoid对于任意度量也是定义良好的,并且不依赖于欧几里得度量。

  • "both" ,计算并存储两种形式的中心。

copybool, default=False

如果 copy=True ,则在可能覆盖传递给:term:fit 的数据的任何就地修改之前,将首先进行复制,确保原始数据不会改变。目前,仅当 metric="precomputed" 时,传递密集数组或CSR稀疏矩阵时,以及当 algorithm="brute" 时适用。

Attributes:
labels_ndarray of shape (n_samples,)

每个点在传递给:term:fit 的数据集中的聚类标签。离群点标记如下:

  • 噪声样本被标记为-1。

  • 具有无限元素(+/- np.inf)的样本被标记为-2。

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

probabilities_ndarray of shape (n_samples,)

每个样本被分配到其指定聚类的强度。

  • 聚类样本的概率与其作为聚类一部分的持久性程度成比例。

  • 噪声样本的概率为零。

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

  • 具有缺失数据的样本概率为 np.nan

n_features_in_int

在:term:fit 期间看到的特征数。

feature_names_in_ndarray of shape ( n_features_in_ ,)

在:term:fit 期间看到的特征名称。仅当 X 的特征名称均为字符串时定义。

centroids_ndarray of shape (n_clusters, n_features)

包含每个聚类在标准欧几里得度量下计算的质心的集合。质心可能落在其各自聚类“之外”,如果聚类本身是非凸的。

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

medoids_ndarray of shape (n_clusters, n_features)

包含每个聚类在传递给 metric 参数的度量下计算的medoid的集合。medoid是原始聚类中的点,在所选度量下最小化到该聚类中所有其他点的平均距离。这些可以被认为是将基于度量的质心投影回聚类的结果。

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

See also

DBSCAN

具有噪声的密度聚类应用。

OPTICS

排序点以识别聚类结构。

Birch

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

Notes

min_samples 参数包括点本身,而 scikit-learn-contrib/hdbscan 中的实现不包括。为了在两个版本中获得相同的结果,这里的 min_samples 值必须比在 scikit-learn-contrib/hdbscan 中使用的值大1。

References

Examples

>>> 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_
array([ 2,  6, -1, ..., -1, -1, -1])
dbscan_clustering(cut_distance, min_cluster_size=5)#

返回由DBSCAN生成的聚类结果,不包括边界点。

返回的聚类结果相当于在特定cut_distance(或epsilon)下运行DBSCAN*。DBSCAN*可以被认为是DBSCAN不包括边界点的版本。因此,这些结果可能与 cluster.DBSCAN 略有不同,因为对非核心点的实现方式不同。

这也可以被认为是从单链接树中通过恒定高度切割生成的平面聚类。

这表示为选择鲁棒单链接聚类切割值的结果。 min_cluster_size 允许平面聚类声明噪声点(以及小于 min_cluster_size 的聚类)。

Parameters:
cut_distancefloat

用于生成平面聚类的互可达距离切割值。

min_cluster_sizeint, default=5

小于此值的聚类将被称为“噪声”,并在生成的平面聚类中保持未聚类状态。

Returns:
labelsndarray of shape (n_samples,)

每个数据点的聚类标签数组。 离群点的标签如下:

  • 噪声样本被标记为-1。

  • 具有无限元素(+/- np.inf)的样本被标记为-2。

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

fit(X, y=None)#

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

Parameters:
X{array-like, sparse matrix} 形状为 (n_samples, n_features),或 ndarray 形状为 (n_samples, n_samples)

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

yNone

忽略。

Returns:
selfobject

返回自身。

fit_predict(X, y=None)#

Cluster X并返回相关的簇标签。

Parameters:
X{array-like, sparse matrix} of shape (n_samples, n_features), or ndarray of shape (n_samples, n_samples)

一个特征数组,或者如果 metric='precomputed' ,则是样本之间的距离数组。

yNone

忽略。

Returns:
yndarray of shape (n_samples,)

簇标签。

get_metadata_routing()#

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

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。