Ошибка при преобразовании взвешенного списка краев в матрицу приличия - PullRequest
0 голосов
/ 08 апреля 2020

Я хочу создать матрицу из взвешенного края. Взвешенный крайний список выглядит следующим образом:
enter image description here

Ожидаемая матрица будет:
[2 3 3 3]
[4 0 0 0]

Но я получаю эту матрицу как вывод:
enter image description here

Вот код:

import networkx as nx
import pandas as pd
import numpy as np
from networkx.algorithms.bipartite import biadjacency_matrix
from networkx.readwrite.edgelist import read_weighted_edgelist

G = nx.read_weighted_edgelist("C:\\Users\\Mandeep\\Desktop\\BE project\\del.txt",create_using=nx.Graph(), nodetype = int)
mat=biadjacency_matrix(G, row_order=[1,2], column_order=[1,2,3,4], weight= 'weight', dtype=None, format='csr')
matrix_of_ratings=pd.DataFrame(mat.todense())
print(matrix_of_ratings)

1 Ответ

1 голос
/ 08 апреля 2020

Похоже, вам нужен ориентированный граф . Итак, вам нужно установить create_using=nx.DiGraph(). Используя ваш входной фрейм данных:

df = pd.DataFrame({'a':[1,1,1,1,2], 'b':[1,2,3,4,1], 'weight':[2,3,3,3,4]})

G = nx.from_pandas_edgelist(df, source='a', target='b', edge_attr='weight', 
                            create_using=nx.DiGraph())

biadjacency_matrix(G, row_order=[1,2], 
                       column_order=[1,2,3,4], 
                       weight= 'weight').todense()

matrix([[2, 3, 3, 3],
        [4, 0, 0, 0]], dtype=int64)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...