这里的共现矩阵矩阵就是对角线上是节点权重的邻接矩阵,我为了区分他们换个名字而已。
不过用矩阵存储网络空间利用率还是太低了,所以一般我还是把节点权重和节点存在一起,边的权重和边存在一起,再加上一个邻接表,就不生成邻接矩阵了,这篇文章只是对之前代码迭代过程的一个记录。不过如果以后遇到对数据格式有特殊要求的场景,我就得再去学学稀疏矩阵了…
以下是原文:
使用从数据库中导出的论文、专利数据,做作者/专利权人合作网络,实际上也就是共现网络。
存储网络的形式有很多种:邻接矩阵(matrix)、共现矩阵、节点列表(node list)、带权重的边列表(weighted edges)、边列表(edge list)、邻接表(adjacency list),主要还是根据自己后续的数据处理需求来选择存储结构。
其中节点列表、边列表可以作为G.add_nodes_from()、G.add_edges_from()的输入,带权重的边列表可以作为networkx中G.add_weighted_edges_from()方法的输入。节点列表、合作矩阵(邻接矩阵)、边列表、邻接表还可以作为各种网络绘制软件的输入数据,比如Ucinet、Gephi。
本文记录邻接矩阵、共现矩阵生成方式,其他方式可参考:
生成节点、边列表 、 生成边-权重列表、生成邻接表
使用的数据形式示例:
其中F列是作者信息,其他列包含其他信息。
合作网络构建
生成合作网络代码主函数:
if __name__ =='__main__' :
co_list = [ ["AA | BB | CC | DD",2019],
["EE | BB | FF ",2018],
["AA | GG | FF | HH | KK",2019],
["CC | DD | FF | LL | AA",2020],
["AA | BB | FF ",2017],
["EE | BB | GG ",2018],
["DD | GG | LL | HH | EE",2019],
["AA | GG | CC | DD",2018]]
# 1.获取节点列表
author_list = get_nodes