compute_optics_graph#

sklearn.cluster.compute_optics_graph(X, *, min_samples, max_eps, metric, p, metric_params, algorithm, leaf_size, n_jobs)#

计算OPTICS可达性图。

更多信息请参阅 用户指南

Parameters:
X{ndarray, sparse matrix},形状为 (n_samples, n_features),或 (n_samples, n_samples) 如果 metric=’precomputed’

特征数组,或如果 metric=’precomputed’,则为样本之间的距离数组。

min_samplesint > 1 或 0 到 1 之间的浮点数

一个点被认为是核心点时其邻域中的样本数量。可以表示为绝对数量或样本数量的分数(四舍五入至少为2)。

max_epsfloat, 默认=np.inf

两个样本之间的最大距离,其中一个样本被认为是另一个样本的邻域。默认值 np.inf 将跨越所有尺度识别聚类;减少 max_eps 将缩短运行时间。

metricstr 或 callable, 默认=’minkowski’

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

如果 metric 是一个可调用函数,它会在每对实例(行)上调用,并记录结果值。可调用函数应接受两个数组作为输入并返回一个表示它们之间距离的值。这适用于 Scipy 的度量,但效率低于将度量名称作为字符串传递。如果 metric 是 “precomputed”,则假定 X 是一个距离矩阵且必须是方阵。

metric 的有效值包括:

  • 来自 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 的文档。

Note

'kulsinski' 在 SciPy 1.9 中已弃用,并将在 SciPy 1.11 中移除。

pfloat, 默认=2

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

metric_paramsdict, 默认=None

度量函数的额外关键字参数。

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

用于计算最近邻的算法:

  • ‘ball_tree’ 将使用 BallTree

  • ‘kd_tree’ 将使用 KDTree

  • ‘brute’ 将使用暴力搜索。

  • ‘auto’ 将尝试根据传递给 fit 方法的值决定最合适的算法(默认)。

注意:在稀疏输入上拟合将覆盖此参数的设置,使用暴力搜索。

leaf_sizeint, 默认=30

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

n_jobsint, 默认=None

用于邻居搜索的并行作业数量。 None 意味着 1,除非在 joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。有关更多详细信息,请参阅 Glossary

Returns:
ordering_形状为 (n_samples,) 的数组

样本索引的聚类有序列表。

core_distances_形状为 (n_samples,) 的数组

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

reachability_形状为 (n_samples,) 的数组

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

predecessor_形状为 (n_samples,) 的数组

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

References

[1]

Ankerst, Mihael, Markus M. Breunig, Hans-Peter Kriegel, 和 Jörg Sander. “OPTICS: ordering points to identify the clustering structure.” ACM SIGMOD Record 28, no. 2 (1999): 49-60.

Examples

>>> import numpy as np
>>> from sklearn.cluster import compute_optics_graph
>>> X = np.array([[1, 2], [2, 5], [3, 6],
...               [8, 7], [8, 8], [7, 3]])
>>> ordering, core_distances, reachability, predecessor = compute_optics_graph(
...     X,
...     min_samples=2,
...     max_eps=np.inf,
...     metric="minkowski",
...     p=2,
...     metric_params=None,
...     algorithm="auto",
...     leaf_size=30,
...     n_jobs=None,
... )
>>> ordering
array([0, 1, 2, 5, 3, 4])
>>> core_distances
array([3.16..., 1.41..., 1.41..., 1.        , 1.        , 4.12...])
>>> reachability
array([       inf, 3.16..., 1.41..., 4.12..., 1.        , 5.        ])
>>> predecessor
array([-1,  0,  1,  5,  3,  2])