Mulai sekarangMulai gratis

Temukan keanggotaan bersama: Transposisi

Seperti yang mungkin Anda perhatikan, Anda kehilangan metadata dari sebuah graf ketika beralih ke representasi matriks jarang. Sekarang Anda akan mempelajari cara mengimputasikan kembali metadata tersebut agar Anda dapat mengetahui lebih banyak tentang keanggotaan bersama.

user_matrix yang Anda hitung pada latihan sebelumnya sudah dimuat ke dalam ruang kerja Anda.

Di sini, fungsi np.where() akan sangat berguna. Begini cara kerjanya: diberikan sebuah array, misalnya, a = [1, 5, 9, 5], jika Anda ingin mendapatkan indeks saat nilainya sama dengan 5, Anda dapat menggunakan idxs = np.where(a == 5). Ini mengembalikan sebuah array di dalam tuple, (array([1, 3]),). Untuk mengakses indeks tersebut, Anda perlu mengindeks ke dalam tuple sebagai idxs[0].

Latihan ini merupakan bagian dari kursus

Analisis Jaringan Menengah di Python

Lihat Kursus

Instruksi latihan

  • Cari tahu nama orang yang menjadi anggota di jumlah klub terbanyak.
    • Untuk melakukan ini, pertama hitung diag dengan menggunakan metode .diagonal() pada user_matrix.
    • Lalu, dengan menggunakan np.where(), pilih indeks di mana diag sama dengan diag.max(). Ini mengembalikan sebuah tuple: Pastikan Anda mengakses indeks yang relevan dengan mengindeks tuple tersebut menggunakan [0].
    • Iterasikan indices dan cetak setiap indeks i dari people_nodes menggunakan fungsi print() yang disediakan.
  • Atur elemen diagonal menjadi nol dan konversikan ke "coordinate matrix format". Kode ini telah disediakan untuk Anda pada jawaban.
  • Temukan pasangan pengguna yang berbagi keanggotaan di jumlah klub terbanyak.
    • Dengan menggunakan np.where(), akses indeks saat users_coo.data sama dengan users_coo.data.max().
    • Iterasikan indices2 dan cetak setiap indeks idx dari users_coo.row dan users_coo.col milik people_node.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

import numpy as np

# Find out the names of people who were members of the most number of clubs
diag = ____ 
indices = np.where(____ == ____)[0]  
print('Number of clubs: {0}'.format(diag.max()))
print('People with the most number of memberships:')
for i in indices:
    print('- {0}'.format(____))

# Set the diagonal to zero and convert it to a coordinate matrix format
user_matrix.setdiag(0)
users_coo = user_matrix.tocoo()

# Find pairs of users who shared membership in the most number of clubs
indices2 = np.where(____ == ____)[0]
print('People with most number of shared memberships:')
for idx in indices2:
    print('- {0}, {1}'.format(people_nodes[____.____[____]], people_nodes[____.____[____]]))  
Edit dan Jalankan Kode