วิเคราะห์ลักษณะของชุมชนผู้แก้ไข
ในแบบฝึกหัดนี้ จะนำความรู้เกี่ยวกับอัลกอริทึม BFS และแนวคิดของ maximal clique มาผสมผสานกัน เพื่อแสดงผลเครือข่ายด้วย Arc plot
Maximal clique ที่ใหญ่ที่สุดในเครือข่ายการทำงานร่วมกันของผู้ใช้ GitHub ได้ถูกกำหนดให้เป็น subgraph G_lmc แล้ว โปรดทราบว่าใน NetworkX เวอร์ชัน 2.x ขึ้นไป G.subgraph(nodelist) จะคืนค่าเพียง view แบบอ่านอย่างเดียวของกราฟต้นฉบับ จึงต้องเรียก .copy() อย่างชัดเจน เพื่อให้ได้กราฟที่แก้ไขได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python
คำแนะนำการฝึกหัด
- ขยายออกไป 1 ระดับจาก clique แล้วเพิ่มผู้ใช้เหล่านั้นเข้าไปใน subgraph ภายใน
forloop แรก:- เพิ่มโหนดลงใน
G_lmcจากเพื่อนบ้านของGโดยใช้เมธอด.add_nodes_from()และ.neighbors() - ใช้เมธอด
.add_edges_from()เพิ่ม edge ลงในG_lmcระหว่างโหนดปัจจุบันกับเพื่อนบ้านทุกตัว โดยสร้างรายการ tuple ด้วยฟังก์ชันzip()ที่ประกอบด้วยโหนดปัจจุบันและเพื่อนบ้านแต่ละตัว อาร์กิวเมนต์แรกของzip()คือ[node]*len(list(G.neighbors(node)))และอาร์กิวเมนต์ที่สองคือเพื่อนบ้านของnode
- เพิ่มโหนดลงใน
- บันทึกคะแนน degree centrality ของแต่ละโหนดไว้ใน metadata ของโหนดนั้น
- ทำได้โดยกำหนดค่า
nx.degree_centrality(G_lmc)[n]ให้กับG_lmc.nodes[n]['degree centrality']ในforloop ที่สอง
- ทำได้โดยกำหนดค่า
- แสดงผลเครือข่ายนี้ด้วย Arc plot โดยเรียงโหนดตาม degree centrality (ใช้ keyword argument
sort_by='degree centrality')
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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()