Skip to contents

Builds an RBF or symmetric k-NN affinity graph, forms the unnormalised Laplacian L = D - W, embeds via its n_clusters smallest eigenvectors, k-means (Lloyd/k-means++ on an LCG stream) in that embedding.

Usage

morie_geron_spectral_clustering(
  X,
  n_clusters = 2,
  affinity = "rbf",
  gamma = 1,
  n_neighbors = 3,
  seed = 0
)

Arguments

X

Data (n, d).

n_clusters, affinity, gamma, n_neighbors, seed

As in Python original.

Value

list with labels, embedding, centers, eigenvalues, affinity_matrix, laplacian, n_components, estimate, n, method.

Examples

V <- c(1, 2, 3, 4, 5, 6, 7, 8)
morie_geron_spectral_clustering(V)
#> $labels
#> [1] 0 0 0 0 1 1 1 1
#> 
#> $embedding
#>           [,1]       [,2]
#> [1,] 0.3535534  0.4924759
#> [2,] 0.3535534  0.4141134
#> [3,] 0.3535534  0.2766639
#> [4,] 0.3535534  0.0971324
#> [5,] 0.3535534 -0.0971324
#> [6,] 0.3535534 -0.2766639
#> [7,] 0.3535534 -0.4141134
#> [8,] 0.3535534 -0.4924759
#> 
#> $centers
#>           [,1]       [,2]
#> [1,] 0.3535534  0.3200964
#> [2,] 0.3535534 -0.3200964
#> 
#> $eigenvalues
#> [1] -2.498002e-16  6.666228e-02  2.496272e-01  5.069182e-01  7.903440e-01
#> [6]  1.058339e+00  1.277693e+00  1.421750e+00
#> 
#> $affinity_matrix
#>              [,1]         [,2]         [,3]         [,4]         [,5]
#> [1,] 0.000000e+00 3.678794e-01 1.831564e-02 1.234098e-04 1.125352e-07
#> [2,] 3.678794e-01 0.000000e+00 3.678794e-01 1.831564e-02 1.234098e-04
#> [3,] 1.831564e-02 3.678794e-01 0.000000e+00 3.678794e-01 1.831564e-02
#> [4,] 1.234098e-04 1.831564e-02 3.678794e-01 0.000000e+00 3.678794e-01
#> [5,] 1.125352e-07 1.234098e-04 1.831564e-02 3.678794e-01 0.000000e+00
#> [6,] 1.388794e-11 1.125352e-07 1.234098e-04 1.831564e-02 3.678794e-01
#> [7,] 2.319523e-16 1.388794e-11 1.125352e-07 1.234098e-04 1.831564e-02
#> [8,] 5.242886e-22 2.319523e-16 1.388794e-11 1.125352e-07 1.234098e-04
#>              [,6]         [,7]         [,8]
#> [1,] 1.388794e-11 2.319523e-16 5.242886e-22
#> [2,] 1.125352e-07 1.388794e-11 2.319523e-16
#> [3,] 1.234098e-04 1.125352e-07 1.388794e-11
#> [4,] 1.831564e-02 1.234098e-04 1.125352e-07
#> [5,] 3.678794e-01 1.831564e-02 1.234098e-04
#> [6,] 0.000000e+00 3.678794e-01 1.831564e-02
#> [7,] 3.678794e-01 0.000000e+00 3.678794e-01
#> [8,] 1.831564e-02 3.678794e-01 0.000000e+00
#> 
#> $laplacian
#>               [,1]          [,2]          [,3]          [,4]          [,5]
#> [1,]  3.863186e-01 -3.678794e-01 -1.831564e-02 -1.234098e-04 -1.125352e-07
#> [2,] -3.678794e-01  7.541980e-01 -3.678794e-01 -1.831564e-02 -1.234098e-04
#> [3,] -1.831564e-02 -3.678794e-01  7.725137e-01 -3.678794e-01 -1.831564e-02
#> [4,] -1.234098e-04 -1.831564e-02 -3.678794e-01  7.726371e-01 -3.678794e-01
#> [5,] -1.125352e-07 -1.234098e-04 -1.831564e-02 -3.678794e-01  7.726371e-01
#> [6,] -1.388794e-11 -1.125352e-07 -1.234098e-04 -1.831564e-02 -3.678794e-01
#> [7,] -2.319523e-16 -1.388794e-11 -1.125352e-07 -1.234098e-04 -1.831564e-02
#> [8,] -5.242886e-22 -2.319523e-16 -1.388794e-11 -1.125352e-07 -1.234098e-04
#>               [,6]          [,7]          [,8]
#> [1,] -1.388794e-11 -2.319523e-16 -5.242886e-22
#> [2,] -1.125352e-07 -1.388794e-11 -2.319523e-16
#> [3,] -1.234098e-04 -1.125352e-07 -1.388794e-11
#> [4,] -1.831564e-02 -1.234098e-04 -1.125352e-07
#> [5,] -3.678794e-01 -1.831564e-02 -1.234098e-04
#> [6,]  7.725137e-01 -3.678794e-01 -1.831564e-02
#> [7,] -3.678794e-01  7.541980e-01 -3.678794e-01
#> [8,] -1.831564e-02 -3.678794e-01  3.863186e-01
#> 
#> $n_components
#> [1] 1
#> 
#> $estimate
#> [1] 0.1829649
#> 
#> $n
#> [1] 8
#> 
#> $method
#> [1] "Unnormalised Laplacian spectral clustering (rbf affinity) + Lloyd k-means in the embedding"
#>