Skip to content

Instantly share code, notes, and snippets.

@mrocklin
Created May 21, 2014 17:21
Show Gist options
  • Save mrocklin/aea4b5c18e978dc196ed to your computer and use it in GitHub Desktop.
Save mrocklin/aea4b5c18e978dc196ed to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:a68ee3c842c4697d54692076e671cbc89348d0793a3738179a422283a1ef3a5e"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# An example with Jaccard similarity\n",
"\n",
"Jaccard similarity is a simple measure of relative connectedness between pairs of nodes in a graph. It is the ratio of neighbors that the nodes have in common (mutual friends) divided by the number of neighbors that the two have total (friends of either node).\n",
"\n",
"A ratio of one means that each node knows the entire neighborhood of the other node (they are effectively married). A ratio of zero means that they have no friends in common."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Example Graph\n",
"\n",
"To demonstrate this lets play with a small example undirected graph"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"edges = [{1, 2}, {1, 4}, {4, 5}, {2, 5}, {2, 6}, {6, 3}]"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import networkx as nx\n",
"G = nx.Graph()\n",
"G.add_edges_from(edges)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Couldn't import dot_parser, loading of dot files will not be possible.\n"
]
}
],
"prompt_number": 4
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"nx.draw(G)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\ngg==\n",
"text": [
"<matplotlib.figure.Figure at 0x26d5e90>"
]
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We want to quantify the similarity between pairs of nodes in a subset of this graph. We care about the following subset "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"sub_nodes = {1, 5, 6} # subset of nodes about which we care"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lets get all edges originating from these nodes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"edges = [(a, b) for a, b in edges] + [(b, a) for a, b in edges] # Direct an undirected graph\n",
"\n",
"sub_edges = [(a, b) for a, b in edges \n",
" if a in sub_nodes]\n",
"sub_edges"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 7,
"text": [
"[(1, 2), (1, 4), (5, 4), (5, 2), (6, 2), (6, 3)]"
]
}
],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"G = nx.DiGraph()\n",
"G.add_edges_from(sub_edges)\n",
"nx.draw(G)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAd8AAAE+CAYAAADMGBp/AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmczXX///HHmX21XIxlUCkRyr6MMfatyNJCiRR+EUm0\nDElomRgVaREhuSIpS9mXuLKM7FkqrkmXGGFsMzGrMzPn94fM1xljGeZ8Pp8z87zfbt2u5v15n3Ne\num7jed7vz/vzftscDocDERERMYyH2QWIiIgUNgpfERERgyl8RUREDKbwFRERMZjCV0RExGAKXxER\nEYMpfEVERAym8BURETGYwldERMRgCl8RERGDKXxFREQMpvAVERExmMJXRETEYApfERERgyl8RURE\nDKbwFRERMZjCV0RExGAKXxEREYMpfEVERAym8BURETGYwldERMRgCl8RERGDKXxFREQMpvAVEREx\nmMJXRETEYApfERERgyl8RUREDKbwFRERMZjCV0RExGAKXxEREYMpfEVERAym8BURETGYwldERMRg\nCl8RERGDKXxFREQMpvAVERExmJfZBYgUdkePHuXPP/8kOTmZ4OBgKlWqRKlSpcwuS0RcSOErYoLM\nzExWrFjB5PHj2bp9O1V8fQkEzgP/TUujTatWDHzlFZo1a4bNZjO7XBHJZzaHw+EwuwiRwuTAgQN0\nbtOGYn//zcDz5+kG+F92/W/gS5uNyYGBBN9+O4tWryY0NNSkakXEFRS+IgbavXs37Zo2ZVxSEr2v\n86vnAN7x8mLav/7Fhu3bue2224wpUkRcTuErYpBjx47R8L77mHD2LF3z8LqJnp7MqFCBn/buJTg4\n2GX1iYhxtNpZxCATxo3jkfPn8xS8AEMyM6kcH88XM2e6pC4RMZ5GviIGSE1NpUJICFuTk7krl+vN\nga383wrI8sD+y65vAPqXL89vR45oAZZIAaCRr4gB5s2bRwObLdfgBbABn3BxtfN5nIMXoAngmZjI\nf/7zHxdWKSJGUfiKGOA/S5bwcFLSNftcawrKBjySlMR/1q3L17pExBwKXxEDJJw+Tcnr9HkVCAEi\ngPW5XC8JJJw4kd+liYgJFL4iBvDy9ibjGtejgUPAMaAf0BH4X44+dsDLx8c1BYqIoRS+IgYoVb48\nR65xvQEQCHgDvYDGwPIcfeK8vAjRZhsiBYLCV8QAj/bsyaygoGve172WdGCutzePds3rg0oiYkUK\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x3677190>"
]
}
],
"prompt_number": 9
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We want to count how many shared neighbors each pair has. Our result should look something like the following"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"shared_neighbors = {(1, 5): {2, 4},\n",
" (1, 6): {2},\n",
" (5, 6): {2}}\n",
"\n",
"num_shared_neighbors = {(1, 5): 2,\n",
" (1, 6): 1,\n",
" (5, 6): 1}"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To acheive this we can join the edges dataset with itself on the target node.\n",
"\n",
"Below we do this with a naive nested Python list comprehension. In practice this"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"joined_edges = [(tgt1, a, b) for (a, tgt1) in sub_edges\n",
" for (b, tgt2) in sub_edges\n",
" if tgt1 == tgt2\n",
" if a < b]\n",
"joined_edges"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
"[(2, 1, 5), (2, 1, 6), (4, 1, 5), (2, 5, 6)]"
]
}
],
"prompt_number": 32
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After this join operation we can perform a grouping operation to get out the shared neighbors"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"from toolz import groupby, first, valmap\n",
"\n",
"groups = groupby(lambda (tgt, a, b): (a, b), joined_edges)\n",
"shared_neighbors = {k: set(map(first, v)) for k, v in groups.items()}\n",
"shared_neighbors"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 33,
"text": [
"{(1, 5): {2, 4}, (1, 6): {2}, (5, 6): {2}}"
]
}
],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And so the number of shared neighbors is just the length of these values"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"valmap(len, shared_neighbors)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
"{(1, 5): 2, (1, 6): 1, (5, 6): 1}"
]
}
],
"prompt_number": 34
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment