아무래도, 연구주제로 삼게될 것 같은 'Network Analysis'.
흥미로운 연구주제이고 좋은 기회인 것 같아서,, 일단 뽀짝거리는 수준으로 공부해보려고 한다
첫 스텝으로 Python 라이브러리 중 네트워크 분석에 상당히 유용한 'NetworkX'를 설치하고 좀 뽀짝거려봤다
Python 라이브러리를 설치하는 방법 중 가장 대중적으로(?) 알려진 게 명령어로 설치하는 방법인 것 같다
pip install 어쩌고...
근데 이게 나한텐 좀 어렵게.. 느껴져서 보통 파이참을 이용하는 편이다 ^^
이렇게 자꾸 편한 것에 맛들려도 되는진 모르겠으나,,
암턴 파이참에서 손쉽게 NetworkX를 설치할 수 있었다.
찾으니 역시 바로 나와서 바로 설치 ㅋㅋㅋㅋㅋㅋ 파이참 최고
그 다음, 몇 가지 예제들로 networkx를 실습해봤다
1) network 생성하기
2) edges, link 만들기 (edge만 만들어도 link가 생성된다)
3) 만든 edges 불러보기
4) edges data 불러보기
5) shortest path 찾아보기
import networkx as nx
#1)
G = nx.Graph()
#2)
G.add_edge('a', 'b', weight=1.0)
G.add_edge('b', 'c', weight=1.5)
G.add_edge('a', 'c', weight=3.0)
G.add_edge('c', 'd', weight=2.3)
#3)
print(G.edges)
#4)
print(G.get_edge_data('a', 'c'))
#5)
print(nx.shortest_path(G, 'a','d'))
뽀짝거리는 수준의 파이썬 실습은 일단 제쳐두고,, 이 NetworkX의 엄청난 유용성에 대해 말해보자면
그거슨 바로 "Shortest Path Algorithm"이 내장되어 있다는 점이다.
석사 재학 시절 Shortest Path Algorithm을 기반으로 공항 내 지상조업장비들의 교통량을 분석하는 시뮬레이션 프로그램(?)을 개발했었는데 그 당시 이 알고리즘을 매트랩으로 구현하는데만..... 어...
6개월 걸렸나...?
그것도 완벽하지는 않았던 기억 ㅠㅠ
그런데 이 라이브러리에서는 Dijkstra 기반의 알고리즘을 미리 제공해주는데다가
weight나 속성값 등을 부여할 수도 있다;;;
아 참고로 Dijkstra 알고리즘만 제공된다 (weight 값이 항상 양수여야 함)
예제 하나를 만들어서 풀어보면 더 쉽게 늘 수 있을 것 같은데
뭘 해보지...
고민 좀 해봐야겠당
'Development > Python' 카테고리의 다른 글
크롤링 기초 : BeautifulSoup (0) | 2022.07.26 |
---|---|
크롤링 기초: HTML 문서의 구성 (0) | 2022.07.26 |
class, 객체, try& except, package (0) | 2022.07.26 |
크롤링 : select, find, attribute error (0) | 2022.05.17 |