Paylaşılan üyeliği bul: Transpoz
Fark etmiş olabileceğin gibi, seyrek matris temsilini kullandığında bir grafikteki üst veriyi (metadata) kaybedersin. Şimdi, paylaşılan üyelik hakkında daha çok şey öğrenebilmek için bu üst veriyi nasıl geri kazandıracağını öğreneceksin.
Önceki egzersizde hesapladığın user_matrix çalışma alanına önceden yüklendi.
Burada np.where() işine yarayacak. Şöyle çalışır: Bir dizi düşün, örneğin a = [1, 5, 9, 5]. Değeri 5 olan indeksleri almak istersen idxs = np.where(a == 5) kullanabilirsin. Bu, bir demet içinde bir dizi döndürür: (array([1, 3]),). Bu indekslere erişmek için demetin içine [0] ile indekslemen gerekir: idxs[0].
Bu egzersiz
Python ile Orta Düzey Ağ (Network) Analizi
kursunun bir parçasıdırEgzersiz talimatları
- En çok sayıda kulübe üye olan kişilerin adlarını bul.
- Bunu yapmak için önce
user_matrixüzerinde.diagonal()yöntemini kullanarakdiag'ı hesapla. - Ardından,
np.where()kullanarakdiag'ındiag.max()'a eşit olduğu indeksleri seç. Bu bir demet döndürür: İlgili indekslere demeti[0]ile indeksleyerek eriştiğinden emin ol. indicesüzerinde yinele ve verilenprint()işlevini kullanarakpeople_nodes'un heriindeksini yazdır.
- Bunu yapmak için önce
- Köşegeni sıfıra ayarla ve "koordine matris biçimine" dönüştür. Bu kod yanıtta senin için verildi.
- En çok sayıda kulüpte üyeliği paylaşan kullanıcı çiftlerini bul.
np.where()kullanarakusers_coo.data'nınusers_coo.data.max()'a eşit olduğu indekslere eriş.indices2üzerinde yinele veusers_coo.rowileusers_coo.coliçindeki heridxiçinpeople_nodeindeksini yazdır.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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[____.____[____]]))