โหนดร่วมใน partition อื่น
เพื่อสร้างความเข้าใจพื้นฐานของระบบแนะนำ (recommendation system) เราจะเริ่มจากหลักการสำคัญ นั่นคือการคำนวณความคล้ายคลึงของผู้ใช้ในกราฟแบบ bipartite
โจทย์คือการเขียนฟังก์ชันที่รับโหนด 2 โหนดเป็น input แล้วคืนค่าเซตของโหนด repository ที่โหนดผู้ใช้ทั้งสองมีร่วมกัน
เมธอดและฟังก์ชันที่จะเป็นประโยชน์ในแบบฝึกหัดนี้ได้แก่ .neighbors(), set() และ .intersection() รวมถึงฟังก์ชัน shared_partition_nodes ที่จะกำหนดขึ้นเองด้วย
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายระดับกลางใน Python
คำแนะนำการฝึกหัด
- เขียนฟังก์ชันชื่อ
shared_partition_nodes()ที่รับ argument 3 ตัว ได้แก่ กราฟG,node1และnode2แล้วคืนค่าเซตของโหนดที่node1และnode2มีร่วมกัน- ตรวจสอบว่า
node1และnode2อยู่ใน partition เดียวกัน โดยใช้ assert statement และ keyword'bipartite' - ดึง neighbor ของ
node1แล้วเก็บไว้ในnbrs1 - ดึง neighbor ของ
node2แล้วเก็บไว้ในnbrs2
- ตรวจสอบว่า
- คำนวณส่วนที่ทับซ้อนกันระหว่าง
nbrs1และnbrs2โดยใช้เมธอด.intersection()ของ set - แสดงจำนวน repository ที่ผู้ใช้
'u7909'และ'u2148'มีร่วมกัน โดยใช้ฟังก์ชันshared_partition_nodes()ร่วมกับฟังก์ชันlen()
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def ____:
# Check that the nodes belong to the same partition
assert G.nodes[____]['bipartite'] == G.nodes[____]['bipartite']
# Get neighbors of node 1: nbrs1
nbrs1 = ____
# Get neighbors of node 2: nbrs2
nbrs2 = ____
# Compute the overlap using set intersections
overlap = ____(____).____(____)
return overlap
# Print the number of shared repositories between users 'u7909' and 'u2148'
print(____(____))