Я хотел бы рассчитать оптимальное количество кластеров для спектральной кластеризации, но по какой-то причине следующий фрагмент большую часть времени возвращает 1. Это, очевидно, не тот случай. Как мне изменить код, чтобы получить приличное значение?
import numpy as np
import networkx as nx
import numpy.linalg as la
G = nx.powerlaw_cluster_graph(100, 1, 0.0)
A = nx.adjacency_matrix(G)
D = np.diag(np.ravel(np.sum(A, axis=1)))
L = D-A
l, U = la.eigh(L)
f = U[:, 1]
labels = np.ravel(np.sign(f))
k = np.argmin(np.ediff1d(np.flipud(l))) + 1
print(k)
source