OPTICS#

class sklearn.cluster.OPTICS(*, min_samples=5, max_eps=inf, metric='minkowski', p=2, metric_params=None, cluster_method='xi', eps=None, xi=0.05, predecessor_correction=True, min_cluster_size=None, algorithm='auto', leaf_size=30, memory=None, n_jobs=None)[源代码]#

从载体数组估计集群结构。

OPTICS(Ordering Points To Identify the Clustering Structure)与DBSCAN紧密相关,它寻找高密度的岩心样本并从中扩展聚类 [1]. 与DBSCAN不同,它保留了可变邻居半径的集群层次结构。比DBSCAN的当前sklearn实现更适合在大型数据集上使用。

然后使用类似DBSCAN的方法(集群_方法=' dbscan ')或中提出的自动技术提取集群 [1] (集群_方法=')。

该实现与最初的OPTICS不同,首先对所有点执行k最近邻搜索以识别核心大小,然后在构建集群顺序时仅计算到未处理点的距离。请注意,我们不使用堆来管理扩展候选项,因此时间复杂度为O(n#2)。

阅读更多的 User Guide .

参数:
min_samplesint > 1或在0和1之间浮动,默认=5

被视为核心点的点在邻近区域中的样本数。此外,上下陡峭的地区不能超过 min_samples 连续的非陡点。以绝对数字或样本数量的一小部分表示(四舍五入至少为2)。

max_epsfloat,默认=NP.inf

两个样本之间的最大距离,其中一个样本被视为在另一个样本的附近。默认值 np.inf 将识别所有规模的集群;减少 max_eps 将导致运行时间更短。

metric字符串或可调用,默认=' minkowski '

用于距离计算的指标。可以使用scikit-learn或scipy.spatial.Distance中的任何指标。

如果metric是可调用的函数,则会对每对实例(行)调用它并记录结果值。可调用对象应该将两个数组作为输入,并返回一个指示它们之间距离的值。这适用于Scipy的指标,但比将指标名称作为字符串传递效率低。如果指标是“预先计算的”, X 假设是距离矩阵,并且必须是平方的。

度量的有效值为:

  • scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', 'manhattan']

  • 来自scipy.spatial.Distance: ['braycurtis', 'canberra', 'chebyshev', 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', 'yule']

稀疏矩阵仅受scikit-learn指标支持。有关这些指标的详细信息,请参阅scipy.spatial.Distance的文档。

备注

'kulsinski' SciPy 1.9已废弃,并将在SciPy 1.11中删除。

pfloat,默认=2

Minkowski指标的参数来自 pairwise_distances .当p = 1时,这相当于对于p = 2使用manhattan_Distance(l1)和euclidean_Distance(l2)。对于任意p,使用minkowski_Distance(l_p)。

metric_paramsdict,默认=无

指标函数的附加关键字参数。

cluster_method字符串,默认=' xi '

使用计算的可达性和排序来提取聚类的提取方法。可能的值是“xi”和“dbscan”。

epsfloat,默认=无

两个样本之间的最大距离,其中一个样本被视为在另一个样本的附近。默认情况下,它假设与 max_eps .仅在当 cluster_method='dbscan' .

xi浮动在0和1之间,默认=0.05

确定构成集群边界的可达性图上的最小陡度。例如,可达性图中的向上点由一个点与其后继点的比率最多为1-xi来定义。仅在当 cluster_method='xi' .

predecessor_correction布尔,默认=True

OPTICS根据前人计算的正确集群 [2]. 此参数对大多数数据集的影响很小。仅在当 cluster_method='xi' .

min_cluster_sizeint > 1或在0和1之间浮动,默认=无

OPTICS集群中的最小样本数,表示为绝对数或样本数的一小部分(四舍五入至少为2)。如果 None ,的价值 min_samples 而是使用。仅在当 cluster_method='xi' .

algorithm'自动',' ball_tree ',',',默认='自动'

用于计算最近邻居的算法:

  • 'ball_tree'将使用 BallTree .

  • 'kd_tree'将使用 KDTree .

  • “brute”将使用暴力搜索。

  • “Auto”(默认)将尝试根据传递给 fit

注意:在稀疏输入上进行调整将使用暴力覆盖此参数的设置。

leaf_sizeint,默认=30

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

memory具有joblib.内存接口的字符串或对象,默认=无

用于缓存树计算的输出。默认情况下,不进行缓存。如果给出了字符串,则它是缓存目录的路径。

n_jobsint,默认=无

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

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

为fit()给定的数据集中每个点的聚类标签。噪声样本和点不包括在叶簇中, cluster_hierarchy_ 标记为-1。

reachability_形状的nd数组(n_samples,)

每个样本的可达性距离,按对象顺序索引。使用 clust.reachability_[clust.ordering_] 以按集群顺序访问。

ordering_形状的nd数组(n_samples,)

样本索引的集群排序列表。

core_distances_形状的nd数组(n_samples,)

每个样本成为核心点的距离,按对象顺序索引。永远不会成为核心的点有一定的使用距离 clust.core_distances_[clust.ordering_] 以按集群顺序访问。

predecessor_形状的nd数组(n_samples,)

到达样本的点,按对象顺序索引。种子点的前身是-1。

cluster_hierarchy_形状的nd数组(n_clusters,2)

形式的集群列表 [start, end] 在每一行中,包括所有索引。集群的排序根据 (end, -start) (上升),以便包含较小集群的较大集群在那些较小的集群之后出现。以来 labels_ 通常不反映等级制度 len(cluster_hierarchy_) > np.unique(optics.labels_) .另请注意,这些指数属于 ordering_ ,即 X[ordering_][start:end + 1] 形成一个集群。仅在以下情况下可用 cluster_method='xi' .

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.

参见

DBSCAN

针对指定的邻居半径(eps)进行类似的聚集。我们的实现针对运行时进行了优化。

引用

[1] (1,2)

Ankerst、Mihael、Markus M.布鲁尼格、汉斯-彼得·克里格尔和约尔格·桑德。“OPTICS:排序点以识别集群结构。“ACN SIGMOD Record 28,no. 2(1999):49-60。

[2]

舒伯特,埃里克,迈克尔·格茨.“改进从OPTICS图中提取的簇结构。“会议论文“Lernen,Wissen,Daten,Analysen”(LWDA)(2018):318-329。

示例

>>> from sklearn.cluster import OPTICS
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 5], [3, 6],
...               [8, 7], [8, 8], [7, 3]])
>>> clustering = OPTICS(min_samples=2).fit(X)
>>> clustering.labels_
array([0, 0, 0, 1, 1, 1])

