Henüz birlikte düzenleme yapmamış ortak editörleri önermek
Son olarak, açık üçgen kavramını kullanarak GitHub'da birlikte çalışması için kullanıcılara önerilerde bulunacaksın!
Bu egzersiz, kursun bir parçasıdır
Python ile Ağ Analizine Giriş
Egzersiz talimatları
- Birbirleriyle işbirliği yapması önerilen GitHub kullanıcılarının bir listesini derle. Bunu yapmak için:
- İlk
fordöngüsünde,Giçindeki tüm düğümler üzerinde, metaveriler dahil (yanidata=Truebelirterek) yineleme yap. - İkinci
fordöngüsünde,sizedeğeri2olancombinations()işlevini kullanarak belirlenebilen tüm olası üçgen kombinasyonları üzerinde yineleme yap. n1ven2arasında kenar yoksa, bu iki düğümün (kullanıcının) işbirliği önerilmelidir; bu durumdarecommendedsözlüğünde(n1), (n2)değerini artır.n1ven2arasında kenar olup olmadığını.has_edge()yöntemiyle kontrol edebilirsin.
- İlk
- Bir liste üreteci kullanarak, işbirliği önerilmesi gereken en iyi 10 kullanıcı çiftini belirle. Yineleyici
recommendedsözlüğünün anahtar-değer çiftleri olmalı (.items()yöntemiyle erişebilirsin ) ve koşul,countdeğerininall_countsiçindeki ilk 10'dan büyük olmasıdır.all_countsartan sırada olduğundan, ilk 10'aall_counts[-10]ile erişebilirsin.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# 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)