Temukan pengguna yang mirip
Sekarang Anda akan membangun dari yang sudah dipelajari untuk menulis fungsi bernama most_similar_users() yang menemukan pengguna yang paling mirip dengan pengguna lain yang diberikan.
Awal dari fungsi ini telah dituliskan untuk Anda. Daftar node, user_nodes, telah dibuat, yang berisi semua pengguna kecuali pengguna yang diberikan yang diteruskan ke fungsi. Tugas Anda adalah melengkapi fungsi tersebut sehingga dapat menemukan pengguna yang paling mirip dengan pengguna yang diberikan. Anda akan memanfaatkan fungsi user_similarity() dari latihan sebelumnya untuk membantu melakukan ini.
Sebuah dictionary bernama similarities telah disiapkan, di mana key adalah skor dan daftar nilainya adalah node. Jika Anda belum pernah melihat defaultdict sebelumnya, jangan khawatir — Anda akan mempelajarinya lebih lanjut di Bab 3! Fungsinya sama persis seperti dictionary Python biasa.
Latihan ini merupakan bagian dari kursus
Analisis Jaringan Menengah di Python
Instruksi latihan
- Lakukan iterasi atas
user_nodesdan hitung kemiripan antarauserdan setiapuser_node(n) menggunakan fungsiuser_similarity()Anda. Simpan hasilnya sebagaisimilarity. - Tambahkan skor dan node ke dictionary
similarities. Key-nya adalah skor —similarity— dan nilainya adalah node —n. - Hitung skor kemiripan maksimum. Untuk melakukannya, pertama akses key (yang berisi skor) dari
similaritiesmenggunakan metode.keys()lalu gunakan fungsimax(). Simpan hasilnya sebagaimax_similarity. - Kembalikan daftar pengguna yang memiliki kemiripan maksimal. Daftar pengguna ini adalah nilai dari key
max_similaritypadasimilarities. - Gunakan fungsi
most_similar_users()Anda untuk mencetak daftar pengguna yang paling mirip dengan pengguna'u4560'.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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(____)