Рассчитайте модульность с помощью networkx

0

Создание графа с узлами, имеющими атрибут Race, который может быть либо dog car elephantили giraffe, который затем сортируется в четыре списка (четыре сообщества). Смотрите код ниже:

import pandas as pd
import networkx as nx

df = pd.read_csv(path + 'raw_data.csv')

G = nx.Graph()

for i in range(len(df)):
    node = df.Name.values[i]
    race = df.Race.values[i]
    
    G.add_nodes_from([(node, {"Race":race})])

dog = [x for x,y in G.nodes(data=True) if y['Race']=='Dog']
cat = [x for x,y in G.nodes(data=True) if y['Race']=='Cat']
elephant = [x for x,y in G.nodes(data=True) if y['Race']=='Elephant']
giraffe = [x for x,y in G.nodes(data=True) if y['Race']=='Giraffe']

Затем я хочу рассчитать модульность, используя networkx, как в этом примере:

import networkx.algorithms.community as nx_comm

G = nx.barbell_graph(3, 0)
nx_comm.modularity(G, [{0, 1, 2}, {3, 4, 5}])

Можно ли добавить четыре списка в функцию модульности в качестве сообществ? или есть другой способ сделать это?

Любая помощь приветствуется!

0

Попробуйте следующее?

nx_comm.modularity(G, [set(race) for race in (dog, cat, elephant, giraffe)])