ComeçarComece de graça

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

Ver curso

Instruções do exercício

  • Descubra os nomes das pessoas que foram membros do maior número de clubes.
    • Para isso, primeiro calcule diag usando o método .diagonal() em user_matrix.
    • Em seguida, usando np.where(), selecione os índices em que diag é igual a diag.max(). Isso retorna uma tupla: certifique-se de acessar os índices relevantes indexando a tupla com [0].
    • Faça um loop por indices e imprima cada índice i de people_nodes usando a função print() fornecida.
  • 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 que users_coo.data é igual a users_coo.data.max().
    • Faça um loop por indices2 e imprima cada índice idx de users_coo.row e users_coo.col de people_node.

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[____.____[____]]))  
Editar e executar o código