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 -具有噪音的应用程序的基于密度的空间集群。找到高密度的核心样本并从中扩展集群。适合包含相似密度集群的数据。
此实现的最坏情况内存复杂性为 \(O({n}^2)\) ,当
eps
参数很大,min_samples
较低,而原来的DBSCAN仅使用线性存储器。有关更多详细信息,请参阅下面的注释。阅读更多的 User Guide .
- 参数:
- eps浮点数,默认值=0.5
两个样本之间的最大距离,其中一个样本被视为在另一个样本的附近。这不是集群内点距离的最大界限。这是为您的数据集和距离功能适当选择的最重要的DBSCAN参数。
- min_samplesint,默认=5
要被视为核心点的点的邻近区域中的样本数量(或总权重)。这包括要点本身。如果
min_samples
设置为较高的值时,DBSCAN将查找更密集的聚类,而如果设置为较低的值,则查找到的聚类将更稀疏。- metric字符串,或可调用,默认='欧几里德'
计算要素数组中实例之间的距离时使用的指标。如果指标是字符串或可调用,则它必须是允许的选项之一
sklearn.metrics.pairwise_distances
其指标参数。如果度量是“预先计算的”,则假设X是距离矩阵并且必须是平方。X可以是 sparse graph ,在这种情况下,只有“非零”元素可以被视为DBSCAN的邻居。Added in version 0.17: 度量 precomputed 接受预先计算的稀疏矩阵。
- metric_paramsdict,默认=无
指标函数的附加关键字参数。
Added in version 0.19.
- algorithm'自动',' ball_tree ',',',默认='自动'
NearestNeighbors模块用于计算逐点距离并查找最近邻居的算法。有关详细信息,请参阅NearestNeighbors模块文档。
- leaf_sizeint,默认=30
叶子大小传递给BallTree或cKDTree。这可能会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。
- pfloat,默认=无
用于计算点之间距离的Minkowski度量的功率。如果没有,那么
p=2
(相当于欧几里得距离)。- n_jobsint,默认=无
要运行的并行作业数。
None
意思是1,除非在a中joblib.parallel_backend
上下文-1
意味着使用所有处理器。看到 Glossary 了解更多详细信息。
- 属性:
- core_sample_indices_形状的nd数组(n_core_samples,)
核心样本指数。
- components_形状的nd数组(n_core_samples,n_features)
通过训练找到的每个核心样本的副本。
- labels_形状的nd数组(n_samples)
Cluster labels for each point in the dataset given to fit(). Noisy samples are given the label -1.
- n_features_in_int
期间看到的功能数量 fit .
Added in version 0.24.
- 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.Added in version 1.0.
参见
OPTICS
以多个eps值进行类似的聚集。我们的实现针对内存使用进行了优化。
注意到
有关示例,请参阅 DBSCAN集群算法演示 .
该实现批量计算所有邻居查询,这将内存复杂性增加到O(n.d),其中d是邻居的平均数量,而原始DBSCAN的内存复杂性为O(n)。当查询这些最近的邻居时,它可能会吸引更高的内存复杂性,具体取决于
algorithm
.避免查询复杂性的一种方法是使用
NearestNeighbors.radius_neighbors_graph
与mode='distance'
,然后使用metric='precomputed'
这里.减少内存和计算时间的另一种方法是删除(接近)重复点并使用
sample_weight
而不是.OPTICS
提供了一个类似的集群,但内存使用量较低。引用
埃斯特,M.,H. P. Kriegel、J. Sander和X.徐, "A Density-Based Algorithm for Discovering Clusters in Large Spatial Databases with Noise" .载于:第二届知识发现和数据挖掘国际会议论文集,俄勒冈州波特兰,AAAI出版社,pp。226-231. 1996
舒伯特,E.,桑德,J.,埃斯特,M.,克里格尔,H. P.,& Xu,X.(2017)。 "DBSCAN revisited, revisited: why and how you should (still) use DBSCAN." ACC数据库系统交易(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)
- fit(X, y=None, sample_weight=None)[源代码]#
从特征或距离矩阵执行DBSCAN聚类。
- 参数:
- X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 (n_samples,n_samples)
训练实例进行集群,或实例之间的距离,如果
metric='precomputed'
.如果提供了稀疏矩阵,则会将其转换为稀疏矩阵csr_matrix
.- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- sample_weight形状类似数组(n_samples,),默认=无
每个样本的重量,使得样本的重量至少为
min_samples
本身就是核心样本;具有负权重的样本可能会抑制其eps邻居成为核心。请注意,权重是绝对的,默认为1。
- 返回:
- self对象
返回适合的自我实例。
- fit_predict(X, y=None, sample_weight=None)[源代码]#
从数据或距离矩阵计算聚类并预测标签。
- 参数:
- X{类数组,稀疏矩阵}的形状(n_samples,n_features),或 (n_samples,n_samples)
训练实例进行集群,或实例之间的距离,如果
metric='precomputed'
.如果提供了稀疏矩阵,则会将其转换为稀疏矩阵csr_matrix
.- y忽视
未使用,此处列出是为了按照惯例实现API一致性。
- sample_weight形状类似数组(n_samples,),默认=无
每个样本的重量,使得样本的重量至少为
min_samples
本身就是核心样本;具有负权重的样本可能会抑制其eps邻居成为核心。请注意,权重是绝对的,默认为1。
- 返回:
- labels形状的nd数组(n_samples,)
集群标签。有噪音的样本标有-1。
- get_metadata_routing()[源代码]#
获取此对象的元数据路由。
请检查 User Guide 关于路由机制如何工作。
- 返回:
- routingMetadataRequest
A
MetadataRequest
封装路由信息。
- get_params(deep=True)[源代码]#
获取此估计器的参数。
- 参数:
- deep布尔,默认=True
如果为True,将返回此估计量和包含的作为估计量的子对象的参数。
- 返回:
- paramsdict
参数名称映射到其值。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') DBSCAN [源代码]#
请求元数据传递给
fit
法请注意,此方法仅适用于以下情况
enable_metadata_routing=True
(见sklearn.set_config
).请参阅 User Guide 关于路由机制如何工作。The options for each parameter are:
True
:元数据被请求并传递给fit
如果提供的话。如果未提供元数据,则会忽略请求。False
:未请求元数据,元估计器不会将其传递给fit
.None
:不请求元数据,如果用户提供元估计器,则元估计器将引发错误。str
:元数据应通过此给定别名而不是原始名称传递给元估计器。
默认 (
sklearn.utils.metadata_routing.UNCHANGED
)保留现有请求。这允许您更改某些参数的请求,而不是其他参数。Added in version 1.3.
备注
只有当该估计器用作元估计器的子估计器时,该方法才相关,例如在
Pipeline
.否则就没有效果了。- 参数:
- sample_weight字符串、真、假或无, 默认=sklearn.utils. metalics_Routing.UNChanged
元数据路由
sample_weight
参数fit
.
- 返回:
- self对象
更新的对象。