เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การคำนวณ 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

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

# 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 = ____
แก้ไขและรันโค้ด