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


Python sklearn SpectralClustering用法及代碼示例

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

用法:

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=0.0, assign_labels='kmeans', degree=3, coef0=1, kernel_params=None, n_jobs=None, verbose=False)

將聚類應用於歸一化拉普拉斯算子的投影。

在實踐中,當單個集群的結構高度非凸時,或者更一般地,當集群的中心和散布的測量不適合說明整個集群時,頻譜聚類非常有用,例如當集群嵌套時二維平麵上的圓。

如果親和矩陣是圖的鄰接矩陣,則該方法可用於查找歸一化圖割[1]、[2]。

調用 fit 時,使用具有歐幾裏德距離 d(X, X) 的高斯(又名 RBF)內核之類的內核函數構造親和矩陣:

np.exp(-gamma * d(X,X) ** 2)

或 k-nearest 鄰居連接矩陣。

或者,可以通過設置 affinity='precomputed' 來指定用戶提供的親和度矩陣。

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

參數

n_clusters整數,默認=8

投影子空間的維度。

eigen_solver{‘arpack’, ‘lobpcg’, ‘amg’},默認=無

要使用的特征值分解策略。 AMG 需要安裝 pyamg。它可以更快地解決非常大的稀疏問題,但也可能導致不穩定。如果無,則使用'arpack'。有關 'lobpcg' 的更多詳細信息,請參閱 [4]。

n_components整數,默認=n_clusters

用於譜嵌入的特征向量數。

random_stateint,RandomState 實例,默認=無

一個偽隨機數生成器,用於在 eigen_solver == 'amg' 和 K-Means 初始化時初始化 lobpcg 特征向量分解。使用int 使結果在調用之間具有確定性(參見詞匯表)。

注意

使用 eigen_solver == 'amg' 時,還需要使用 np.random.seed(int) 修複全局 numpy 種子以獲得確定性結果。有關詳細信息,請參閱https://github.com/pyamg/pyamg/issues/139

n_init整數,默認=10

k-means 算法將使用不同的質心種子運行的次數。就慣性而言,最終結果將是 n_init 連續運行的最佳輸出。僅在 assign_labels='kmeans' 時使用。

gamma浮點數,默認=1.0

rbf、poly、sigmoid、laplacian 和 chi2 內核的內核係數。忽略 affinity='nearest_neighbors'

affinitystr 或可調用,默認='rbf'
如何構建親和矩陣。
  • ‘nearest_neighbors’:通過計算最近鄰圖來構造親和矩陣。
  • ‘rbf’:使用徑向基函數 (RBF) 內核構造親和矩陣。
  • ‘precomputed’:將X 解釋為預先計算的親和度矩陣,其中較大的值表示實例之間的相似性較大。
  • ‘precomputed_nearest_neighbors’:將X解釋為預先計算的距離的稀疏圖,並從每個實例的n_neighbors最近鄰居構造二進製親和矩陣。
  • pairwise_kernels 支持的內核之一。

僅應使用產生相似性分數(隨相似性增加的非負值)的內核。聚類算法不檢查此屬性。

n_neighbors整數,默認=10

使用最近鄰方法構造親和矩陣時要使用的鄰居數。忽略 affinity='rbf'

eigen_tol浮點數,默認=0.0

eigen_solver='arpack' 時拉普拉斯矩陣特征分解的停止標準。

assign_labels{‘kmeans’, ‘discretize’},默認='kmeans'

在嵌入空間中分配標簽的策略。拉普拉斯嵌入後有兩種分配標簽的方法。 k-means 是一個流行的選擇,但它可能對初始化敏感。離散化是另一種對隨機初始化不太敏感的方法[3]。

degree浮點數,默認=3

多項式核的度數。被其他內核忽略。

coef0浮點數,默認=1

多項式和 sigmoid 內核的零係數。被其他內核忽略。

kernel_paramsstr 的字典到任何,默認=無

內核的參數(關鍵字參數)和值作為可調用對象傳遞。被其他內核忽略。

n_jobs整數,默認=無

affinity='nearest_neighbors'affinity='precomputed_nearest_neighbors' 時要運行的並行作業數。鄰居搜索將並行完成。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有處理器。有關詳細信息,請參閱詞匯表。

verbose布爾,默認=假

詳細模式。

屬性

affinity_matrix_形狀類似數組 (n_samples, n_samples)

用於聚類的親和矩陣。僅在調用 fit 後可用。

labels_ndarray 形狀 (n_samples,)

每個點的標簽

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

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

注意

距離矩陣 0 表示相同元素,高值表示非常不同的元素,可以通過應用高斯(又名 RBF,熱)核將算法轉換為相似度/相似度矩陣 well-suited:

np.exp(- dist_matrix ** 2 / (2. * delta ** 2))

其中delta 是一個自由參數,表示高斯核的寬度。

另一種方法是采用點的k-nearest 鄰居連接矩陣的對稱版本。

如果安裝了 pyamg 包,則使用它:這大大加快了計算速度。

參考

1

歸一化切割和圖像分割,2000 施劍波,Jitendra Malik

2

頻譜聚類教程,2007 年 Ulrike von Luxburg

3

多類頻譜聚類,2003 Stella X. Yu,Jianbo Shi

4

邁向最優預條件特征解算器:局部最優塊預條件共軛梯度法,2001 年。A. V. Knyazev SIAM 科學計算雜誌 23,第 1 期。 2,第 517-541 頁。

例子

>>> 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)

相關用法


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