【GNN】图基本知识代码、nxworkx包的基本使用

news2024/11/19 3:43:18

一个写得很好的博客:
图或网络中的中心性:点度中心性、中介中心性、接近中心性、特征向量中心性、PageRank

特征向量中心性(eigenvector centrality)
特征向量中心性的基本思想是,一个节点的中心性是相邻节点中心性的函数。也就是说,与你连接的人越重要,你也就越重要

特征向量中心性和点度中心性不同,一个点度中心性高即拥有很多连接的节点特征向量中心性不一定高,因为所有的连接者有可能特征向量中心性很低。同理,特征向量中心性高并不意味着它的点度中心性高,它拥有很少但很重要的连接者也可以拥有高特征向量中心性。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
以上这些指标也可以直接掉包计算得到。关于networks包的使用详见博客https://www.cnblogs.com/ljhdo/p/10662902.html

举个例子定义一个这样的无向图(忽略箭头,假装这是一个无向图,因为用csdn的mermaid只能画有向图)

1
2
4
5
3

代码如下:

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

#利用pandas库的DataFrame()函数构建一个类似于字典的东西
edges = pd.DataFrame()
edges['sources'] = [1,1,1,2,2,3,3,4,4,5,5,5]
edges['targets'] = [2,4,5,3,1,2,5,1,5,1,3,4]
edges['weights'] = [1,1,1,1,1,1,1,1,1,1,1,1]

# 给图G添加有权边,sources是起始点,targets是终点,
# 两点确定一条直线,即节点之间的边,
# 第三个参数是边权
G = nx.from_pandas_edgelist(edges,source='sources',target='targets',edge_attr='weights')

#degree,返回5个节点的度视图
print('度:',nx.degree(G))
# [(1, 3), (2, 2), (4, 2), (5, 3), (3, 2)]
# 这个结果指的是1节点度为3, 2节点度为2...,以此类推

#连通分量
print('连通分量:',list(nx.connected_components(G)))
#图直径
print('图直径:',nx.diameter(G))
#度中心性
print('度中心性:',nx.degree_centrality(G))
#特征向量中心性
print('特征向量中心性:',nx.eigenvector_centrality(G))
#betweenness
print('中介中心性:',nx.betweenness_centrality(G))
#closeness
print('接近中心性:',nx.closeness_centrality((G)))
print('pagerank:',nx.pagerank((G)))
print('hits:',nx.hits((G)))

# 连通分量: [{1, 2, 3, 4, 5}]
# 图直径: 2
# 度中心性: {1: 0.75, 2: 0.5, 4: 0.5, 5: 0.75, 3: 0.5}
# 特征向量中心性: {1: 0.5298988890761731, 2: 0.35775191431708964, 4: 0.4271316779596084, 5: 0.5298988890761731, 3: 0.35775191431708964}
# 中介中心性: {1: 0.25, 2: 0.08333333333333333, 4: 0.0, 5: 0.25, 3: 0.08333333333333333}
# 接近中心性: {1: 0.8, 2: 0.6666666666666666, 4: 0.6666666666666666, 5: 0.8, 3: 0.6666666666666666}
# pagerank: {1: 0.24369622576677996, 2: 0.17225629712058638, 4: 0.16809495422526693, 5: 0.2436962257667799, 3: 0.17225629712058638}
# hits: ({1: 0.24059715195481507, 2: 0.1624345647450478, 4: 0.19393656660027417, 5: 0.2405971519548151, 3: 0.1624345647450478}, {1: 0.2405971522393837, 2: 0.1624345646565165, 4: 0.19393656620819955, 5: 0.2405971522393837, 3: 0.1624345646565165})





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

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

相关文章

Kali Linux渗透测试小实践——Metasploit与后门木马

一、环境和工具准备 1.Metasploit Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发&#…

MySQL常用基础 - 小白必看

