當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。