图神经网络


图神经网络

  • 图神经网络
  • 一、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()

图神经网络--图神经网络相关推荐

  1. 第一课.图与图神经网络

    图(Graph)和图像(Image)是两个事物,图是一种数据结构,由节点(nodes)和边(edges)组成,边代表了节点之间的关系:图GGG可用序偶描述: G=(V,E)G=(V,E)G=(V,E) ...

  2. [图神经网络] 图神经网络GNN基础入门

    最近,深度学习领域关于图神经网络(Graph Neural Networks,GNN)的研究热情日益高涨,图神经网络已经成为各大深度学习顶会的研究热点,包括社交网络,知识图,推荐系统,甚至生命科学.G ...

  3. 深入浅出图神经网络~卷积神经网络(上)

    第三章 卷积神经网络 卷积神经网络(Convolutional Neural Network, CNN/ ConvNet)是一种具有局部连接,权值共享特点的深层前馈神经网络. 卷积与池化: 卷积与池化 ...

  4. 神经网络和深度神经网络,图神经网络和神经网络

    神经网络与深度神经网络有什么区别 谷歌人工智能写作项目:神经网络伪原创 深度学习与神经网络有什么区别 找深度学习和神经网络的不同点,其实主要的就是:原来多层神经网络做的步骤是:特征映射到值好文案.特征 ...

  5. 神经网络的图谱是什么,图神经网络和神经网络

    人工神经元网络的拓扑结构主要有哪几种?谢谢大侠~~~ 神经网络的拓扑结构包括网络层数.各层神经元数量以及各神经元之间相互连接的方式.人工神经网络的模型从其拓扑结构角度去看,可分为层次型和互连型. 层次 ...

  6. 神经网络 深度神经网络,图神经网络和神经网络

    有人可以介绍一下什么是"神经网络"吗? 由于神经网络是多学科交叉的产物,各个相关的学科领域对神经网络都有各自的看法,因此,关于神经网络的定义,在科学界存在许多不同的见解. 目前使用 ...

  7. 图深度学习——卷积神经网络循环神经网络自编码器

    卷积神经网络 常用做图像分类任务.举例:识别图中的兔子 前馈神经网络做兔子图像识别 图像可以通过矩阵表示,然后将矩阵转换成向量,就可以作为前馈神经网络的输入,但是 1.参数量就非常大,需要大量数据进行 ...

  8. 面向交通预测的动态图卷积循环神经网络:基准和方法(重磅推荐)

    1.文章信息 <Dynamic Graph Convolutional Recurrent Network for Traffic Prediction: Benchmark and Solut ...

  9. 图神经网络-图与图学习笔记-1

    图神经网络-图与图学习 笔记-1 目录 一. 图是什么? 图的基本表示方法 计算图的每个节点的度 计算边的数量 可视化 二. 如何存储图? 存储为边列表 使用邻接矩阵 使用邻接列表 三. 图的类型和性 ...

最新文章

  1. [转]SQL Server 2005 分区表实践——建立分区表(partition table)
  2. SQL语言之同义词(Oracle)
  3. Python学习(七)面向对象 ——封装
  4. HDU5697 刷题计划 dp+最小乘积生成树
  5. 用枚举enum实现单例
  6. 本地方法(JNI)——数值参数与返回值
  7. r语言 林元震_科学网—R语言简介 - 林元震的博文
  8. spring.xml从外部文件引入数据库配置信息
  9. JSK-133 冒泡排序【排序】
  10. 8种常见的 代码 编译 软件 !!
  11. 小米图标大小设置方法_miui12如何设置图标大小
  12. 修改服务器域名解析,总结修改Godaddy解析服务器(DNS)三步骤
  13. ThunderSoft Video to GIF Converter(电脑视频转gif软件)官方正式版V3.3.0 | 轻松将视频转换成GIF图片
  14. Android 通知(使用NotificationCompat.Builder )
  15. 多个工作表数据汇总怎么做?
  16. C语言三位数分别输出个位十位百位
  17. 无约束优化问题(一)
  18. 20221128-20221202周总结
  19. java面试题成都_成都汇智动力-java面试——多线程面试题
  20. C++语言程序设计【1】

热门文章

  1. Skywalking log4j、log4j2、logback tid注入方法
  2. 永中科技破产清算的疑问(三)
  3. 管理系统类毕设(二)---学生管理系统说明
  4. 免费建站?手把手自己从零开始(超详细)
  5. 美国访问学者签证材料清单
  6. (环境搭建+复现)74CMS模版注入+文件包含getshell
  7. php掷骰子游戏,js实现简单掷骰子小游戏
  8. 网络通是免费的内网端口映射软件
  9. 蓝桥杯练习系统-入门训练java版
  10. 对我的学科方向软件工程开发技术方向的认识