本文簡要介紹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_samples:int > 1 或在 0 和 1 之間浮點數,默認 = 5
將一個點視為核心點的鄰域中的樣本數。此外,上下陡峭區域的連續非陡峭點不能超過
min_samples
。表示為樣本數的絕對數或分數(四舍五入至少為 2)。- max_eps:浮點數,默認=np.inf
兩個樣本之間的最大距離,一個被認為是在另一個附近。
np.inf
的默認值將識別所有規模的集群;減少max_eps
將縮短運行時間。- metric:str 或可調用,默認='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_method:str,默認='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_size:int > 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
方法的值來決定最合適的算法。 (默認)
注意:擬合稀疏輸入將使用蠻力覆蓋此參數的設置。
- ‘ball_tree’ 將使用
- leaf_size:整數,默認=30
葉大小傳遞給
BallTree
或KDTree
。這會影響構建和查詢的速度,以及存儲樹所需的內存。最佳值取決於問題的性質。- 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])
相關用法
- Python sklearn OneHotEncoder用法及代碼示例
- Python sklearn OAS用法及代碼示例
- Python sklearn OneVsRestClassifier用法及代碼示例
- Python sklearn OrdinalEncoder用法及代碼示例
- Python sklearn OneVsOneClassifier用法及代碼示例
- Python sklearn OrthogonalMatchingPursuit用法及代碼示例
- Python sklearn OneClassSVM用法及代碼示例
- Python sklearn OutputCodeClassifier用法及代碼示例
- Python sklearn OrthogonalMatchingPursuitCV用法及代碼示例
- Python sklearn jaccard_score用法及代碼示例
- Python sklearn WhiteKernel用法及代碼示例
- Python sklearn CalibrationDisplay.from_predictions用法及代碼示例
- Python sklearn VotingRegressor用法及代碼示例
- Python sklearn gen_batches用法及代碼示例
- Python sklearn ExpSineSquared用法及代碼示例
- Python sklearn MDS用法及代碼示例
- Python sklearn adjusted_rand_score用法及代碼示例
- Python sklearn MLPClassifier用法及代碼示例
- Python sklearn train_test_split用法及代碼示例
- Python sklearn RandomTreesEmbedding用法及代碼示例
- Python sklearn GradientBoostingRegressor用法及代碼示例
- Python sklearn GridSearchCV用法及代碼示例
- Python sklearn log_loss用法及代碼示例
- Python sklearn r2_score用法及代碼示例
- Python sklearn ndcg_score用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.cluster.OPTICS。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。