有关更详细的示例,请参阅 OPTICS分簇算法演示 .

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

执行OPTICS集群。

提取点和可达性距离的有序列表,并使用执行初始集群 max_eps OPTICS对象实例化时指定的距离。

参数:
X形状(n_samples,n_features)的{nd数组,稀疏矩阵},或 (n_samples,n_samples)如果指标='预先计算'

一个特征数组,或者样本之间的距离数组(如果metric ='precomputed')。如果提供稀疏矩阵,则将其转换为CSR格式。

y忽视

未使用,按照惯例,为了API一致性而存在。

返回:
self对象

返回适合的自我实例。

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

在上执行集群 X 并返回集群标签。

参数:
X形状类似阵列(n_samples,n_features)

输入数据。

y忽视

未使用,按照惯例,为了API一致性而存在。

**kwargsdict

将传递给的论点 fit .

Added in version 1.4.

返回:
labels形状的nd数组(n_samples,),dype =np.int64

集群标签。

get_metadata_routing()[源代码]#

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

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

返回:
routingMetadataRequest

A MetadataRequest 封装路由信息。

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

获取此估计器的参数。

参数:
deep布尔,默认=True

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

返回:
paramsdict

参数名称映射到其值。

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

设置此估计器的参数。

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

参数:
**paramsdict

估计参数。

返回:
self估计器实例

估计实例。