Đồ thị hai phía

Phân tích mạng nâng cao với Python

Eric Ma

Data Carpentry instructor and author of nxviz package

Đồ thị hai phía

  • Đồ thị được chia thành hai tập
  • Nút chỉ nối với nút ở tập đối diện
  • Đối lập: "đơn phía" (unipartite)
Phân tích mạng nâng cao với Python

Ví dụ: đồ thị hai phía

ch1-2.007.png

Phân tích mạng nâng cao với Python

Đồ thị hai phía trong NetworkX

import networkx as nx
G = nx.Graph()

numbers = range(3) G.add_nodes_from(numbers, bipartite='customers')
letters = ['a', 'b'] G.add_nodes_from(letters, bipartite='products')
Phân tích mạng nâng cao với Python

Đồ thị hai phía trong NetworkX

list(G.nodes(data=True))
[(0, {'bipartite': 'customers'}),
 (1, {'bipartite': 'customers'}),
 (2, {'bipartite': 'customers'}),
 ('b', {'bipartite': 'products'}),
 ('a', {'bipartite': 'products'})]
Phân tích mạng nâng cao với Python

Độ trung tâm bậc

  • Định nghĩa: $$\frac{\text{số láng giềng}}{\text{số láng giềng khả dĩ}}$$
  • Số láng giềng khả dĩ tùy loại đồ thị
Phân tích mạng nâng cao với Python

Chỉ số trung tâm cho đồ thị hai phía

  • Mẫu số: số nút ở phía đối diện, không phải tất cả nút còn lại

ch1-2.021.png

Phân tích mạng nâng cao với Python

Lọc đồ thị

cust_nodes = [n for n, d in G.nodes(data=True) if  
                  d['bipartite'] == 'customers']
cust_nodes
[(0, {'bipartite': 'customers'}),
 (1, {'bipartite': 'customers'}),
 (2, {'bipartite': 'customers'})]
nx.bipartite.degree_centrality(G, cust_nodes)
{0: 0.5,
 1: 0.5,
 2: 1.0,
 'a': 0.333,
 'b': 1.0}
Phân tích mạng nâng cao với Python

Ayo berlatih!

Phân tích mạng nâng cao với Python

Preparing Video For Download...