Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

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_lmc từ các hàng xóm của G bằng các phương thức .add_nodes_from().neighbors().
    • Dùng phương thức .add_edges_from() để thêm các cạnh vào G_lmc giữ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àm zip() 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ào zip() nên là [node]*len(list(G.neighbors(node))), và đối số thứ hai là các hàng xóm của node.
  • 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] cho G_lmc.nodes[n]['degree centrality'] trong vòng lặp for thứ hai.
  • 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()
Chỉnh sửa và Chạy Mã