ऐसे co-editors की सिफारिश करना जिन्होंने अभी साथ में edit नहीं किया है
आखिर में, आप open triangles की अवधारणा का उपयोग करके GitHub पर सहयोग के लिए यूज़र्स की सिफारिश करेंगे!
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में नेटवर्क विश्लेषण का परिचय
अभ्यास निर्देश
- ऐसे GitHub यूज़र्स की सूची तैयार करें जिन्हें एक-दूसरे के साथ collaborate करने की सिफारिश की जानी चाहिए. इसके लिए:
- पहले
forलूप में,Gके सभी नोड्स पर उनके मेटाडेटा सहित iterate करें (इसके लिएdata=Trueदें). - दूसरे
forलूप में, सभी संभावित triangle कॉम्बिनेशन पर iterate करें, जिन्हेंsize2के साथcombinations()फंक्शन से पाया जा सकता है. - अगर
n1औरn2के बीच edge नहीं है, तो इन दो नोड्स (यूज़र्स) के बीच collaboration की सिफारिश होनी चाहिए. ऐसे मेंrecommendedडिक्शनरी में(n1), (n2)वाले मान को increment करें. आप.has_edge()मेथड से जाँच सकते हैं किn1औरn2के बीच edge है या नहीं.
- पहले
- एक list comprehension का उपयोग करके उन टॉप 10 यूज़र-पेयर्स की पहचान करें जिन्हें collaborate करने की सिफारिश होनी चाहिए. Iterable
recommendedडिक्शनरी के key-value पेयर्स होने चाहिए (जिन्हें.items()मेथड से एक्सेस किया जा सकता है), जबकि conditional तब संतुष्ट हो जबcountall_countsके टॉप 10 से greater हो. ध्यान दें किall_countsascending ऑर्डर में sorted है, इसलिए आप टॉप 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)