图基本知识代码
前导知识
:
导包
:
import numpy as np
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')
基本操作
:
# 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))
# 中介中心性
print(nx.betweenness_centrality(G))
# 接近中心性
print(nx.closeness_centrality(G))
# PageRank算法
print(nx.pagerank(G))
# HITS算法
print(nx.hits(G))
输出
:
degree:
[(1, 3), (2, 2), (4, 2), (5, 3), (3, 2)]
connected_components:
[{1, 2, 3, 4, 5}]
diameter:
2
degree_centrality:
{1: 0.75, 2: 0.5, 4: 0.5, 5: 0.75, 3: 0.5}
eigenvector_centrality:
{1: 0.5298988890761731, 2: 0.35775191431708964, 4: 0.4271316779596084, 5: 0.5298988890761731, 3: 0.35775191431708964}
betweenness_centrality:
{1: 0.25, 2: 0.08333333333333333, 4: 0.0, 5: 0.25, 3: 0.08333333333333333}
closeness_centrality:
{1: 0.8, 2: 0.6666666666666666, 4: 0.6666666666666666, 5: 0.8, 3: 0.6666666666666666}
pagerank:
{1: 0.24369622576677993, 2: 0.1722562971205864, 4: 0.16809495422526696, 5: 0.24369622576677993, 3: 0.1722562971205864}
hits:
({1: 0.24059715204600787, 2: 0.16243456471667692, 4: 0.19393656647463045, 5: 0.2405971520460078, 3: 0.162434564716677}, {1: 0.2405971520460078, 2: 0.16243456471667703, 4: 0.19393656647463045, 5: 0.2405971520460079, 3: 0.1624345647166769})