복잡 한 네트워크 커 뮤 니 티 구조 발견 알고리즘 - python network x clique 침투 알고리즘 기반
최근 에 업무 데이터 분석의 수요 로 인해 지역 사 회 를 보면 관련 된 것 이 약간 많 고 igraph C library 를 바탕 으로 하 는 방법 (http://blog.csdn.net/a_step_further/article/details/51176973) 그리고 kclique 에서 파생 된 clique 침투 알고리즘 을 사용 하려 고 했 을 때 igraph C library 가 기 존의 api 를 제공 하지 않 은 것 을 발 견 했 습 니 다. 게 으 른 사람 에 게 는 불행 합 니 다.network x 라 는 python 가방 에 있 는 것 을 발 견 했 습 니 다. (또한 지역 사회 에서 발견 할 수 있 는 유일한 알고리즘 입 니 다) 그래서 실 랑 이 를 하 며 처리 과정 을 기록 하여 같은 친구 들 이 참고 하도록 하 세 요.
준비 작업
network x 설치 시 의존 decorator, setuptools 같은 가방 은 모두 설치 해 야 합 니 다.
networkx https://networkx.github.io
decorator https://pypi.python.org/pypi/decorator
setuptools https://pypi.python.org/pypi/setuptools
설치 후 python 인 터 랙 션 환경 에 들 어가 테스트 합 니 다.
import networkx as nx
잘못 보고 하지 않 았 다 면 기초 작업 을 준비 한 셈 이다.network x 라 는 네트워크 분석 패 키 지 를 사용 할 수 있 습 니 다.본 고 는 인터넷 에서 지역사회 구조의 발견 에 초점 을 맞 추 었 기 때문에 network x 의 기본 적 인 사용 방법 은 생략 되 었 고 여러분 은 스스로 구 글 을 사용 할 수 있 습 니 다.
clique 침투 알고리즘 안내
하나의 그림 G 에 있어 서 만약 에 그 중의 완전 서브 맵 (임의의 두 노드 사이 에 모두 변 이 존재 한다) 이 있 으 면 노드 수 는 k 이 고 이 완전 서브 맵 은 k - clique 라 고 할 수 있다.
더 나 아가 만약 에 두 개의 k - clique 사이 에 k - 1 개의 공 통 된 노드 가 존재 한다 면 이 두 개의 clique 는 '인접' 이 라 고 부른다.서로 인접 한 이러한 clique 는 최대 집합 을 구성 하면 한 지역 사회 라 고 할 수 있다.아래 의 첫 번 째 그림 은 두 개의 3 - clique 가 하나의 지역 사 회 를 형 성 했 고 두 번 째 그림 은 지역 사 회 를 중첩 하 는 설명도 임 을 나타 낸다.
-->
network x 에서 실 현 된 clique 침투 알고리즘 인 터 페 이 스 는 다음 과 같 습 니 다.
커 뮤 니 티 찾기 (상위 코드)
무방 향 무 권 도 를 예 로 들다
#!/usr/bin/python
#coding:utf-8
import sys
import networkx as nx
import time
def find_community(graph,k):
return list(nx.k_clique_communities(graph,k))
if __name__ == '__main__':
if len(sys.argv) < 2:
print "Usage: %s <InputEdgeListFile>" % sys.argv[0]
sys.exit(1)
# 、
edge_list_file = sys.argv[1]
wbNetwork = nx.read_edgelist(edge_list_file,delimiter='\t')
print " :%d" % wbNetwork.number_of_nodes()
print " :%d" % wbNetwork.number_of_edges()
# kclique
for k in xrange(3,6):
print "############# k : %d ################" % k
start_time = time.clock()
rst_com = find_community(wbNetwork,k)
end_time = time.clock()
print " ( ):%.3f" % (end_time-start_time)
print " :%d" % len(rst_com)
알고리즘 출력 및 토론
단일 컴퓨터 64G 메모리 의 기계 에서 몇 개의 서로 다른 규모 의 네트워크 를 테스트 했 는데 해당 하 는 출력 은 다음 과 같다.
이 알고리즘 은 단기 적 으로 10 만 이하 노드 중 소 규모 네트워크 지역사회 구 조 를 계산 하 는 데 적합 하 다 는 것 을 알 수 있다.대규모 소 셜 네트워크 서비스 에 대해 서 는 분포 식 군집 을 써 야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.