背景介绍:
图(Graphs)是一种对物体(objects)和他们之间的关系(relationships)建模的数据结构,物体以结点(nodes)表示,关系以边(edges)表示。图是复杂系统中常用的信息载体,可以表示现实中许多复杂关系,如社交网络、犯罪网络、交通网络等。
环境配置:
实践环境建议以Python3.7+,且需要安装如下库:
- numpy
- pandas
- networkx
- igraph
- gensim
学习打卡
任务名称 | 难度 |
---|---|
任务1:图属性与图构造 | 低、1 |
任务2:图查询与遍历 | 低、2 |
任务3:节点中心性与应用 | 中、2 |
任务4:图节点嵌入算法(DeepWalk/node2vec) | 高、3 |
任务5:图节点嵌入算法:LINE/SDNE | 高、3 |
任务6:图节点嵌入算法:GraphGAN | 高、3 |
任务1:图属性与图构造
步骤1:导入networkx
import pandas as pd
import networkx as nx # 导入networkx
步骤2:加载Wiki数据集,包含来自 19 个类别的 2405 个文档和它们之间的 17981个边。
# 加载Wiki数据集
# 两列,分别为节点id,节点类别
group = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/group.txt.zip', sep='\t', header=None)
# 两列,分别为出发节点id,目的节点id
graph = pd.read_csv('http://mirror.coggle.club/dataset/graph-wiki/graph.txt.zip', sep='\t', header=None)
print(group)
print(graph)
步骤3:使用networkx构造上述有向图
# 构造图
G = nx.DiGraph()
G.add_nodes_from(group[0].values)
G.add_edges_from(graph.values)
任务2:图查询与遍历
步骤1:使用networkx对Wiki数据集进行如下统计
节点个数、边个数
print("Number of Nodes:", G.number_of_nodes())
print("Number of Edges:", G.number_of_edges())
节点平均入度、出读
存在指向自身节点的个数
步骤2:对节点1397的深度5内进行深度和广度遍历
步骤3:判断节点1573与节点1397之间是否存在联通性