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


Python sklearn OPTICS用法及代码示例


本文简要介绍python语言中 sklearn.cluster.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 Identity the Clustering Structure)与 DBSCAN 密切相关,寻找高密度的核心样本并从中扩展聚类[1]。与 DBSCAN 不同,它保持可变邻域半径的簇层次结构。比当前的 DBSCAN sklearn 实现更适合在大型数据集上使用。

然后使用DBSCAN-like方法(cluster_method = ‘dbscan’)或[1]中提出的自动技术(cluster_method = ‘xi’)提取簇。

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

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

参数

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

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

max_eps浮点数,默认=np.inf

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

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

用于距离计算的度量。可以使用来自 scikit-learn 或 scipy.spatial.distance 的任何度量。

如果 metric 是一个可调用函数,则在每对实例(行)上调用它并记录结果值。可调用对象应将两个数组作为输入并返回一个值,指示它们之间的距离。这适用于 Scipy 的指标,但效率低于将指标名称作为字符串传递。如果 metric 是“precomputed”,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’]

有关这些指标的详细信息,请参阅scipy.spatial.distance 的文档。

p整数,默认=2

来自 pairwise_distances 的 Minkowski 度量的参数。当 p = 1 时,这相当于使用 manhattan_distance (l1),而对于 p = 2,则使用 euclidean_distance (l2)。对于任意 p,使用 minkowski_distance (l_p)。

metric_params字典,默认=无

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

cluster_methodstr,默认='xi'

用于使用计算的可达性和排序来提取簇的提取方法。可能的值为“xi” 和“dbscan”。

eps浮点数,默认=无

两个样本之间的最大距离,一个被认为是在另一个附近。默认情况下,它假定与 max_eps 相同的值。仅在 cluster_method='dbscan' 时使用。

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

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

predecessor_correction布尔,默认=真

根据 OPTICS [2] 计算的前辈正确的聚类。此参数对大多数数据集影响最小。仅在 cluster_method='xi' 时使用。

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

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

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

用于计算最近邻的算法:

  • ‘ball_tree’ 将使用 BallTree
  • ‘kd_tree’ 将使用 KDTree
  • ‘brute’ 将使用蛮力搜索。
  • ‘auto’ 将尝试根据传递给 fit 方法的值来决定最合适的算法。 (默认)

注意:拟合稀疏输入将使用蛮力覆盖此参数的设置。

leaf_size整数,默认=30

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

memory带有joblib.Memory 接口的str 或对象,默认=None

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

n_jobs整数,默认=无

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

属性

labels_ndarray 形状 (n_samples,)

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

reachability_ndarray 形状 (n_samples,)

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

ordering_ndarray 形状 (n_samples,)

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

core_distances_ndarray 形状 (n_samples,)

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

predecessor_ndarray 形状 (n_samples,)

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

cluster_hierarchy_ndarray 形状 (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

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

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

参考

1(1,2)

Ankerst、Mihael、Markus M. Breunig、Hans-Peter Kriegel 和 Jörg Sander。 “光学:识别聚类结构的排序点。” ACM SIGMOD 记录 28,没有。 2 (1999): 49-60。

2

舒伯特、埃里希、迈克尔·格茨。 “改进从光学图中提取的集群结构。”过程。会议“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])

相关用法


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