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
Hướng dẫn bài tập
- Chuẩn bị nodelist
peoplebằng list comprehension. Nếu từ khóa'bipartite'của một nútntrongGbằng'people', thì nút đó phải thuộc nodelist. - Chuẩn bị nodelist
clubsbằ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 metadatadcó 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 nodelistpeople, 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àopeopleGvàclubsG.- Hàm này nhận hai đối số: đồ thị
Gvà nodelist.
- Hàm này nhận hai đối số: đồ thị
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 = ____