2016-12-11 4 views
0

인접 행렬을 반복하여 수식을 사용하여, 지금은 다음 식 상수 T = 0.15 순간 이동을 사용하여 각 페이지의 페이지 순위를 계산해야컴퓨팅 랭크 I 엑셀 스프레드 시트에 인접 행렬을 만들었

PR(W)=T/N+(1-T)(PR(W1)/O(W1)+PR(W2)/O(W2)+...PR(Wn)/O(WN)) 

나는이 작업을 수행 할 수있는 의사 코드는 다음과 같이 있어야한다고 생각 :

x=formula 
for i in range(len(matrix): 
if i=1, then i==x 
    else 
    return 0 
print(i?) 

나는 그것이까지 완벽하게되는 것을 알고, 나는 여전히 통해이 문제를 해결하려고 노력하고있다.

또한 먼저 수식 자체에 대한 별도의 프로그램 코드를 만들고 변수를 선언해야한다고 가정합니다.

이 아이디어를 파이썬이나 R로 구현하는 데 만족스러운 해결책이 될 수 있을까요? 아니면 페이지 순위를 계산하는 더 좋은 방법이 있습니까?

나는 웹에서 여러 가지 가능한 해결책을 찾았지만 특별한 경우와 관련하여별로 도움이되지 못했습니다.

답변

0

데이터가 특별히 크지 않다면 Excel 스프레드 시트에 있기 때문에 미리 준비된 행렬 A의 첫 번째 고유 벡터를 계산하면됩니다. 인접 매트릭스의 이름을 M으로 지정하십시오. 다음과 같이 R의 코드는 다음과 같습니다 당신의 행렬이 더 큰

n = ncol(M) 
B = matrix(1/n, n, n) # the teleportation matrix 
A = 0.85 * M + 0.15 * B 
ranks = eigen(A)$vectors[1] # your PageRanks 

경우에, 당신은, 이것은 좋은 보이는 패키지 igraph

+0

에서 예를 들어 기능 page_rank에 사용할 수있는 대단히 감사합니다! N =을 NcoI (m) B = 매트릭스 (1/N, N, N) # 순간 이동 행렬 > A = 0.85 * m + 0.15 * B 경고 메시지 : 있지만, I는 일부 오류 메시지가 : 1 : Ops.factor (왼쪽, 오른쪽)에서 : 요소에 대해 의미가없는 '*' 2 : Ops.factor (왼쪽, 오른쪽)에서 : '*'는 요소에 대해 의미가 없습니다. rank = eigen (A) $ vectors [ 1] # PageRanks 고유 (A)의 오류 : '고유'의 비 정방 행렬 저는 R에 대한 많은 경험이 없으므로이 특별한 경우에 대한 답을 찾기 위해 애 쓰고 있습니다. 매트릭스는 500x500 오순절 1과 0 – v0id

+0

내 마지막 코멘트를 무시하세요, 즉 데이터 에 대한 내 자신의 실수 지금은이 출력이 있습니다 는'= 고유 (A)를 위 $ 벡터 [500] # 당신의 PageRanks > 0 = ncol (R) > B = 행렬 (1/n, n, n) # 순간 이동 행렬 > A = 0.85 * R + 0.15 * B > rank = eigen (A) $ vectors [500] # 당신의 PageRanks > 인쇄 (계급) [1] -0.0002985959 + 실제로 작동하지만, 내가 이상적으로는 같을 것이다, 각 페이지에 대한 PageRanks 필요 0i' : '반복 <반복 횟수>, ... 또는 테이블로' 이해 된 바와 같이, $ 벡터 [1] 일반 결과를 저장 및 랭크 표시되는 배열이며 – v0id