Mulai sekarangMulai gratis

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

Lihat Kursus

Instruksi latihan

  • Lakukan iterasi atas user_nodes dan hitung kemiripan antara user dan setiap user_node (n) menggunakan fungsi user_similarity() Anda. Simpan hasilnya sebagai similarity.
  • 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 similarities menggunakan metode .keys() lalu gunakan fungsi max(). Simpan hasilnya sebagai max_similarity.
  • Kembalikan daftar pengguna yang memiliki kemiripan maksimal. Daftar pengguna ini adalah nilai dari key max_similarity pada similarities.
  • 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(____)
Edit dan Jalankan Kode