当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn DBSCAN用法及代码示例


本文简要介绍python语言中 sklearn.cluster.DBSCAN 的用法。

用法:

class sklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)

从向量数组或距离矩阵执行 DBSCAN 聚类。

DBSCAN - 基于密度的噪声应用空间聚类。找到高密度的核心样本并从中扩展集群。适用于包含相似密度集群的数据。

在用户指南中阅读更多信息。

参数

eps浮点数,默认=0.5

两个样本之间的最大距离,一个被认为是在另一个附近。这不是集群内点距离的最大界限。 This is the most important DBSCAN parameter to choose appropriately for your data set and distance function.

min_samples整数,默认=5

将一个点视为核心点的邻域中的样本数(或总权重)。这包括点本身。

metricstr,或可调用,默认='euclidean'

计算特征数组中实例之间的距离时使用的度量。如果 metric 是一个字符串或可调用的,它必须是 sklearn.metrics.pairwise_distances 为其 metric 参数允许的选项之一。如果 metric 是“precomputed”,X 被假定为一个距离矩阵并且必须是正方形。 X 可能是一个词汇表,在这种情况下,只有 “nonzero” 元素可以被视为 DBSCAN 的邻居。

metric_params字典,默认=无

度量函数的附加关键字参数。

algorithm{‘auto’, ‘ball_tree’,‘kd_tree’, ‘brute’},默认='自动'

NearestNeighbors 模块用于计算逐点距离并查找最近邻居的算法。有关详细信息,请参阅NearestNeighbors 模块文档。

leaf_size整数,默认=30

叶子大小传递给BallTree或cKDTree。这会影响构建和查询的速度以及存储树所需的内存。最佳值取决于问题的性质。

p浮点数,默认=无

用于计算点之间距离的 Minkowski 度量的幂。如果没有,那么p=2(相当于欧几里得距离)。

n_jobs整数,默认=无

要运行的并行作业数。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关详细信息,请参阅词汇表。

属性

core_sample_indices_ndarray 形状 (n_core_samples,)

岩心样品 index 。

components_ndarray 形状 (n_core_samples, n_features)

通过训练找到的每个核心样本的副本。

labels_形状的ndarray(n_samples)

给fit()的数据集中每个点的聚类标签。嘈杂的样本被赋予标签-1。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

注意

有关示例,请参见示例/集群/plot_dbscan.py。

这个实现bulk-computes所有邻域查询,这将内存复杂度增加到 O(n.d),其中 d 是平均邻居数,而原始 DBSCAN 的内存复杂度为 O(n)。在查询这些最近的邻域时,它可能会吸引更高的内存复杂度,具体取决于 algorithm

避免查询复杂性的一种方法是使用 NearestNeighbors.radius_neighbors_graph mode='distance' 预先计算块中的稀疏邻域,然后在此处使用 metric='precomputed'

另一种减少内存和计算时间的方法是删除(接近)重复点并改用sample_weight

cluster.OPTICS 提供了类似的集群,但内存使用量较低。

参考

Ester, M.、H. P. Kriegel、J. Sander 和 X. Xu,“一种基于密度的算法,用于在有噪声的大型空间数据库中发现集群”。在:第二届知识发现和数据挖掘国际会议论文集,俄勒冈州波特兰市,AAAI 出版社,第 226-231 页。 1996

Schubert, E.、Sander, J.、Ester, M.、Kriegel, H. P. 和 Xu, X.(2017 年)。 DBSCAN 重新审视,重新审视:为什么以及如何(仍然)使用 DBSCAN。 ACM 数据库系统事务 (TODS),42(3),19。

例子

>>> from sklearn.cluster import DBSCAN
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 2], [2, 3],
...               [8, 7], [8, 8], [25, 80]])
>>> clustering = DBSCAN(eps=3, min_samples=2).fit(X)
>>> clustering.labels_
array([ 0,  0,  0,  1,  1, -1])
>>> clustering
DBSCAN(eps=3, min_samples=2)

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.cluster.DBSCAN。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。