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
Instruksi latihan
- Cari tahu nama orang yang menjadi anggota di jumlah klub terbanyak.
- Untuk melakukan ini, pertama hitung
diagdengan menggunakan metode.diagonal()padauser_matrix. - Lalu, dengan menggunakan
np.where(), pilih indeks di manadiagsama dengandiag.max(). Ini mengembalikan sebuah tuple: Pastikan Anda mengakses indeks yang relevan dengan mengindeks tuple tersebut menggunakan[0]. - Iterasikan
indicesdan cetak setiap indeksidaripeople_nodesmenggunakan fungsiprint()yang disediakan.
- Untuk melakukan ini, pertama hitung
- 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 saatusers_coo.datasama denganusers_coo.data.max(). - Iterasikan
indices2dan cetak setiap indeksidxdariusers_coo.rowdanusers_coo.colmilikpeople_node.
- Dengan menggunakan
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[____.____[____]]))