İki bölümlü (bipartit) graflar

Python ile Orta Düzey Ağ (Network) Analizi

Eric Ma

Data Carpentry instructor and author of nxviz package

İki bölümlü (bipartit) graflar

  • İki kümeye ayrılan bir graf
  • Düğümler yalnızca karşı kümedeki düğümlere bağlıdır
  • Karşıt: "tek bölümlü (unipartit)"
Python ile Orta Düzey Ağ (Network) Analizi

İki bölümlü graflar: Örnek

ch1-2.007.png

Python ile Orta Düzey Ağ (Network) Analizi

NetworkX'te bipartit graflar

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')
Python ile Orta Düzey Ağ (Network) Analizi

NetworkX'te bipartit graflar

list(G.nodes(data=True))
[(0, {'bipartite': 'customers'}),
 (1, {'bipartite': 'customers'}),
 (2, {'bipartite': 'customers'}),
 ('b', {'bipartite': 'products'}),
 ('a', {'bipartite': 'products'})]
Python ile Orta Düzey Ağ (Network) Analizi

Derece merkeziliği

  • Tanım: $$\frac{\text{komşu sayısı}}{\text{olası komşu sayısı}}$$
  • Olası komşu sayısı graf tipine bağlıdır
Python ile Orta Düzey Ağ (Network) Analizi

Bipartit merkezilik ölçütleri

  • Payda: tüm diğer düğümler yerine karşı bölümdeki düğüm sayısı

ch1-2.021.png

Python ile Orta Düzey Ağ (Network) Analizi

Graf filtreleme

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}
Python ile Orta Düzey Ağ (Network) Analizi

Hadi pratik yapalım!

Python ile Orta Düzey Ağ (Network) Analizi

Preparing Video For Download...