Skip to content

Instantly share code, notes, and snippets.

@tomkreker
Last active March 4, 2020 22:08
Show Gist options
  • Save tomkreker/00130d5506f3269ff8bf382aba6f5961 to your computer and use it in GitHub Desktop.
Save tomkreker/00130d5506f3269ff8bf382aba6f5961 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [],
"source": [
"import networkx as nx\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"g = nx.erdos_renyi_graph(30, 0.05, directed=True, seed=123)\n",
"nx.draw(g, pos=nx.kamada_kawai_layout(g))\n",
"pagerank = nx.pagerank(g)\n",
"\n",
"def random_surfer(g,pagerank,N):\n",
"#A function that takes N number of iterations, a graph and its pagerank, and returns average absolute error\n",
" visit_counter = np.zeros(len(g.nodes)) #array to store simulated ranks\n",
" surfer = np.random.choice(g.nodes) #starting point\n",
" visit_counter[surfer]+=1 #storing the starting point's location in the visit counter\n",
" a = 0.85 # random switch parameter as defined in the instructions \n",
" for i in range(int(N)):\n",
" nds = list(g.nodes)\n",
" nds.remove(surfer) # store all nodes but present one\n",
"\n",
" if np.random.random() < a: #with probability a\n",
" neighbors = [_ for _ in g.neighbors(surfer)] # find all neighbors\n",
" if neighbors: #if there are neighbors\n",
" surfer = np.random.choice([_ for _ in g.neighbors(surfer)]) # move to one randomly\n",
" else:\n",
" surfer = np.random.choice(nds) #if no neighbors, move to a random node\n",
" else:\n",
" surfer = np.random.choice(g.nodes) #move to a random node with p = 1-a\n",
" \n",
" visit_counter[surfer]+=1 # update the visit to the new selected node\n",
"\n",
" normalized = [v/N for v in visit_counter] #normalize the visit counter\n",
" pr_values = np.fromiter(pagerank.values(), dtype=float) #get the pagerank values in an array\n",
" avg_error = np.sum(np.absolute(np.subtract(pr_values,normalized)))/len(g.nodes) #get the avg error\n",
" return avg_error"
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
"Ns = np.linspace(1,2000,50) #define array for various N values (iterations)\n",
"errors = [] #store results per iteration number\n",
"for n in Ns:\n",
" errors.append(random_surfer(g,pagerank,n))"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1283bb27550>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Plot results - very similar to pageran from about 250 iterations, doesn't change much since then\n",
"plt.plot(Ns,errors)\n",
"plt.xlabel('Iterations')\n",
"plt.ylabel('Average Absolute Error (Sim-PageRank)')\n",
"plt.title('Change in Abs Error over Time - Simulation vs PageRank')\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment