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

news/2025/1/31 7:21:05/

一个写得很好的博客:
图或网络中的中心性:点度中心性、中介中心性、接近中心性、特征向量中心性、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.ppmy.cn/news/10384.html

相关文章

C语言蓝桥杯刷题:明码

题目链接 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 汉字的字形存在于字库中,即便在今天,16*16 点阵的字库也仍然使用广泛。 16*16 点阵的字库把每个汉字看成是 1616 个像素信息。并把这些信息记…

FPGA基础之内置逻辑门

verilog语言中,针对逻辑门,有许多内置可直接使用的逻辑门,从输入输出数量可分为多输入门和多输出门。 一、多输入门 有单个或多个输入,只有单个输出的逻辑门,包含and(与),or(或),xor(异或)&am…

MATLAB-线性方程组求解

线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。对于形如AXB的方程组来说,假设其系数矩阵A是mn的矩阵,根据其维数可以将方程组分以下3种情况。1)若mn&…

Redis新数据类型

Bitmaps Redis提供了Bitmaps这个“数据类型”可以实现对位的操作: (1) Bitmaps本身不是一种数据类型, 实际上它就是字符串(key-value) , 但是它可以对字符串的位进行操作。 (2&…

CSS3 之属性

文章目录calcborderbox-shadowbackground-image垂直渐变水平渐变左上角渐变渐变方向写法组合background-clipbackground-attachmentword-wrap:break-word:允许长单词换行到下一行;word-wrap:word-break:text-shadow3、字体white-space 设置如何处理元素内…

TypeScript教程

注:本文仅对ts中相对js不一样的地方做了笔记📒哟~想看js教程请挪步👉🏻 js基础教程 简介 Typescript是以javascript为基础构建的语言(是JavaScript的超集),可以在任意支持Javascript的平台中执…

[ AWS - SAA ] 解决方案架构师之设计弹性架构 - 选择可靠的弹性存储(如何选择 SSD vs. HDD)

本系列博文会围绕AWS Well-Architected 和六大支柱进行讲解,这些领域的内容对成为AWS亚马逊云科技上的 解决方案架构师(SAA) 非常重要。 本文主要介绍AWS亚马逊云中,关于弹性架构设计中存储设备的一些讲解。 本文的部分内容适用于…

STL中vector怎么扩容

STL vector扩容 vector容器 vector被称为向量容器,该容器擅长在尾部插入或删除元素,时间复杂度为O(1);而对于在vector容器头部或者中部插入或删除元素,则花费时间要长一些(移动元素需要耗费时间)&#xf…