우노
[Graph] Graphalytics의 Graph data를 Matrix data로 변환하는 방법 본문
Data/Graph & Matrix
[Graph] Graphalytics의 Graph data를 Matrix data로 변환하는 방법
운호(Noah) 2020. 10. 7. 22:45Graph data
- Graphalytics에서는 테스트 및 표준 벤치 마크에 사용되는 Graph dataset를 제공한다.
- https://graphalytics.org/datasets
- "datagen-*" 로 시작하는 데이터가 임의로 만든 Graph dataset 이다.
- 원하는 파일을 다운로드 후 압축을 해지하면 다양한 파일들이 존재한다.
- 입력 데이터 (정점 및 에지 파일)
- 각 알고리즘 (BFS, WCC, PR, CDLP, LCC, SSSP)에 대한 유효성 검사 데이터 및 메타 데이터 (속성 파일)
- Matrix data를 사용하고 싶다면 확장자명이 .e로 끝나는 파일을 사용하면 된다.
Matrix data
확장자명이 .e로 끝나는 Matrix data를 활용하기 위해선 몇가지 전처리가 필요하다.
1) vertex를 정렬 후 idx를 0부터 순서대로 재설정
2) 행열에 해당하는 element 할당
예제 코드
import random inputfile = "/Users/bdlab/Downloads/datagen-7_5-fb/datagen-7_5-fb.e" outputfile = "/Users/bdlab/Desktop/Graph & Matrix data/Square Matrix data/Graphalytics/datagen-7_5-fb vertex 633432 edge 34185747" # vertex를 중복 없이 저장할 집합 v_set = set([]) # edge file을 읽어 모든 vertex를 중복 없이 저장 with open(inputfile,"r") as e_file: for e in e_file: e_split = e.split(" ") v_set.add(int(e_split[0])) v_set.add(int(e_split[1])) # 저장 된 vertex를 오름차순 정렬한 뒤 idx를 0부터 순서대로 재할당 v_dic = {} v_idx = 1 for v in sorted(v_set): v_dic[str(v)] = v_idx v_idx += 1 # 최종 파일 with open(outputfile,"a+") as wf: # Inputfile을 읽어 Outputfile에 쓰기 with open(inputfile,"r") as e_file: for e in e_file: e_split = e.split(" ") wf.write(str(v_dic[e_split[0]])+" "+str(v_dic[e_split[1]])+" "+str(random.random())+"\n")
'Data > Graph & Matrix' 카테고리의 다른 글
[Graph] Matrix의 Node 별 NNZ 구하기 (0) | 2020.12.01 |
---|---|
[Graph] SNAP Stanford 의 Undirected Graph data 를 Matrix data 로 변환하는 방법 (0) | 2020.11.30 |
[Matrix] 희소행렬(SparseMatrix) - COO, CSR, CSC (0) | 2020.07.06 |
[Matrix] MATLAB을 사용한 정방형 Sparse Matrix 만들기 (0) | 2020.07.06 |
[Graph] Graph란? (Undirected, Directed) (0) | 2020.07.03 |
Comments