图神经网络基础 Graph 图以及python实现

news2024/11/27 18:42:54

摘要:
本文将介绍图的基本知识、无向图、有向图、邻接矩阵
python实现:度、连通分量、强连通图、弱连通图、图直径、度中心性、特征向量中心性、中介中心性、连接中心性等基本概念。

python计算代码:

先安装依赖:

pip install numpy pandas networks

具体代码如下所示:

import numpy as np
import pandas as pd
import networkx as nx

edges = pd.DataFrame()
edges['sources'] = [0,1,2,3,4,4,6,7,7,9,1,4,4,4,6,7,5,8,9,8]
edges['targets'] = [1,4,4,4,6,7,5,8,9,8,0,1,2,3,4,4,6,7,7,9]
#edges['weights'] = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]

G = nx.from_pandas_edgelist(edges, source='sources',target='targets')
# degree
print(nx.degree(G))
# 连通分量
print(list(nx.connected_components(G)))
# 图直径
print(nx.diameter(G))
# 度中心性
print('度中心性',nx.degree_centrality(G))
# 特征向量中心性
print('特征向量中心性',nx.eigenvector_centrality(G))
# betweenness
print('betweenness',nx.betweenness_centrality((G)))
# closeness
print('closeness',nx.closeness_centrality(G))
# pagerank
print('pagerank',nx.pagerank(G))
# HITS
print('HITS',nx.hits(G,tol=0.00001))

图:Graph=(V,E)
v:顶点(数据元素)的有穷非空集合;
E:边的有穷集合。
在这里插入图片描述

(1)无向图:

每条边都是无方向的,若E是无向边(简称边)的有限集合时,则图G为无向图。
边是顶点的无序对,记为(v,w)或(w,v)。
可以说w和v互为邻接点。边(v,w)依附于w和v,或称边(v,w)和v,w相关联。
在这里插入图片描述
上图可以表示为:
G1={V1,E1},
其中V1={a,b,c,d},
E1={(a,b),(a,c),(a,d),(b,d),(c,d)},

(2)有向图:

若E是有向边(也称弧)的有限集合时,则图G为有向图。

有向边也叫弧,弧是顶点的有序对,记为<v,w>,其中v,w是顶点,v称为弧尾,w称为弧头,<y,w>称为从v到w的弧,也称v邻接到w.

在这里插入图片描述
有向图G2,它的数据结构可以描述为:

G2=(V2,E2),
其中V2={1,2,3},
E2={<1,2>,<1,3>,<2,3,❤️,1>}

(3)子图

设有两个图G=(V,E)和G’=(V’,E’),若V’是V的子集,且E’是E的子集,则称G’是G的子图。
若有满足v(G’)=V(G)的子图G’,则称其为G的生成子图。图中G3为G1的子图。

邻接矩阵

,我们常用邻接矩阵来表现两个节点之间的指向关系(有点类似于向量),这个指向关系也叫做“边”。举个例子就一幕了然了:
在这里插入图片描述

如下无向图所示:
在这里插入图片描述
他的邻接矩阵可以表示为:
在这里插入图片描述

图 G=(V, E) 由下列要素构成:

一组节点(也称为 verticle)V=1,…,n
一组边 E⊆V×V
边 (i,j) ∈ E 连接了节点 i 和 j
i 和 j 被称为相邻节点(neighbor)
节点的度(degree)是指相邻节点的数量
在这里插入图片描述
如果一个图的所有节点都有 n-1 个相邻节点,则该图是完备的(complete)。也就是说所有节点都具备所有可能的连接方式。从 i 到 j 的路径(path)是指从 i 到达 j 的边的序列。该路径的长度(length)等于所经过的边的数量。
图的直径(diameter)是指连接任意两个节点的所有最短路径中最长路径的长度。举个例子,在这个案例中,我们可以计算出一些连接任意两个节点的最短路径。该图的直径为 3,因为没有任意两个节点之间的最短路径的长度超过 3。

如果一个图的边是有顺序的配对,则该图是有向的(directed)。i 的入度(in-degree)是指向 i 的边的数量,出度(out-degree)是远离 i 的边的数量。
在这里插入图片描述

度中心性 Degree Centrality

在网络中,一个节点的度越大,就意味着这个节点的度中心性就越高,就说明在网络中这个节点越重要。
在这里插入图片描述

其中,n表示节点的数量,N-degree 表示该节点的度。

特征向量中心性 Eigenvector Centrality

一个节点的重要性取决于其邻居节点的数量(即该节点的度),也取决与其邻居节点的重要性。与之相连的邻居节点越重要,则该节点就越重要。
计算过程为:由邻接矩阵求邻接矩阵的特征值,由此求特征向量,选择最大特征值对应的特征向量作为EC

