Calculer une projection
Il est temps de vous entraîner à calculer la projection d’un graphe biparti sur les nœuds de l’une de ses partitions. Cela vous aidera à vous exercer à passer d’une version bipartie d’un graphe à ses projections uniparties. Rappelez-vous de la vidéo que la « projection » d’un graphe sur l’une de ses partitions correspond à la connectivité des nœuds de cette partition, conditionnée par leurs connexions aux nœuds de l’autre partition. Plus concrètement, pensez à la « connectivité de clients basée sur des achats en commun ».
Pour vous aider à démarrer, voici un rappel sur les compréhensions de listes. Elles peuvent inclure des conditions : si vous souhaitez filtrer un graphe pour un certain type de nœud, vous pouvez faire : [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].
Cet exercice fait partie du cours
Analyse de réseaux intermédiaire en Python
Instructions
- Préparez la nodelist
peopleavec une compréhension de liste. Si le mot-clé'bipartite'd’un nœudndansGest égal à'people', alors ce nœud doit faire partie de la nodelist. - Préparez la nodelist
clubsen itérant sur les nœuds de G, en incluant les métadonnées. Ici, notez que vous devez vérifier si le mot-clé'bipartite'du dictionnaire de métadonnéesdest égal à'clubs'. Remarque : c’est simplement une autre façon de créer la nodelist. Vous n’êtes pas obligé d’itérer sur les métadonnées : vous pouvez suivre la même approche que pour créer la nodelistpeople, en vérifiant simplement'clubs'à la place. Nous vous demandons d’utiliser l’autre approche ici afin que vous vous exerciez aux deux. - Utilisez
nx.bipartite.projected_graph()pour calculer les projections des personnes et des clubs. Enregistrez les résultats danspeopleGetclubsG.- Cette fonction prend deux arguments : le graphe
Get la nodelist.
- Cette fonction prend deux arguments : le graphe
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Prepare the nodelists needed for computing projections: people, clubs
# This exercise shows you two ways to do it, one with `data=True` and one without.
people = [n for n in G.nodes() if G.nodes[____]['____'] == '____']
clubs = [n for n, d in G.nodes(data=True) if d['____'] == '____']
# Compute the people and clubs projections: peopleG, clubsG
peopleG = ____
clubsG = ____