計算 OPTICS 圖#

sklearn.cluster.compute_optics_graph(X, *, min_samples, max_eps, metric, p, metric_params, algorithm, leaf_size, n_jobs)[原始碼]#

計算 OPTICS 可達性圖。

使用者指南中閱讀更多資訊。

參數:
X形狀為 (n_samples, n_features) 的 {ndarray, 稀疏矩陣},如果 metric='precomputed',則為 (n_samples, n_samples)

特徵陣列,或如果 metric='precomputed',則為樣本之間的距離陣列。

min_samplesint > 1 或介於 0 和 1 之間的浮點數

一個點被視為核心點的鄰域中的樣本數。表示為絕對數字或樣本數的一部分(四捨五入至少為 2)。

max_eps浮點數,預設值 = 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 的文件。

注意

'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 表示使用所有處理器。請參閱 詞彙表 以了解更多詳細資訊。

返回:
ordering_形狀為 (n_samples,) 的陣列

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

core_distances_形狀為 (n_samples,) 的陣列

每個樣本成為核心點的距離,依物件順序索引。永遠不會成為核心的點具有無限大的距離。使用 clust.core_distances_[clust.ordering_] 以按群集順序存取。

reachability_形狀為 (n_samples,) 的陣列

每個樣本的可達距離,依物件順序索引。使用 clust.reachability_[clust.ordering_] 以按群集順序存取。

predecessor_形狀為 (n_samples,) 的陣列

樣本從哪個點到達,依物件順序索引。種子點的前驅為 -1。

參考文獻

[1]

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

範例

>>> 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])