特征向量中心性的计算公式如下:
在这里插入图片描述

中介中心性 Between Centrality

以经过某个节点的最短路径数目来刻画节点的重要性指标。
其中dst表示s到t的最短路径数量,dst()表示从s到t的最短路径中经过节点的数量。若需要进行标准化,在如上公式基础上,除以(n-1)(n-2),n为节点数量。在这里插入图片描述

紧密中心性 Closeness Centrality (连接中心性)

反映在网络中某一节点与其他节点之间的接近程度。如果一个节点离其他的节点都很近,那么传递信息的时候就不需要依赖其他的节点,说明这个节点很重要。
在这里插入图片描述在这里插入图片描述
这个点的紧密中心性是基于该节点到网络中其余所有节点的最短路径之和,如果进行归一化处理,就是求这个节点到其他所有节点的平均最短距离。一个节点的平均最短距离越小,那么这个进行的紧密中心性就越大。如果节点i和节点j之间没有路径可达,则定义dij为无穷大,其倒数为0.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java-模块化

模块的基本使用 模块使用步骤 创建模块&#xff08;创建模块&#xff0c;创建包&#xff0c;创建类&#xff0c;定义方法&#xff09; -创建两个模块myOne,myTwo在模块的src目录下创建module-info.java的描述性文件&#xff0c;该文件专门定义模块名&#xff0c;访问权限&#…

一文读懂函数编程及其工作原理

微软MVP实验室研究员 马洪喜-微软 MVP 19年研发经验 云计算咨询顾问专家 容器云及基础架构云技术专家 DevOps 及微服务咨询专家 什么是函数编程 我先用通俗的大白话给大家解释一下函数(Functions, Function as a Service, FaaS)的几个要点&#xff0c;这样看后面示例时才不…

跑步带的耳机选择啥样的好、推荐几款跑步专用耳机

我是个比较喜欢运动的人&#xff0c;每天下班都会在小区湖边跑步健身&#xff0c;每次跑步要是少了耳机&#xff0c;那可没什么兴趣跑了&#xff0c;喜欢跑步的时候对着音乐的节奏跑&#xff0c;所以我的耳机基本上是用的比较紧实不易掉落的无线耳机。接下来我来为大家介绍下我…

ChatGPT 可收费的那种产品该如何实现?一点尝试

导读|时隔两个月&#xff0c;勇哥终于把chatGPT生成SQL的功能发布上线了&#xff0c;支持统计分析查询、创建表、数据生成等多种全面的SQL DDL生成能力&#xff0c;本文就和大家聊聊相关功能的使用和背后实现逻辑&#xff0c;并希望相关功能能帮助大家在工作中提升一定的工作效…

手把手搭建springboot项目05-springboot整合Redis及其业务场景

目录前言一、食用步骤1.1 安装步骤1.1.1 客户端安装1.2 添加依赖1.3 修改配置1.4 项目使用1.5 序列化二、应用场景2.1 缓存2.2.分布式锁2.2.1 redis实现2.2.2 使用Redisson 作为分布式锁2.3 全局ID、计数器、限流2.4 购物车2.5 消息队列 (List)2.6 点赞、签到、打卡 (Set)2.7 筛…

如何弄小程序?公司企业可以这样做小程序

公司企业现在对于小程序的需求已经是刚需了&#xff0c;即使已经有官网的情况下&#xff0c;也会考虑再弄一个小程序来做小程序官网。那么公司企业如何弄小程序呢&#xff1f;下面跟大家说说方法。 流程一、找小程序服务商 由于一些公司企业并不像现在的互联网公司企业那样有…

考试系统 (springboot+vue前后端分离)

系统图片 下载链接 地址&#xff1a; http://www.gxcode.top/code 介绍 一款多角色在线培训考试系统&#xff0c;系统集成了用户管理、角色管理、部门管理、题库管理、试题管理、试题导入导出、考试管理、在线考试、错题训练等功能&#xff0c;考试流程完善。 技术栈 Spr…

Java8中@Contended和伪共享

Java8引入了Contented这个新的注解来减少伪共享(False Sharing)的发生。 sun.misc.Contended注解是被设计用来解决伪共享问题的 文章目录1.缓存行2.伪共享(False Sharing)2.1 CPU的缓存机制3.填充(Padding)4.Contended方式4.总结1.缓存行 CPU读取内存数据时并非一次只读一个字…

ATTCK实战系列——红队实战(二)

网络配置 网卡&#xff1a; WEB&#xff1a; PC&#xff1a; DC&#xff1a; IPWEB10.10.10.80&#xff08;内&#xff09;/192.168.111.80&#xff08;外&#xff09;PC10.10.10.201&#xff08;内&#xff09;/192.168.111.201&#xff08;外&#xff09;DC10.10.10.10物理机…

