MCPcopy Create free account
hub / github.com/Persper/code-analytics / pagerank

Function pagerank

persper/graphs/pagerank.py:6–43  ·  view source on GitHub ↗

Memory efficient PageRank using scipy.sparse This function implements Algo 1. in "A Survey on PageRank Computing"

(G, alpha=0.85, epsilon=1e-5, max_iters=300)

Source from the content-addressed store, hash-verified

4
5
6def pagerank(G, alpha=0.85, epsilon=1e-5, max_iters=300):
7 """Memory efficient PageRank using scipy.sparse
8 This function implements Algo 1. in "A Survey on PageRank Computing"
9 """
10 ni = {}
11 for i, u in enumerate(G):
12 ni[u] = i
13
14 num_nodes = len(G.nodes())
15
16 row, col, data = [], [], []
17 for u in G:
18 num_out_edges = len(G[u])
19 if num_out_edges > 0:
20 w = 1 / num_out_edges
21 for v in G[u]:
22 row.append(ni[v])
23 col.append(ni[u])
24 data.append(w)
25
26 P = coo_matrix((data, (row, col)), shape=(num_nodes, num_nodes)).tocsr()
27 p = np.ones(num_nodes) / num_nodes
28 v = np.ones(num_nodes) / num_nodes
29
30 for i in range(max_iters):
31 new_v = alpha * P.dot(v)
32 gamma = LA.norm(v, 1) - LA.norm(new_v, 1)
33 new_v += gamma * p
34 delta = LA.norm(new_v - v, 1)
35 if delta < epsilon:
36 break
37 v = new_v
38
39 pr = {}
40 for u in G:
41 pr[u] = v[ni[u]]
42
43 return pr

Callers 1

pagerank_cFunction · 0.90

Calls 1

nodesMethod · 0.80

Tested by

no test coverage detected