페이지랭크 알고리즘은 웹 페이지의 패턴을 전이 행렬(transition matrix)로 표현합니다. 전이 행렬의 크기는 n×n입니다. 여기서 n은 노드의 개수를 의미합니다. 전이 행렬에 담긴 수치는 한 노드에서 다른 노드로 이동할 확률을 뜻합니다.
다음 코드 스니펫은 전이 행렬을 생성하기 위한 함수입니다.
[in :]
def createPageRank(aGraph):
nodes_set = len(aGraph)
M = nx.to_numpy_matrix(aGraph)
outwards = np.squeeze(np.asarray(np.sum(M, axis=1)))
prob_outwards = np.array([1.0/count if count > 0 else 0.0 for count in outwards])
G = np.asarray(np.multiply(M.T, prob_outwards))
p = np.ones(nodes_set) / float(nodes_set)
if np.min(np.sum(G, axis=0)) < 1.0:
print('경고: 전이 확률 합의 최솟값이 1보다 작습니다.')
return G, p
이 함수가 반환하는 G는 우리가 만든 네트워크의 전이 행렬입니다.
[in :]
G, p = createPageRank(myWeb)
print(G)