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


Python sklearn DBSCAN用法及代碼示例


本文簡要介紹python語言中 sklearn.cluster.DBSCAN 的用法。

用法:

class sklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean', metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)

從向量數組或距離矩陣執行 DBSCAN 聚類。

DBSCAN - 基於密度的噪聲應用空間聚類。找到高密度的核心樣本並從中擴展集群。適用於包含相似密度集群的數據。

在用戶指南中閱讀更多信息。

參數

eps浮點數,默認=0.5

兩個樣本之間的最大距離,一個被認為是在另一個附近。這不是集群內點距離的最大界限。 This is the most important DBSCAN parameter to choose appropriately for your data set and distance function.

min_samples整數,默認=5

將一個點視為核心點的鄰域中的樣本數(或總權重)。這包括點本身。

metricstr,或可調用,默認='euclidean'

計算特征數組中實例之間的距離時使用的度量。如果 metric 是一個字符串或可調用的,它必須是 sklearn.metrics.pairwise_distances 為其 metric 參數允許的選項之一。如果 metric 是“precomputed”,X 被假定為一個距離矩陣並且必須是正方形。 X 可能是一個詞匯表,在這種情況下,隻有 “nonzero” 元素可以被視為 DBSCAN 的鄰居。

metric_params字典,默認=無

度量函數的附加關鍵字參數。

algorithm{‘auto’, ‘ball_tree’,‘kd_tree’, ‘brute’},默認='自動'

NearestNeighbors 模塊用於計算逐點距離並查找最近鄰居的算法。有關詳細信息,請參閱NearestNeighbors 模塊文檔。

leaf_size整數,默認=30

葉子大小傳遞給BallTree或cKDTree。這會影響構建和查詢的速度以及存儲樹所需的內存。最佳值取決於問題的性質。

p浮點數,默認=無

用於計算點之間距離的 Minkowski 度量的冪。如果沒有,那麽p=2(相當於歐幾裏得距離)。

n_jobs整數,默認=無

要運行的並行作業數。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

屬性

core_sample_indices_ndarray 形狀 (n_core_samples,)

岩心樣品 index 。

components_ndarray 形狀 (n_core_samples, n_features)

通過訓練找到的每個核心樣本的副本。

labels_形狀的ndarray(n_samples)

給fit()的數據集中每個點的聚類標簽。嘈雜的樣本被賦予標簽-1。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

注意

有關示例,請參見示例/集群/plot_dbscan.py。

這個實現bulk-computes所有鄰域查詢,這將內存複雜度增加到 O(n.d),其中 d 是平均鄰居數,而原始 DBSCAN 的內存複雜度為 O(n)。在查詢這些最近的鄰域時,它可能會吸引更高的內存複雜度,具體取決於 algorithm

避免查詢複雜性的一種方法是使用 NearestNeighbors.radius_neighbors_graph mode='distance' 預先計算塊中的稀疏鄰域,然後在此處使用 metric='precomputed'

另一種減少內存和計算時間的方法是刪除(接近)重複點並改用sample_weight

cluster.OPTICS 提供了類似的集群,但內存使用量較低。

參考

Ester, M.、H. P. Kriegel、J. Sander 和 X. Xu,“一種基於密度的算法,用於在有噪聲的大型空間數據庫中發現集群”。在:第二屆知識發現和數據挖掘國際會議論文集,俄勒岡州波特蘭市,AAAI 出版社,第 226-231 頁。 1996

Schubert, E.、Sander, J.、Ester, M.、Kriegel, H. P. 和 Xu, X.(2017 年)。 DBSCAN 重新審視,重新審視:為什麽以及如何(仍然)使用 DBSCAN。 ACM 數據庫係統事務 (TODS),42(3),19。

例子

>>> from sklearn.cluster import DBSCAN
>>> import numpy as np
>>> X = np.array([[1, 2], [2, 2], [2, 3],
...               [8, 7], [8, 8], [25, 80]])
>>> clustering = DBSCAN(eps=3, min_samples=2).fit(X)
>>> clustering.labels_
array([ 0,  0,  0,  1,  1, -1])
>>> clustering
DBSCAN(eps=3, min_samples=2)

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.cluster.DBSCAN。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。