오늘의 인기 글
최근 글
최근 댓글
Today
Total
12-31 00:05
관리 메뉴

우노

[Graph] Matrix의 Node 별 NNZ 구하기 본문

Data/Graph & Matrix

[Graph] Matrix의 Node 별 NNZ 구하기

운호(Noah) 2020. 12. 1. 16:05

Matrix data

  • SNAP Stanford는 다양한 Graph dataset을 제공한다.

  • 해당 포스트에서는 Networks with ground-truth communities의 하위 Graph dataset을 Matrix dataset으로 변환해 사용했으며, 변환하기 위해선 몇가지 전처리가 필요하다.

  • Matrix dataset이 준비됐다면, 이제 Matrix의 Node 별 NNZ를 계산해 볼 것이다.

    • 위 과정에서 전처리한 Matrix dataset은 대칭행렬이기 때문에
    • 행 기준 or 열 기준 Node 별 NNZ 값은 동일하다.

Matrix의 Node 별 NNZ 구하기

inputfile = "./com-dblp.matrix.txt"

node_nnz = {}

with open(inputfile,"r") as rf:
    for line in rf:
        # 행이 같은 node의 nnz의 개수를 구한다.
        node = line.split(" ")[0]

        if (node in node_nnz):
            node_nnz[node] += 1
        else:
            node_nnz[node] = 1

node_nnz

# {'0': 16,
#  '1': 91,
#  '2': 26,
#  '1766': 35,
#  '12501': 30,
#  '18905': 35,
#  '19425': 67,
#  '48500': 24,
#   ...
#   ...}
print("Node 별 NNZ 평균 : ", sum(node_nnz.values()) / len(node_nnz))

# Node 별 NNZ 평균 :  6.622089062697111
# Node 별 NNZ
for node, nnz in enumerate(node_nnz.values()):
    print("node {} : {}".format(node+1,nnz))

# node 1 : 16
# node 2 : 91
# node 3 : 26
# node 4 : 35
# node 5 : 30
# node 6 : 35
# ...
# ...
# node 317075 : 2
# node 317076 : 2
# node 317077 : 2
# node 317078 : 2
# node 317079 : 2
# node 317080 : 2
Comments