Оценка графа сообщества - PullRequest
0 голосов
/ 31 октября 2019

У меня есть следующие настройки:

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].

Я хотел бы рассчитать качество кластеризации (для построения диаграмм сообществ), используя сумму межобщинных сообществ. ребра, разделенные суммой вершин в сообществе:

Я не могу понять, как этого добиться. Я должен уметь обрабатывать граф с миллионами вершин и ребер, поэтому производительность должна быть несколько хорошей. Любая помощь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...