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([[11], [21], [10],
...               [47], [35], [36]])
>>> clustering = SpectralClustering(n_clusters=2,
...         assign_labels="discretize",
...         random_state=0).fit(X)
>>> clustering.labels_
array([111000])
>>> 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
估計器實例

sklearn.cluster.SpectralClustering使用示例?