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

Tính phép chiếu (projection)

Giờ là lúc bạn thực hành tính phép chiếu của một đồ thị hai phía (bipartite) lên các nút của một trong hai phần (partition). Bài này giúp bạn luyện chuyển đổi giữa phiên bản bipartite của một đồ thị và các phép chiếu unipartite của nó. Hãy nhớ từ video rằng “phép chiếu” của một đồ thị lên một partition là độ kết nối giữa các nút trong partition đó, có điều kiện theo các kết nối tới các nút ở partition còn lại. Cụ thể hơn, bạn có thể hình dung như “độ kết nối của khách hàng dựa trên các mặt hàng mua chung”.

Để bạn bắt đầu, đây là gợi ý về list comprehension. List comprehension có thể kèm điều kiện, nên nếu bạn muốn lọc đồ thị theo một kiểu nút nhất định, bạn có thể làm: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value'].

Bài tập này là một phần của khóa học

Phân tích mạng nâng cao với Python

Xem khóa học

Hướng dẫn bài tập

  • Chuẩn bị nodelist people bằng list comprehension. Nếu từ khóa 'bipartite' của một nút n trong G bằng 'people', thì nút đó phải thuộc nodelist.
  • Chuẩn bị nodelist clubs bằng cách lặp qua các nút của G, bao gồm cả metadata. Ở đây, lưu ý rằng bạn phải kiểm tra liệu từ khóa 'bipartite' của dictionary metadata d có bằng 'clubs' hay không. Lưu ý: Đây chỉ là một cách khác để tạo nodelist. Bạn không nhất thiết phải lặp qua metadata — bạn có thể làm giống như khi tạo nodelist people, chỉ khác là kiểm tra 'clubs'. Chúng tôi yêu cầu bạn dùng cách còn lại ở đây để bạn luyện cả hai cách.
  • Dùng nx.bipartite.projected_graph() để tính phép chiếu cho people và clubs. Lưu kết quả lần lượt vào peopleGclubsG.
    • Hàm này nhận hai đối số: đồ thị G và nodelist.

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.

# 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 = ____
Chỉnh sửa và Chạy Mã