использование центральности собственного вектора для взвешенного графа в python - PullRequest
0 голосов
/ 21 апреля 2020

Я хочу использовать централизацию сети для матрицы подобия. Это означает, что у меня есть матрица сходства, как показано ниже:

similarity matrix:[[1,0.1,1,0.4],
                   [0.13,1,0.9,0.6],
                   [0.6,0.1,1,0.11],
                   [0.5,0.23,0.43,1]]

Затем я создал взвешенный график для этой матрицы. Но я не знаю, как я могу создать центральность собственного вектора для этого графа. Для этого я использовал приведенный ниже код:

centrality = nx.eigenvector_centrality_numpy(G, weight='weight')

Но кто-нибудь может мне помочь узнать, что означает вес в этом коде? что я должен заменить вместо этого? мой график взвешен сам по себе. Как я могу показать это в этом коде?

1 Ответ

0 голосов
/ 21 апреля 2020

Таким образом, если вы создали график следующим образом:

G = nx.from_numpy_array(sim_matrix)

, тогда график будет взвешиваться по умолчанию с вашими весами. Каждое ребро имеет атрибут «вес». Вы можете проверить это, выполнив следующий код:

G.edges(data=True)

EdgeDataView([(0, 0, {'weight': 1.0}), (0, 1, {'weight': 0.13}), (0, 2, {'weight': 0.6}), (0, 3, {'weight': 0.5}), (1, 1, {'weight': 1.0}), (1, 2, {'weight': 0.1}), (1, 3, {'weight': 0.23}), (2, 2, {'weight': 1.0}), (2, 3, {'weight': 0.43}), (3, 3, {'weight': 1.0})])

Вы можете определить различные атрибуты для каждого ребра / узла см. Документацию networkx

Поэтому при использовании eigenvector_centrality_ numpy Вы можете определить атрибут для веса. В вашем случае это «вес», который также используется по умолчанию в документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...