Python数据科学 专题
您的位置:python > Python数据科学专题 > Python图数据
Python图数据
作者:--    发布时间:2019-11-20

csgraph代表压缩稀疏图,它着重于基于稀疏矩阵表示的快速图算法。

图的表示

首先,让我们了解一个稀疏图是什么以及它在图表示中的作用。

什么是稀疏图?

图形只是节点的集合,它们之间有链接。 图表几乎可以代表任何事物 - 社交网络连接,每个节点都是一个人,并且与熟人相连; 图像,其中每个节点是像素并连接到相邻像素; 指向高维分布,其中每个节点都连接到最近的邻居,并且几乎可以想象其他任何事物。

  • isomap - 流形学习算法,需要在图中找到最短路径。
  • 分层聚类 - 基于最小生成树的聚类算法。
  • 谱分解 - 基于稀疏图拉普拉斯算子的投影算法。

一个具体的例子,假设想要表示无向图,如下所示 -

该图有三个节点,其中节点0和1通过权重2的边连接,节点02通过权重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])

这与前面的图相同,只是节点02通过零权重的边连接。 在这种情况下,上面的密集表示会导致含糊不清 - 如果零是一个有意义的值,那么如何表示非边缘。 在这种情况下,必须使用蒙版或稀疏表示来消除歧义。

看看下面的例子。

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.])

网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册