मिलते-जुलते यूज़र्स खोजें
अब आप अभी तक सीखी बातों पर आगे बढ़ते हुए most_similar_users() नाम का एक फंक्शन लिखेंगे जो दिए गए किसी यूज़र से सबसे मिलते-जुलते यूज़र्स को ढूँढेगा.
इस फंक्शन की शुरुआती संरचना आपके लिए लिख दी गई है. एक नोड्स की लिस्ट user_nodes बनाई गई है, जिसमें उस दिए गए यूज़र के अलावा बाकी सभी यूज़र्स शामिल हैं जिसे फंक्शन में पास किया गया है. आपका कार्य है फंक्शन को पूरा करना ताकि यह दिए गए यूज़र से सबसे मिलते-जुलते यूज़र्स ढूँढ सके. इसमें मदद के लिए आप पिछले अभ्यास वाले अपने user_similarity() फंक्शन का उपयोग करेंगे.
similarities नाम की एक डिक्शनरी सेटअप की गई है, जिसमें keys स्कोर हैं और values नोड्स की लिस्ट. यदि आपने पहले कभी defaultdict नहीं देखा है, तो चिंता न करें — आप इसके बारे में अध्याय 3 में और सीखेंगे! यह एक सामान्य Python डिक्शनरी की तरह ही काम करता है.
यह अभ्यास पाठ्यक्रम का हिस्सा है
इंटरमीडिएट Network Analysis in Python
अभ्यास निर्देश
user_nodesपर iterate करें और अपनेuser_similarity()फंक्शन का उपयोग करकेuserऔर हरuser_node(n) के बीच similarity निकालें. परिणाम कोsimilarityके रूप में स्टोर करें.- स्कोर और नोड को
similaritiesडिक्शनरी में जोड़ें. key होगी स्कोर —similarity— और value होगी नोड —n. - अधिकतम similarity स्कोर निकालें. इसके लिए पहले
.keys()मेथड सेsimilaritiesकी keys (जिनमें स्कोर हैं) लें, फिरmax()फंक्शन का उपयोग करें. परिणाम कोmax_similarityके रूप में स्टोर करें. - उन यूज़र्स की लिस्ट रिटर्न करें जिनकी similarity अधिकतम है. यह लिस्ट
similaritiesमें keymax_similarityकी value है. - अपने
most_similar_users()फंक्शन का उपयोग करके यूज़र'u4560'से सबसे मिलते-जुलते यूज़र्स की लिस्ट प्रिंट करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
from collections import defaultdict
def most_similar_users(G, user, user_nodes, proj_nodes):
# Data checks
assert G.nodes[user]['bipartite'] == 'users'
# Get other nodes from user partition
user_nodes = set(user_nodes)
user_nodes.remove(user)
# Create the dictionary: similarities
similarities = defaultdict(list)
for n in ____:
similarity = ____(____, ____, ____, ____)
____[____].____
# Compute maximum similarity score: max_similarity
max_similarity = ____
# Return list of users that share maximal similarity
return ____[____]
user_nodes = get_nodes_from_partition(G, 'users')
project_nodes = get_nodes_from_partition(G, 'projects')
print(____)