日常小工具,本人代码水平一般,只是存在这里当笔记。若正好有小伙伴用到,希望能帮助到你,如若有错误之处,欢迎批评指正。
输入:图以及图中一个节点
输出:该节点在图中的一阶,二阶,三阶邻居
import networkx as nx
def find123Nei(G, node):
nodes = list(nx.nodes(G))
nei1_li = []
nei2_li = []
nei3_li = []
for FNs in list(nx.neighbors(G, node)):
nei1_li .append(FNs)
for n1 in nei1_li:
for SNs in list(nx.neighbors(G, n1)):
nei2_li.append(SNs)
nei2_li = list(set(nei2_li) - set(nei1_li))
if node in nei2_li:
nei2_li.remove(node)
for n2 in nei2_li:
for TNs in nx.neighbors(G, n2):
nei3_li.append(TNs)
nei3_li = list(set(nei3_li) - set(nei2_li) - set(nei1_li))
if node in nei3_li:
nei3_li.remove(node)
return nei1_li, nei2_li, nei3_li
举个栗子,输入下面图,并寻找1号节点的一二三阶邻居:
h = nx.Graph()
h.add_nodes_from(list(range(1, 8)))
h.add_edges_from([(1, 2), (1, 3), (1, 5), (1, 4), (2, 8), (2, 6), (3, 6), (4, 7)])
neighbors = find123Nei(G, 1)
print(neighbors[0])
print(neighbors[1])
print(neighbors[2])
输出结果如下: [2, 3, 5, 4], [6, 7, 8, 9, 10], [11, 12, 13]
日常小工具,本人代码水平一般,只是存在这里当笔记。若正好有小伙伴用到,希望能帮助到你,如若有错误之处,欢迎批评指正。输入:图以及图中一个节点输出:该节点在图中的一阶,二阶,三阶邻居import networkx as nxdef find123Nei(G, node): nodes = list(nx.nodes(G)) nei1_li = [] nei2_li = [] nei3_li = [] for FNs in list(nx.neighbors(G
计算两个节点的 "Total Neighbors" 也就是两个节点共同的邻居节点数,可以使用 Python 中的集合运算。
首先需要将两个节点的邻居节点存储在两个集合中。例如:
node1_neighbors = {1, 2, 3, 4}
node2_neighbors = {3, 4, 5, 6}
1.1图论基本概念
一个图G = (V, E)由一些点及点之间的连线(称为边)构成,V、E分别计G的点集合和边集合。在图的概念中,点的空间位置,边的区直长短都无关紧要,重要的是其中有几个点以及那些点之间有变相连。
图1:图示例
Graph分类
Graph:指无向图(undirected Graph),即忽略了两节点间边的方向。
DiGraph:指有向图(directed Graph),即考虑了边的有向性。
MultiGraph:指多重无向图,即两个结点之间的边数多于一条,又允
在大规模图上学习节点embedding,在很多任务中非常有效,如学习节点拓扑结构的 DeepWalk 以及同时学习邻居特征和拓扑结构的semi-GCN。
但是现在大多数方法都是直推式学习, 不能直接泛化到未知节点。这些方法是在一个固定的图上直接学习每个节点embedding,但是大多情况图是会演化的,当网络结构改变以及新节点的出现,直推式学习需要重新训练(复杂度高且可能会导致embedding会偏移),很难落地在需要快速生成未知节点embedding的机器学习系统上。
本文提出归纳学习—Gr.
这里写自定义目录标题图神经网络简介应用场景典型模型GCNPinSAGEGraphSAGEGAT图神经网络与知识图谱部分参考链接:
最近在做一些图神经网络相关的课题,做了些调研,简单记录一下想法和收获。
图神经网络简介
图(Graph)这种数据结构在很多场景下都有大量应用和表现。各节点通过边建立关系,图神经网络是借助神经网络的知识,将图中的每个节点embedding为向量,每个节点向量化后,就可以做很多下游任务了,比如节点的分类、节点间链路预测、节点相关性预测等等。
有了节点的embedding表示
有向图卷积网络摘要介绍定义DGCN一阶邻近与二阶邻近有向图卷积融合运算模型
由于GCN的局限性,本文提出了DGCN(有向 图 卷积 网络),通过一阶和二阶邻居关系的应用,并扩展卷积计算。
GCN主要存在两个缺点:
仅适用于无向图。对于有向图只能采用对称的领接矩阵,得到半正定的拉普拉斯矩阵,但同时也失去了有向图的唯一结构。例如,对于一个表明文章引用关系的有向图,将其转换为无向图是不太合理的。可以采用RNN和GCN的组合来学习时间图,但其添加了额外组件。
仅考虑1跳结点特征。在大多数的基于光谱的G
由于最近需要学一学图神经网络,最终目标是需要用到R-GAT,但是总是不能一蹴而就的,拷下代码能跑应该不难,但是如果能够理解代码,修改代码,可能还是需要懂对应的模型理论知识。那还是先从图的表示开始吧…
下面的图是b站视频里截的,因为确实看图一目了然了
https://www.bilibili.com/video/BV1U44y1K7yP?p=2&vd_source=f57738ab6bbbbd5fe07aae2e1fa1280f邻接矩阵是一种基础的图表示方式。假设一个图的节点数量为N,则生成一个N*N的矩阵。