1

파이썬 패키지 networkx를 사용하여 네트워크를 만들었습니다. 각 에지는 노드가 얼마나 가까운지를 나타내는 가중치를가집니다. 상관 관계.파이썬에서 가장자리의 밀도와 무게를 기반으로 네트워크를 가진 클러스터를 찾는 법 - networkx package

클러스터 된 그래프를 반환하는 알고리즘이 내장되어 있으면 각 노드에 클러스터 ID (1 ~ k)를 할당하는 것이 이상적입니다. 이 가장자리의 중량을 기준으로 클러스터 수 있다면

그것은 더 나은 것, 그러나 중요한 ...

어떤 생각이 어떻게 일을 할 수 있지?

+0

당신은 [community strucutre] (https://en.wikipedia.org/wiki/Community_structure) 감지에 대해 이야기하고 있습니까? – Peaceful

답변

1

python-louvain 패키지를 살펴볼 수 있습니다. 이를 통해 best_partition 함수를 사용하여 그래프로 커뮤니티를 감지 할 수 있습니다. 기능 설명에서 :

예를 들어 karate_club_graph에 대한 커뮤니티를 계산합니다. (내 그래프 가중 가장자리를 가지고 있지 않더라도 나는 weight 키워드 best_partition를 사용하는 것이 주 - 귀하의 경우 기능을 사용하는 방법 난 그냥 보여주는거야.)

import networkx as nx 
import community 

G = nx.karate_club_graph() 
p = community.best_partition(G, weight='weight') 
print(p) 

출력 :

{0: 0, 1: 0, 2: 0, 3: 0, 4: 1, 5: 1, 6: 1, 7: 0, 8: 2, 9: 0, 10: 1, 11: 0, 12: 0, 13: 0, 14: 2, 15: 2, 16: 1, 17: 0, 18: 2, 19: 0, 20: 2, 21: 0, 22: 2, 23: 3, 24: 3, 25: 3, 26: 2, 27: 3, 28: 3, 29: 2, 30: 2, 31: 3, 32: 2, 33: 2} 

출력은 사전 (key = node, value = partition)입니다. 파티션은 0에서 k-1로 이동합니다. 1에서 k로 이동해야하는 경우 사전 값을 +1로 지정할 수 있습니다.

for k, v in p.items(): 
    p[k] = v + 1 
+1

중요한 질문은 사용자가 'k'의 값을 입력할지 여부입니다. – Peaceful

+0

출력 : ---------------------------------------- ----------------------------------- AttributeError 추적 (최근 호출 마지막) () 1 nx.karate_club_graph G =()에 ----> = community.best_partition 2 P (G 중량 = '중량') 3 인쇄 (p) AttributeError : 모듈 ' 커뮤니티 '에'best_partition '속성이 없습니다. – Rob

+0

@Rob'python-louvain'이 설치되어 있고 현재 디렉토리에'community.py'라는 파일이 없음을 확인하십시오. – edo