본문 바로가기

Python7

[Neo4j] 그래프를 다루는 데이터베이스 - 도입 P1. 기존 데이터 이식 P2. 데이터베이스 언어 (Cypher) P3. Graph Apps - Neo4j Bloom (가시화), NeoDash (Feature 트래킹) P4. graph data science - 알고리즘 (ex: pagerank, community detection) P5. Gephi와 연동, Large network 가시화 P6. Python 프로그램과 연동, 주기적 DB 업데이트 *굵게 표시한 목표는 이 글에서 다루는 내용 이것 저것 가지고 놀다 보니 뉴스 관련 데이터들이 한달의 기간을 넘어가면 점점 pandas나 csv로 다루는데 한계가 있다는 것을 느꼈다. 해서 그래프 데이터를 다룰 수 있는 데이터베이스 관리 시스템인 Neo4j를 배워보기로 했다. 준비 다음 사이트에서 Neo4.. 2021. 3. 5.
[연습] 네이버 랭킹 뉴스 가시화 with Python & Gephi 가짜뉴스와는 별개로 현재 뉴스로 부터 키워드들을 가시화 해보는 과정을 해보고 싶어서 예제를 작성해 보았다. 목표는 네이버에서 제공하는 2021년 1월 언론사별 랭킹뉴스를 긁어와서 title로부터 주요 keyword를 추출하고, network를 구성하여 가시화 하는 것이다. 시작. 정보를 긁어올 페이지는 다음 페이지다. news.naver.com/main/ranking/popularDay.nhn?mid=etc&sid1=111 랭킹 : 네이버 뉴스 언론사별로 집계한 일간 많이 본, 댓글 많은 기사 제공 news.naver.com 네이버 랭킹뉴스에서는 몇 십개의 언론사에서 많이 본 뉴스, 댓글 많은 뉴스 별로 랭킹 5까지를 종합해서 한눈에 볼 수 있도록 정보를 제공하고 있다. 목표는 여기의 title을 긁어오.. 2021. 1. 16.
[Complexity] 리아프노프 지수 - 로지스틱 맵 시계열 데이터의 Complexity를 정량화 하는 방법에 리아프노프 지수(Lyapunov exponents)가 있다. Lyapunov 지수는 간단하면서도 카오스적 성질을 지닌 Logistic map의 예제를 통해 그 의미를 가늠해볼 수 있다. 시계열 데이터에서 Complexity란 단순히 진동하거나 증가/감소 하는 성질이 아닌 복잡하고도 예측 불가능한 성질이다. 이러한 성질은 카오스라고도 불리우며, 위상공간에서 기이한 끌개(strange attractor)의 운동을 보이는데, '초기 조건에의 민감성'을 갖는다. '초기 조건에의 민감성'은 나비효과로 널리 알려 있는데, 아주 작은 초기 상태의 차이가 시간이 지날 수록 점점 거대한 차이로 나타나는 특성으로, 계의 예측을 어렵게 혹은 불가능하게 만드는 카오스 .. 2019. 11. 5.
[네트워크이론] Label propagation algorithm for community detection 지금까지 다뤄온 community detection의 방식(Girvan-Newman, Louvain, Link community)에서는 일련의 반복 알고리즘을 수행하며, 가장 최적의 검출 상태를 추정하기 위해 Modularity 또는 Partitional density라는 지표를 이용했다. Label propagation은 Agglomerative(점점 덩어리를 불려나가는) 방식과 개념 면에서는 흡사하지만, 지표를 사용하지 않는다는 면에서 조금 차이가 있다. Label propagation 알고리즘에는 내가 속한 Community는 나의 주변 사람들이 속한 Community일 확률이 높다는 직관적이지만 강력한 개념이 담겨있다. 예를 들어, 'B'라는 community에 속한 node i의 주변 node들.. 2019. 8. 8.
[네트워크이론] Louvain algorithm - Python으로 구현하기 Louvain algorithm은 사용하기 엄청 쉽다. python 버전으로 package를 만들어 놓은 사람이 있기 때문이다. package는 networkx와 연동되며, 소스코드 한줄만에 community 추출이 완료된다. https://github.com/taynaud/python-louvain 여기 url로 가서 다운로드 & package 설치를 한다. 먼저, sample을 만들기 위해 다음과 같이 networkx로 community3개로 구성된 인공 network를 만든다. import networkx as nx import matplotlib.pyplot as plt import numpy as np import copy from networkx.algorithms import communit.. 2018. 8. 10.
[시뮬레이션] python으로 BA 모델 만들기 BA모델을 이해하더라도 실제 구현하기는 힘이 든다. BA모델 특징상 노드가 10,000 개 이상의 아주 큰 network 에서 그 특징이 뚜렷히 나타나기 때문이다. 그래서, BA모델을 만들어볼 수 있는 방법을 여러가지 소개해 보는 글을 쓰기로 했다.BA모델 이론적 배경 관련 포스팅 2017/10/14 - [연구/리뷰] - [논문소개] Emergence of Scaling in Random Networks2017/10/22 - [연구/리뷰] - [논문소개] Barabasi-Albert model (바라바시 알베르트 모델)2018/04/26 - [연구/연구] - [연구] BA 모델 고찰2018/05/10 - [연구/연구] - [고찰] BA 모델 고찰2 환경은 python 3.5를 기반으로 작성하였다. 방법1.. 2018. 6. 5.
[시뮬레이션] 2차원 입자 충돌 시뮬레이션 Python을 이용해서 2차원 평면 상에서 입자들이 충돌하는 시뮬레이션을 작성해 보았다. 아직 초보이기 때문에 다음 사이트를 참조하였다.(참고 사이트: https://stackoverflow.com/questions/9401658/how-to-animate-a-scatter-plot) 입자들을 구역 안에 가둬 두고 운동 시키면서 충돌 시키는 프로그램이다. 충돌 시 입자의 속도는 충돌 방향으로만 영향을 받는다는 것을 이용해서 작성하였다. 탄성 계수 1 탄성 계수 0.9 탄성 계수: 1.1 아래는 코드 import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy as np import pandas as pd clas.. 2018. 1. 25.