def determine_num_clusters_spectral(X, max_clusters = 10, gamma = None):
""" Determine number of clusters based on Eigengaps of Graph Laplacian. """
if gamma is None:
gamma = np.sqrt(X.shape[1])
adjacency = rbf_kernel(X, gamma = gamma)
laplacian = graph_laplacian(adjacency, normed = True, return_diag = False)
eig = scipy.linalg.eigh(laplacian, eigvals = (0, min(max_clusters, laplacian.shape[0] - 1)), eigvals_only = True)
eigengap = eig[1:] - eig[:-1]
return np.argmax(eigengap) + 1
评论列表
文章目录