ПочатиПочніть безкоштовно

Рекомендації співредакторів, які ще не працювали разом

Нарешті, ви застосуєте концепцію відкритих трикутників, щоб рекомендувати користувачів GitHub до співпраці!

Ця вправа є частиною курсу

Вступ до аналізу мереж у Python

Переглянути курс

Інструкції до вправи

  • Складіть список користувачів GitHub, яких варто порекомендувати один одному для співпраці. Для цього:
    • У першому циклі for пройдіть усі вузли в G, включно з метаданими (вкажіть data=True).
    • У другому циклі for переберіть усі можливі комбінації для трикутників, які можна визначити за допомогою функції combinations() із size рівним 2.
    • Якщо між n1 і n2 немає ребра, співпрацю між цими двома вузлами (користувачами) слід рекомендувати, тож збільште значення (n1), (n2) у словнику recommended. Перевірити, чи є ребро між n1 і n2, можна методом .has_edge().
  • Використовуючи генератор списку, визначте топ-10 пар користувачів, яким варто рекомендувати співпрацю. Ітерабельним має бути набір пар ключ-значення словника 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)
Редагувати та запускати код