2016-12-11 10 views
0

I eine Adjazenzmatrix in Excel-Tabelle erstellt haben, und jetzt müssen I unter Verwendung teleportation Konstante T = 0,15 und unter Verwendung der folgenden Formel, um die Seite Rang jeder Seite zu berechnen:Computing PageRank unter Verwendung der Formel durch Iterieren durch Adjazenzmatrix

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

ich glaube, der Pseudo-Code zum ausführen dieser Aktion sollte wie folgt sein:

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

ich weiß, es ist weit davon entfernt, perfekt zu sein, und ich versuche immer noch, dies durch zu arbeiten.

Ich nehme auch an, dass ich erst erklären muss, einen eigenen Programmcode für die Formel selbst zu erstellen und seine Variablen zu deklarieren.

Wäre dies eine befriedigende Lösung, um diese Idee mit Python oder R zu implementieren? Oder gibt es eine bessere Methode zur Berechnung des Seitenrangs?

Ich stieß auf verschiedene mögliche Lösungen im Internet, aber sie waren nicht sehr hilfreich in Bezug auf meinen speziellen Fall.

Antwort

0

Wenn Ihre Daten nicht besonders groß sind, und ich nehme an, es ist nicht, da es in einer Excel-Tabelle ist, können Sie einfach den ersten Eigenvektor einer vorbereiteten Matrix A berechnen. Lassen Sie Ihre Adjazenz-Matrix M heißen. Der Code in R ist wie folgt:

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 

Wenn Ihre Matrix größer ist, dann können Sie zum Beispiel Funktion page_rank von Paket verwenden igraph

+0

Das sieht nett, vielen Dank! Zwar habe ich einige Fehlermeldungen: n = NcoI (m) B = Matrix (1/n, n, n) # die teleportation Matrix > A = 0,85 * m + 0,15 * B Warnmeldungen: 1: In Op.factor (links, rechts): '*' nicht sinnvoll für Faktoren 2: In Ops.factor (links, rechts): '*' nicht sinnvoll für Faktoren ranks = eigen (A) $ vectors 1] # your PageRanks Fehler in Eigen (A): nichtquadratische Matrix in 'Eigen' Ich habe nicht viel Erfahrung mit R, also habe ich Mühe, eine Antwort auf diesen speziellen Fall zu finden. Die Matrix 500x500 Whit 1 und 0 – v0id

+0

ignorieren Sie bitte meine letzte Bemerkung ist, dass mein eigener Fehler in Bezug auf Daten war jetzt diese Ausgabe habe ich: 'stuft = Eigen (A) $ Vektoren [500] # Ihre PageRanks > n = ncol (R) > B = Matrix (1/n, n, n) # die Teleportationsmatrix > A = 0,85 * R + 0,15 * B > Ränge = Eigen (A) $ Vektoren [500] # PageRanks Ihre > print (Reihen) [1] -,0002985959 + 0i' , das tatsächlich funktioniert, aber ich brauche eine PageRanks für jede Seite, im Idealfall würde es wie folgt aussehen: 'Iteration ... ' oder als Tabelle Wie ich verstehe, $ Vektoren [1] ist ein Array, das das allgemeine Ergebnis speichert und in Reihen vertreten – v0id