Charakteristika editačních komunit
Teď zkombinuješ, co ses naučil/a o algoritmu BFS a konceptu maximálních klik, a vizualizuješ síť pomocí Arc plotu.
Největší maximální klika v síti spolupráce uživatelů GitHubu byla přiřazena do podgrafu G_lmc. Poznámka: ve verzi NetworkX 2.x a novějších vrací G.subgraph(nodelist) pouze neměnný pohled na původní graf. Abychom získali editovatelnou verzi, musíme explicitně zavolat .copy().
Toto cvičení je součástí kurzu
Úvod do analýzy sítí v Pythonu
Pokyny k cvičení
- Vyjdi 1 stupeň separace od kliky a přidej tyto uživatele do podgrafu. Uvnitř první smyčky
for:- Přidej uzly do
G_lmcze sousedů grafuGpomocí metod.add_nodes_from()a.neighbors(). - Pomocí metody
.add_edges_from()přidej doG_lmchrany mezi aktuálním uzlem a všemi jeho sousedy. K tomu vytvoř seznam dvojic pomocí funkcezip()složený z aktuálního uzlu a každého z jeho sousedů. Prvním argumentemzip()by mělo být[node]*len(list(G.neighbors(node)))a druhým argumentem sousedé uzlunode.
- Přidej uzly do
- Zaznamenej skóre centrality stupně každého uzlu do jeho metadat.
- Udělej to tak, že ve druhé smyčce
forpřiřadíšnx.degree_centrality(G_lmc)[n]doG_lmc.nodes[n]['degree centrality'].
- Udělej to tak, že ve druhé smyčce
- Vizualizuj tuto síť pomocí Arc plotu, kde uzly seřadíš podle centrality stupně (použij pojmenovaný argument
sort_by='degree centrality').
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# Import necessary modules
from nxviz import arc
import matplotlib.pyplot as plt
# Identify the largest maximal clique: largest_max_clique
largest_max_clique = set(sorted(nx.find_cliques(G), key=lambda x: len(x))[-1])
# Create a subgraph from the largest_max_clique: G_lmc
G_lmc = G.subgraph(largest_max_clique).copy()
# Go out 1 degree of separation
for node in list(G_lmc.nodes()):
G_lmc.add_nodes_from(____)
G_lmc.add_edges_from(zip(____, ____))
# Record each node's degree centrality score
for n in G_lmc.nodes():
____ = ____
# Create the Arc plot: a
a = ____
# Draw the Arc plot to the screen
a
plt.show()