评论字数统计案例、评论回车发布、 Tab 栏切换、验证码倒计时、显示与隐藏密码——DOM事件

目录 一、DOM事件 1. 评论字数统计案例 2. 评论回车发布 3. Tab 栏切换 4. 验证码倒计时 5. 显示与隐藏密码 一、DOM事件 1. 评论字数统计案例 该案例中的显示输入字数及最大字数模块.wrapper .total 刚开始是看不见的&#xff0c;使用的是不透明度&#xff08;opacit…

量化交易-单因子分析-alphalens

1. 数据准备 1.1 计算因子IC重要函数 def get_clean_factor_and_forward_returns(factor,prices,groupbyNone,binning_by_groupFalse,quantiles5,binsNone,periods(1, 5, 10),filter_zscore20,groupby_labelsNone,max_loss0.35,zero_awareFalse,cumulative_returnsTrue)facto…

Nginx优化与防盗链

Nginx优化与防盗链 &#x1f4d2;博客主页&#xff1a; 微笑的段嘉许博客主页 &#x1f4bb;微信公众号&#xff1a;微笑的段嘉许 &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐留言&#x1f4dd; &#x1f4cc;本文由微笑的段嘉许原创&#xff01; &#x1f4c…

图文并茂详解NAT协议(含实例分析)

什么是 NAT 协议 我们的计算机要想访问互联网上的信息&#xff0c;就需要一个地址&#xff0c;而且这个地址是大家&#xff08;其他主机&#xff09;所认可的&#xff0c;是公共的&#xff0c;这个地址也叫做公有 IP 地址。 与之相对的&#xff0c;除了公有 IP 地址外&#x…

Python自动化测试框架【Allure-pytest功能特性介绍】

Python自动化测试框架【Allure-pytest功能特性介绍】 目录&#xff1a;导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures and Finalizers allure.attach 总结 写在最后 前言 Allure框架是一个灵活的轻量级多语言测试报告工具&am…

【PMP考试最新解读】第七版《PMBOK》应该如何备考?(含最新资料)

PMP新版大纲加入了ACP敏捷管理的内容&#xff0c;而且还不少&#xff0c;敏捷混合题型占到了 50%&#xff0c;前不久官方也发了通知8月启用第七版《PMBOK》&#xff0c;大家都觉得考试难度提升了&#xff0c;我从新考纲考完下来&#xff0c;最开始也被折磨过一段时间&#xff0…

玩游戏用哪个牌子的蓝牙耳机最好?打游戏无延迟的蓝牙耳机

作为一名苦逼的打工人&#xff0c;从早忙到黑&#xff0c;每天最期待的事莫过于下班回到家或是周末闲暇时光&#xff0c;来两把王者或吃鸡&#xff0c;配合无线游戏耳机&#xff0c;效果直接拉满&#xff0c;下面分享几款打游戏无延迟的蓝牙耳机。 一、南卡小音舱蓝牙耳机 蓝…

孪生工厂:机械臂加工产线 HMI 监控界面

2018 年&#xff0c;世界经济论坛(WEF)携手麦肯锡公司共同倡议并正式启动了全球“灯塔工厂网络项目”(Lighthouse Network)&#xff0c;共同遴选率先应用工业革命 4.0 技术实现企业盈利和持续发展的创新者与示范者。这就使得工厂系统需要对各流水线及生产运行成本方面进行多角度…

设计模式(十五)-面向对象概念

软件设计&#xff08;十五&#xff09;-UML建模&#xff08;下&#xff09;https://blog.csdn.net/ke1ying/article/details/129152487 一、设计原则 1、单一职责&#xff1a;设计目的单一的类。 2、开放-封闭原则&#xff1a;对扩展开放&#xff0c;对修改关闭。 3、里氏替…

微服务架构中的缓存设计浅析

在微服务架构中&#xff0c;缓存中间件越来越成为不可或缺的组件&#xff0c;下面聊聊微服务环境下的缓存设计。 1、简介 缓存在应用软件架构中是提高性能最直接的方式&#xff0c;如下 假设应用程序将数据存储在Mysql中&#xff0c;众所周知Mysql会将数据存储在硬盘上以防止…

git 拉取远程分支到本地

目录&#xff1a;***&#xff01;本小作者&#xff0c;是将终端和Git的可视化插件结合使用&#xff0c;刚接触的可以自习看一下&#xff0c;内容简单&#xff0c;避免弯路&#xff01;***一&#xff0c;简单了解远程分支1&#xff0c;连接远程&#xff1a;2&#xff0c;提交&am…