Overeenkomstmaat voor gebruikers
Nu je een functie hebt geschreven om de set knooppunten te berekenen die twee knooppunten delen, ga je een functie schrijven om een overeenkomstmaat tussen twee gebruikers te bepalen: het aantal projecten dat twee gebruikers delen, gedeeld door het totale aantal knooppunten in de andere partitie. Dit kun je vervolgens gebruiken om gebruikers te vinden die op elkaar lijken.
Deze oefening maakt deel uit van de cursus
Gemiddelde netwerkanalyse in Python
Oefeninstructies
- Maak de functie
user_similarity()af om de overeenkomst tussenuser1enuser2te berekenen.- Gebruik
assert-statements om te controleren datuser1enuser2tot de'users'-partitie behoren. - Gebruik je functie
shared_partition_nodes()uit de vorige oefening om de set knooppunten te krijgen die de twee gebruikersuser1enuser2delen. - Retourneer de fractie van knooppunten in de
projects-partitie. Deel dus het aantalshared_nodesdoor het totale aantal knooppunten in de'projects'-partitie.
- Gebruik
- Bereken de overeenkomstscore tussen de gebruikers
'u4560'en'u1880'. Doe dit als volgt:- Haal eerst de knooppunten in de
'projects'-partitie op met je functieget_nodes_from_partition(). - Gebruik daarna je functie
user_similarity()om de score te berekenen.
- Haal eerst de knooppunten in de
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
def user_similarity(G, user1, user2, proj_nodes):
# Check that the nodes belong to the 'users' partition
____ G.nodes[____]['bipartite'] == '____'
____ G.nodes[____]['bipartite'] == '____'
# Get the set of nodes shared between the two users
shared_nodes = ____
# Return the fraction of nodes in the projects partition
return len(____) / len(____)
# Compute the similarity score between users 'u4560' and 'u1880'
project_nodes = ____
similarity_score = ____
print(similarity_score)