networkx
-
[NetwrokX] 어떤 노드들이 새로 친구가 될까? Link Prediction #2Data & ML & AI/NetworkX 2023. 1. 21. 01:51
지난 글에서는 기존 네트워크 그래프에서 node의 개수는 그대로인 상태로 어떤 edge가 새로 생성될지 예측하는 방법론을 다루어 보았습니다. [NetwrokX] 어떤 노드들이 새로 친구가 될까? Link Prediction #1 지난 글에서는 새로 들어온 노드가 어떤 노드와 연결이 될지를 확률적으로 계산하는 Preferential Attatchment Model을 알아보았습니다. [NetworkX] 새로운 노드는 어디에 어떤 노드와 연결될까?Preferential At brain-nim.tistory.com 방법1. 공통이웃을 얼마나 가지고 있는가? 방법2. 자카드 계수 방법3. 자원할당 방법4. Adamic-Adar Index 방법5. Preferential Attachment Model 위의 방법들은..
-
[NetworkX] HITS 알고리즘 (HITS Algorithm)Data & ML & AI/NetworkX 2023. 1. 10. 00:15
네트워크 그래프에서 노드의 중심성을 파악하고 계산하는 방법들을 살펴보았습니다. 연결중심성(Degree Centrality)과 근접중심성(Closeness Centrality) 매개중심성(Betweenness Centrality) 페이지랭크(Page Rank) 이번엔 페이지랭크와 유사 하면서도 특별한 차이를 갖는 알고리즘을 소개합니다. "얼마나 중심이 되는가", "얼마나 hub로서 역할을 하는가"를 별개로 계산하는 방법을 소개합니다. 바로 HITS 알고리즘(Hypertext Induced Topic Selection, HITS Algorithm)입니다. 페이지랭크와 구분되는 HITS 알고리즘의 차이점 페이지랭크와 구분되는 HITS 알고리즘의 특별한 점은 크게 두가지로 볼 수 있습니다. 1) 전체 그래프를 ..
-
[NetworkX] 페이지랭크 (PageRank)Data & ML & AI/NetworkX 2023. 1. 4. 01:18
지난 글에서는 페이지랭크의 원리를 간략하게 살펴보았습니다. 페이지랭크 (PageRank) 원리 네트워크 그래프에서 노드의 중심성을 파악하고 계산하는 방법들을 살펴보았습니다. 연결중심성(Degree Centrality)과 근접중심성(Closeness Centrality) 매개중심성(Betweenness Centrality) 중심성을 파악하는 brain-nim.tistory.com 이번에는 NetworkX로 페이지랭크를 구현, 계산해 보겠습니다. PageRank 페이지 랭크 import networkx as nx edges = [('A','B'),('B','C'),('B','D'),('C','B'),('D','A'),('D','C'),('D','E'),('E','A')] G = nx.DiGraph() G.a..
-
[NetworkX] 매개중심성 (Betweenness Centrality)Data & ML & AI/NetworkX 2022. 12. 11. 19:50
지난 글에는 연결중심성(Degree Centrality)과 근접중심성(Closeness Centrality)를 살펴보았습니다. [NetworkX] 연결중심성, 근접중심성 (Degree Centrality, Closeness Centrality) 여기에 가라데 클럽에 속한 34명의 친구관계를 나타낸 네트워크 그래프가 있습니다. import networkx as nx G = nx.karate_club_graph() G = nx.convert_node_labels_to_integers(G,first_label=1) 여기서 가장 중요한 노드를 brain-nim.tistory.com 또 어떤 기준으로 중요한 노드를 뽑을 수 있을지 똑같은 그래프를 예시로 실습해 보겠습니다. import networkx as nx ..
-
[NetworkX] 연결중심성, 근접중심성 (Degree Centrality, Closeness Centrality)Data & ML & AI/NetworkX 2022. 12. 7. 00:44
여기에 가라데 클럽에 속한 34명의 친구관계를 나타낸 네트워크 그래프가 있습니다. import networkx as nx G = nx.karate_club_graph() G = nx.convert_node_labels_to_integers(G,first_label=1) 여기서 가장 중요한 노드를 뽑아야 한다면, 무엇이 가장 중요한 노드일까요? 어떤 기준으로 중요한 노드를 뽑을 수 있을까요? Degree Centrality 연결 중심성 아는 친구가 가장 많다면 = 직접 연결된 관계가 가장 많다면 중요한 노드 아닐까요? 이웃이 얼마나 많은가를 연결중심성(Degree Centrality)이라고 부릅니다. 연결 중심성이 높은 노드를 기준으로 중요한 노드를 고른다면, 가장 중요한 노드 5개는 34, 1, 33, ..
-
[NetworkX] Assignment 2 - Network ConnectivityData & ML & AI/NetworkX 2022. 11. 17. 22:36
본 게시물은 Coursera의 Applied Social Network Analysis in Python(by Daniel Romero)를 통해 자습하며 작성한 게시물입니다. 이 Assignment는 Coursera Jupyter 콘솔에서만 제대로 진행할 수 있습니다. (데이터 파일을 따로 제공하지 않기 때문입니다.) 개괄 원본 In this assignment you will go through the process of importing and analyzing an internal email communication network between employees of a mid-sized manufacturing company. Each node represents an employee and ea..
-
[NetwrokX] 그래프 연결성분(연결요소, Connected Components)Data & ML & AI/NetworkX 2022. 11. 15. 01:47
그래프 연결성분(연결요소)이란 쉽게 말해서 서로 분리되어 있는 그래프를 뜻합니다. 위의 (A~O)그래프에서는 3개의 연결성분이 있는거죠. 연결성분의 조건 연결성분 안의 모든 노드들은 동일한 성분 내의 다른 노드와 연결되어 있어야한다. 연결성분 밖에 있는 노드와 연결되면 안된다. 즉, 소외 되는 노드가 없으면서도 외부와의 접촉도 없는, 일종의 섬같은 성분을 연결성분이라고 부르는 겁니다. 위의 조건에 따라, 1번 : {A,E,F,G}는 연결성분이 아닙니다. (서로 분리되어 있으므로) 2번 : {K,L,O}는 연결성분이 아닙니다. (외부의 노드 M,L과 연결되어있으므로) 3번 : 오로지 {A,B,C,D,E}, {E,F,G,H,I}, {J,K,L,M,N,O}만 위 그래프의 연결성분입니다. 무방향 그래프 연결성분..
-
[NetworkX] 레이아웃으로 그래프 예쁘게 그리기 (nx layout)Data & ML & AI/NetworkX 2022. 11. 11. 14:58
NetworkX에서 그래프를 그려서 시각화 하는 가장 쉬운방법은 nx.draw_networkx()입니다. nx.draw_networkx(G) 하지만 결과는 처참합니다. 이게 어떻게 생겨먹은 그래프인가 싶습니다. 이럴 때 layout을 이용하면 편리합니다. kamada kawai layout NetworkX가 기본적으로 제공하는 레이아웃 중 가장 마음 편하게 쓸 수 있는 레이아웃 중 하나입니다. pos = nx.kamada_kawai_layout(G) nx.draw(G, pos, with_labels=True) 훨씬 깔끔해지고, 한눈에 들어옵니다. 그 외 다양한 레이아웃 pos G=nx.path_graph(15) G=nx.complete_graph(15) G=위의 그래프 kamada_kawai_layout..