แนวคิดของ Projection

การวิเคราะห์เครือข่ายระดับกลางใน Python

Eric Ma

Data Carpentry instructor and author of nxviz package

Projection

  • มีประโยชน์สำหรับการวิเคราะห์ความสัมพันธ์ระหว่างโหนดในพาร์ทิชันเดียว
    • โดยอาศัยการเชื่อมต่อกับโหนดในพาร์ทิชันอื่น
การวิเคราะห์เครือข่ายระดับกลางใน Python

Projection

  • การแสดงแบบ Unipartite ของการเชื่อมต่อแบบ Bipartite

ch2-1.006.png

การวิเคราะห์เครือข่ายระดับกลางใน Python

Projection

  • การแสดงแบบ Unipartite ของการเชื่อมต่อแบบ Bipartite

ch2-1.007.png

การวิเคราะห์เครือข่ายระดับกลางใน Python

Projection

  • การแสดงแบบ Unipartite ของการเชื่อมต่อแบบ Bipartite

ch2-1.008.png

การวิเคราะห์เครือข่ายระดับกลางใน Python

Projection

  • การแสดงแบบ Unipartite ของการเชื่อมต่อแบบ Bipartite

ch2-1.009.png

การวิเคราะห์เครือข่ายระดับกลางใน Python

กราฟบนดิสก์

  • รายการ Edge แบบ Flat
  • ไฟล์ CSV: รายการโหนด + Metadata, รายการ Edge + Metadata
การวิเคราะห์เครือข่ายระดับกลางใน Python

การอ่านข้อมูลเครือข่าย

import networkx as nx
G = nx.read_edgelist('american-revolution.txt')

list(G.edges(data=True))[0:5]
[('Parkman.Elias', 'LondonEnemies', {'weight': 1}),
 ('Parkman.Elias', 'NorthCaucus', {'weight': 1}),
 ('Inglish.Alexander', 'StAndrewsLodge', {'weight': 1}),
 ('NorthCaucus', 'Chadwell.Mr', {'weight': 1}),
 ('NorthCaucus', 'Pearce.IsaacJun', {'weight': 1})]
  • ไฟล์ข้อความ
    Barrett.Samuel LondonEnemies {'weight': 1}
    Barrett.Samuel StAndrewsLodge {'weight': 1}
    Marshall.Thomas LondonEnemies {'weight': 1}
    Eaton.Joseph TeaParty {'weight': 1}
    Bass.Henry LondonEnemies {'weight': 1}
    
การวิเคราะห์เครือข่ายระดับกลางใน Python

Bipartite Projection

list(G.nodes())
['product2', 'customer3', 'customer1', 'product3',  
    'customer2', 'product1']
list(G.edges())
[('product2', 'customer1'),
 ('product2', 'customer2'),
 ('customer3', 'product1')]
การวิเคราะห์เครือข่ายระดับกลางใน Python

Bipartite Projection

cust_nodes = [n for n in G.nodes() if G.nodes[n]
                  ['bipartite'] == 'customers']
cust_nodes
['customer3', 'customer1', 'customer2']
การวิเคราะห์เครือข่ายระดับกลางใน Python

Bipartite Projection

G_cust = nx.bipartite.projected_graph(G, cust_nodes)
list(G_cust.nodes())
['customer1', 'customer3', 'customer2']
list(G_cust.edges())
[('customer1', 'customer2')]
การวิเคราะห์เครือข่ายระดับกลางใน Python

Degree Centrality

  • ทบทวนนิยาม Degree Centrality $$\frac{\text{จำนวนเพื่อนบ้าน}}{\text{จำนวนเพื่อนบ้านที่เป็นไปได้}}$$
  • ตัวส่วน: จำนวนโหนดในพาร์ทิชันตรงข้าม
การวิเคราะห์เครือข่ายระดับกลางใน Python

Bipartite Degree Centrality

nx.bipartite.degree_centrality(G, cust_nodes)
{'customer1': 0.3333333333333333,
 'customer2': 0.3333333333333333,
 'customer3': 0.3333333333333333,
 'product1': 0.3333333333333333,
 'product2': 0.6666666666666666,
 'product3': 0.0}
การวิเคราะห์เครือข่ายระดับกลางใน Python

Bipartite Degree Centrality

nx.degree_centrality(G)
{'customer1': 0.2,
 'customer2': 0.2,
 'customer3': 0.2,
 'product1': 0.2,
 'product2': 0.4,
 'product3': 0.0}
การวิเคราะห์เครือข่ายระดับกลางใน Python

มาฝึกกันเถอะ!

การวิเคราะห์เครือข่ายระดับกลางใน Python

Preparing Video For Download...