簡體   English   中英

如何可視化使用networkx創建的鄰接矩陣

[英]How to visualize adjacency matrix created using networkx

我使用 networkx 創建了一個鄰接矩陣,如下所示:

from networkx.algorithms.bipartite.matrix import biadjacency_matrix as adj
user_node_list = data['user_id'].unique()
item_node_list = data['item_id'].unique()
adj_matrix = adj(B, user_node_list, column_order=item_node_list, dtype=None, weight='rating', format='csr')

我想形象化這個 adj_matrix。 我怎樣才能做到這一點?

您可以使用 Pandas 將 adj_matrix 可視化,如下所示:

import pandas as pd
A = pd.DataFrame(adj_matrix)

大部分時間我們使用稀疏鄰接矩陣處理圖形,因此 networkx 返回SciPy 壓縮稀疏行矩陣而不是numpy.ndarraynumpy.matrix 前一種表示使用更有效的數據結構和算法來表示和處理稀疏矩陣。 特別是矩陣的__repr__表示不同於普通(密集)NumPy 矩陣的表示。 它看起來像

<11x11 sparse matrix of type '<class 'numpy.int64'>'
    with 28 stored elements in Compressed Sparse Row format>

這是有道理的,因為如果 CSR 矩陣的表示與我們在密集矩陣中看到的相同,如果矩陣非常大,一個簡單的打印語句或日志消息可能會嚴重影響性能。

將上述輸出與__repr__ (密集)NumPy 矩陣的__repr__輸出進行比較:

matrix([[0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0],
        [1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0],
        [1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1],
        [0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0],
        [0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0],
        [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
        [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0],
        [0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0],
        [0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0],
        [0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1],
        [0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0]])

這使我們能夠直觀地檢查矩陣元素(我猜這就是“可視化 adj_matrix”的意思)。

要將稀疏的 CSR 矩陣轉換為密集的 NumPy 矩陣,只需執行sparse_matrix.todense() 請注意,稀疏矩陣的這種表示將需要更多的內存,因此在處理較大的圖形時要注意這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM