譜聚類#
- class sklearn.cluster.SpectralClustering(n_clusters=8, *, eigen_solver=None, n_components=None, random_state=None, n_init=10, gamma=1.0, affinity='rbf', n_neighbors=10, eigen_tol='auto', assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)[原始碼]#
將聚類應用於正規化拉普拉斯矩陣的投影。
實際上,當個別群集的結構高度非凸時,或更普遍地說,當群集的中心和擴散的度量不適合描述完整的群集時(例如當群集是 2D 平面上的嵌套圓時),譜聚類非常有用。
如果親和力矩陣是圖的鄰接矩陣,則可以使用此方法找到正規化的圖割 [1], [2]。
在呼叫
fit
時,會使用核心函數(例如具有歐幾里得距離d(X, X)
的高斯(又稱 RBF)核心)建構親和力矩陣np.exp(-gamma * d(X,X) ** 2)
或 k 個最近鄰居連通性矩陣。
或者,可以透過設定
affinity='precomputed'
來指定使用者提供的親和力矩陣。請在 使用者指南 中閱讀更多內容。
- 參數:
- n_clustersint,預設值為 8
投影子空間的維度。
- eigen_solver{‘arpack’、‘lobpcg’、‘amg’},預設值為 None
要使用的特徵值分解策略。AMG 需要安裝 pyamg。它在非常大的稀疏問題上可能更快,但也可能導致不穩定。如果為 None,則使用
'arpack'
。有關'lobpcg'
的更多詳細資訊,請參閱 [4]。- n_componentsint,預設值為 None
用於頻譜嵌入的特徵向量數量。如果為 None,則預設為
n_clusters
。- random_stateint、RandomState 實例,預設值為 None
用於 lobpcg 特徵向量分解初始化(當
eigen_solver == 'amg'
時)和 K 平均初始化時使用的虛擬亂數產生器。使用 int 使結果在呼叫之間具有確定性(請參閱詞彙表)。注意
當使用
eigen_solver == 'amg'
時,也必須使用np.random.seed(int)
來固定全域 numpy 種子,以獲得確定性結果。有關更多資訊,請參閱 pyamg/pyamg#139。- n_initint,預設值為 10
k 平均演算法將使用不同的質心種子執行的次數。最終結果將是慣性方面 n_init 連續運行的最佳輸出。僅當
assign_labels='kmeans'
時使用。- gammafloat,預設值為 1.0
rbf、poly、sigmoid、laplacian 和 chi2 核心的核心係數。對於
affinity='nearest_neighbors'
、affinity='precomputed'
或affinity='precomputed_nearest_neighbors'
會忽略。- affinitystr 或可呼叫物件,預設值為 'rbf'
- 如何建構親和力矩陣。
‘nearest_neighbors’:透過計算最近鄰居圖來建構親和力矩陣。
‘rbf’:使用徑向基函數 (RBF) 核心建構親和力矩陣。
‘precomputed’:將
X
解釋為預先計算的親和力矩陣,其中較大的值表示實例之間具有更高的相似性。‘precomputed_nearest_neighbors’:將
X
解釋為預先計算的距離稀疏圖,並從每個實例的n_neighbors
個最近鄰居建構二元親和力矩陣。pairwise_kernels
支援的核心之一。
應僅使用產生相似性分數(隨相似性增加的非負值)的核心。此屬性不會由聚類演算法檢查。
- n_neighborsint,預設值為 10
使用最近鄰居方法建構親和力矩陣時要使用的鄰居數量。對於
affinity='rbf'
會忽略。- eigen_tolfloat,預設值為 “auto”
拉普拉斯矩陣特徵值分解的停止條件。如果
eigen_tol="auto"
,則傳遞的容差將取決於eigen_solver
如果
eigen_solver="arpack"
,則eigen_tol=0.0
;如果
eigen_solver="lobpcg"
或eigen_solver="amg"
,則eigen_tol=None
,這會設定底層lobpcg
求解器以根據其啟發法自動解析值。詳細資訊請參閱scipy.sparse.linalg.lobpcg
。
請注意,當使用
eigen_solver="lobpcg"
或eigen_solver="amg"
時,tol<1e-5
的值可能會導致收斂問題,應避免使用。在 1.2 版本中新增:新增「auto」選項。
- assign_labels{‘kmeans’、‘discretize’、‘cluster_qr’},預設值為 ‘kmeans’
在嵌入空間中指定標籤的策略。在拉普拉斯嵌入後,有兩種方法可以指定標籤。k 平均是一種常見的選擇,但它對初始化很敏感。離散化是另一種方法,它對隨機初始化不太敏感 [3]。cluster_qr 方法 [5] 直接從譜聚類中的特徵向量提取群集。與 k 平均和離散化相比,cluster_qr 沒有調整參數,也不會運行任何迭代,但無論在品質和速度方面都可能優於 k 平均和離散化。
在 1.1 版本中變更:新增新的標記方法「cluster_qr」。
- degreefloat, 預設值=3
多項式核函數的次數。其他核函數會忽略此參數。
- coef0float, 預設值=1
多項式和 sigmoid 核函數的零係數。其他核函數會忽略此參數。
- kernel_paramsdict of str to any, 預設值=None
作為可呼叫物件傳遞的核函數的參數(關鍵字引數)和值。其他核函數會忽略此參數。
- n_jobsint, 預設值=None
當
affinity='nearest_neighbors'
或affinity='precomputed_nearest_neighbors'
時要執行的平行任務數量。鄰居搜尋將會平行執行。None
表示 1,除非在joblib.parallel_backend
環境中。-1
表示使用所有處理器。請參閱詞彙表以瞭解更多詳細資訊。- verbosebool, 預設值=False
詳細模式。
在 0.24 版本中新增。
- 屬性:
另請參閱
sklearn.cluster.KMeans
K-均值聚類。
sklearn.cluster.DBSCAN
具有雜訊的應用程式的基於密度的空間聚類。
注意事項
一個距離矩陣,其中 0 表示相同的元素,而高值表示非常不相似的元素,可以透過應用高斯(又稱 RBF、熱)核函數轉換為適合該演算法的親和力/相似性矩陣
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
其中
delta
是一個自由參數,表示高斯核函數的寬度。另一種方法是採用點的 k 近鄰連通性矩陣的對稱版本。
如果安裝了 pyamg 套件,則會使用它:這會大大加快計算速度。
參考文獻
[4]範例
>>> from sklearn.cluster import SpectralClustering >>> import numpy as np >>> X = np.array([[1, 1], [2, 1], [1, 0], ... [4, 7], [3, 5], [3, 6]]) >>> clustering = SpectralClustering(n_clusters=2, ... assign_labels='discretize', ... random_state=0).fit(X) >>> clustering.labels_ array([1, 1, 1, 0, 0, 0]) >>> clustering SpectralClustering(assign_labels='discretize', n_clusters=2, random_state=0)
- fit(X, y=None)[原始碼]#
從特徵或親和力矩陣執行譜聚類。
- 參數:
- X形狀為 (n_samples, n_features) 或 (n_samples, n_samples) 的 {類陣列, 稀疏矩陣}
要聚類的訓練實例,如果
affinity='precomputed'
,則為實例之間的相似度/親和力,如果affinity='precomputed_nearest_neighbors'
,則為實例之間的距離。如果提供的稀疏矩陣格式不是csr_matrix
、csc_matrix
或coo_matrix
,則會將其轉換為稀疏的csr_matrix
。- y已忽略
不使用,此處僅為 API 的一致性而存在。
- 回傳值:
- self物件
估計器的已擬合實例。
- fit_predict(X, y=None)[原始碼]#
在
X
上執行譜聚類並回傳叢集標籤。- 參數:
- X形狀為 (n_samples, n_features) 或 (n_samples, n_samples) 的 {類陣列, 稀疏矩陣}
要聚類的訓練實例,如果
affinity='precomputed'
,則為實例之間的相似度/親和力,如果affinity='precomputed_nearest_neighbors'
,則為實例之間的距離。如果提供的稀疏矩陣格式不是csr_matrix
、csc_matrix
或coo_matrix
,則會將其轉換為稀疏的csr_matrix
。- y已忽略
不使用,此處僅為 API 的一致性而存在。
- 回傳值:
- labels形狀為 (n_samples,) 的 ndarray
叢集標籤。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請檢查使用手冊,瞭解路由機制如何運作。
- 回傳值:
- routingMetadataRequest
封裝路由資訊的
MetadataRequest
。