从零开始学习图神经网络 - 图的基本知识以及NetworkX库

1. 图的基础知识

1.1 中心性

1.1.1 度中心性
  • 度中心性的计算公式

度 中 心 性 = N d e g r e e n − 1 度中心性 = \dfrac{N_{degree}}{n - 1} =n1Ndegree

  • N d e g r e e N_{degree} Ndegree 是指当前节点的度
  • n 是指节点数
1.1.2 特征向量中心性
  • 特征向量中心性

    image-20220228155627477
  • 特征向量中心性不仅仅考虑当前节点的度还考虑了和它相邻节点的度

1.1.3 中介中心性
  • 中介中心性

B e t w e e n e s s = 其 他 节 点 经 过 该 节 点 的 最 短 路 径 其 余 两 两 节 点 的 最 短 路 径 经 过 该 节 点 的 个 数 Betweeness = \dfrac{其他节点经过该节点的最短路径}{其余两两节点的最短路径经过该节点的个数} Betweeness=
image-20220228161431985

  • 每条边的长度是 0.5
1.1.4 连接中心性
  • 连接中心性

$$
Closeness = \dfrac{n-1}{当前节点到其他节点的最短路径之和} \ \

注意 : n 是节点的个数
$$
image-20220228163058838

1.2 PageRank

image-20220228163635801
  • 阻尼系数 :

1.3 HITS

image-20220228164032771

2. 图基本知识代码

2.1 NetWorkX库

  • 主要是 networkx 库的基本使用, 计算中心性和PageRank和HIPS值

  • 下载 networkx 库

    pip install networkx
    pip install scipy
    
  • 下面的基本的使用的代码

    # -*- coding: utf-8 -*-
    # @Time    : 2022/2/28 17:34
    # @Author  : 王天赐
    # @Email   : 15565946702@163.com
    # @File    : graph_base.py
    # @Software: PyCharm
    
    import pandas as pd
    import networkx as nx
    
    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 = nx.from_pandas_edgelist(edges, source='sources', target='targets', edge_attr='weights')
    
    # 计算度
    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))
    
    
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兀坐晴窗独饮茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值