1. 程式人生 > 其它 >GNN學習筆記1——圖的基本知識

GNN學習筆記1——圖的基本知識

  1. 圖的表示 鄰接矩陣,節點之間有連線值為1,否則0
  2. 圖的特性
    1. 度 無向圖:節點連線的邊數;有向圖: 出邊數為出度,入邊數為入度。
    2. 子圖 由圖的節點集的子集以及邊集的子集構成的圖 
    3. 連通分量 連通圖本身為其唯一連通分量,非連通無向圖有多個連通分量。
    4. 連通圖 強連通圖:任意兩個點之間相互可達; 弱連通圖:至少一對節點不滿足單向連通,而去掉邊的方向後是連通圖。
    5. 最短路徑 兩個節點之間的可達經過的最少邊數。
    6. 圖直徑 圖中任意兩兩節點的最短路徑的最大值。
  3. 結構屬性
    1. 度中心性
    2. 特徵向量中心性 鄰接矩陣最大特徵值所對應的特徵向量
    3. 中介中心性
    4. 連線中心性
    5. PageRank 節點PR為指向它的節點的PR值之和,邊PR為該節點PR的平均。
    6. Hits(hub、authority) 節點hub值為它所指向的節點的authority值之和,節點authority值為指向它的節點的hub值之和。
  4. 程式碼
    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))