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 ',',',默认='自动'
用于计算最近邻居的算法:
注意:在稀疏输入上进行调整将使用暴力覆盖此参数的设置。
- leaf_sizeint,默认=30
叶子大小传递给
BallTree
或KDTree
.这可能会影响构建和查询的速度,以及存储树所需的内存。最佳值取决于问题的性质。- 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
封装路由信息。