Sono nuovo di Python, e sto cercando di calcolare Page Rank vettore secondo questa equazione in Python: Page Rank in Python
Dove Pi (k) la pagina-rank vettore dopo k-esima iterazione, G è la matrice Google, H è matrice ipertestuale un è un vettore nodo penzoloni, alfa = 0,85 e e è vettore di quelli.
Il calcolo con G richiede molto tempo, mentre si utilizza la matrice di collegamento ipertestuale H, che è matrice sparsa, dovrebbe richiedere molto meno tempo.
Ecco il mio codice:
for i in range(1, k_steps+1):
for j in range(0, len(dictionary_urls)):
for k in range(0, len(dictionary_urls)):
if matrix_H[k][j] != 0:
matrix_pi_k[i][j] += matrix_pi_k[i-1][k] * float(matrix_H[k][j])
alpha_pi_k_a += matrix_pi_k[i-1][k]*float(vector_a[k])
alpha_pi_k_a = alpha_pi_k_a * float(alpha)
alpha_pi_k_a = alpha_pi_k_a + float((1- alpha))
alpha_pi_k_a = alpha_pi_k_a/float(len(dictionary_urls))
matrix_pi_k[i][j] = matrix_pi_k[i][j] * float(alpha)
matrix_pi_k[i][j] = matrix_pi_k[i][j] + float(alpha_pi_k_a)
alpha_pi_k_a = 0
k_steps è il numero di iterazioni necessario.
dictionary_links contiene tutti gli URL.
Dopo l'esecuzione di codice, matrix_pi_k dovrebbe avere tutto il vettore Pi
Ho calcolato tutte le variabili che intero. Ho ottenuto un tempo di esecuzione usando la matrice H è quasi uguale al tempo di esecuzione usando la matrice G, anche se, in teoria, dovrebbe essere diverso.
Perché? E cosa dovrei cambiare per ridurre il tempo di esecuzione?
Grazie.
Ok, ma il problema è anche quando so quali voci sono zero, dovrei fare la seconda parte del calcolo, che influenza ogni iterazione. per seconda parte intendo la moltiplicazione del vettore Pi per vettore a e aggiungo il risultato al vettore Pi. Quindi non posso saltare l'iterazione nemmeno all'ingresso con zero –
@RomanYanovitski Questo va bene, dato che non è necessario calcolare 'pi * H' e' pi * a' contemporaneamente. Dovresti davvero usare 'numpy', comunque. – jme