图神经网络--图神经网络
图神经网络
图神经网络
- 图神经网络
- 一、PageRank简介
- 1.1互联网的图表示
- 1.2PageRank算法概述
- 1.3求解PageRank
- 二、代码实战
- 2.1引入库
- 2.2加载数据,并构建图
- 2.3计算每个节点PageRank重要度
- 2.4用节点尺寸可视化PageRank值
一、PageRank简介
PageRank是Google最早的搜索引擎算法。其基本逻辑是给每个网页重要度打分,高分靠前。
1.1互联网的图表示
- Web Pages表示为Nodes,Hyperlinks表示为Edges
- 把互联网当作一个整体的系统,网页之间存在关联,而不是孤立的个体
- 网页可以表示成导航连接式网页
- 无标度网络(Scale-Free)呈现幂律分布
1.2PageRank算法概述
- PageRank使用连接信息计算节点的重要度
- 理解PageRank的5个角度:迭代求解线性方程组、迭代左乘M矩阵、矩阵的特征向量、随机游走、马尔可夫链
- 迭代求解线性方程组:重要节点引出的稀少链接,权重更高
- 迭代左乘M矩阵:将重要度写成矩阵的形式,左乘重要度矩阵
- 通过不断地迭代左乘M矩阵,矩阵会稳定收敛,即得到M矩阵的主特征向量
- 随机游走:随机游走每个网页,计数求和之后再归一化成每个网页的概率,即PageRank值
- 马尔可夫链:每个节点表示一种状态,节点之间的连接表示状态的转移,根据状态转移矩阵,可以计算下一个时刻的状态转移概率
1.3求解PageRank
- 推荐方式:迭代左乘M矩阵(幂迭代)
二、代码实战
2.1引入库
import networkx as nx
import numpy as np
import random
import pandas as pd# 数据可视化
import matplotlib.pyplot as plt
import matplotlib as mpl
%matplotlib inline
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False # 用来正常显示负号
2.2加载数据,并构建图
# 西游记人物数据集
df = pd.read_csv('data/journey_to_the_west/triples.csv')
Copy to clipboardErrorCopied
edges = [edge for edge in zip(df['head'], df['tail'])]G = nx.DiGraph()
G.add_edges_from(edges)
Copy to clipboardErrorCopied
# 可视化
plt.figure(figsize=(14,14))
pos = nx.spring_layout(G, iterations=3, seed=5)
nx.draw(G, pos, with_labels=True)
plt.show()
2.3计算每个节点PageRank重要度
pagerank = nx.pagerank(G, # NetworkX graph 有向图,如果是无向图则自动转为双向有向图alpha=0.85, # Damping Factorpersonalization=None, # 是否开启Personalized PageRank,随机传送至指定节点集合的概率更高或更低max_iter=100, # 最大迭代次数tol=1e-06, # 判定收敛的误差nstart=None, # 每个节点初始PageRank值 dangling=None, # Dead End死胡同节点
)
Copy to clipboardErrorCopied
# 按PageRank值从高到低排序
pagerank_sorted_values = sorted(pagerank.items(),key=lambda x : x[1], reverse=True)
Copy to clipboardErrorCopied
pagerank_sorted_values[:5]
2.4用节点尺寸可视化PageRank值
# 节点尺寸
node_sizes = (np.array(list(pagerank.values())) * 8000).astype(int)
Copy to clipboardErrorCopied
# 节点颜色
M = G.number_of_edges()
edge_colors = range(2, M + 2)
Copy to clipboardErrorCopied
plt.figure(figsize=(15,14))# 绘制节点
nodes = nx.draw_networkx_nodes(G, pos, node_size=node_sizes, node_color=node_sizes)# 绘制连接
edges = nx.draw_networkx_edges(G,pos,node_size=node_sizes, # 节点尺寸arrowstyle="->", # 箭头样式arrowsize=20, # 箭头尺寸edge_color=edge_colors, # 连接颜色edge_cmap=plt.cm.plasma,# 连接配色方案,可选:plt.cm.Blueswidth=4 # 连接线宽
)# 设置每个连接的透明度
edge_alphas = [(5 + i) / (M + 4) for i in range(M)]
for i in range(M):edges[i].set_alpha(edge_alphas[i])# # 图例
# pc = mpl.collections.PatchCollection(edges, cmap=cmap)
# pc.set_array(edge_colors)
# plt.colorbar(pc)ax = plt.gca()
ax.set_axis_off()
plt.show()
图神经网络--图神经网络相关推荐
- 第一课.图与图神经网络
图(Graph)和图像(Image)是两个事物,图是一种数据结构,由节点(nodes)和边(edges)组成,边代表了节点之间的关系:图GGG可用序偶描述: G=(V,E)G=(V,E)G=(V,E) ...
- [图神经网络] 图神经网络GNN基础入门
最近,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点,包括社交网络,知识图,推荐系统,甚至生命科学.G ...
- 深入浅出图神经网络~卷积神经网络(上)
第三章 卷积神经网络 卷积神经网络(Convolutional Neural Network, CNN/ ConvNet)是一种具有局部连接,权值共享特点的深层前馈神经网络. 卷积与池化: 卷积与池化 ...
- 神经网络和深度神经网络,图神经网络和神经网络
神经网络与深度神经网络有什么区别 谷歌人工智能写作项目:神经网络伪原创 深度学习与神经网络有什么区别 找深度学习和神经网络的不同点,其实主要的就是:原来多层神经网络做的步骤是:特征映射到值好文案.特征 ...
- 神经网络的图谱是什么,图神经网络和神经网络
人工神经元网络的拓扑结构主要有哪几种?谢谢大侠~~~ 神经网络的拓扑结构包括网络层数.各层神经元数量以及各神经元之间相互连接的方式.人工神经网络的模型从其拓扑结构角度去看,可分为层次型和互连型. 层次 ...
- 神经网络 深度神经网络,图神经网络和神经网络
有人可以介绍一下什么是"神经网络"吗? 由于神经网络是多学科交叉的产物,各个相关的学科领域对神经网络都有各自的看法,因此,关于神经网络的定义,在科学界存在许多不同的见解. 目前使用 ...
- 图深度学习——卷积神经网络循环神经网络自编码器
卷积神经网络 常用做图像分类任务.举例:识别图中的兔子 前馈神经网络做兔子图像识别 图像可以通过矩阵表示,然后将矩阵转换成向量,就可以作为前馈神经网络的输入,但是 1.参数量就非常大,需要大量数据进行 ...
- 面向交通预测的动态图卷积循环神经网络:基准和方法(重磅推荐)
1.文章信息 <Dynamic Graph Convolutional Recurrent Network for Traffic Prediction: Benchmark and Solut ...
- 图神经网络-图与图学习笔记-1
图神经网络-图与图学习 笔记-1 目录 一. 图是什么? 图的基本表示方法 计算图的每个节点的度 计算边的数量 可视化 二. 如何存储图? 存储为边列表 使用邻接矩阵 使用邻接列表 三. 图的类型和性 ...
最新文章
- [转]SQL Server 2005 分区表实践——建立分区表(partition table)
- SQL语言之同义词(Oracle)
- Python学习(七)面向对象 ——封装
- HDU5697 刷题计划 dp+最小乘积生成树
- 用枚举enum实现单例
- 本地方法(JNI)——数值参数与返回值
- r语言 林元震_科学网—R语言简介 - 林元震的博文
- spring.xml从外部文件引入数据库配置信息
- JSK-133 冒泡排序【排序】
- 8种常见的 代码 编译 软件 !!
- 小米图标大小设置方法_miui12如何设置图标大小
- 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
- ThunderSoft Video to GIF Converter(电脑视频转gif软件)官方正式版V3.3.0 | 轻松将视频转换成GIF图片
- Android 通知(使用NotificationCompat.Builder )
- 多个工作表数据汇总怎么做?
- C语言三位数分别输出个位十位百位
- 无约束优化问题(一)
- 20221128-20221202周总结
- java面试题成都_成都汇智动力-java面试——多线程面试题
- C++语言程序设计【1】