У меня есть следующие настройки:
import numpy as np
from sklearn.cluster import SpectralClustering
from scipy.sparse import coo_matrix
def create_adjancecy(edge_list):
""" Create adjancency matrix from edge list """
edges = np.c_[ edge_list, np.ones(len(edge_list)) ].astype(np.int32)
max_ = max(edges.max(axis=0))+1
shape = (max_, max_)
coo = coo_matrix((edges[:, 2], (edges[:, 0], edges[:, 1])),
shape=shape)
return coo
X = [[0, 2],
[1, 2],
[0, 3],
[3, 5],
[3, 6]]
adj = create_adjancecy(X)
print(adj.todense())
clustering = SpectralClustering(n_clusters=2,
affinity='precomputed',
n_jobs=-1).fit(adj)
print(clustering.labels_)
Предоставление вывода [0 1 1 0 0 0 0]
.
Я хотел бы рассчитать качество кластеризации (для построения диаграмм сообществ), используя сумму межобщинных сообществ. ребра, разделенные суммой вершин в сообществе:
Я не могу понять, как этого добиться. Я должен уметь обрабатывать граф с миллионами вершин и ребер, поэтому производительность должна быть несколько хорошей. Любая помощь?