Преобразовать матрицу связи в матрицу смежности - PullRequest
0 голосов
/ 18 июня 2019

дано: матрица связи (например, одиночная ссылка) из требуемой иерархической кластеризации: матрица смежности из этой матрицы связи

Как в python (например, networkx или любой другой библиотеке или подходе) достигается эта цель?Поскольку я не думаю, что я первый, кто наткнулся на эту проблему, я надеюсь, что для этого есть какая-то функция рецепта / библиотеки

1 Ответ

0 голосов
/ 18 июня 2019

Networkx имеет nx.to_pandas_adjacency функцию, которая возвращает кадр данных pandas с матрицей смежности для данного графа.Вы должны создать график networkx из списка ссылок и затем преобразовать его в матрицу смежности:

import networkx as nx

links = [
    (1, 2),
    (2, 3),
    (1, 4),
    (1, 3),
    (4, 5),
    (1, 5)
]

G = nx.Graph()
G.add_edges_from(links)
nx.to_pandas_adjacency(G)
    1       2       3       4       5
1   0.0     1.0     1.0     1.0     1.0
2   1.0     0.0     1.0     0.0     0.0
3   1.0     1.0     0.0     0.0     0.0
4   1.0     0.0     0.0     0.0     1.0
5   1.0     0.0     0.0     1.0     0.0
...