- Python 資料科學教程
- Python 資料科學 - 首頁
- Python 資料科學 - 入門
- Python 資料科學 - 環境設定
- Python 資料科學 - Pandas
- Python 資料科學 - Numpy
- Python 資料科學 - SciPy
- Python 資料科學 - Matplotlib
- Python 資料處理
- Python 資料操作
- Python 資料清洗
- Python 處理 CSV 資料
- Python 處理 JSON 資料
- Python 處理 XLS 資料
- Python 關係資料庫
- Python NoSQL 資料庫
- Python 日期和時間
- Python 資料整理
- Python 資料聚合
- Python 讀取 HTML 頁面
- Python 處理非結構化資料
- Python 詞語標記化
- Python 詞幹提取和詞形還原
- Python 資料視覺化
- Python 圖表屬性
- Python 圖表樣式
- Python 箱線圖
- Python 熱力圖
- Python 散點圖
- Python 氣泡圖
- Python 3D 圖表
- Python 時間序列
- Python 地理資料
- Python 圖資料
Python - 圖資料
CSGraph 代表 **壓縮稀疏圖**,它專注於基於稀疏矩陣表示的快速圖演算法。
圖表示
首先,讓我們瞭解什麼是稀疏圖以及它如何幫助圖表示。
什麼是稀疏圖?
圖只是一組節點,節點之間有連結。圖幾乎可以表示任何東西——社交網路連線,其中每個節點都是一個人並與其熟人連線;影像,其中每個節點都是一個畫素並與其相鄰畫素連線;高維分佈中的點,其中每個節點都與其最近鄰連線,以及你能想象到的幾乎任何其他東西。
表示圖資料的一種非常有效的方法是使用稀疏矩陣:我們稱之為 G。矩陣 G 的大小為 N x N,而 G[i, j] 給出節點“i”和節點“j”之間連線的值。稀疏圖主要包含零——也就是說,大多數節點只有很少的連線。事實證明,在大多數感興趣的情況下,此屬性都是正確的。
稀疏圖子模組的建立受到 scikit-learn 中使用的幾種演算法的啟發,這些演算法包括以下內容:
**Isomap** - 一種流形學習演算法,需要在圖中找到最短路徑。
**層次聚類** - 一種基於最小生成樹的聚類演算法。
**譜分解** - 一種基於稀疏圖拉普拉斯運算元的投影演算法。
作為一個具體的例子,假設我們想表示以下無向圖:
此圖具有三個節點,其中節點 0 和 1 透過權重為 2 的邊連線,節點 0 和 2 透過權重為 1 的邊連線。我們可以構建密集、掩碼和稀疏表示,如下例所示,請記住無向圖由對稱矩陣表示。
G_dense = np.array([ [0, 2, 1],
[2, 0, 0],
[1, 0, 0] ])
G_masked = np.ma.masked_values(G_dense, 0)
from scipy.sparse import csr_matrix
G_sparse = csr_matrix(G_dense)
print G_sparse.data
上述程式將生成以下輸出。
array([2, 1, 2, 1])
這與前面的圖相同,只是節點 0 和 2 透過權重為零的邊連線。在這種情況下,上面的密集表示會導致歧義——如果零是有意義的值,如何表示非邊。在這種情況下,必須使用掩碼或稀疏表示來消除歧義。
讓我們考慮以下示例。
from scipy.sparse.csgraph import csgraph_from_dense G2_data = np.array ([ [np.inf, 2, 0 ], [2, np.inf, np.inf], [0, np.inf, np.inf] ]) G2_sparse = csgraph_from_dense(G2_data, null_value=np.inf) print G2_sparse.data
上述程式將生成以下輸出。
array([ 2., 0., 2., 0.])
廣告