Merekomendasikan rekan editor yang belum pernah mengedit bersama
Terakhir, Anda akan memanfaatkan konsep open triangle untuk merekomendasikan pengguna di GitHub agar berkolaborasi!
Latihan ini adalah bagian dari kursus
Pengantar Analisis Jaringan di Python
Petunjuk latihan
- Susun daftar pengguna GitHub yang sebaiknya direkomendasikan untuk saling berkolaborasi. Untuk melakukannya:
- Pada
forloop pertama, iterasikan semua node dalamG, termasuk metadata (dengan menyeteldata=True). - Pada
forloop kedua, iterasikan semua kemungkinan kombinasi segitiga, yang dapat diidentifikasi menggunakan fungsicombinations()dengansizebernilai2. - Jika
n1dann2tidak memiliki edge di antara keduanya, maka kolaborasi antara dua node (pengguna) ini sebaiknya direkomendasikan, sehingga naikkan nilai(n1), (n2)pada dictionaryrecommendeddalam kasus ini. Anda dapat memeriksa apakahn1dann2memiliki edge di antara keduanya menggunakan metode.has_edge().
- Pada
- Dengan menggunakan list comprehension, identifikasi 10 pasangan pengguna teratas yang sebaiknya direkomendasikan untuk berkolaborasi. Iterable-nya harus berupa pasangan key–value dari dictionary
recommended(yang dapat diakses dengan metode.items()), sementara kondisi harus terpenuhi jikacountlebih besar dari 10 teratas dalamall_counts. Perhatikan bahwaall_countsdiurutkan secara menaik, sehingga Anda dapat mengakses 10 teratas denganall_counts[-10].
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# 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)