Я пытаюсь вычислить общую эффективность графа в igraph, но я не уверен, правильно ли я использую модуль.Я думаю, что есть решение, которое может иметь немного смысла, но оно есть в r, и я не смог расшифровать то, что они говорили.
Я пытался написать код в стиле networkx, пытаясьподражать способу, которым они вычисляют глобальную эффективность, но я был неудачным до сих пор.Я использую igraph из-за того, что имею дело с большими графами.Любая помощь будет принята с благодарностью: D
Это то, что я пробовал:
import igraph
import pandas as pd
import numpy as np
from itertools import permutations
datasafe = pd.read_csv("b1.csv", index_col=0)
D = datasafe.values
g = igraph.Graph.Adjacency((D > 0).tolist())
g.es['weight'] = D[D.nonzero()]
def efficiency_weighted(g):
weights = g.es["weight"][:]
eff = (1.0 / np.array(g.shortest_paths_dijkstra(weights=weights)))
return eff
def global_efficiecny_weighted(g):
n=180.0
denom=n*(n-1)
g_eff = sum(efficiency_weighted(g) for u, v in permutations(g, 2))
return g_eff
global_efficiecny_weighted(g)
Сообщение об ошибке, которое я получаю, говорит: - TypeError: объект 'Graph' не повторяется