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

แนะนำผู้ร่วมแก้ไขที่ยังไม่เคยทำงานร่วมกัน

ขั้นตอนสุดท้าย เราจะนำแนวคิด open triangles มาใช้แนะนำผู้ใช้ GitHub ที่ควรจะร่วมมือกัน!

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การวิเคราะห์เครือข่ายเบื้องต้นด้วย Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • รวบรวมรายชื่อผู้ใช้ GitHub ที่ควรได้รับการแนะนำให้ร่วมมือกัน โดยดำเนินการดังนี้:
    • ใน for loop แรก ให้วนซ้ำผ่านโหนดทั้งหมดใน G พร้อม metadata (โดยระบุ data=True)
    • ใน for loop ที่สอง ให้วนซ้ำผ่านชุดสามเหลี่ยมที่เป็นไปได้ทั้งหมด ซึ่งระบุได้โดยใช้ฟังก์ชัน combinations() กำหนด size เป็น 2
    • หาก n1 และ n2 ไม่มี edge เชื่อมกัน แสดงว่าควรแนะนำให้ทั้งสองโหนด (ผู้ใช้) ร่วมมือกัน ให้เพิ่มค่าในดิกชันนารี recommended ที่คีย์ (n1), (n2) โดยตรวจสอบว่า n1 และ n2 มี edge หรือไม่ได้ด้วยเมธอด .has_edge()
  • ใช้ list comprehension เพื่อระบุคู่ผู้ใช้ 10 อันดับแรกที่ควรได้รับการแนะนำให้ร่วมมือกัน กำหนดให้ iterable คือคู่ key-value ของดิกชันนารี recommended (เข้าถึงได้ด้วยเมธอด .items()) และเงื่อนไขจะเป็นจริงเมื่อ count มากกว่า 10 อันดับแรกใน all_counts โดย all_counts เรียงลำดับจากน้อยไปมาก จึงเข้าถึง 10 อันดับแรกได้ด้วย all_counts[-10]

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

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

# Import necessary modules
from itertools import combinations
from collections import defaultdict

# Initialize the defaultdict: recommended
recommended = defaultdict(int)

# Iterate over all the nodes in G
for n, d in ____:

    # Iterate over all possible triangle relationship combinations
    for n1, n2 in ____(list(G.neighbors(n)), ____):

        # Check whether n1 and n2 do not have an edge
        if not G.has_edge(____, ____):

            # Increment recommended
            ____[(____, ____)] += 1

# Identify the top 10 pairs of users
all_counts = sorted(recommended.values())
top10_pairs = [pair for pair, count in ____ if ____ > ____]
print(top10_pairs)
แก้ไขและรันโค้ด