python 图形_Python图形数据
CSGraph代表 壓縮稀疏圖 ,它著重于基于稀疏矩陣表示的快速圖算法。
圖表表示
首先,讓我們了解一個稀疏圖是什么以及它在圖表示中的作用。
什么是稀疏圖?
圖形只是節(jié)點的集合,它們之間有鏈接。圖表幾乎可以代表任何事物 - 社交網(wǎng)絡連接,每個節(jié)點都是一個人,并且與熟人相連;
圖像,其中每個節(jié)點是像素并連接到相鄰像素; 指向高維分布,其中每個節(jié)點都連接到最近的鄰居,并且?guī)缀蹩梢韵胂笃渌魏问挛铩?/p>
表示圖形數(shù)據(jù)的一種非常有效的方式是在一個稀疏矩陣中:讓我們稱之為G.矩陣G的大小為N×N,并且G
[i,j]給出節(jié)點'i'和節(jié)點之間的連接的值'J'。稀疏圖形包含大部分零 - 也就是說,大多數(shù)節(jié)點只有幾個連接。在大多數(shù)感興趣的情況下,該屬性都是事實。
在scikit-learn中使用的幾種算法激發(fā)了稀疏圖子模塊的創(chuàng)建,其中包括以下內(nèi)容 -
Isomap - 流形學習算法,需要在圖中找到最短路徑。
分層聚類 - 基于最小生成樹的聚類算法。
譜分解 - 基于稀疏圖拉普拉斯算子的投影算法。
作為一個具體的例子,假設我們想要表示以下無向圖 -
該圖有三個節(jié)點,其中節(jié)點0和1通過權(quán)重2的邊連接,節(jié)點0和2通過權(quán)重1的邊連接。我們可以構(gòu)造如下例所示的稠密,蒙板和稀疏表示請記住,無向圖由對稱矩陣表示。
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
上述程序?qū)⑸梢韵螺敵觥?/p>
array([2, 1, 2, 1])
這與前面的圖相同,只是節(jié)點0和2通過零權(quán)重的邊連接。在這種情況下,上面的密集表示會導致含糊不清 -
如果零是一個有意義的值,那么如何表示非邊緣。在這種情況下,必須使用蒙版或稀疏表示來消除歧義。
讓我們考慮下面的例子。
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
上述程序?qū)⑸梢韵螺敵觥?/p>
array([ 2., 0., 2., 0.])
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的python 图形_Python图形数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 恢复操作系统,如何恢复Lin
- 下一篇: python图像分割算法_OpenCV-