MySQL数据库基本操作 一、DDL 概念:是一个数据定义语言 该语言部分包括: 1、对数据库的常用操作 创建数据库: 1、create database 数据库名 (直接删除) 2、create database if not exists 数据库名 (判断数据库是否存在&…

Allegro174版本新功能介绍之去掉拷贝自动偏移功能

Allegro174版本新功能介绍之去掉拷贝自动偏移功能 Allegro升级到了174版本的时候,在用拷贝功能的时候,不管怎么拷贝都会出现偏差,即便是拷贝坐标的方式,如下图 那是因为174新增了一个自动粘贴的功能,按照下面的步骤可以去除自动粘贴的功能,具体操作如下 选择Setup选择Use…

1.《计算机组成原理》之初识计算机系统

一、基本内容:基本部件的结构和组织方式。基本运算的操作原理。基本部件和单元的设计思想。二、特色:计算机组成的一般原理,不以具体机型为依托。采用自顶向下的方式、层层细化。三、补充:一、基本内容:1.这门课讲什么…

【JavaScript】JavaScript中的时间函数

JavaScript中的时间函数 关于JavaScript里面时间的函数: 方法描述Date()返回当日的日期和时间。getDate()从Date对象返回一个月中的某一天(1 ~ 31)。getDay()从Date对象返回一周中的某一天(0 ~ 6)。getMonth()从Date…

LeetCode 热题HOT100-两数之和(C语言)

LeetCode 热题HOT100-两数之和(C语言) 作为一名程序语言的学习者,刷力扣我想是必要经历的一条路,所以我也在这里分享刷题后所得知识,也可以帮助更多人理解题意。 给定一个整数数组 nums 和一个整数目标值 target&#…

Zynq PS之UART调试

在创建应用工程时,选择Hello World模板即可,以XCZU21DR开发。 硬件原理图如下: Vivado中添加&配置IP 添加Zynq UltraScale MPSoc IP。 UART设置 DDR配置 硬件设计中选择的DDR4型号是MT40A2G8VA-062E IT,DDR配置如下图&…

6、SySeVR复现——Data preprocess(下)

紧接着上篇SySeVR复现——Data preprocess(上)5、SySeVR复现——Data preprocess(上)_sliver呀的博客-CSDN博客 目录 5、训练Word2vec模型 6、token向量化且划分数据集 7、固定每一个切片的长度 5、训练Word2vec模型 对应crea…

Jetpack Compose中使用Notification

发送通知相关的主要有两个关键的类 NotificationCompat.Builder 和 NotificationManagerCompat 为方便使用,首先定义一个扩展工具类来管理通知 const val MAIN_CHANNEL_ID "MainChannel ID" const val MAIN_CHANNEL "MainChannel"fun Contex…

人工智能导论实验——前馈神经网络

实验目的通过实验了解全连接神经网络的结构,应用全连接网络处理分类和回归任务。实验任务1)初级实验:①手写体图像识别实验;②FashionMnist图像分类实验;③汽车里程数预测实验。2)中级实验:①鸢…

数据集划分和交叉验证

机器学习实践中,为防止模型出现过拟合问题,需要预先将数据划分为训练集和测试集,训练集用来建模,训练模型,测试集用来提前测试模型的实际预测能力,这期间就会出现不同的数据集划分和模型评价方法&#xff0…

Linux常用命令——alias命令

Linux命令查询工具 alias 用来设置指令的别名 补充说明 alias命令用来设置指令的别名。我们可以使用该命令可以将一些较长的命令进行简化。使用alias时,用户必须使用单引号将原来的命令引起来,防止特殊字符导致错误。 alias命令的作用只局限于该次登入…

EventLoop与宏任务和微任务

1、JavaScript 是单线程的语言 JavaScript 是一门单线程执行的编程语言。也就是说,同一时间只能做一件事情。 单线程执行任务队列的问题:如果前一个任务非常耗时,则后续的任务就不得不一直等待,从而导致程序假死的问题。 2、同步…

性能优化系列之『混合式开发:Flutter内核及优势介绍』

文章の目录一、愿景二、技术优势三、底层实现四、选型建议写在最后一、愿景 A portable toolkit for building beautiful experiences wherever you might want to paint pixels on the screen.一个拥有美好构建体验的便携式的工具包,可以让你在屏幕的任何地方绘制…

LeetCode题解 二叉树(十四):669 修改二叉搜索树;108 将有序数组转换为二叉搜索树;538 把二叉搜索树转换为累加树

二叉树 669 修改二叉搜索树 medium 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除&#xf…

数据可视化系列-06数据分析工具QuickBI

文章目录数据可视化系列-06数据分析工具QuickBI一文介绍QuickBIQuick BI 的基本对象快速入门Quick BI产品架构界面说明菜单栏我的看板工作台首页通过仪表板分析数据数据可视化系列-06数据分析工具QuickBI 参考: Quick BI 数据可视化分析平台 QuickBI官方文档 一文…

Jina AI 荣获「2022 稀土掘金引力榜」年度新锐企业 Top 10 称号!

2023 年 1 月 6 日,由稀土掘金技术社区打造的「掘金引力榜」正式公布。凭借在开源技术、产品等领域的积极布局,在社区生态影响力的突出贡献,Jina AI 荣获「掘金引力榜 2022 年度新锐企业 Top10」!「掘金引力榜」是由稀土掘金技术社…

什么是商家转账到零钱

1. 什么是商家转账到零钱商家转账到零钱为商户提供向一个或者同时向多个用户微信零钱转账的能力,商户可免费使用。1.1. 使用场景商户可以使用商家转账用于现金营销、分销返佣、行政补贴、行政奖励、保险理赔、佣金报酬、企业报销、企业补贴、服务款项、采购货款等向…

阿里微服务质量保障系列(二):研发流程知多少

持续坚持原创输出,点击蓝字关注我吧介绍研发流程主要是给大家一个体感,可以直观感受阿里测试工程师从项目的立项到最终发布经历了哪些过程、做了什么工作。需求的产生刚毕业工作那会,认为需求来源于产品,把PD宣讲的产品需求奉为圭…

12.30第一周 星期五SSH

SSH功能:1.远程连接 2.sftp 1. 使用之前首先确认系统中有无 ssh 的软件包 rpm -qa | grep ssh 主程序或执行文件位置:/usr/sbin/ss服务端配置文件: /etc/ssh/sshd_config服务器用客户端的公钥对数据---->加密---->到客户端时&#xf…