@@ -307,6 +307,9 @@ class SpectralClustering(BaseEstimator, ClusterMixin):
307307 to be installed. It can be faster on very large, sparse problems,
308308 but may also lead to instabilities.
309309
310+ n_components : integer, optional, default=n_clusters
311+ Number of eigen vectors to use for the spectral embedding
312+
310313 random_state : int, RandomState instance or None (default)
311314 A pseudo random number generator used for the initialization of the
312315 lobpcg eigen vectors decomposition when ``eigen_solver='amg'`` and by
@@ -387,8 +390,8 @@ class SpectralClustering(BaseEstimator, ClusterMixin):
387390 >>> clustering # doctest: +NORMALIZE_WHITESPACE
388391 SpectralClustering(affinity='rbf', assign_labels='discretize', coef0=1,
389392 degree=3, eigen_solver=None, eigen_tol=0.0, gamma=1.0,
390- kernel_params=None, n_clusters=2, n_init=10, n_jobs=None ,
391- n_neighbors=10, random_state=0)
393+ kernel_params=None, n_clusters=2, n_components=None, n_init=10 ,
394+ n_jobs=None, n_neighbors=10, random_state=0)
392395
393396 Notes
394397 -----
@@ -425,12 +428,13 @@ class SpectralClustering(BaseEstimator, ClusterMixin):
425428 https://www1.icsi.berkeley.edu/~stellayu/publication/doc/2003kwayICCV.pdf
426429 """
427430
428- def __init__ (self , n_clusters = 8 , eigen_solver = None , random_state = None ,
429- n_init = 10 , gamma = 1. , affinity = 'rbf' , n_neighbors = 10 ,
430- eigen_tol = 0.0 , assign_labels = 'kmeans' , degree = 3 , coef0 = 1 ,
431- kernel_params = None , n_jobs = None ):
431+ def __init__ (self , n_clusters = 8 , eigen_solver = None , n_components = None ,
432+ random_state = None , n_init = 10 , gamma = 1. , affinity = 'rbf' ,
433+ n_neighbors = 10 , eigen_tol = 0.0 , assign_labels = 'kmeans' ,
434+ degree = 3 , coef0 = 1 , kernel_params = None , n_jobs = None ):
432435 self .n_clusters = n_clusters
433436 self .eigen_solver = eigen_solver
437+ self .n_components = n_components
434438 self .random_state = random_state
435439 self .n_init = n_init
436440 self .gamma = gamma
@@ -486,6 +490,7 @@ def fit(self, X, y=None):
486490 random_state = check_random_state (self .random_state )
487491 self .labels_ = spectral_clustering (self .affinity_matrix_ ,
488492 n_clusters = self .n_clusters ,
493+ n_components = self .n_components ,
489494 eigen_solver = self .eigen_solver ,
490495 random_state = random_state ,
491496 n_init = self .n_init ,
0 commit comments