HDBSCAN#

class sklearn.cluster.HDBSCAN(min_cluster_size=5, min_samples=None, cluster_selection_epsilon=0.0, max_cluster_size=None, metric='euclidean', metric_params=None, alpha=1.0, algorithm='auto', leaf_size=40, n_jobs=None, cluster_selection_method='eom', allow_single_cluster=False, store_centers=None, copy=False)[來源]#

使用階層式密度為基礎的叢集方法來叢集資料。

HDBSCAN - 具有雜訊的應用之階層式密度為基礎的空間叢集方法。在不同的 epsilon 值上執行 DBSCAN,並整合結果以找到在 epsilon 上具有最佳穩定性的叢集。這讓 HDBSCAN 可以找到不同密度的叢集 (與 DBSCAN 不同),並且對於參數選擇更為穩健。請在 使用者指南 中閱讀更多資訊。

如需如何使用 HDBSCAN 的範例,以及與 DBSCAN 的比較,請參閱繪圖示範

於 1.3 版本新增。

參數:
min_cluster_sizeint,預設值=5

一個群組中被視為叢集的最小樣本數;小於此大小的群組將被視為雜訊。

min_samplesint,預設值=None

用於計算點 x_p 與其第 k 個最近鄰居之間距離的參數 k。當 None 時,預設為 min_cluster_size

cluster_selection_epsilonfloat,預設值=0.0

一個距離閾值。低於此值的叢集將被合併。請參閱 [5] 以取得更多資訊。

max_cluster_sizeint,預設值=None

"eom" 叢集選擇演算法所傳回的叢集大小限制。當 max_cluster_size=None 時沒有限制。如果 cluster_selection_method="leaf",則沒有作用。

metricstr 或 callable,預設值='euclidean'

在計算特徵陣列中實例之間的距離時要使用的度量。

  • 如果 metric 是字串或可呼叫物件,則它必須是 pairwise_distances 其 metric 參數允許的選項之一。

  • 如果 metric 為「precomputed」,則 X 會被假設為距離矩陣,且必須為正方形。

metric_paramsdict,預設值=None

傳遞至距離度量的參數。

alphafloat,預設值=1.0

在穩健的單連結中所使用的距離縮放參數。請參閱 [3] 以取得更多資訊。

algorithm{“auto”, “brute”, “kd_tree”, “ball_tree”},預設值=”auto”

用於計算核心距離的確切演算法;預設會設為 "auto",這會嘗試盡可能使用 KDTree 樹狀結構,否則會使用 BallTree 樹狀結構。"kd_tree""ball_tree" 演算法都使用 NearestNeighbors 估算器。

如果在 fit 期間傳遞的 X 是稀疏的,或 metric 對於 KDTreeBallTree 都無效,則它會改為使用 "brute" 演算法。

leaf_sizeint,預設值=40

當 KDTree 或 BallTree 用作核心距離演算法時,用於快速最近鄰查詢的樹葉大小。較大的數據集大小和較小的 leaf_size 可能會導致過度的記憶體使用。如果您的記憶體不足,請考慮增加 leaf_size 參數。對於 algorithm="brute",此參數將被忽略。

n_jobsint,預設值=None

用於計算距離的平行任務數量。None 表示 1,除非在 joblib.parallel_backend 內容中。 -1 表示使用所有處理器。詳情請參閱 詞彙表

cluster_selection_method{“eom”, “leaf”},預設值=”eom”

用於從壓縮樹中選擇叢集的方法。HDBSCAN* 的標準方法是使用質量過剩(Excess of Mass,"eom")演算法來找到最持久的叢集。或者,您可以選擇樹葉節點上的叢集,這會提供最細緻和同質的叢集。

allow_single_clusterbool,預設值=False

預設情況下,HDBSCAN* 不會產生單一叢集。將此設定為 True 將覆寫此預設行為,並允許在您認為這是數據集的有效結果時產生單一叢集結果。

store_centersstr,預設值=None

要計算和儲存哪些叢集中心(如果有的話)。選項如下:

  • None,不計算也不儲存任何中心。

  • "centroid",透過取位置的加權平均值來計算中心。請注意,此演算法使用歐幾里得度量,並不保證輸出會是觀察到的數據點。

  • "medoid",透過取擬合數據中與叢集中所有其他點距離最小的點來計算中心。由於需要計算同一叢集中點之間的額外成對距離,因此此方法比 "centroid" 慢,但保證輸出是觀察到的數據點。Medoid 對於任意度量也具有明確的定義,並且不依賴於歐幾里得度量。

  • "both",計算並儲存兩種形式的中心。

copybool,預設值=False

如果 copy=True,則任何會覆寫傳遞給 fit 的資料的原地修改,都會先進行複製,以保證原始資料不會被修改。目前,它僅適用於 metric="precomputed"、傳遞密集陣列或 CSR 稀疏矩陣,以及 algorithm="brute" 的情況。

屬性:
labels_形狀為 (n_samples,) 的 ndarray

