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)
將聚類應用于歸一化Laplacian的投影。
在實際應用中,光譜聚類是非常有用的,當單個簇的結構是高度非凸的,或者更普遍地說,當簇的中心和擴展的度量并不適合描述完整的聚類時,光譜聚類是非常有用的。例如,當簇是二維平面上的嵌套圓時。
如果親和度是圖的鄰接矩陣,則該方法可用于求圖的歸一化割集。
調用fit
時,使用歐氏距離d(X,X)
的高斯(又名RBF)核等核函數構造親和矩陣:
np.exp(-gamma * d(X,X) ** 2)
或k-最近鄰連通矩陣。
或者,使用precomputed
方法,可以使用用戶提供的關聯矩陣。
在用戶指南中閱讀更多內容。
參數 | 說明 |
---|---|
n_clusters | integer, optional 投影子空間的維數 |
eigen_solver | {None, ‘arpack’, ‘lobpcg’, or ‘amg’} 特征值分解策略的應用。AMG需要安裝pyamg。它可以在非常大的稀疏問題上更快,但也可能導致不穩定。 |
n_components | integer, optional, default=n_clusters 用于光譜嵌入的特征向量數 |
random_state | int, RandomState instance, default=None 一種用于Lobpcg特征向量分解初始化的偽隨機數發生器,當 eigen_solver='amg' , 通過K-Means初始化。使用int使隨機性確定性。見Glossary。 |
n_init | int, optional, default: 10 k均值算法將使用不同的質心種子運行。最后的結果將是n_init連續運行的最佳inertia輸出。 |
gamma | float, default=1.0 rbf,poly, sigmoid, laplacian 和chi2 核的核系數。對于 affinity='nearest_neighbors' 的情況請忽略。 |
affinity | string or callable, default ‘rbf’ 如何構造親和矩陣 - ‘nearest_neighbors’:通過計算近鄰圖來構造親和矩陣。 - ‘rbf’:利用徑向基函數(RBF)核構造親和矩陣。 - ‘precomputed’:將 X 解釋為預先計算的親和矩陣。- ‘precomputed_nearest_neighbors’:將 X 解釋為預先計算的近鄰的稀疏圖,并通過選擇n_neighbors 近鄰構造親和矩陣。- 由 pairwise_kernels 支撐的一種核。只應使用產生相似分數的內核(非負值,隨相似性的增加)。聚類算法不檢查此屬性。 |
n_neighbors | integer 使用最近鄰方法構造關聯矩陣時要使用的鄰居數。當 affinity='rbf' 忽略。 |
eigen_tol | float, optional, default: 0.0 Laplacian矩陣特征點的停止準則, 當 eigen_solver='arpack' 。 |
assign_labels | {‘kmeans’, ‘discretize’}, default: ‘kmeans’ 在嵌入空間中分配標簽的策略。在Laplacian嵌入之后,有兩種分配標簽的方法。k-means可以應用,是一種很受歡迎的選擇。但是它對初始化也很敏感。離散化是另一種對隨機初始化不那么敏感的方法。 |
degree | float, default=3 多項式核的維度, 其他內核忽略 |
coef0 | float, default=1 多項式核和sigmoid核的零系數。其他內核忽略 |
kernel_params | dictionary of string to any, optional 參數(關鍵字參數)和作為可調用對象傳遞的內核值。其他內核忽略。 |
n_jobs | int or None, optional (default=None) 要運行的并行任務數。 None 意味1, 除非在joblib.parallel_backend 環境中。-1 指使用所有處理器。有關詳細信息,請參Glossary。 |
屬性 | 方法 |
---|---|
affinity_matrix_ | array-like, shape (n_samples, n_samples) 用于聚類的親和矩陣。只有在調用 fit 之后才能用。 |
labels_ | array, shape (n_samples,) 每一點的標簽 |
注意
如果有一個親和矩陣,例如距離矩陣,它的0表示相同的元素,而高的值表示非常不同的元素,則可以通過應用高斯(RBF,熱)核將其轉換成一個非常適合該算法的相似矩陣:
np.exp(- dist_matrix ** 2 / (2. * delta ** 2))
其中delta
是一個自由參數,表示高斯核的寬度。
另一種選擇是取點的k個最近鄰連通矩陣的對稱版本。
如果安裝了pyamg包,就會使用它:這大大加快了計算速度。
參考
Normalized cuts and image segmentation, 2000 Jianbo Shi, Jitendra Malikhttp://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.160.2324
A Tutorial on Spectral Clustering, 2007 Ulrike von Luxburghttp://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.165.9323
Multiclass spectral clustering, 2003 Stella X. Yu, Jianbo Shihttps://www1.icsi.berkeley.edu/~stellayu/publication/doc/2003kwayICCV.pdf
示例
>>> 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 (self, X[, y]) |
根據特征或親和矩陣執行光譜聚類 |
fit_predict (self, X[, y]) |
根據特征或親和矩陣執行光譜聚類,并返回聚類標簽。 |
get_params (self[, deep]) |
獲取此估計器的參數 |
set_params (self, **params) |
設置此估計器的參數 |
__init__(self, 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)
初始化self。請參閱help(type(self))以獲得準確的說明
fit(self, X, y=None)
根據特征或親和矩陣執行光譜聚類
參數 | 說明 |
---|---|
X | array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples) 要聚類的實例, 或者實例之間的相似性/親和度, 如果 affinity='precomputed' 。如果以csr_matrix , csc_matrix , 或者 coo_matrix 以外的格式提供稀疏矩陣,則將其轉換為稀疏csr_matrix 。 |
y | Ignored 未使用,在此按約定呈現為api一致性。 |
返回值 | 說明 |
---|---|
self | - |
fit_predict(self, X, y=None)
根據特征或親和矩陣執行光譜聚類,并返回聚類標簽。
參數 | 說明 |
---|---|
X | array-like or sparse matrix, shape (n_samples, n_features), or array-like, shape (n_samples, n_samples) 要聚類的實例, 或者實例之間的相似性/親和度, 如果 affinity='precomputed' 。如果以csr_matrix , csc_matrix , 或者 coo_matrix 以外的格式提供稀疏矩陣,則將其轉換為稀疏csr_matrix 。 |
y | Ignored 未使用,在此按約定呈現為api一致性。 |
返回值 | 說明 |
---|---|
labels | ndarray, shape (n_samples,) 聚類標簽 |
get_params(self, deep=True)
獲取此估計器的參數
表格 | 說明 |
---|---|
deep | bool, default=True 如果為True,則將返回此估計器的參數和所包含的作為估計量的子對象。 |
返回值 | 說明 |
---|---|
params | mapping of string to any 映射到其值的參數名稱 |
set_params(self, **params)
設置此估計器的參數
該方法適用于簡單估計器以及嵌套對象(例如pipelines)。后者具有表單的 <component>__<parameter>
參數,這樣就可以更新嵌套對象的每個組件。
表格 | 說明 |
---|---|
**params | dict 估計器參數 |
返回值 | 說明書 |
---|---|
self | object 估計器實例 |