เมตริกความคล้ายคลึงของผู้ใช้
หลังจากเขียนฟังก์ชันเพื่อคำนวณเซตของโหนดที่ใช้ร่วมกันระหว่างสองโหนดแล้ว คราวนี้จะได้เขียนฟังก์ชันเพื่อคำนวณเมตริกความคล้ายคลึงระหว่างผู้ใช้สองคน ได้แก่ จำนวนโปรเจกต์ที่ผู้ใช้สองคนมีร่วมกัน หารด้วยจำนวนโหนดทั้งหมดในพาร์ติชันอื่น ซึ่งสามารถนำไปใช้ค้นหาผู้ใช้ที่มีความคล้ายคลึงกันได้
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เครือข่ายระดับกลางใน Python
คำแนะนำการฝึกหัด
- เติมฟังก์ชัน
user_similarity()ให้สมบูรณ์เพื่อคำนวณความคล้ายคลึงระหว่างuser1และuser2- ใช้คำสั่ง
assertเพื่อตรวจสอบว่าuser1และuser2อยู่ในพาร์ติชัน'users' - ใช้ฟังก์ชัน
shared_partition_nodes()จากแบบฝึกหัดก่อนหน้าเพื่อดึงเซตของโหนดที่user1และuser2มีร่วมกัน - คืนค่าเศษส่วนของโหนดในพาร์ติชัน
projectsกล่าวคือ ให้หารจำนวนshared_nodesด้วยจำนวนโหนดทั้งหมดในพาร์ติชัน'projects'
- ใช้คำสั่ง
- คำนวณคะแนนความคล้ายคลึงระหว่างผู้ใช้
'u4560'และ'u1880'โดย:- ดึงโหนดในพาร์ติชัน
'projects'ก่อนโดยใช้ฟังก์ชันget_nodes_from_partition() - จากนั้นใช้ฟังก์ชัน
user_similarity()เพื่อคำนวณคะแนน
- ดึงโหนดในพาร์ติชัน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
def user_similarity(G, user1, user2, proj_nodes):
# Check that the nodes belong to the 'users' partition
____ G.nodes[____]['bipartite'] == '____'
____ G.nodes[____]['bipartite'] == '____'
# Get the set of nodes shared between the two users
shared_nodes = ____
# Return the fraction of nodes in the projects partition
return len(____) / len(____)
# Compute the similarity score between users 'u4560' and 'u1880'
project_nodes = ____
similarity_score = ____
print(similarity_score)