給定 fit 的資料集中每個點的叢集標籤。離群值的標記如下:

  • 雜訊樣本會被標記為 -1。

  • 具有無限元素 (+/- np.inf) 的樣本會被標記為 -2。

  • 具有遺失數據的樣本會被標記為 -3,即使它們也具有無限元素。

probabilities_形狀為 (n_samples,) 的 ndarray

每個樣本屬於其分配的叢集的強度。

  • 叢集樣本的機率與它們作為叢集一部分的持久程度成正比。

  • 雜訊樣本的機率為零。

  • 具有無限元素 (+/- np.inf) 的樣本的機率為 0。

  • 具有遺失數據的樣本的機率為 np.nan

n_features_in_int

fit 期間看到的特徵數量。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。僅當 X 具有所有字串的特徵名稱時才會定義。

centroids_形狀為 (n_clusters, n_features) 的 ndarray

包含在標準歐幾里得度量下計算的每個叢集的質心集合。如果叢集本身是非凸的,則質心可能落在其各自叢集的「外部」。

請注意,n_clusters 僅計算非離群值叢集。也就是說,會排除離群值叢集的 -1, -2, -3 標籤。

medoids_形狀為 (n_clusters, n_features) 的 ndarray

包含在傳遞給 metric 參數的度量下計算的每個叢集的 medoid 的集合。Medoid 是原始叢集中最小化該叢集中所有其他點的平均距離的點。這些可以被認為是在選定的度量下將基於 metric 的質心投影回叢集的結果。

請注意,n_clusters 僅計算非離群值叢集。也就是說,會排除離群值叢集的 -1, -2, -3 標籤。

另請參閱

DBSCAN

具有雜訊的應用程式的基於密度的空間叢集。

OPTICS

對點進行排序以識別叢集結構。

Birch

記憶體效率高、線上學習演算法。

筆記

min_samples 參數包含點本身,而 scikit-learn-contrib/hdbscan 中的實作則不包含。若要在兩個版本中獲得相同的結果,此處的 min_samples 值必須比在 scikit-learn-contrib/hdbscan 中使用的值大 1。

參考文獻

範例

>>> from sklearn.cluster import HDBSCAN
>>> from sklearn.datasets import load_digits
>>> X, _ = load_digits(return_X_y=True)
>>> hdb = HDBSCAN(min_cluster_size=20)
>>> hdb.fit(X)
HDBSCAN(min_cluster_size=20)
>>> hdb.labels_
array([ 2,  6, -1, ..., -1, -1, -1])
dbscan_clustering(cut_distance, min_cluster_size=5)[原始碼]#

回傳由 DBSCAN 給定的分群結果,不包含邊界點。

回傳等同於針對特定 cut_distance(或 epsilon)執行 DBSCAN* 的分群結果。DBSCAN* 可以被視為不含邊界點的 DBSCAN。因此,由於非核心點的實作差異,這些結果可能與 cluster.DBSCAN 略有不同。

這也可以被視為從單連結樹的恆定高度切割得出的平面分群。

這代表為強健單連結分群選擇切割值的結果。min_cluster_size 允許平面分群宣告雜訊點(以及小於 min_cluster_size 的叢集)。

參數:
cut_distancefloat

用於生成平面分群的相互可達距離切割值。

min_cluster_sizeint,預設值=5

小於此值的叢集將被稱為「雜訊」,並且在產生的平面分群中保持未分群狀態。

回傳值:
labels形狀為 (n_samples,) 的 ndarray

每個資料點的叢集標籤陣列。離群值標記如下

  • 雜訊樣本會被標記為 -1。

  • 具有無限元素 (+/- np.inf) 的樣本會被標記為 -2。

  • 具有遺失數據的樣本會被標記為 -3,即使它們也具有無限元素。

fit(X, y=None)[原始碼]#

基於階層式密度分群尋找叢集。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣,或形狀為 (n_samples, n_samples) 的 ndarray

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

yNone

忽略。

回傳值:
self物件

回傳自身。

fit_predict(X, y=None)[原始碼]#

對 X 進行分群並回傳相關的叢集標籤。

參數:
X形狀為 (n_samples, n_features) 的類陣列或稀疏矩陣,或形狀為 (n_samples, n_samples) 的 ndarray

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

yNone

忽略。

回傳值:
y形狀為 (n_samples,) 的 ndarray

叢集標籤。

get_metadata_routing()[原始碼]#

取得此物件的元數據路由。

請查看 使用者指南,了解路由機制如何運作。

回傳值:
routingMetadataRequest

一個封裝路由資訊的 MetadataRequest

get_params(deep=True)[原始碼]#

取得此估算器的參數。

參數:
deepbool,預設為 True

如果為 True,則會回傳此估算器和包含的子物件(也是估算器)的參數。

回傳值:
paramsdict

參數名稱對應到其值的字典。

set_params(**params)[原始碼]#

設定此估算器的參數。

該方法適用於簡單的估算器以及巢狀物件(例如 Pipeline)。後者的參數格式為 <component>__<parameter>,因此可以更新巢狀物件的每個組件。

參數:
**paramsdict

估算器參數。

回傳值:
self估算器實例

估算器實例。