การคำนวณ projection
ถึงเวลาลองคำนวณ projection ของกราฟ bipartite ไปยังโหนดในพาร์ติชันหนึ่งด้วยตัวเองแล้ว แบบฝึกหัดนี้จะช่วยให้คุณฝึกแปลงกราฟ bipartite ให้เป็น projection แบบ unipartite ได้อย่างคล่องแคล่ว จำไว้ว่า "projection" ของกราฟไปยังพาร์ติชันหนึ่ง คือความเชื่อมโยงระหว่างโหนดในพาร์ติชันนั้น โดยมีเงื่อนไขจากการเชื่อมต่อกับโหนดในอีกพาร์ติชันหนึ่ง พูดให้เข้าใจง่ายขึ้น ลองนึกถึง "ความเชื่อมโยงระหว่างลูกค้าที่ซื้อสินค้าร่วมกัน"
เพื่อเป็นแนวทางในการเริ่มต้น นี่คือคำแนะนำเกี่ยวกับลิสต์ comprehension — ลิสต์ comprehension สามารถใส่เงื่อนไขได้ ดังนั้นหากต้องการกรองกราฟเพื่อหาโหนดประเภทหนึ่ง ให้ใช้: [n for n, d in G.nodes(data=True) if d['key'] == 'some_value']
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายระดับกลางใน Python
คำแนะนำการฝึกหัด
- เตรียม nodelist ของ
peopleโดยใช้ลิสต์ comprehension หากค่าของ keyword'bipartite'ของโหนดnในGเท่ากับ'people'ให้รวมโหนดนั้นเข้าไปใน nodelist - เตรียม nodelist ของ
clubsโดยวนซ้ำผ่านโหนดของ G พร้อมกับ เมตาดาต้า ในที่นี้ ให้ตรวจสอบว่า keyword'bipartite'ของดิกชันนารีเมตาดาต้าdมีค่าเท่ากับ'clubs'หมายเหตุ: นี่เป็นเพียงอีกวิธีหนึ่งในการสร้าง nodelist คุณไม่จำเป็นต้องวนซ้ำผ่านเมตาดาต้า แต่สามารถใช้วิธีเดียวกับที่ใช้สร้าง nodelist ของpeopleโดยเปลี่ยนเงื่อนไขเป็น'clubs'แทน เราให้ฝึกวิธีนี้เพื่อให้คุณได้ลองใช้ทั้งสองแนวทาง - ใช้
nx.bipartite.projected_graph()เพื่อคำนวณ projection ของ people และ clubs แล้วเก็บผลลัพธ์ไว้ในตัวแปรpeopleGและclubsG- ฟังก์ชันนี้รับอาร์กิวเมนต์ 2 ตัว ได้แก่ กราฟ
Gและ nodelist
- ฟังก์ชันนี้รับอาร์กิวเมนต์ 2 ตัว ได้แก่ กราฟ
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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 = ____