Phân tích đặc trưng cộng đồng chỉnh sửa
Giờ bạn sẽ kết hợp những gì đã học về thuật toán BFS và khái niệm clique tối đại để trực quan hóa mạng lưới bằng Arc plot.
Clique tối đại lớn nhất trong mạng hợp tác người dùng Github đã được gán vào đồ thị con G_lmc. Lưu ý rằng với NetworkX phiên bản 2.x trở lên, G.subgraph(nodelist) chỉ trả về một view bất biến của đồ thị gốc. Ta phải yêu cầu rõ ràng .copy() của đồ thị để nhận được phiên bản có thể thay đổi.
Bài tập này là một phần của khóa học
Nhập môn Phân tích Mạng bằng Python
Hướng dẫn bài tập
- Mở rộng thêm 1 bậc kết nối từ clique và thêm những người dùng đó vào đồ thị con. Bên trong vòng lặp
forđầu tiên:- Thêm các node vào
G_lmctừ các hàng xóm củaGbằng các phương thức.add_nodes_from()và.neighbors(). - Dùng phương thức
.add_edges_from()để thêm các cạnh vàoG_lmcgiữa node hiện tại và tất cả hàng xóm của nó. Để làm điều này, bạn sẽ tạo một danh sách các bộ tuple dùng hàmzip()gồm node hiện tại và từng hàng xóm của nó. Đối số đầu tiên truyền vàozip()nên là[node]*len(list(G.neighbors(node))), và đối số thứ hai là các hàng xóm củanode.
- Thêm các node vào
- Ghi lại điểm độ trung tâm bậc của mỗi node trong siêu dữ liệu của node.
- Thực hiện bằng cách gán
nx.degree_centrality(G_lmc)[n]choG_lmc.nodes[n]['degree centrality']trong vòng lặpforthứ hai.
- Thực hiện bằng cách gán
- Trực quan hóa mạng này bằng Arc plot và sắp xếp các node theo độ trung tâm bậc (bạn có thể làm điều này bằng đối số từ khóa
sort_by='degree centrality').
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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()