sklearn.cluster.dbscan

sklearn.cluster.dbscan(X, eps=0.5, *, min_samples=5, metric='minkowski', metric_params=None, algorithm='auto', leaf_size=30, p=2, sample_weight=None, n_jobs=None)

[源码]

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

用户指南中阅读更多内容。

参数 列表
X {array-like, sparse (CSR) matrix} of shape (n_samples, n_features) or (n_samples, n_samples)
如果metric=’precomputed’,则是特征数组,或样本之间的距离数组
eps float, default=0.5
两个样本之间的最大距离,其中一个被视为另一个样本的邻域内。这并不是一个簇内点之间距离的最大界限。这是为数据集和距离函数适当选择的最重要的dbscan参数。
min_samples int, default=5
一个点被视为核心点的邻域内的样本数(或总权重)。这包括要该点本身
metric string, or callable
在计算特征数组中实例之间的距离时使用的度量。如果度量是字符串或可调用的,则它必须是sklearn.metrics.pairwise_distances为其度量参数所允许的选项之一。如果度量是“precomputed”,则假定X是距离矩阵,并且必须是平方的。X可能是Glossary,在这种情况下,只有“非零”元素可以被视为DBSCAN的邻居。
metric_params dict, default=None
度量函数的附加关键字参数
algorithm {‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}, default=’auto’
NearestNeighbors模块用于计算点距离和寻找最近邻居的算法。有关详细信息,请参阅NearestNeighbors模块文档。
leaf_size int, optional (default=30)
传递给BallTree 或者 KDTree。这会影响构造和查询的速度,以及存储树所需的内存。最优值取决于问题的性质。
p float, default=2
用于计算点间距离的Minkowski度量的幂
sample_weight array-like of shape (n_samples,), default=None
每个样本的权重,例如一个权重至少为min_samples的样本本身就是一个核心样本;一个负权重的样本可能会抑制它的EPS-邻居成为核心。注意,权重是绝对的,默认为1。
n_jobs int or None, optional (default=None)
要为邻居搜索的并行作业数。None意味1, 除非在joblib.parallel_backend环境中。-1指使用所有处理器。有关详细信息,请参Glossary
属性 说明
core_samples ndarray of shape (n_core_samples,)
核心样本的索引。
labels_ ndarray of shape (n_samples)
每个点的聚类标签。有噪音的样本被标为-1。

有关示例,请看examples/cluster/plot_dbscan.py.

此实现批量计算所有邻域查询,这会将内存复杂度增加到O(n.d),其中d是邻居的平均数量,而原始DBSCAN的内存复杂度为O(n)。根据algorithm的不同,在查询这些最近的邻域时,它可能会吸引更高的内存复杂度。

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

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

参考

Ester, M., H. P. Kriegel, J. Sander, and X. Xu, “A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise”. In: Proceedings of the 2nd International Conference on Knowledge Discovery and Data Mining, Portland, OR, AAAI Press, pp. 226-231. 1996

Schubert, E., Sander, J., Ester, M., Kriegel, H. P., & Xu, X. (2017). DBSCAN revisited, revisited: why and how you should (still) use DBSCAN. ACM Transactions on Database Systems (TODS), 42(3), 19.