[英]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.ndarray
或numpy.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.