Encontrar participação compartilhada: Transposição
Como você deve ter observado, você perde os metadados de um grafo ao convertê-lo para a representação de matriz esparsa. Agora, você vai aprender a imputar esses metadados de volta para poder descobrir mais sobre a participação compartilhada.
A user_matrix que você calculou no exercício anterior já foi carregada no seu workspace.
Aqui, a função np.where() será útil. Ela funciona assim: dado um array, por exemplo, a = [1, 5, 9, 5], se você quiser obter os índices onde o valor é igual a 5, pode usar idxs = np.where(a == 5). Isso retorna um array dentro de uma tupla, (array([1, 3]),). Para acessar esses índices, você deve indexar a tupla como idxs[0].
Este exercício faz parte do curso
Análise de Redes Intermediária em Python
Instruções do exercício
- Descubra os nomes das pessoas que foram membros do maior número de clubes.
- Para isso, primeiro calcule
diagusando o método.diagonal()emuser_matrix. - Em seguida, usando
np.where(), selecione os índices em quediagé igual adiag.max(). Isso retorna uma tupla: certifique-se de acessar os índices relevantes indexando a tupla com[0]. - Faça um loop por
indicese imprima cada índiceidepeople_nodesusando a funçãoprint()fornecida.
- Para isso, primeiro calcule
- Defina a diagonal como zero e converta para o "coordinate matrix format". Esse código foi fornecido para você na resposta.
- Encontre pares de usuários que compartilharam participação no maior número de clubes.
- Usando
np.where(), acesse os índices em queusers_coo.dataé igual ausers_coo.data.max(). - Faça um loop por
indices2e imprima cada índiceidxdeusers_coo.roweusers_coo.coldepeople_node.
- Usando
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
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[____.____[____]]))