本文簡要介紹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_state:int,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'
。- affinity:str 或可調用,默認='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_params:str 的字典到任何,默認=無
內核的參數(關鍵字參數)和值作為可調用對象傳遞。被其他內核忽略。
- 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 包,則使用它:這大大加快了計算速度。
參考:
例子:
>>> 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)
相關用法
- Python sklearn SpectralCoclustering用法及代碼示例
- Python sklearn SpectralEmbedding用法及代碼示例
- Python sklearn SpectralBiclustering用法及代碼示例
- Python sklearn SparsePCA用法及代碼示例
- Python sklearn SplineTransformer用法及代碼示例
- Python sklearn SparseCoder用法及代碼示例
- Python sklearn SparseRandomProjection用法及代碼示例
- Python sklearn ShrunkCovariance用法及代碼示例
- Python sklearn SelfTrainingClassifier用法及代碼示例
- Python sklearn SelectFromModel用法及代碼示例
- Python sklearn SelectFpr用法及代碼示例
- Python sklearn ShuffleSplit用法及代碼示例
- Python sklearn StratifiedGroupKFold用法及代碼示例
- Python sklearn Sum用法及代碼示例
- Python sklearn SVR用法及代碼示例
- Python sklearn SelectKBest用法及代碼示例
- Python sklearn SimpleImputer用法及代碼示例
- Python sklearn SGDOneClassSVM用法及代碼示例
- Python sklearn StratifiedShuffleSplit用法及代碼示例
- Python sklearn SVC用法及代碼示例
- Python sklearn SGDRegressor用法及代碼示例
- Python sklearn SequentialFeatureSelector用法及代碼示例
- Python sklearn SelectPercentile用法及代碼示例
- Python sklearn SkewedChi2Sampler用法及代碼示例
- Python sklearn SGDClassifier用法及代碼示例
注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.cluster.SpectralClustering。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。