Created
October 27, 2014 17:02
-
-
Save cjauvin/4b44c3f4dc60a81046e5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "metadata": { | |
| "name": "", | |
| "signature": "sha256:5b87eb38df30ad3aff9ac635e73a6e7e051ebf629912c3fc3aa2ec3c66b8ffc1" | |
| }, | |
| "nbformat": 3, | |
| "nbformat_minor": 0, | |
| "worksheets": [ | |
| { | |
| "cells": [ | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "# Hamming vs Jaccard\n", | |
| "\n", | |
| "To compare a pair of binary pixel grids, we can slightly modify the notion of Hamming *distance*, which simply counts the number of differents bits in a pair of binary strings, and define the Hamming *similarity*, which is simply one minus the distance normalized by the string length (which should be the same for both strings). With Numpy and its XOR function, it's very easy to define:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def hamming_similarity(g1, g2):\n", | |
| " return np.sum(~np.logical_xor(g1, g2)) / g1.size\n", | |
| "\n", | |
| "hamming_similarity(np.asarray([1,0,1,0]), \n", | |
| " np.asarray([1,0,1,1]))" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "pyout", | |
| "prompt_number": 1, | |
| "text": [ | |
| "0.75" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 1 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Now if we consider pixel grids of $4 \\times 4$ with a 50% density (i.e. with 8 pixels turned on; please note that from now on, a \"pixel\" is always going to mean an \"on\" one), this notion of similarity seems to make sense:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "grids = [[1] * 8 + [0] * 8,\n", | |
| " [0] * 8 + [1] * 8,\n", | |
| " [1,0,0,0] * 2 + [0,1,1,1] * 2,\n", | |
| " [0,0,1,1] * 4,\n", | |
| " [0,1,1,1] * 2 + [1,0,0,0] * 2]\n", | |
| " \n", | |
| "def show_grids(grids, sim_fn, title, n=4):\n", | |
| " fig, axes = plt.subplots(nrows=1, ncols=5, \n", | |
| " figsize=(15, 20))\n", | |
| " g0 = np.asarray(grids[0]).reshape(n, n)\n", | |
| " for i in range(5):\n", | |
| " gi = np.asarray(grids[i]).reshape(n, n)\n", | |
| " axes[i].imshow(gi, cmap='Greys', \n", | |
| " interpolation='nearest', \n", | |
| " extent=[0, n, 0, n])\n", | |
| " axes[i].grid(ls='solid', color='gray')\n", | |
| " axes[i].set_xticklabels([])\n", | |
| " axes[i].set_yticklabels([])\n", | |
| " axes[i].set_xticks(range(n))\n", | |
| " axes[i].set_yticks(range(n))\n", | |
| " for tic in axes[i].xaxis.get_major_ticks():\n", | |
| " tic.tick1On = tic.tick2On = False\n", | |
| " for tic in axes[i].yaxis.get_major_ticks():\n", | |
| " tic.tick1On = tic.tick2On = False\n", | |
| " if i:\n", | |
| " axes[i].set_xlabel('sim = %.4f' % sim_fn(g0, gi))\n", | |
| " axes[2].set_title(title + '\\n')\n", | |
| " \n", | |
| "show_grids(grids, sim_fn=hamming_similarity,\n", | |
| " title='Hamming Similarity (grids with 50% density)')" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\n5z/VunVrtWnTJkvlTmvPnj2aMWOGChcubL3eTp48qXHjxqlatWoOt9myZYs+/fRTubu7q0WLFipb\ntqwuXbqkzZs36+DBg5o3b57DXnbvv/++oqKi9MILL6hYsWI6fPiwVq1apZs3b9qEQEeOHNG0adNU\nokQJtWjRQt7e3rpz545+/fVXbdy40e49M+213ahRI929e1fr16+Xr6+vWrZsaX2sRo0aql69uipW\nrKjdu3dr3Lhxdr3n9u7dq/j4eA0YMMAuDKtfv77OnDmjqKgo+fv7O/8kAwByHcETAORzZrNZS5cu\nTXcukISEBIfLZ86cqQoVKtjt6+OPP9a2bdvUt29f1alTx267s2fPavHixdZv1YcNG6YhQ4Zo7dq1\ncnd314IFC1SlShVJ0siRIzV69Ght3bpVw4cPtwsfzp8/r549e9qEUk2bNtVHH32kiRMnys/PT//6\n17+sYU+nTp301ltvadWqVU5NMms2mxUbGytfX199+umn1hvqV199VUOHDtW6des0ZMgQubq6Snr4\nLX9wcLAqV66s+fPnW2+KRo0apT//+c+KjY1V+fLlMz2uJDVr1kzFixfX4cOHNX36dAUGBqp27dqq\nWLHiY8+FExMToyVLlljL9fLLL2vYsGGaP3++SpUq5fB1WbNmjQYMGGA9x6xasmSJ3XVy//59TZ06\nVUFBQerVq5fDHl3Xr1/XkiVLHM63k5YluNi6datcXFzsbmolqXfv3goJCVFwcLBdCLJlyxaZzWZr\nr6/MWHqiObq2ExMTNWfOHBUqVEjz5s2zufFftGiRgoKC0n3tTp48qcGDB2vkyJFOlWPnzp06cOCA\n6tataz2m9LAHzmuvvWa3/s8//6xTp06pVatWDq/99Op5Wpab9YiICPXq1UuSdOHCBcXGxqpJkyYK\nDw+3uam3BFKNGzdOd5/OvH4W58+fV7du3fTnP//Z+jz2799fI0eOVFBQUJaDp88++8zm72LFimnU\nqFHq06ePzfKLFy9KkipVquRwP5UqVVJ4eLguXbokf39/ubi4qEePHvr222919+5deXt7a9u2bSpe\nvLg6dOggSVq8eLHi4+M1YcKELJU5raSkJM2ePVuurq76/PPPbYLDefPmaf369XbX28WLFzVnzhxV\nrFhRn332mU3vpoiICE2ePFlz5851eI1cu3ZN33zzjXVerJEjR2rUqFHatm2bRo8ebR0yt2nTJpnN\n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\npCQ999xzmZ5Ly5Yt5eHhoZ07d9rNW7d06VKHPwzRp08fubm5af78+daeWmmlpKQ4DE6z4vjx4w7f\ntyw9sDLr9WmZP+23337LcL327durRIkSWrVqlU6cOKGmTZtm+KuhZ86ckZS33zMBAI4x1A4AngKP\nfsvfqVMnrVq1SnPnztUPP/wgHx8fXb58WYcOHVLr1q0VFhaWSyV1jlG9hPz8/NSjRw9t2rRJw4cP\nV+vWreXm5qaDBw+qRIkS8vLycrrHy4ULFzR//nx5eHioQYMG8vHxkaurq2JiYnTo0CHdvXtXdevW\ntfvp9/TkRs+o3r17a+vWrXrvvffUtm1beXp66pdfftHRo0cVEBCQ7nXyOGX19/dXdHS0pkyZooYN\nG6pQoULy9fXViy++aLNer169dOzYMd28eVP9+vVL91feMjqOyWRSVFSU3RDHYsWK6a233tJHH32k\ncePGKSAgQJ6envrxxx/13//+V35+fjp+/PhjTVr96HPSvn17hYWF6cCBAxoxYoRatGih+/fva9++\nfapdu7auXr1qs/65c+f07rvvqnbt2qpSpYq8vLx0+/Ztff/993rw4IEGDRqUpedgw4YNunXrll1v\nNn9/f2vQmJX5nZx9/bLrwoUL+vOf/6z69evLx8dHZcqUUUxMjMLDw3Xz5k1VrFhRkydPtttuwoQJ\nGjdunL744gtFRESoSpUqOn36tCIjI1W5cmWNGjUq3WP+8ssvWr58ud544w2VK1fO5rGBAwdq7ty5\neuutt1S7dm3t2LFDxYoVc6peFy1aVJMmTdKMGTP01ltvqV27dvL09NTJkyf1yy+/qGHDhnYhUpUq\nVTR58mT985//1PDhw9WsWTP5+Pjo/v37un79uk6ePKkyZcrom2++sdkuK3Xyiy++UGxsrOrXr69y\n5crJzc1NP/30kyIjI1W+fPlMw17LLyGePHlSH3zwgSpVqiQXFxe1bNnSZlisu7u7OnfubA3hM5ur\nLSoqSsWKFcuxX1kEADw5BE8AUMCZTCa7sMTLy0v/+te/tHDhQuuvrD377LOaMGGC/P39HQYKjvbj\nzGOWx7Na5owec/S4s8sy28/EiRNVpUoVBQcHKzg4WKVKlVLr1q01cuRIvfzyy5n+UpVFx44dVbx4\ncR07dkznz5/XiRMnlJSUZB2+FBAQoO7duzv1i2GP+9xn9rpktm61atU0Z84cff311zp06JBSU1Pl\n6+urGTNmqHjx4lm+TtKu86ihQ4cqISFBBw8eVFRUlMxmszp16mQXXLRo0UIlS5ZUfHz8Y00qXq5c\nOfn7++vw4cNKSkqymyenQ4cOKlmypJYtW6bdu3erUKFC8vPz07x58zR//nxJjid5z0h6z8l7772n\nlStXKjQ0VBs2bJC3t7e6du2qoUOH2s2pVatWLb3yyis6fvy4jh49qvj4eJUpU0a1atVSv3791KxZ\nM6fL06hRI2t5Hp3Dyd/fX4sXL5bJZEp3fqfsvH7p7c/Z69THx0fdu3fXmTNndPDgQSUkJKhIkSKq\nXLmy+vXrp379+jmc+6hixYpasGCBFi9erKNHj+rw4cPy8vJS//79NWzYsHQnPn/w4IH++c9/phsS\n9+vXT4mJidq4caN++ukn+fr6auzYsTY9rjLStm1bffLJJ1q6dKl2796twoULq2HDhpo3b55Wrlzp\ncChmx44d5evrqzVr1uiHH37Q0aNHVbRoUXl7eysgIEDt2rWzWT+r789DhgzRvn379NNPPyk8PFwu\nLi4qV66chgwZov79+9s8V+nte9q0aZo/f76OHDmiXbt2SXo4/9Wj87F17dpV69evl5eXl1q0aJFu\nGa9evaozZ86oe/fuWQ6bAQC5zxQWFpZ3J5cAACCPuHTpkl599VUFBgbqnXfeye3iPLUuX76soUOH\nqkGDBvr8888fax/79+/Xu+++qylTpliHvGUmNTVVgwcPVmpqqtauXftYxwVga8uWLZo1a5aGDh2a\n4a8ALlu2TN98840WLFjg9LxjAIC8gzmeAABIIy4uzm5S3N9//11z586V9PCnxpF71qxZI0nq27fv\nY++jVatWqlWrltasWWM3BCkhIcHup+jNZrNWrFih69evp/tT7wCyJjU1VevWrZObm1uGvRd///13\nbdiwQa1atSJ0AoB8iqF2AACksW7dOu3atUuNGjWSp6en4uLiFBERoRs3buiFF15Q27Ztc7uIT53r\n169rx44dunTpkkJDQ+Xr66uAgIBs7fO1117TpEmTtGfPHpt9nTp1SjNmzLBOdJyUlKRTp07p/Pnz\nKlu2rP74xz9m67jA0+7kyZM6fvy4IiMj9csvv6hv377y9vZOd/3vvvtOCQkJGjNmzBMsJQAgJzHU\nDgCANCIiIrRmzRqdO3dOd+7ckZubmypVqqQOHTqof//+Ts3JhJwVGRmpSZMmqUiRImrQoIEmTpyY\n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\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10ba10250>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 2 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "However, when we consider grids with 4 pixels (thus with 25% density), something begins to look strange:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "grids = [[1] * 4 + [0] * 12,\n", | |
| " [0] * 12 + [1] * 4, \n", | |
| " [1,0,0,0] * 4,\n", | |
| " [1,1,0,0] * 2 + [0] * 8,\n", | |
| " [1,1,1,0] + [0,0,0,1] + [0] * 8]\n", | |
| " \n", | |
| "show_grids(grids, sim_fn=hamming_similarity,\n", | |
| " title='Hamming Similarity (grids with 25% density)')" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAEmCAYAAAAjslpVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt8jGf+//H3JCEk4pCkztUizkVEqTpUxLl1Kq1S1KJs\nt7QOu6jqdnfZtqoO1aItuzSoOPanKIlTVJ1JGqRO4auNU0oTh4RUIub3h8fMZswkGZJbJvF6Ph59\n7Lrnnvu+7pn7M/fc71zXNabIyEizAAAAAAAAgDzmlt8NAAAAAAAAQOFE8AQAAAAAAABDEDwBAAAA\nAADAEARPAAAAAAAAMATBEwAAAAAAAAxB8AQAAAAAAABDEDwBAAAAAADAEARPAAAAAAAAMATBEwAA\nAAAAAAxB8AQAKPDCw8MVEhKi8PDw/G5KrsTExCgkJEShoaGG7SMhIUEhISH6+OOPbZZPmTJFISEh\n+u233wzbt+Q675XltY6MjDR8X6NGjVJISMh9PSckJESjR482qEUP7kHfP1c9Hlf2sGoyNx5GG5cv\nX6727dvr3Llzhu0DAGAsj/xuAADgwVluZrdt25blOn369NGlS5cUFhamcuXKPaymPXQmk0kmkym/\nm2Fn+/bt2rBhg+Li4pSSkiIvLy+VKVNGNWrU0NNPP62OHTvmdxOtHtbr5+i96tOnj0wmk8LCwgzf\nv9ls1hdffKEnn3xSbdq0MXx/D3puuuL5LD34+5cXx5ORkaHdu3drz549OnbsmC5fvqyMjAxVrFhR\nLVu2VJ8+fVS8eHG751k+Bx0pU6aMVq9ebbMsPT1dixYt0pYtW5ScnKyaNWvqL3/5i2rUqGH3/Kio\nKI0dO1YffvihmjVrlutjzMxVzwELR+dCQkKCXn31VXXs2FHjx4/P9T569Oih5cuXa968eZo0aVKu\ntwcAePgIngCggHPmxsTVb15yq1WrVqpXr558fX3zuyk2pk2bpg0bNsjT01PNmjVThQoVZDabFR8f\nrz179ujw4cM2wVOdOnUUGhqqUqVKGdamxx57TKGhofL29rZ7zGw2G7Zfi+zeq4d1nv7444+Ki4vT\nuHHjHsr+JkyYoFu3bj2UfRktv9+/8+fP6x//+IeKFy+uwMBANW/eXKmpqdq/f78WL16syMhIff75\n5w5rqESJEurVq5fdckdB1bx587R69Wo999xzeuyxx7Rp0yaNHj1aixYtsjn21NRUTZs2Te3atcvz\n0El6ODWZG0OHDtWrr74qf39/w/bh6empF198UQsXLtTJkydVs2ZNw/YFADAGwRMAoMDz9vZ2GKTk\npyNHjmjDhg0qW7asZs+ebXdjlpGRoZiYGJtlnp6eevzxxw1tl7u7u+H7yI4rvFdr166Vp6enWrdu\n/VD2V7Zs2Yeyn4chv98/Ly8vjRo1Sh07dpSnp6d1+e3bt/X+++9r7969Cg0N1dtvv2333BIlSmjg\nwIE57sNsNmv9+vXq3Lmzxo4dK0lq2bKlRo8erU2bNqlPnz7WdefNm6f09HS99dZbeXB0BY+vr+9D\nCfzbt2+vhQsXau3atfrb3/5m+P4AAHmL4AkAHlE7d+7UDz/8oOPHj+v333+XJFWpUkUdO3bUiy++\naNd7YcqUKdq0aZOWLl2qPXv26LvvvlNCQoJKly6tLl26qH///pKkyMhILV++XL/++quKFy+u4OBg\nvfHGGypatKjN9kJCQtSwYUO9//77mjdvnvbt26fU1FRVr15dw4YNU4MGDZSamqqFCxfqhx9+0JUr\nV1SxYkUNGjTILjAIDw/X1KlTNW7cOHXq1Mm63DL8Z+HChfr6668VGRmpK1euqGzZsnrhhRfUt29f\nu9fFbDZr9erVWr9+vS5evKiSJUuqVatWGjx4sF5//XWnh4PFxsZKuttDxFFvAHd3dzVu3NhmWUxM\njMaMGaOBAwfa3CCPGjVKhw8f1ubNm7VkyRJt2rRJv//+u8qVK6fevXurS5cukqQ1a9Zo7dq1unDh\ngkqWLKnnn39eAwcOtHkv73cYTHh4uHbv3q1Tp04pKSlJHh4eqlq1qrp166b27dvbrW9p66ZNm/TN\nN99o69atSkhIUNu2bTV+/Hi798pyzBaZ50Lq2LGjhg8frpdeekl+fn765ptvHLbx3Xff1d69e/Xl\nl1/m2BsiISFB0dHReu655xz2dJGk/fv3a9GiRTp9+rSKFi2qBg0aaOjQoVq6dKk2bdpkM2w18+v5\n6quvasGCBYqJidH169c1Y8YMNWzY0Pqa3DskNj09XWFhYYqIiNDly5fl7++vdu3aWWvpXjdv3tSq\nVasUGRmpy5cvy2w2q3Tp0qpVq5b69OmT47FPnjxZkZGRWrx4sSpVqmRd/tFHH2nz5s1q1KiRpk+f\nbrO/bt26qV69epo1a5Yk+1rL6f279xy7du2a5s+frz179ig5OVmVKlXSK6+8YlO32fH391e3bt3s\nlnt4eKhfv37au3evDh065NS2snL16lXdunVLtWvXti6z/P/Mw/UOHz6stWvX6h//+Id8fHweeH9R\nUVEKDQ1VXFyczfmWnaNHj2r58uU6cuSIUlJSVKZMGT3zzDMaOHCg/Pz8bNbN/PkRFham8PBwXbp0\nSWXKlFHbtm01ePBgeXjY3hIcPnxYy5YtU1xcnK5duyYfHx+VL19eTZs2tflsslwXLDXx9ddfa9Gi\nRZKkiIgIRUREWNcdN26cfH199c4772T5+ZOWlqaXX35ZJpNJq1atsrarfPnyql27tiIjI/X222/b\nXU8AAK6N4AkAHlHz58+Xm5ub6tatK39/f924cUPR0dGaPXu2jh8/rnfffdfh87744gvFxMSoefPm\natKkiXbv3q0FCxYoLS1NPj4+WrBggVq2bKnAwEAdOHBAa9asUUZGhsOJhVNSUvTWW2/Jy8tLbdu2\n1fXr1xUZGalx48bp888/14wZM3Tjxg21aNFC6enp2rZtmyZNmqTPP/9cdevWtdvevWGZyWTS7du3\nNXbsWCUlJalZs2Zyd3fXjz/+qPnz5ystLc2uB8Snn36qdevWyd/fX127dpWHh4d2796tY8eOKSMj\nQ0WKFHHq9bUM9cnLCXH/9a9/6fjx42rWrJk8PDy0fft2zZgxQ25ubjp9+rS2bNmi5s2bq3Hjxtq9\ne7cWLVokT09PhwGbsz799FNVrVpVDRs2lJ+fn65du6Z9+/bpo48+0tmzZzV48GCHz3v//fd14sQJ\nPfPMM2rVqpVKly5t87jlvSpfvrwGDhyoVatWSZJeeukl6zoBAQEqUaKEdTLrqKgou7Du0qVL2rdv\nn2rVquXUEJyoqChJUv369R0+vm3bNv373/+Wp6engoOD5efnp9jYWI0YMULVq1fPcrsXLlzQ8OHD\n9fjjj6t9+/a6deuWTc+ge89Ns9msf/3rX9q9e7cqVaqknj17Ki0tTRs3btTp06fttm82mzVu3Dgd\nPXpU9erVU9OmTeXu7q5Lly7p0KFDatCgQY7HHxQUpMjISEVFRdkET9HR0ZLuhhlpaWnWm/pDhw7p\nzp07dq955uPJ6f3LLDk5WW+99ZaKFCmi4OBgpaena/v27Zo6dapMJlOu5ztzd3e3+d97paWlafPm\nzfrtt99UrFgxBQQEqEGDBnJzs/2tnVKlSsnT01MnTpxQ165dJUknTpyQJGvgeOvWLX3yySdq1aqV\nnnvuuQdu8w8//KBJkyapaNGi1vPtyJEjGjFihKpVq+bwORs2bND06dPl6emp5s2bq2zZsjp37py+\n//577dmzR3PmzHHYy27y5MmKjY3VM888Iy8vL+3bt0/Lli3TlStXbEKg/fv3a8KECSpRooSaN28u\nf39/Xb9+Xb/++qvWrl1r95mZ+dwODAzUjRs3tHr1agUEBKhFixbWx2rUqKHq1aurYsWK2r59u0aM\nGGHXe27Hjh1KTk5W79697cKwp556SsePH1dsbKyCgoKcf5EBAPmO4AkACjiz2azQ0NAs5wJJSUlx\nuHzKlCmqUKGC3bY+/vhjbdq0SS+++KLq1Klj97y4uDgtWLDA+lf1gQMHqn///lq5cqU8PT311Vdf\nqUqVKpKkIUOGaOjQodq4caMGDRpkFz6cPn1aXbt2tQmlnn76aX300UcaPXq0GjZsqM8++8wa9nTo\n0EEjR47UsmXLnJpk1mw2KzExUQEBAZo+fbr1hvq1117TgAEDtGrVKvXv3996o3r48GGtW7dOjz/+\nuObOnWu9KXr99df117/+VYmJiSpfvnyO+5Wkpk2bytvbW/v27dPEiRMVEhKi2rVrq2LFig88F87l\ny5e1cOFCa7tefvllDRw4UHPnzlWpUqUcvi8rVqxQ7969s7wZz8nChQvtzpPbt29r/PjxCgsLU7du\n3Rz26Lp06ZIWLlyokiVLZrt9S3CxceNGubm5ORwK1b17d4WHh2vdunV2IciGDRtkNputvb5yYumJ\n5ujcvnnzpmbOnKkiRYpozpw5Njf+8+fPV1hYWJbv3ZEjR9SvXz8NGTLEqXZs3bpVu3fvVt26da37\nlKRBgwbpjTfesFv/zJkzOnr0qFq2bOnw3M+qzjOz3KxHR0dbew3Fx8crMTFRjRs3VlRUlM1NvSWQ\natSoUZbbdOb9szh9+rSef/55/fWvf7W+jr169dKQIUMUFhaW6+Bp48aNku7W3r1MJpOSkpL00Ucf\n2SyvUKGCxo0bp4YNG1qXubm5qUuXLvr2229148YN+fv7a9OmTfL29la7du0kSQsWLFBycrJGjRr1\nwO1NTU3VjBkz5O7urlmzZtkEh3PmzNHq1avtzrezZ89q5syZqlixoj799FOb3k3R0dEaO3asZs+e\n7fAcSUhI0Ndff60SJUpIuvv5/Prrr2vTpk0aOnSodcjc+vXrZTabNXPmTLvw6/r163bbzXztCQwM\nVPny5bV69WpVr17d4fnQrVs3ffnll9brTGbr16+XyWSyBn6ZWXqdHTlyhOAJAAoYt5xXAQC4utDQ\nUC1atMjhfzdv3nT4nHvDBOnuzVnPnj0lSQcPHnT4vAEDBtjc7Fj+Kn7r1i316NHDGjpJUpEiRdSm\nTRvdvn1b8fHxdtsqVqyY3U1227Zt5ebmptTUVGvvCIv69eurXLlyDnuEZMVkMumtt96yGZpRunRp\nNW/eXDdu3NDZs2etyy3DQvr372/zl3gPD48ch77cy9/fX5MnT1bFihW1Z88effDBBxowYIC6dOmi\n8ePHa/Pmzbpz5859bXPYsGE27apQoYKeeuop3bx50+H78uyzz+ratWtKTEy8r/1k5ug88fDwUPfu\n3ZWRkWENJ+41ePDgHEMnZ9WqVUu1atXSrl27lJSUZF2ekZGhDRs2WHvMOePChQuS7k6yfq9du3bp\nxo0bateund0N973nxL18fX2dmj/IIjw8XNLdUDPzOe7j46MBAwZk+byshhhZwoTsVKhQQeXKlbOZ\nW8zy/g0aNEhubm4272d0dLSKFy/usHfhgyhWrJiGDx9uE6Y88cQTqlevns6ePas//vjjgbe9a9cu\nrVu3TmXLlrWZg8miU6dOmjFjhr799luFh4frv//9r7p27aqEhAS98847dp8pw4YNU58+fXT8+HFt\n3LhR1apV07Rp0+Tn56djx45p9erVGjFihEqVKqWvv/5avXr1Urt27fTnP//ZGm7mZOfOnUpOTlbb\ntm3teqv96U9/kpeXl91z1q5dq4yMDI0YMcJuSF1QUJCaN2+u3bt3KzU11e65w4YNszlPihUrpnbt\n2slsNuvkyZN26zs61/Kipjt37qyiRYtq/fr1Nsvj4+N1+PBhBQYG2vTIs7DUrKWGAQAFBz2eAKCA\nM5lM2rp1a5aP9+nTR5cvX7Zbfu3aNS1fvlz79u3ThQsX7H51yzLv071q1aplt8xyA+RoqI+lN4yj\nNlSuXNlunh03NzeVKVNGaWlpDnsX+fv7W4e9OMPb21sVK1a0W24ZipKcnGxdFhcXJ5PJ5HAYVp06\ndeyG5OQkMDBQixcvVmxsrA4dOqRTp04pNjZWBw4c0IEDB7Rp0yZ9+OGHTg3fM5lMuXrtH3SC699+\n+01hYWGKjo7W5cuX7c4TR6GWyWSymR8nL3Tv3l1Tp07Vxo0b1a9fP0nSvn379Pvvv6t79+4qVqyY\nU9u5du2aTCaTwzl54uLiJDkehle8eHEFBARkOX9Q9erV7YYGZScuLk5ubm4O9xUYGGi37Mknn1RA\nQIC2bdum3377TS1atFD9+vVVq1at+9pvUFCQNm7cqFOnTikgIEA//fST/Pz8VLduXdWsWdMaPF29\nelVnzpyxDunLC47qXbpbi2azWcnJyU6/j5nFxsbq3//+t7y8vPSvf/3LYQh3byhYtWpVjR49WsWL\nF9eKFSsUGhpq00uoSJEiGjp0qF3gnJ6ero8//ljPPPOM2rVrp1WrVmnRokUaOHCgnnrqKS1ZskTj\nx4/XkiVLVKZMmWzbbTnfMve2svD29lZAQIAOHz5ss/znn3+WdHc+uGPHjtk978qVK7pz547Onj1r\n85mQ1eeHJczJ/DnYvn177dy5U2+++abatGmjhg0bqn79+g7D2gfh4+OjNm3aKCIiQj///LPq1asn\nSdYgytEcXtL/hi9fvXo1T9oBAHh4CJ4A4BGUkpKiv/zlL0pISFCdOnXUqVMn+fj4yN3dXSkpKVq9\nerXS0tIcPtdRrw/LjWl2j92+fdvusax6abi7u2fZu8Td3V0ZGRmOD8yB7PYhyabX0Y0bNyTJ4Q2j\nu7v7A/213xJkZQ4YDh48qClTpigqKkrfffedzbw42XHUA+JBX3tnXLhwQX/5y1+UkpKihg0bWocP\nurm5KSEhQREREVmeJ3n9S1chISH64osv9P3331uDJ8uNqqNhOTlxNDQ1u/c/u+XS/R9vSkqKSpUq\n5TDUcbQtNzc3zZgxQ6GhodqxY4fmzZsn6e450aFDBw0dOjTLydIzswRP0dHRqlatmmJiYtSsWTNJ\nd4fULV++3Drfm2X9vHI/teisn3/+We+8847c3d318ccfOwxXstO1a1etWLHCLuDJyqJFi5SUlGSd\nhH358uVq3LixNdh6/PHH1bdvX61Zs0aDBg3Kdls5nW+OzgPLULfly5dnuV2TyeSw91h2nxGZX/tW\nrVrpww8/1IoVK7Rx40atW7dO0t1we+jQoQ7n/Lpf3bp1U0REhNatW6d69eopLS1NERERKlOmjFq2\nbOnwOZY2PuhQZQBA/iF4AoBH0Pfff6+EhAS7X0+T7t7IrV69Op9alr8sN2ZJSUl2Q8wyMjJ0/fr1\nB+qRca+nn35agwcP1rRp0xQTE+N08PSwrVy5UsnJyRo/frzd/Dtbt261+cUqoxUtWlSdOnXSypUr\ntX//fj355JPat2+f6tatm+UkzI6UKlVK8fHxSk5OtgtqLMHelStXHD43q+UPokSJErp+/boyMjLs\nwqfMwwnvfc7w4cM1fPhwnT9/XocOHdK6deu0Zs0apaSkZPmDAJlZ5muKiopSYGCgkpOTreFSUFCQ\nwsLC9NNPPzk1v1N+O3z4sCZMmGANnRzN25UTSy8aZ4b5nTp1SsuWLdPo0aPl5+enGzduKDEx0ebX\nHcuWLatSpUrp119/zXF7ls+brM4rR+eBt7e3TCaT1q9f71TQ+KCaNWumZs2a6datWzp69Kj27Nmj\ntWvXasKECZo/f76eeOKJXG2/Tp06qlGjhnWS8b179yo5OVl9+/bNsoedpVeW5T0DABQczPEEAI+g\n8+fPS5LDX2PK7U+RF2Q1atSQ2WzWkSNH7B47evToA/XIyIrlpjGrSeFdwfnz52UymR7KeeLu7p7j\n69utWzfrTff9TipuYRl26Wjop2VokqPeL6mpqTp16lSe9baoWbOm7ty54/BcyzwHU1YqVaqk559/\nXrNmzVKxYsW0e/dup/br6+urJ554QocPH9b+/fsl/a9X01NPPaUiRYooOjpaP/30k3x8fFSjRg2n\ntuvM+5eXoqOjNX78eHl4eOiTTz55oNBJulvXkuO5zDLLyMjQxx9/rMDAQD3//PM2j6Wnp9v8+97h\nqFmxnG+O3u+UlBSH51u9evVkNpsf2ue0p6enGjVqpDfffFP9+vXT7du3tW/fvmyfYxmSnNP50L17\nd2tPp+wmFbew1KyjodMAANdG8AQAjyDLTda9NzxxcXFaunRpfjTJJXTo0EGStGTJEuswGOnujeV/\n/vOf+9rW/v37tWPHDofDAlNTU629yhzN7+IqKlSoILPZbHee7N+/X99//32e7qtkyZK6cuVKlkP3\npLthS+PGjbVnzx6tW7dOPj4+CgkJua/9NGjQQJIczo/TokULeXt7a8uWLXaTTS9evNjmnMitTp06\nSZL+85//2Bzz9evXtXjxYrv1ExISHE6qfP36daWnp8vT09PpfTdq1Ei3bt3St99+q8qVK1vn7vH0\n9FS9evW0fft2Xbx40eFcU1lx5v3LKwcOHNC7776rYsWKafr06TkOr4uPj3c42XZCQoI+++wzSbLp\nteTI0qVLdfHiRf3tb3+zLvP29pa/v7/27dtnrfOYmBilpqbqySefzPE4WrRoIR8fH23dutVu3rrQ\n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\nHau4uDjrOveOTU9ISFBISIhWrFihb7/9Vn379lXnzp01duxYXbp0SXfu3NGiRYv08ssvq1OnTvr7\n3/+u5OTkh3pcP/zwg9zd3dW1a1frsqJFi+r555/X0aNHdfnyZae2YzabdfPmTWVkZDh8/MaNG4qK\nilL79u1thtV17NhRxYsX1/bt263Ldu3apYyMDPXo0cNmG927d9fly5f1888/W5ft2LFDtWvXtl4s\nJalKlSoKCgqy2SZADTu2du1amc1mDRo0SNLdv36azfYd0EuVKmUTOlm0bNlSkhQfH+9w+6mpqUpP\nT89y/9QwnEH9Om/r1q0qXry4WrRoYfeY2WxWRkaGUlNTs3w+12AYgRp2zNPTU0WKFJG3t7fNcl9f\nXxUrVizb5yYmJiomJkatWrVSkSJFHK7DNdgxejwBcFkzZszQjh071LNnTz3xxBO6du2aYmNjFR8f\nrxo1aljXczQ2ffPmzcrIyFCvXr10/fp1LVu2TJMmTdJTTz2ln3/+Wa+++qrOnz+v//f//p+++OIL\njRs3Ltu2pKen6+bNm061u1SpUtk+furUKVWuXNlujiXLBejUqVN67LHHctzPmDFjlJqaKg8PDzVp\n0kRvvvmmTe+H//u//1NGRobNhU2SPDw8FBAQYPPF49SpUypevLiqVKmSZZvq16+vO3fu6PTp03rh\nhRfs2lO7dm0dPHhQqampdseGRxM17FhUVJSqVKmiPXv26Msvv1RiYqJ8fHzUvXt3DRo0KMf5NpKS\nkrJsZ2hoqL788kuZTCbVrFlTQ4YMsfZslEQNw2nUr3OuXr2qgwcPKiQkRJ6ennaPnzt3Tp07d9bt\n27dVpkwZvfDCCxo4cKBNTxOuwTACNezYiy++qO3bt2v69Onq3bu3ihYtah3G/sYbb2S7723btsls\nNmfZq4lrcNYIngC4rL1796pLly45XgQc9RRITEzUkiVL5OXlJenuB/3SpUt169YtffXVV9Yu61ev\nXtWWLVs0ZsyYbMe3b926NcsJvTMzmUzaunVrtuskJibKz8/PbrllWWJiYrbPL1asmDp16qRGjRrJ\ny8tLJ06c0MqVKzVixAjNmzfPerG13Jz6+vrabaNMmTKKjY21adO9k5I7alNycrJu377tsP2W/SQm\nJqpy5crZHgMeDdSwY+fPn5e7u7umTp2qvn37qnr16tqxY4eWLFmijIwMDR06NMvnpqena9WqVapQ\noYJq165tXe7m5qann35arVq1kr+/vy5cuKCVK1dq/Pjx+uCDD9SsWTNJ1DCcR/06JzIyUnfu3HF4\nI1qpUiUFBQWpWrVqSk1N1Q8//KAlS5bo3Llzev/9923axDUYeY0adiwgIEAzZszQu+++qw0bNki6\new0dOXKkTS8qR7Zs2SI/Pz8FBQXZLOcanDOCJwAuy8fHR8eOHcvyApOd4OBg68VSkvUGrX379ja/\nBFW7dm1t27ZNv//+u91E3Zk1bdpU06ZNu88jcCwtLc1h91zLpOC3bt3K9vnBwcEKDg62/rtFixZq\n0qSJRo0apSVLlmj06NE228k82XjmfWXez61bt5xqk+V/c9N+PDqoYccsQ+uGDRumPn36SJJatWql\n5ORkffvtt+rfv3+Wf+2cNWuW4uPjNWXKFJvXoWzZsnZf6jt06KA//elP+uKLL6xfeqlhOIv6dc7W\nrVtVunRpm14NFmPHjrX5d/v27TV9+nR9//33eumll1S3bl3rPrkGI69Rw47Fx8drwoQJKleunN54\n4w0VLVpUW7du1WeffaYyZcpYh7Pf6+zZs4qLi9PLL79s9xjX4JwRPAFwWX/+8581ZcoU9e7dWzVr\n1lSzZs3UoUMHp35qtGzZsjb/tkwemNXy5OTkbC+Yvr6+DnsOPYiiRYs6HPudlpYmSQ676uekfv36\nqlOnjqKioqzLLNuxbPfefWUex+7p6Znlepm3ZfnfvG4/CidqOOvnp6WlqW3btjbL27Rpo/3791uH\n1dxr2bJl2rBhgwYPHqymTZvm2E4fHx916tRJYWFh+v333+Xv708Nw2nUb84uXLigo0eP6sUXX7S5\nGc9O79699f333ys6OtoaPHENhhGoYce++OILubu7a+bMmdbvwq1bt9aYMWM0a9YsPfvssw4nXd+y\nZYskxz8i4AjXYFsETwBcVnBwsBo0aKAff/xRBw8e1LJlyxQWFqZJkybleNOV1RfArJY76macWVpa\nmlJSUpxqd04XVj8/P/3+++92yy1dg+/3r1IW/v7+Onv2rF07LEPuMktKSrLZj5+fn2JiYnJsk4+P\nj4oUKeKwG7NlPw/afhQ+1LBjlm749w6tsfzb0USt4eHhmj9/vrp166b+/ftnu/3MLENvk5OT5e/v\nTw3DadRvzixDgpy9EZVsazJzm7gGI69Rw44dOXJEzZs3t5tI/Nlnn1VMTIx+++03VaxY0e55W7du\nVZUqVWzmx8oJ1+D/IXgC4NJ8fX3VvXt3de/eXVevXtWwYcO0ZMkSp/7an5e2bduWZ2PTAwICFBMT\no5s3b9p0Yz527Jj18Qdx8eJFlS5d2vrvqlWryt3dXcePH1fr1q2ty9PT03Xq1CmFhITYtGnDhg36\n9ddfbX5F6942ubm5qVq1ajp+/Ljd/o8dO6aKFSsWygkR8eCoYXs1a9bU+fPndfnyZZu/PFu+SGeu\nY0nauXOnPvnkE7Vq1UqjRo3K8Rgyu3jxoqT/TdZKDeN+UL/Z27p1qypVqqQ6deo4/RxLTWauc67B\nMAo1bC8jI8PhL0Lfvn3b+vi9jh49qgsXLmjw4ME5HkNmXIP/h+AJgEu6c+eObt68ae3CK939kubn\n52fXPTWnX4DKC3k5Nr1169ZasWKF1q9fr969e0u6+5eg8PBw1a1b1+aXOJKSkpSSkqJKlSpZu/1e\nvXrV7sZ07969iouLU69evazLSpQoocaNG2vLli167bXXrBeyTZs26Y8//rAJo1q0aKG5c+fqu+++\n09tvvy3p7l+v1q1bp8cee0xPPfWUdd3nnntO8+fP14kTJ6y/IBIfH6+ffvpJr7zySp68Rij4qOG7\nHNVwmzZtFBkZqQ0bNmjIkCGS7r5e4eHhKlmypGrWrGl9/qFDhzR58mQFBgbqvffey7JN165ds/sl\noMuXL2vjxo2qXr26zV+QqWHkhPq9y1H9WsTFxSk+Pl6vvfaaw/3cvHlTHh4eNvMsms1mLV68WCaT\nSU2aNLEu5xqMvEYN3+WohmvUqKGDBw/q+vXrKlmypKS7YdP27dvl5eWVZW8nSXZD5C24BueM4AmA\nS7p586ZefvllBQcHq1q1aipevLiioqJ04sQJvfnmmzbr5tS9Ny/k5dj0OnXqqHXr1po/f76uXLmi\nihUrKiIiQpcuXdL48eNt1p03b542bdqksLAwlStXTpI0YsQI1ahRQzVr1pS3t7fi4uK0ceNGlS1b\nVv369bN5/pAhQzRixAiNHDlSXbp00eXLl7Vy5Uo1adLE5kvvY489pl69emn58uW6ffu2atWqpZ07\nd+rIkSN67733bL6U9OjRQ99//70mTJigV155Re7u7lq5cqV8fX2tXwAAavguRzXcsmVLBQUFaenS\npbp27ZqqVaumXbt2KTY2Vn/961+tvwyUkJCgiRMnys3NTc8995wiIyNttl29enVVq1ZNkvTll1/q\nwoULCgoKkp+fnxISErRu3TrdunVLI0aMsHkeNYycUL93Oapfi5zmezl58qQmT56stm3bqmLFikpL\nS9OPP/6on3/+WV27drXplcE1GHmNGr7LUQ33799fEyZM0JtvvqkuXbqoaNGi2rZtm+Li4jRkyBC7\nkDkjI0ORkZGqW7dulvNjcQ3OGcETAJdUrFgx9ejRQwcPHtSPP/6oO3fuqHLlyho1apS6detmXc9k\nMjn9l5qs1nsYf+m514QJE7RgwQJt3rxZycnJql69uj788EO7CYUdHV9ISIj27t2rgwcP6tatW/Lz\n81PXrl01cOBAu55QNWrU0LRp0zRv3jzNnTtXXl5eev755x3+XPuwYcPk4+OjdevWKTw8XI8//rgm\nTpxoMyRPkooXL66ZM2dqzpw5Wrx4scxmswIDAzV8+HC7v/bg0UUN/69tjto3efJkLViwQJGRkQoP\nD1eVKlU0ceJEm7+mJiQk6ObNmzKZTJo1a5bddl977TVr8NSkSROtXbtW3333nZKTk+Xj46PAwEAN\nGDDAbtgBNYycUL//a5uj9t25c0eRkZGqWbNmlj97Xr58eTVo0EA7d+5UUlKSTCaTnnzySY0ZM0Zd\nunSxW59rMPISNfy/tt3bvqZNm+qjjz7SN998o9DQUGVkZKhKlSpZ1mZUVJSuXbumAQMGZNkersE5\nM0VGRhofcQIAAAAAAOCR49zvfgIAAAAAAAD3ieAJAAAAAAAAhiB4AgD8/3bsWAAAAABgkL/1KPYV\nRgAAAAvxBAAAAMBCPAEAAACwEE8AAAAALMQTAAAAAAvxBAAAAMBCPAEAAACwEE8AAAAALMQTAAAA\nAAvxBAAAAMAibMyKTCTZXxYAAAAASUVORK5CYII=\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10bd6ee50>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 3 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "It seems that there is no way to create a grid with 4 pixels that is less than 50% similar to the first one (you are free to try). But intuitively, there would also seem to be at least a certain sense in which the second grid above could be considered completely dissimilar from the first (i.e. 0% similar), in virtue of the fact that none of the 4 pixels of the first grid can be found in the second. Let's look at what happens if we consider another function, the Jaccard similarity:\n", | |
| "\n", | |
| "$$ J = \\frac{|s_1 \\cap s_2|}{|s_1 \\cup s_2|}$$\n", | |
| "\n", | |
| "which in our context can be interpreted as: the number of pixels shared by both grids divided by their total number of pixels. This again is very easy with Numpy:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def jaccard_similarity(g1, g2):\n", | |
| " s1 = set(np.argwhere(g1.flatten() == True).flatten())\n", | |
| " s2 = set(np.argwhere(g2.flatten() == True).flatten())\n", | |
| " return len(s1 & s2) / len(s1 | s2) " | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [], | |
| "prompt_number": 4 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "This similarity function produces results that are somewhat more intuitive on the previous set of 4-pixel grids:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "show_grids(grids, sim_fn=jaccard_similarity,\n", | |
| " title='Jaccard Similarity (grids with 25% density)')" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAEmCAYAAAAjslpVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XlcVPXi//H3CIq7Bu645L6ihPuCKJWihpq54Xbdu5pe\nsx6tVte81xYr9baYpZWWiVchSzDBXFFzScmdi2KoieICiiACivz+8Md8HWfYhBMDvp6Phw/1zFk+\nn5nzmXPOez7nc0xbt27NEAAAAAAAAFDAShR2AQAAAAAAAFA8ETwBAAAAAADAEARPAAAAAAAAMATB\nEwAAAAAAAAxB8AQAAAAAAABDEDwBAAAAAADAEARPAAAAAAAAMATBEwAAAAAAAAxB8AQAAAAAAABD\nEDwBAB5KsbGx8vb21vvvv2/YNpYtWyZvb28dPHjQsG2EhITI29tbISEhFtOHDx8uPz8/w7ab6b33\n3pO3t7cuXrxo+Lays3z5cvXq1UuXL182fFve3t6aOXNmruc/ePCgvL29tXz5cgNL9WAe5POz5/rY\ns7+qTebHX1HG1157TaNGjVJ6erqh2wEA2A/Hwi4AAOCv4+3tLUnasmVLIZekaEpLS9PatWu1bds2\n/fnnn0pLS1PFihXl4uKili1bysvLS23atDHPbzKZzH+MlNU2jN5uVtuOjY3ViBEj1Lt3b73yyiuG\nlyEuLk6rVq1Snz59VLVqVcO3J/017+1fobA/v+vXr2vHjh3as2eP/vjjD8XFxcnR0VENGjSQj4+P\n+vTpk2X5stKzZ0+9+eabFtPi4+P12WefKTw8XCaTSe3atdPUqVNVuXJlq+W/+uor/fjjj1q2bJlc\nXFwKpqL/n73vN7b2h5CQEM2bN08vv/yyfHx88r2NsWPHasqUKfrxxx/1zDPP5Ht9AAD7R/AEAA8Z\ne7/wsVc3b97UjBkzFBUVJRcXF3l5ecnZ2Vk3b95UVFSUgoODlZSUZBE8DRw4UN7e3qpWrZph5fL0\n9FTLli3l7Oxs2DayM2nSJI0YMUJVqlQplO1L0vfff6+0tLS/rDfJ8uXLVbp06b9kW0Yr7M9v27Zt\nWrhwoVxcXPTYY4+pWrVqio+P144dO/Thhx9q3759mj17ts1lGzVqpK5du1pNr1+/vsX/79y5o9df\nf11nzpyRj4+PUlJS9MsvvygmJkaffvqpxXdiVFSUVq1apZkzZxZ46FQUzJ8/P8vXCurY0bRpUz32\n2GNasWKF+vfvr5IlSxbIegEA9ovgCQCAXAgICFBUVJTat2+vd955Rw4ODhavJyUl6ezZsxbTKlWq\npEqVKhlarnLlyqlcuXKGbiM7zs7OhRZ6SVJKSoo2btyoVq1aqUaNGn/JNuvUqfOXbOevUNifX506\ndTR37lx17tzZYvrEiRM1depUhYWFKSwsTN27d7datmHDhvrb3/6W4zb+97//6cSJE3rttdf05JNP\nSpJq1Kih5cuXKzIyUs2aNZMkpaen6/3335e7u7v69u1bALUremrWrJnlaxkZGQW2nSeffFLz5s3T\n9u3b9cQTTxTYegEA9ongCQCgkJAQ/frrr4qKilJ8fLwcHR1Vv3599e/f33yhdr/r169r9erV2rVr\nl2JjY+Xg4KAaNWqoY8eOGj16tEWPkNzOGxkZqY0bN+rgwYO6cuWKUlJSVK1aNXXp0kWjR49W+fLl\nrcqdeQuIs7OzVq5cqaioKCUnJ5tvJ0xOTtY333yjbdu26fr166pRo4aeeuopmz0lsnPs2DFJUv/+\n/a1CJ0kqX768WrRoYTFt2bJl+vbbb7VgwQKLnlDe3t5q06aN3nrrLX355Zfau3evbt68qYYNG2ry\n5Mlq3bq1bt68qW+++Ubbt2/X1atXVatWLY0bN05eXl5Zvgc53QZz48YNBQUFad++ffrzzz+VkJCg\ncuXKqUWLFho5cqRV+e8t65tvvqmvvvpK+/btU3x8vF5++WX17t1b7733njZu3Ch/f39Vr17dXGdJ\nCg0NVWhoqHldmZ/Tq6++muVtXGlpaRoyZIhMJpMCAgLk6Jj9qcr27duVnJysnj172nw9IyNDgYGB\nCg4O1oULF1SxYkV5enpq/Pjxmjhxokwmk/z9/W2+n1ntU5nvyYIFCyy2FR8fr6VLl2rPnj1KTk5W\nnTp1NHjwYFWvXt1m2c6fP6+VK1fq999/V1xcnJycnFSlShW1atVKEyZMUMWKFbOt++DBg2UymbRm\nzRqL6cOHD9elS5c0btw4jR492jx97969eu211zRmzBiNHTtWkvL8+d2/j0VFRWnp0qU6evSo0tPT\n1bRpU02aNEktW7bMtuyZHnvsMZvTnZ2d5evrq6+++kqHDh2yGTzlVub4VZkB073/vnjxovnfK1eu\n1IULF/Tvf//7gbclSWvXrtVPP/1ktb9lZ/PmzQoODtbJkyd169Yt1axZU0888YSGDRtm1SMoc/+b\nPXu2lixZot27dysxMVGurq4aNmyYze+BkJAQBQcH69y5c7p586YqV66sevXqqU+fPhZtZ/jw4RZt\n4vnnn9fhw4clSfPmzdO8efPM865cuVJBQUHy9/fXK6+8ot69e1ttNzIyUlOmTFHnzp01d+5c83Qv\nLy999NFH2rBhA8ETADwECJ4AAFq4cKHq16+vNm3ayMXFRQkJCdq7d6/effdd/fnnn1YXTRcuXNDM\nmTN16dIlNW3aVAMGDNCdO3f0559/KiAgQP379zeHSXmZd/369dq5c6fc3d3Vvn173blzR5GRkVqz\nZo327t2rzz//XGXKlLEqf1hYmPbt26eOHTtqwIABio2NlXQ3xHjxxRcVGRmpRo0aqVevXkpMTNR3\n332X5wG/M0OAP//8M8/vry1JSUmaPn26ypYtq8cff1zXr1/X1q1b9fLLL+uTTz7R/PnzdePGDXXt\n2lW3bt3Sli1bNGfOHH3yySc2A6Lc3AZz5swZff3112rTpo26dOmi8uXL6+LFi/r111+1b98+zZ07\nVx06dLBa7vr163ruuedUtmxZde/eXSVKlNAjjzxic9vu7u66ceOGAgMDrW6Faty4sRo2bKhatWpp\n27ZtmjZtmlVvrbCwMCUmJmro0KE5hk6SdODAAUmSm5ubzdcXLlyooKAgValSRb6+vnJ0dNSvv/6q\niIgIpaenZ3mbT1b7lK06S1JCQoKmT5+uCxcuyM3NTW5uboqLi9OCBQvUtm1bq/XHxcVpypQpSk5O\nVqdOndSjRw+lpaXp/Pnz+uWXX/T000/nGDx5eHho06ZNOnv2rOrWrStJiomJ0aVLlyRJ4eHhFsFT\neHi4ebms6pLT53evyMhIrVq1Si1bttRTTz2lixcvKiwsTC+++KKWLFmS755hmQGvraBXkq5cuaJ1\n69bp+vXrqlixolq1aqUGDRpYzZcZ/EVGRprLFBkZKUnmXnKnT5/Wd999p6lTp2YZFObGJ598orVr\n18rFxUW+vr5ycHDQrl27zPtbiRLWz/V5//33FRoaqmrVqqlHjx4qX768jh07pq+//lrh4eH64IMP\nbPawnD59ukqWLKkePXro1q1b2rZtm+bNmyeTyWQRAi1ZskT+/v6qWbOmvL29Va5cOV25ckWRkZHa\nvn27VWh77/7g4+OjChUqaNeuXerWrZsaNmxofq18+fLy9fXVqlWrFBwcbDN4CgoKkiT5+vpaTC9T\n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\n2Kf8tuGbN28qPT1d5cuX1/bt2/X2229rwYIFatOmTZbLREdHa/LkyRozZoy++eYbi/YvSSdOnFDd\nunXNJ86SdP36dY0dO1a1a9fWxx9/LEm6deuWBg0apEaNGmnBggXmeXfv3q1Zs2Zp+vTpevrppx/o\nfQGKgvy2X1tSU1M1YsQI1a5dW//5z3+ynTcsLEyzZ8/WSy+9pD59+mQ776xZs7Rv3z5t2LBBjo5Z\n36hy9epVDR06VN7e3nrttdfyXH6gKMlvG46NjdXYsWPl6+ur5557Ltt5OY8uOEUr2gTwUElOTtan\nn36q4cOHq1evXho0aJBeeuklnTx50jzP/femx8bGytvbW6tXr9YPP/wgPz8/9enTRy+99JIuXbqk\nO3fu6Ntvv9WQIUPk4+OjN998U4mJiX9pvbZv3y4HBwf5+vqap5UqVUp9+/bV8ePHdfny5RyXd3Z2\ntrjorFSpknr06KFdu3bp9u3bkqQbN27owIEDevLJJy26A/fu3VtlypTRtm3bzNN27dql9PR0DRw4\n0GJbAwYM0OXLl3Xs2DHztLCwMDVr1szi9p26devKw8PDYp0Abdi2MmXKqHz58nna5ieffCJPT0+5\nubnZfL1JkyYWoZMkVaxYUa1atdKZM2fM06Kjo3Xjxg2rWwk6d+6s0qVLa8uWLXkqF4ov2m/uOTk5\nqVKlStmGQ5kye2Pkdt4SJUrk2BulcuXKcnJyytU68fCgDdu2bt06ZWRkaNy4cZLu/hiUkWHdF4fz\n6ILFtxMAuzV//nyFhYVp0KBBqlevnhISEnT06FGdPXvWYiwjW/em//LLL0pPT9czzzyj69eva9Wq\nVZozZ45atWqlY8eOacSIEYqJidHatWv1+eef6+WXX862LLdu3VJycnKuyp3TGClRUVGqXbu21b3h\nmQegqKgoVa1aNdvlbY3l1LRpUwUHB+vPP/9U/fr19ccffyg9Pd1qfBdHR0c1atTI4sQjKipKZcqU\nUd26dbMsk5ubm+7cuaNTp06pX79+Vttv1qyZ9u/fr5s3b1rVDQ8n2nDB2LZtm44fP67ly5frwoUL\neVo2Pj5elStXNv//1q1bku6epN/PyclJUVFR+Sssig3ab/Zu3Lih27dvKyEhQaGhoTp37pyeffZZ\nm/MmJCQoPT1d586d05dffqnatWvL09PTar60tDTdvHlTN2/e1MGDBxUSEqIhQ4bYDJ6SkpJ0+/Zt\n85hxGRkZVhe9eLjRhm07cOCA6tatq927d2vx4sWKi4tThQoVNGDAAI0bN878fnAeXbAIngDYrT17\n9uipp57S3//+92zns/UrRVxcnFasWKGyZctKujsu0sqVK5WamqovvvjCfBJ37do1bdq0SS+88EK2\nvxRu3rxZ8+bNy7HMJpNJmzdvznaeuLg4ubi4WE3PnBYXF5fj8rYGIb53+fr16ys+Pl6S5OzsbDXv\nI488oqNHj1qs85FHHsmxTImJibp9+7bN8mduJy4uTrVr1862Dng40IbzLzU1VYsXL9aQIUNUvXr1\nPAVPhw8fVkREhEaPHm2eVrt2bZlMJh09elQ+Pj7m6WfPnlVCQoJMJpMSExNVoUKFAqsDiibab/be\nfvtt7d+/X5JUunRpvfXWW1aDi0t3w9/Bgweb/9+4cWMtXLjQqoeiJAUEBGjp0qXm/48cOVITJkyw\nuf2pU6fq3Llzku72eJo3b57NH6Xw8KIN2xYTEyMHBwfNmzdPfn5+atiwocLCwrRixQqlp6dr0qRJ\nksR5dAEjeAJgtypUqKCIiIgsDzDZ6dGjh/lgKd39FUGSnnzySYtfDps1a6YtW7boypUr2Q7I2aFD\nB3344Yd5rIFtaWlpKlmypNX0zB4IqampBbJ85t+2ejaUKlXKYjupqal5Wmd+yo+HB204/1auXKn0\n9HSNHDkyT8tdvXpV//73v1WzZk0NHz7cPD3zttzQ0FDVrVtX3bp105UrV/Txxx/L0dFR6enpSk1N\nJXgC7TcHkydP1rBhw3Tp0iWtW7dO//rXvzR37lzzmC+ZKlasqA8//FBpaWk6efKk1qxZo1dffVUL\nFy60eI8k6fHHH1ezZs107do17dq1S99//71KliypMWPGWG3/1VdfVXJyss6fP6/AwEC9/vrr+uij\nj9SoUaPcvhUo5mjDtmXeWjd58mTz8dHT01OJiYn64YcfNGrUKJUpU4bz6AJG8ATAbj377LN67733\nNHToUDVp0kSdOnVSr169cvWo0WrVqln8P3M8laymJyYmZnvAdHZ2tvmLx4MoVaqU+XaXe6WlpUlS\njk+zcHJyytXymX9nTr9/3nt/bXVycspyPlvrzE/58fCgDedPbGysVq9erRkzZtjsHZGVmzdv6vXX\nX1dKSormzZtntewLL7xg7km1ePFiSXcvJlxdXbVjx45i2cUfeUf7zd69Ac+TTz6pyZMn6z//+Y++\n++47i/kcHR3l4eEhSerUqZM8PDw0ffp08wXuvapXr24eA8rb21tly5bVt99+q969e1s9qatFixbm\nf3t7e+tvf/ubvvjiC33wwQe5Kj+KP9pw1sunpaXp8ccft5jes2dP7du3z3xbHOfRBYvgCYDd6tGj\nh1q3bq0dO3Zo//79WrVqlfz9/TVnzhx16NAh22WzGogzq+m2uhnfKy0tTUlJSbkqd04HVhcXF125\ncsVqemY33Jx+lcrt8pnlyOwqfK/4+HiL7bi4uOjgwYM5rrNChQoqWbKkzW7MmdvJ669qKL5ow/nz\n9ddfq0qVKnJ3d1dsbKyk/2tn165dU2xsrKpXr24xPsetW7f01ltvKTo6WvPmzdOjjz5qtd5y5crp\n3//+ty5duqSLFy+qevXqqlatmqZNm6bKlSurXLlyBVJ+FG2039xzdHRU586d5e/vr6SkpGwfHtCy\nZUu5uLjof//7X47r7d69u9avX6+TJ09m+4j48uXLy93dXXv37s1z2VF80YZtq1Klis6fP291a1zm\n/zMHS+c8umARPAGwa87OzhowYIAGDBiga9euafLkyVqxYkWOB8yCtmXLlgK7N71Ro0Y6ePCgkpOT\nLboxR0REmF/PTsOGDXXkyBFlZGRYXHBGRESodOnSqlOnjiSpfv36cnBw0P/+9z95eXmZ57t165ai\noqLk7e1tUaaff/5ZZ86cUb169bIsU4kSJdSgQQObJ8wRERGqVasWvSVggTb84C5fvqyYmBiNGDHC\n6rWFCxdKkoKCgsxB0Z07d/Tuu+/q4MGD+uc//6nWrVtnu/5q1aqZf71OSkrSiRMnLL4rANpv7mX2\nVrA1UPP9UlNTc3xSXeZ8uV1nWlpartaJhwtt2FqTJk0UExOjy5cvW/T+ygyzMh/IwXl0wSJ4AmCX\n7ty5o+TkZItfDStXriwXFxer7qm5OSHLr4K8N93Ly0urV69WcHCwhg4dKunuCWNISIhatGhh8SSO\n+Ph4JSUlydXVVQ4ODublw8LCFBYWZj4QJiQkaPv27ercubN5cMfy5curbdu22rRpk8aMGWM+kG3c\nuFEpKSkWB9GuXbtq0aJF+umnn/SPf/xD0t1fr4KCglS1alW1atXKPG/37t21ZMkSRUZGmp/Wcfbs\nWf3+++8aNmxYgbxHKPpow3fZasO5NX78eF2/ft1iWnR0tL7++mv5+fmpRYsWFl39P/74Y23btk0v\nvviiunXrlqdtLVmyRHfu3LEYBBkPL9rvXbba79WrV616SiQlJSksLEz169c3B8EpKSmSZHWr6/bt\n25WUlCQ3NzfztISEBJtP8tqwYYMcHR0tbquztf3Y2FiFh4fbfPAIHk604btsteGePXtq69at+vnn\nn82D99+5c0chISGqWLGimjRpIonz6IJG8ATALiUnJ2vIkCHq0aOHGjRooDJlyujAgQOKjIzU1KlT\nLebNqXtvQSjIe9ObN28uLy8vLVmyRFevXlWtWrUUGhqqS5cu6ZVXXrGY98svv9TGjRvl7+9v7mbv\n5eWlwMBAzZs3T2fOnFHFihX1008/KSMjQ+PGjbNYfsKECZo2bZpmzJihp556SpcvX9aaNWvUvn17\ntW/f3jxf1apV9cwzz+i///2vbt++raZNm2rnzp06cuSI3njjDYuTkoEDB2r9+vV67bXXNGzYMDk4\nOGjNmjVydnY2nwAAtOG7bLVhSeZxYE6fPi3p7ons4cOHJcn8FLp7L0wzZV7UNm3aVF27djVPDwgI\n0Lp169SiRQuVKlVKv/zyi8Vynp6e5gvglStXKjo6Ws2bN5fD/2vvfkKhieM4jn+GEmoVhy2xyk5b\nHEhbDltKOe4BJwdRauXiovagbQ8OSg7KieSwDltuXBxmRE2xopCLP1FuW3KzrZTD8hz0rGftqOdg\nnh55v86/nb479a3ffH4zv19lpTKZjE5PTxWLxcqOjcbPRP++cevf6elp+f1+tbW1qb6+Xvf397Jt\nWw8PDyW/z2azisfj6uvrUyAQkGEYurm50e7urlpbW9Xf318cm06ndXFxoe7ubvn9fuXzee3t7en6\n+lpjY2MlQVMsFlM4HJZpmvL5fMpms7IsS4ZhaHx8/EvuEb4/eviNWw/39PQoHA5rfX1duVxOwWBQ\nBwcHOj8/VzweLzmdj3n01yF4AvBfqq6u1uDgoE5OTrS/v6+Xlxc1NzdramqqZLJmGMZfr9R8Nu5f\nrPR8lEgklEqltLOzo3w+L9M0NTc3V/ag6fb/KioqND8/r5WVFW1ubur5+Vnt7e1KJBJlx6+GQiEt\nLCxodXVVy8vLqq2tVTQaLR4V+6eJiQn5fD5tbW3Jtm0FAgElk8mSV4klqaamRouLi1paWlI6ndbr\n66u6uro0OTnpumKLn4kefq/Nrb61tTUZhlH8ZNayrOL438HTZ9yud3t7K8MwdHV1pcvLy7LxnZ2d\nxeApGAwqk8no8PBQhUJBpmlqZmaGz+xQRP++1/axvmg0KsdxtLGxocfHR9XV1amjo0PDw8PFNyWk\nt9zmMHAAAAD4SURBVAfR3t5enZ2daXt7W4VCQY2NjRoaGtLIyEjJBsKRSER3d3eyLEu5XE5VVVUK\nhUKufTkwMKCjoyMdHx/r6elJDQ0NikQiGh0dVVNTkwd3C98RPfxem1t9s7OzSqVSchxHtm2rpaVF\nyWSybMNx5tFfx3Acx/uIEwAAAAAAAD8OO9ABAAAAAADAEwRPAAAAAAAA8ATBEwAAAAAAADxB8AQA\nAAAAAABPEDwBAAAAAADAEwRPAAAAAAAA8ATBEwAAAAAAADxB8AQAAAAAAABPEDwBAAAAAADAEwRP\nAAAAAAAA8ATBEwAAAAAAADxB8AQAAAAAAABP/AK5b9mjJAqadgAAAABJRU5ErkJggg==\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10cbee050>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 5 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "For sets of pixels of equal size $p$ (4 in our examples so far), the Jaccard similarity function is:\n", | |
| "\n", | |
| "$$J(k) = \\frac{p-k}{p+k}$$\n", | |
| "\n", | |
| "where $k$ can be interpreted as \"$p$ - the number of shared pixels\". For a slightly bigger $p$, it can be interesting to visualize this function:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "n = 10\n", | |
| "a = np.arange(n, 0, -1)\n", | |
| "b = np.arange(n, n * 2)\n", | |
| "scatter(range(n), a/b)\n", | |
| "xlim(-1, 11)\n", | |
| "ylim(-0.1, 1.1)\n", | |
| "xlabel('k (p=10)')\n", | |
| "ylabel('J(k)');" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "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\nZsNSiu+vzs3NVf369T3jqampnu0om9Pp1MMPP6xTp07p2WefVZs2bcyOZGlnz56V2+3WsmXLtGzZ\nslLbR48erREjRmjq1KkmpLOu8PBwJScnKyMjo8QD44p/Sbj0jgtIhYWFZd6xU1hYKOniImX8uubN\nm6tp06Y6ePBgqW0HDx60/OcDZcNCoqKitH79em3ZssXznA2n06n4+HhFRkaWuN0J/+VyuTR//nyl\npqbqySefVGRkpNmRLK9du3Z6/PHHS1xmcrvdWrVqlfLy8jRt2jS1atXKxITW1KtXL8XFxemjjz7S\nDTfc4Bn/8MMP5ePjo+uvv97EdNYUHh6uXbt26eTJkyUK2s6dO+Xl5aXQ0FAT09Ust9xyi7Zv366M\njAzP50FycrJOnjypu+++2+R0l0fZsJCIiAhFRUVp5cqVOnfunFq1aqVt27YpPT1dc+fONTueZb3y\nyiv67LPP1L17d2VlZSkhIaHE9r59+5qUzLqaNGminj17lhrfsGGDJKlHjx7VHalGCAsL04ABA7R1\n61a5XC5de+212rdvn3bv3q0xY8Zw6a4M99xzj3bv3q0HHnhAw4YNU6NGjfTPf/5T//rXvzRo0CCO\n2c+K72gqPkv2j3/8Q+np6ZKk4cOHq0GDBho7dqySkpI0c+ZMjRgxQrm5ufr73/+u9u3ba8CAAWbG\n/1W2xMREt9kh8F9Op1OrVq3Sxx9/rOzsbIWGhmr8+PH6n//5H7OjWdbMmTP1zTffyO0u/VfZZrNp\nx44dJqSqmWbOnKkff/xRr732mtlRLMvlcunNN99UfHy8HA6HWrRooTvuuEMjRowwO5plpaamas2a\nNfr3v//t+S6Zfv36adSoUfLyYumgJEVHR+vMmTOS5DnjWPyQvbfeekvBwcGSpO+++04vv/yy9u/f\nL7vdrt///veaMmWK5S/hUTYAAIChqJQAAMBQlA0AAGAoygYAADAUZQMAABiKsgEAAAxF2QAAAIai\nbAAAAENRNgAAgKEoGwAAwFCUDQClrFmzRr1799aPP/5Y5deIi4vTfffddwVTmWPz5s0aNWqUCgoK\nzI4C1FiUDQBX3IULF/T2228rOjq6Wn9uWlqaXnrpJU2bNk1/+MMf1Lt3b8/3TZRlz549mjRpkud7\nOtasWVPqK8/79++vgoICffDBB0bHB2otygaAK27r1q0qKipSnz59qvXnpqSkaNOmTcrLy9M111zj\n+UKrsnz++ed69NFH1ahRIz3wwAPq0aOH1q5dqxdeeKHEfna7Xf369dM777xjdHyg1uIr5gFccVu3\nbtXNN98sX1/fav25PXr0UFRUlPz9/fX3v/9dR48eLXffV155RWFhYXrmmWc83zzaoEEDrVu3TiNG\njFCbNm08+9522216++239dVXX+mGG24w/H0AtQ1nNgBUyOnTpzVmzBhNmDBB58+fL3e/H374QceO\nHVO3bt1Kze/du7fWr1+vd955R6NGjVL//v01Y8YMHTt27IpkbNSokfz9/X91v++++05paWkaPHhw\nia84v+OOO+R2u7V79+4S+4eHh6tRo0bas2fPFckJ1DWc2QDwq06dOqVZs2apcePGevbZZ9W4ceNy\n9z1w4IAkqUOHDmVu37Ztm/Ly8jRs2DDl5+dr48aNmjVrll577TUFBARIkgoKCpSbm1uhbE2aNKnk\nu5GOHDkiSerYsWOJ8aCgIDVv3rzMMyLh4eGe9wagcigbAC4rLS1Ns2bNUvPmzbV48WI1bNjwsvuf\nOHFCktSyZcsyt3///fd68803FRQUJEm66aabNGXKFMXFxWnKlCmSpB07dmjx4sW/ms1ms2nHjh2V\neTuSpMzMTElSYGBgqW2BgYE6e/ZsqfEWLVpQNoAqomwAKNd//vMfPf744woJCdGiRYsqdIkiKytL\n3t7eqlevXpnbe/bs6SkaktSpUydFRETo888/95SNm266Sc8+++yVeRNlyM/Pl3Rx8eel7Ha78vLy\nSo03atRI+fn5cjqdZc4DUD7KBoByPfzwwwoMDNTixYvLLQ+VFRISUmqsdevWSkpK8vw5MDCwzLMO\nV4qfn58kyel0ltpWXplwu92G5QFqOxaIAijXrbfeqlOnTikhIaHCc5o0aSKXy1Xm2YHL+eVtqk6n\nU5mZmRX6X1UUF5my5jscDjVr1qzUeHZ2turVq8dZDaAKOLMBoFyTJ0+Wt7e3li5dqvr161fouRlX\nX321pIt3n7Rr167U9uI1Hb908uRJtWjRwvPnnTt3GrpmIywsTJJ08ODBEotEz549q7Nnz3q2/9Lp\n06fVtm3bSv8sAJQNAJdhs9k0a9Ys5ebm6umnn5a/v79uvvnmy87p3LmzJOnQoUNllo09e/bo7Nmz\nnrMHqampOnjwoO666y7PPkav2WjXrp3atGmjLVu2aMiQIZ7bXzdv3iybzaZbb7211JwjR46ob9++\nhmUCajPKBoDLstlsevjhh/XII49o/vz5evrppy/7YKtWrVqpXbt2+vLLL9W/f/8ytz/wwAMaOnSo\nnE6nNm7cqCZNmmjUqFGefaq6ZuPChQvatGmTpP/egvvuu++qQYMGatiwoYYNG+bZNyYmRo888ohm\nz56tXr166dixY3rvvfc0aNCgEg/0ki4Wp+zsbPXo0aPSmQBQNgCUwWazlVhD4e3trfnz52vu3Ll6\n9NFH9eyzz6pTp07lzh8wYIBWr15d5mLLfv36yWazaePGjTp37pwiIiL04IMPXpEFodnZ2Vq9enWJ\n97F+/XpJF29d/WXZ6N69u+bPn6833nhDy5YtU0BAgMaOHatx48aVet2kpCQFBwfz9FCgimyJiYks\nsQZwRV24cEGjR49WTEyMBg4cKOnimofRo0dr8uTJGjlypMkJK87pdCo6OlpjxozR8OHDzY4D1Ejc\njQLgimvQoIFGjRrlOatQk8XHx8vX11dDhw41OwpQY3EZBYAhoqOjq/0r5o0wdOhQigbwG3FmAwAA\nGIo1GwAAwFCc2QAAAIaibAAAAENRNgAAgKEoGwAAwFCUDQAAYCjKBgAAMBRlAwAAGIqyAQAADEXZ\nAAAAhvr/AV8Y6I+btGosAAAAAElFTkSuQmCC\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10bb45dd0>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 6 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "We can isolate $k$ in the equation above:\n", | |
| "\n", | |
| "$$k = round\\left(\\frac{p - p \\cdot J(k)}{1 + J(k)}\\right)$$\n", | |
| "\n", | |
| "which we can then use to define a procedure to generate a similar grid from a given grid and a desired Jaccard similarity value. This function simply calculates the number of pixels which would need to be different for that similarity value, then flips \"off\" a random sample of \"on\" pixels of exactly that size, and finally do the opposite, by flipping \"on\" a random set of \"off\" pixels of the same size." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def get_similar_grid(g, jaccard_sim):\n", | |
| " h = g.flatten()\n", | |
| " pos = np.argwhere(h == True).flatten()\n", | |
| " neg = np.argwhere(h == False).flatten()\n", | |
| " n_pos = len(pos) # p\n", | |
| " n_to_flip = (n_pos - (n_pos * jaccard_sim)) / (1 + jaccard_sim) # k\n", | |
| " n_to_flip = int(round(n_to_flip))\n", | |
| " pos_flip = np.random.choice(pos, n_to_flip, replace=False)\n", | |
| " neg_flip = np.random.choice(neg, n_to_flip, replace=False)\n", | |
| " h[pos_flip] = False\n", | |
| " h[neg_flip] = True\n", | |
| " return h.reshape(g.shape)\n", | |
| "\n", | |
| "g0 = np.asarray([1] * 4 + [0] * 12).reshape(4, 4)\n", | |
| "grids = [g0] + [get_similar_grid(g0, 1/3) for _ in range(4)]\n", | |
| "show_grids(grids, jaccard_similarity, 'Jaccard Similarity of 1/3')" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAEmCAYAAAAjslpVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3XuUlXW9P/D3cFVA0RlAFNIQMO8Q3i+I4VG0AtSSAvWU\nlWgXT3k6XvlVHluYmaWdWpmeUo96xAtkSzTBVBTQFJTAG05hFBfFyyAIoowCvz9czGmcAWaEh9kz\nvl5rzVr67O/ez+e7Z3/mu3nv53l22ZQpU9YFAAAAALawVk1dAAAAAAAtk+AJAAAAgEIIngAAAAAo\nhOAJAAAAgEIIngAAAAAohOAJAAAAgEIIngAAAAAohOAJAAAAgEIIngAAAAAohOAJANhqlixZksGD\nB+fHP/5xYfu48cYbM3jw4MyePbuwfUyaNCmDBw/OpEmTam3/4he/mJEjRxa23/Uuv/zyDB48OK+8\n8krh+9pSKisr8x//8R8ZPnx4Bg8enDPPPLOpSwIAtoI2TV0AALR0gwcPTpI89NBDTVxJ81RdXZ27\n7rorDz/8cBYuXJjq6upsv/32qaioyD777JNBgwalX79+NePLyspqfoq0oX0Uvd8N7XvJkiUZNWpU\nhgwZkgsuuKDwGhrjrbfeykUXXZR33303xx57bDp37pzy8vJN3u/ee+/NCy+8kHnz5mX+/Pmprq7O\naaedlq985SubvO9tt92W6667Ltdee2369u2b6dOn58EHH8yLL76YZcuWZfXq1enSpUv69u2bz33u\nc9lvv/22xFQBgA8QPAHAVrA1woiW6O233863v/3tzJs3LxUVFRk0aFDKy8vz9ttvZ968ebnnnnuy\ncuXKWsHTiSeemMGDB6dbt26F1TVw4MDss88+DQpPinDmmWdm1KhR6dKlS5Psv7FeeOGFLFu2LF/7\n2tcyatSoBt/vmmuuyapVq7LddtulS5cueemllxp83+nTp6d79+7p27dvkuTRRx/NX/7yl+y5556p\nqKhI27Zts2jRovzpT3/K1KlTc/bZZ2fEiBGNnhsAsHGCJwCgZI0fPz7z5s3LQQcdlMsuuyytW7eu\ndfvKlSuzYMGCWts6d+6czp07F1pXx44d07Fjx0L3sTHl5eVNFnp9GK+//nqSNLrmH/zgB9ltt93S\nrVu3TJo0KVdccUWD7ldVVZW5c+fm5JNPrtl27rnnpl27dnXGzp8/P2effXZuuOGGnHTSSWnbtm2j\nagQANk7wBABNZNKkSXnssccyb968LF26NG3atEmvXr0ybNiwHHvssfXe580338wdd9yRRx99NEuW\nLEnr1q3TvXv3HHLIITn99NOzzTbbNHpsZWVl7r///syePTuvv/563nnnnXTr1i2HH354Tj/99HTq\n1KlO3VdccUXOP//8lJeX59Zbb828efOyatWqmtMJV61alRtuuCEPP/xw3nzzzXTv3j2f/exnc8QR\nRzTqOXruueeSJMOGDasTOiVJp06dsvfee9faduONN+amm27KVVddVetIqMGDB6dfv375/ve/n+uu\nuy5PPPFE3n777fTu3TujR4/O/vvvn7fffjs33HBDHnnkkbzxxhvZZZddcsYZZ2TQoEEbfA6OP/74\njc7hrbfeysSJEzNjxowsXLgwy5cvT8eOHbP33nvn1FNPrVP/P9f6ve99L7/97W8zY8aMLF26NOef\nf36GDBmSyy+/PPfff3/GjRuXnXbaqWbOSTJ58uRMnjy55rHW/54uvPDCDZ6GV11dnVNOOSVlZWUZ\nP3582rTZ9FvEp556KrfffnteeOGFvPPOO+nevXsGDhyYUaNG1YRy60//W++KK66oCY8a8twddNBB\nm6yjPo8++mjWrVuXgQMH1myrL3RKkl69emXXXXfN3/72t6xYsaJZBXoA0BwIngCgiVx99dXp1atX\n+vXrl4qKiixfvjxPPPFEfvSjH2XhwoV1rmPz8ssv59xzz82rr76aT3ziExk+fHjWrl2bhQsXZvz4\n8Rk2bFhNmNSYsffee2+mT5+e/v3756CDDsratWtTWVmZO++8M0888USuueaabLvttnXqnzp1ambM\nmJFDDjkkw4cPz5IlS5K8H2J897vfTWVlZfr06ZPjjjsuK1asyM0339zoC35vv/32SZKFCxc2+vmt\nz8qVK3POOeekQ4cOOeaYY/Lmm29mypQpOf/88/OLX/wiP/vZz/LWW2/liCOOyLvvvpuHHnool156\naX7xi1/UGxA15BTKf/zjH7n++uvTr1+/HH744enUqVNeeeWVPPbYY5kxY0bGjh2bgw8+uM793nzz\nzXzzm99Mhw4dctRRR6VVq1bZcccd6913//7989Zbb2XChAnp06dPrYCvb9++6d27d3bZZZc8/PDD\n+da3vlXnaK2pU6dmxYoVGTFiRINCp7vvvjtXX311OnTokEGDBmWHHXbI7NmzM27cuDz22GP5xS9+\nkU6dOqVTp0750pe+lHnz5uXRRx/NkUcemd69e9fUVZRp06Zlhx12aNB1mxYuXJiFCxemZ8+eQicA\nKIDgCQCayA033JCdd9651rb33nsvF1xwQcaNG5dhw4bVuobP2LFj8+qrr+bMM8+s881pb775Zq2j\nnRoz9tRTT825555bJ0T5wx/+kCuvvDK///3v6/2mtieeeCKXX355naNS7rjjjlRWVuaoo47KJZdc\nUrN91KhROeusszbxrNT2qU99Kg888ECuv/76LFmyJIceemj69u2bioqKRj3Oei+++GKGDh2ac889\nt2bbgQcemB/96Ec599xz069fv/zXf/1XzelWxx13XL797W/ntttuy6WXXvqh9rnbbrtl/PjxNSHa\neq+99lq+8Y1v5Fe/+lW9wdP8+fNz3HHH5fzzz0+rVnW/iHjdunU1/92/f/907949EyZMSO/evfOl\nL32pzvhhw4bl17/+de6///6cdNJJtW675557UlZWlqFDh25yPkuWLMkvf/nLdOjQIddcc00+9rGP\n1dx29dVX5+677861116b7373uzXB06RJk/Loo4/miCOOyJAhQza5j82xcuXKzJ49O0OGDKk3GHzq\nqafyzDPP5N13382SJUvy2GOPpWfPnvl//+//FVoXAHxU1X0XAwBsFR8MnZKkTZs2GT58eNasWZNZ\ns2bVbK+srMzzzz+fPn361BsCbb/99jWnEjVmbJLstNNO9f4D/YQTTkiHDh3y5JNP1lv/EUccUe+p\nUJMmTUqrVq3qhEzdu3evdc2dhjjssMPyrW99K+3bt8/dd9+diy++OKeccko+97nPZezYsXn66acb\n9XjbbLNNzj777FrbjjnmmLRq1Spvv/12zjnnnFrX+Nlvv/2y00475cUXX2zUfv5Zx44d64ROSdK1\na9cMHDgwCxYsyGuvvVbn9rZt2+brX/96vaHTh3HCCSekXbt2ueeee2ptX7BgQZ5++un0798/PXr0\n2OTjPPDAA3nvvfdy0kkn1QqdkuRrX/tatt122zzwwAN59913t0jdjfWnP/0pa9asqXWa3T+bNWtW\nbrrppowbNy5TpkxJ+/btc9xxx9WZCwCwZTjiCQCayCuvvJJx48Zl1qxZee2117J69epat1dVVdX8\n9/PPP5+kYde8aczY5P2jrCZOnJiHHnoo//jHP/LWW2/VOppm/YWhP2ivvfaqs23VqlV56aWX0q1b\nt3qDtX++5lJDnXzyyfnMZz6TJ598Ms8//3z++te/5rnnnsuDDz6YBx98MKeffnrOOOOMBj1Wz549\n65w2uP4Uturq6nTv3r3Ofbp06ZLKyspG1/3PnnnmmUyYMCHPP/98li1blvfee6/W7a+99lq6du1a\na1v37t236EXSt9tuu3zqU5/K5MmT89xzz2WfffZJkpogatiwYQ16nL/85S9Jkk9+8pN1buvUqVP6\n9OmTZ555JgsWLKg5rW5rmjZtWjp06JADDjig3tvPPPPMnHnmmVm9enUWLlyY22+/Pb/+9a8zc+bM\n/OQnP9nK1QJAyyd4AoAm8NJLL+XrX/96Vq5cmX79+uXggw9Ox44d06pVqyxZsiSTJ09OdXV1zfi3\n3norSWqderchjRmbJJdeemmmT5+eXXbZJUceeWTKy8trjvoZP378Bo9c+efrDX1w3/XdljT+W83W\na9++fY444oiaaxe99957ueeee/LLX/4yN998cwYOHJg+ffps8nE+eKH09Vq3br3Bb6lr3bp11qxZ\n86HqTt4PQi655JK0b98+Bx54YHbZZZdss802KSsry+zZszNnzpx6n+Mirjc0bNiwTJ48ORMnTsw+\n++yT6urqTJ48OTvuuGOOPPLIBj3G+t/xhk53XL99/bitafXq1Zk5c2YOP/zwTV6rqn379unTp0/G\njBmTFStWZMaMGXn88cdz6KGHbqVqAeCjQfAEAE3gzjvvzIoVK3LBBRfUuebNgw8+WOtbyZLUhCIb\nOvrow46trKzM9OnTc8ABB+THP/5xrdO61q1bl3Hjxm3wvvWdnrd+32+88Ua991m6dOkma2qINm3a\n5MQTT8zzzz+fBx54IH/+858bFDw1heuvvz7t2rXLr3/96+y66661bnv99dczZ86ceu/XkAuXN9Ze\ne+2Vvn371lxk/PHHH8+KFSsycuTIer81sD7rf8dVVVXZbbfd6ty+/ki9DQV5RZo5c2ZWr169wdPs\nNuTAAw/MjBkzMn/+fMETAGxhrvEEAE1g8eLFKSsry1FHHVXntvqCiPWnRc2cObPWaXD1aczYxYsX\nJ0kOP/zwOtcSmjt3bq2jrhqiQ4cO6dGjR1577bW89NJLdW5v7LfabUp937ZXahYvXpzddtutTui0\ndu3aPPPMM1tsP+t/f2vXrt3ouOHDh9cc6dSYi4qvt8ceeySp/3e5cuXKvPjii2nfvn29oVTRpk2b\nlnbt2uWQQw5p1P3Wh7QdOnQooiwA+EgTPAFAE9h5552zbt26Ov94nzFjRu6999464/fYY4/ss88+\nmTdvXr1HIS1fvrwmJGrM2PXXNPpgHW+88UauvvrqDzW3448/PuvWrct1111XK/h6+eWX87vf/a5R\nj3X33XfXXLPqgxYsWJBHHnkkZWVl2X///T9UrVvDzjvvnEWLFtW6Zte6dety4403ZsGCBVvsyKbt\nttsuyfvXDtuYY445Jp06dcptt92Wp59+OgceeGC917bakH/5l39JmzZtctddd9UEl+tdf/31WbVq\nVc2YrWnNmjV5/PHHM2DAgDqB5Lvvvpt58+bVe78XXnghEydOTNu2bR3tBAAFcKodADSB4cOH5777\n7ssll1ySQYMGpby8PH//+98zc+bMHH300ZkyZUqd+4wZMybf+c538pvf/CZTp05Nv379sm7duixe\nvDhPPvlkbrrppuy0006NGrvnnntm3333zbRp0/Ktb30r++67b954443MnDkzH/vYx1JRUbHJo6Y+\naMSIEZk+fXqmTp2a0aNH58ADD8zKlSvzyCOPZP/9989jjz3W4MeaOXNmrr766nTv3j377rtvunbt\nmurq6ixevDgzZ87M2rVrc/LJJ+cTn/hEo2psrMY+B//s85//fK666qqceeaZGThwYNq0aZNnn302\nCxYsyGGHHZY//elPW6TGbbfdNnvvvXeeeeaZjB07Nj179kyrVq1yxBFHZPfdd68Z1759+wwZMiQT\nJkxIkkYd7ZS8H1Z+85vfzM9//vOcddZZOfroo9O5c+fMmTMnzz//fHbdddc632j4Yd177701R4Wt\nD7kee+yxvPrqq0mS3XbbreabG2fPnp0VK1bUe62q1atXZ/To0dl9993z8Y9/PF27ds3q1avzj3/8\nI3/+85/TunXrfOc736npHwBgyxE8AUCB1l+U+oPXz9l9991z1VVX5be//W0ef/zxrFmzJn369Mml\nl16ajh071hs8de/ePdddd11uu+22TJ8+Pb///e/Tvn37dO/ePV/4wheyww47NHpsq1atMnbs2Pz2\nt7/NE088kbvuuitdu3bNZz7zmZx22mn58pe/XO8RORs7Sqdt27b56U9/mhtvvDFTpkzJ7373u+y8\n8845/fTTc+SRRzYqeDrrrLOy3377ZdasWXn++edTVVWVNWvWpLy8PIcffnhOOOGEOkeplJWVNfoo\noo2N39DjNXTb0KFD07Zt20yYMCH3339/ttlmm+y333658MILM3Xq1Dz++OONqnVjNV100UX51a9+\nlRkzZuShhx5KknTr1q1W8JQkJ5xwQiZMmJCKioocfvjhjd7/8OHD06NHj9x+++2ZOnVq3nnnney0\n00754he/mFNPPbXe6zt9mCO7nn322dx///019y0rK8v8+fPzt7/9LWVlZenXr19N8DRt2rSaoO2D\ntt1223zlK1/JnDlz8vTTT2f58uVp1apVunbtmhNOOCEnn3xyk3wDHwB8FJRNmTLlw3+EBwBsVFVV\nVU455ZR07do1t99+e1OXA0mSP/zhD7nyyitz+umn54wzzmjqcjbbunXrMmLEiPTs2TNXXXVVU5cD\nAPwT13gCgAJNmzYtSbL33ns3cSXwvjVr1mT8+PFp06ZNo0+zK1Vz585NVVVVvafZAQBNy6l2AFCA\n66+/PosWLcojjzySNm3aZMSIEU1dEh9xzzzzTObMmZPZs2fn73//e0466aR06dKlqcvaIvbee++a\nUwsBgNIieAKAAtxyyy3p0KFD+vfvn9NPPz177bVXU5fER9ysWbPyP//zP9l+++3z2c9+dotdABwA\nYGNc4wkAAACAQrjGEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjB\nEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAA\nUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwB\nAAAAUIg2DR1YVVWVqqqqImuBZquioiIVFRVNXcZG6WHYsFLvYf0LG1bq/ZvoYdiYUu9h/Qsb15Ae\nblDwVFVVldGjR2fp0qVbpDBoicaPH1+yi6Yeho0bNGhQzjnnnJLs4aqqqlxyySV59tlnm7oUKFnW\nYGi+Sn0N1r+waZtahxscPLWUZhsyZEgmT57c1GVsNvMoPVVVVSW5YCYtq4fHjh2b448/vqnL2GwX\nX3xxi3jtDxkyJJdddllTl7FZ5s6dm9NOOy2jRo0qyR6uqqrKs88+m1tuuSV77bVXU5ezWSZNmqR/\nS4g1eOuwBpeeltTD1uBi6d/S01LeS0yaNCljxoxp6jK2mE2tww0+1a6lKC8vb+oStgjz4KOqV69e\nGTBgQFOXsdlaymu/vLy8Rfw+moO99tqr2T/XlZWVzX4OScvqX2gMa3BpsQbTGC2lf1vKe4nKysqm\nLmGrcnFxAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoh\neAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAA\nAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIIn\nAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACg\nEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIA\nAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoheAIAAACgEIInAAAAAAoh\neAIAAACgEI0Knp566qmsW7euWf8MHTq0yWswj5Y1j6eeeqqo/tziWkIPtxQt4bW/bt37PVxWVtas\nfw444ICmfjnQzLSk/m3qGjb3xxq8dX9aipbw2l+37v0eho+ipn7vuCV+Jk6c2OR/Q7bET0PX4TaN\n+QVPmjQplZWVH+rFUSoWL16ccePGNXUZm808Ssf8+fObuoQG08OloyXNY+TIkU1dxmZZunRpJk+e\n3NRlbJL+LR3mUTqswVtXS3jNJOZRSppLDw8ZMiTl5eVNXcZmaQmvl6RlvPdMkh49erSI30dDe7hR\nwdPxxx+fAQMGfKiCSsW4ceNaxAvVPErHrFmzMmbMmKYuo0H0cOloSfM477zzmrqMjwT9WzrMo3RY\ng7eulvCaScyjlDSXHm4OH1BtytChQ5v96yVpOe89R44cmZ/85CdNXcZma2gPu8YTAAAAAIUQPAEA\nAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQ\nPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAA\nAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMET\nAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQ\nCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEA\nAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQ\nPAEAAABQiDaNGTxp0qRUVlYWVctWsXjx4owbN66py9hs5lE65s+f39QlNJgeLh0taR633nprU5ex\nWebPn58xY8Y0dRmbpH9Lh3mUjua0Bl988cUpLy9v6jI2S48ePTJx4sSmLmOzDRgwoNm/9hM9vDWN\nHTs2vXr1auoyNktLeL0kLeO9Z9Jyfh8N7eFGBU/HH398BgwY8KEKKhXjxo3LyJEjm7qMzWYepWPW\nrFnN4h+tiR4uJeZROppLD+vf0mEepaO59G+STJ48ualL2GwjR45sEf9QGjp0aLN/7Sd6eGuyBpcO\n8ygtDe1hp9oBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAA\nUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwB\nAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACF\nEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAA\nAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjB\nEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAA\nUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFaNOYwZMmTUplZWVRtWwVixcvzrhx45q6jM1mHqVj/vz5\nTV1Cg+nh0tGS5jFq1KimLmOzLF26tKlLaBD9WzpmzZqViRMnNnUZm61Hjx7Nfh7NpX+TZOzYsenV\nq1dTl7FZFi9enKFDhzZ1GZutpfwtagnzaC7vo63BpcM8SktDe7hRwdPxxx+fAQMGfKiCSsW4ceMy\ncuTIpi5js5lH6Zg1a1bGjBnT1GU0iB4uHS1pHuedd15Tl/GRoH9Lx8SJE1vEm8WRI0e2iHk0F3q4\ndJhH6Wgu76P1b+kwj9LS0B52qh0AAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8\nAQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAA\nhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMA\nAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAI\nwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAA\nAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhRA8\nAQAAAFAIwRMAAAAAhRA8AQAAAFAIwRMAAAAAhWjT1AUAW8/cuXObuoTNNn/+/MyaNaupy9hsLWke\nAGyaNbh0mEfpaAl9AWxao4KnlvCHoSX8gU7Mo5Q0h76oqKhIv379ctpppzV1KVvEmDFjmrqELaKl\nzKMl6NevXyoqKpq6jI1qDn9rNqUl/M1Pkn333TdPPfVUU5ex2SZNmtTs5zF37tySX9uswaXJPEqH\nNXjraClrsHmUlob2RtmUKVPWbWpQVVVVfvjDH2bOnDmbXRi0RP369cv3vve9kl40q6qqUlVV1dRl\nQEmqqKgo2f61BsPGWYOhebMGQ/PWkHW4QcFTYsGEjSnlBRNo/qzBsGHWYKBI1mDYuIasww0OngAA\nAACgMXyrHQAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBEwAAAACF\nEDwBAAAAUAjBEwAAAACFEDwBAAAAUAjBE9CsXX755Rk5cmRTlwF8SHoYmi/9C82bHmZradPUBQBs\njrKyspSVlTV1GY1WXV2dG264IX/84x+zcuXK7L777vnqV7+aAw44YJP3nTNnTu64447Mmzcvy5Yt\nS8eOHfPxj388X/jCF3LIIYfUGnvLLbfksccey8svv5xVq1alS5cuGTBgQE477bTstNNONeNef/31\nXHvttamsrExVVVXKysqyyy675IQTTsiwYcPSunXrmrHTpk3L3Xffnb///e9Zvnx5OnfunD322COj\nRo3KPvu6nAzpAAAKB0lEQVTss+WeJD4S9LAepvnSv/qX5k0P6+GtpfWXv/zlS5q6CIAP67DDDstJ\nJ52UVq2a1wGcl112We67774MHTo0xx57bF588cXcfvvt+eQnP1lrIavPU089lZdeeilHHHFEPvWp\nT2WPPfbI3Llzc+edd2aXXXZJ7969a8ZOmDAhPXr0yMCBAzNw4MB07tw5999/fyZPnpzjjz8+22yz\nTZJkyZIlefjhh3PIIYfk6KOPTv/+/bN8+fJMmDAhVVVVOfzww2se85FHHsk777yTI488MkcffXR2\n3XXXPPnkkxk/fnz233//dO/evZgnjRZJD+thmi/9q39p3vSwHt5ayqZMmbKuqYsA+CiZO3duvvnN\nb+bss8/OiBEjkrz/yc1XvvKV7LDDDvnlL3/Z6MdcvXp1Ro0alZ49e+bnP//5RsdOnTo1l1xySc47\n77yccMIJGx07ZsyYzJgxI/fdd1/atNnwQbJvvPFGRowYkcGDB+eiiy5qdP3QnOhhaL70LzRverh5\ncqodULJWrVqV66+/PtOnT8/SpUvTqVOn9O7dO6NHj07fvn2TvH9u+pw5czJu3Lgk73/iMGrUqJx9\n9tlp06ZN7rzzzixbtiz77rtvzjvvvHTp0iW33HJLJk6cmBUrVuSggw7K+eefn+22226rzeuRRx5J\n69atM3To0Jpt7dq1y6c//en85je/yWuvvZauXbs26jHbt2+fzp07b3RRW2/9J0ENHduqVatNfhK2\nww47pH379g16TD469HDD6WFKjf5tOP1LKdLDDaeHi9dyZwY0ez/72c8yderUnHzyydltt92yfPny\nPPvss1mwYEHNgpmk3nPT//jHP2bNmjX53Oc+lzfffDO33XZbLr300uy777557rnnMmrUqCxevDh3\n3XVXrrnmmpx//vkbreXdd9/NqlWrGlR3586dN3r7vHnz0rNnz2y77ba1tn/iE5+oub0hC+Zbb72V\n9957L8uXL8/kyZOzaNGinHXWWfWOXb58edasWZNFixbluuuuS8+ePTNw4MA646qrq/P222/n7bff\nzuzZszNp0qSccsop9S6YK1euzHvvvZelS5dm/PjxWbduXU488cRN1s1Hhx7eOD1MKdO/G6d/KXV6\neOP08NYleAJK1uOPP57PfvazOfvsszc6bt26umcMV1VV5ZZbbkmHDh2SJGvXrs2tt96a1atX59pr\nr61ZAJYtW5YHHngg//7v/77RTxkefPDBXHHFFZusuaysLA8++OBGx1RVVaWioqLO9vXbqqqqNrmf\nJPnP//zPPPnkk0mSbbbZJt///vfrXBQxSZYuXZrPf/7zNf/ft2/fXH311TXnpf+z8ePH5ze/+U3N\n/5966qn56le/Wu/+v/GNb2TRokVJ3v+k5oorrqj1Rgb08MbpYUqZ/t04/Uup08Mbp4e3LsETULK2\n2267zJ07d4MLzMYcffTRNYtlkuy5555JkmOPPbbWpw577rlnHnroobz++usbvZjfwQcfnCuvvLKR\nM6hfdXV12rZtW2d7u3btkrx/nnlDjB49Ol/4whfy6quv5u67784Pf/jDjB07NgceeGCtcdtvv32u\nvPLKVFdX569//WvuvPPOXHjhhbn66qtrPUdJcswxx2TPPffMsmXL8uijj+Z///d/07Zt2/zrv/5r\nnf1feOGFWbVqVV566aVMmDAhF198cX7605+mT58+DX0qaOH08MbpYUqZ/t04/Uup08Mbp4e3LsET\nULLOOuusXH755RkxYkT22GOPHHrooTnuuOOy8847b/K+3bp1q/X/nTp12uj2FStWbHTBLC8vT3l5\neWOnUK927drl3XffrbO9uro6yfvnmTfEPy9Mxx57bEaPHp2f//znufnmm2uNa9OmTQYMGJAkOfTQ\nQzNgwICcc845+d3vfpfTTjut1tiddtqp5tz1wYMHp0OHDrnpppsyZMiQOt8Ssvfee9f89+DBg/Ol\nL30p1157bX7yk580qH5aPj28cXqYUqZ/N07/Uur08Mbp4a2reX1vIvCRcvTRR+fWW2/Nv/3bv6VL\nly657bbbcsYZZ2TGjBmbvO+GLuK3oe31HWb8z6qrq7N06dIG/WxKRUVFXn/99Trb1x8a3NhPpZL3\nF8XDDjssixcvzsqVKzc6dp999klFRUVeeOGFTT7uUUcdlbVr1+avf/3rRsd16tQp/fv3z9y5cxtV\nNy2bHm44PUyp0b8Np38pRXq44fRw8RzxBJS08vLyDB8+PMOHD8+yZcsyevTo3HLLLTn44IO3ah0P\nPfTQFjs3vU+fPpk9e3ZWrVpV6xDd9YvNhz3Edv0nPfVdJPKDVq9evclv2Fg/rqGPWV1d3aDH5KNF\nDzecHqbU6N+G07+UIj3ccHq4WIInoCStXbs2q1atqjmEN3n/wnsVFRV1Dq9tyB/zzbUlz00fNGhQ\n7rjjjtxzzz0ZMWJEkvcXm0mTJmXvvfeu9U0cS5cuzcqVK9OjR4+0bt06SfLGG29kxx13rPWYK1eu\nzNSpU9OrV6907NgxSfLOO+8kSZ2LHz7yyCNZuXJl9ttvv5pty5cvr/dbRO677760adOm1uHA9e1/\nyZIlmTVrVvr379/o54OWSQ+/Tw/THOnf9+lfmis9/D49XDoET0BJWrVqVU455ZQcffTR2X333bPt\nttvmqaeeSmVlZb7xjW/UGrupw3u3hC15bvpee+2VQYMG5b//+7/zxhtvZJdddsnkyZPz6quv5oIL\nLqg19rrrrsv999+fcePG1ZwbfsEFF6Rbt27Zc889s+OOO+aVV17JpEmTsmzZslr3X7RoUb773e9m\n8ODB+djHPpaysrL85S9/yQMPPJBevXpl2LBhNWNvvvnmPPfccznooIPSrVu3rFixIlOnTk1lZWW+\n/OUv11ogv/rVr2bAgAHp3bt3tttuuyxatCj33XdfysrK8rWvfW2LPEc0f3r4fXqY5kj/vk//0lzp\n4ffp4dIheAJK0jbbbJMTTzwxTz75ZKZNm5a1a9emZ8+e+c53vlPrD31ZWVmDP6nZ0Lit8UnPB110\n0UW5/vrr88c//jErVqxI7969c9lll9X69GR9bR+s79Of/nSmTJmSCRMmZOXKldl+++2z3377ZdSo\nUdljjz1qxnXt2jWDBg3Kn//850yePDlr1qzJzjvvnBEjRuS0006rdfHFww47LC+//HLuu+++LF++\nPO3atUvfvn3zgx/8IIMGDaq1/+HDh+fxxx/PzJkzs2rVqpSXl+ewww7L6aefnh49ehTwbNEc6eH/\nq00P09zo3/+rTf/SHOnh/6tND5eGsilTphQfcQIAAADwkdNyr14FAAAAQJMSPAEAAABQCMETAAAA\nAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMETAAAAAIUQPAEAAABQCMET\nAAAAAIUQPAEAAABQiP8PXoDEMellzbAAAAAASUVORK5CYII=\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10bcab050>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 7 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "Finally, here is a more randomized version of the generating function, where the number of pixels to flip can vary, as they are picked by sampling a uniform distribution with probability $\\frac{k}{p}$, where $k$ can be interpreted here as the number of pixels to flip (given the desired similarity level) and $p$ as the number of pixels:" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def get_similar_grid2(g, jaccard_sim):\n", | |
| " h = g.flatten()\n", | |
| " pos = np.argwhere(h == True).flatten()\n", | |
| " n_pos = len(pos) # p\n", | |
| " n_to_flip = (n_pos - (n_pos * jaccard_sim)) / (1 + jaccard_sim) # k\n", | |
| " n_to_flip = int(round(n_to_flip))\n", | |
| " flip_prob = n_to_flip / n_pos # k / p\n", | |
| " pos_flip = np.random.random(n_pos) <= flip_prob\n", | |
| " neg = np.argwhere(h == False).flatten()\n", | |
| " h[pos] = np.logical_xor(h[pos], pos_flip)\n", | |
| " h[np.random.choice(neg, sum(pos_flip), replace=False)] = True\n", | |
| " return h.reshape(g.shape)\n", | |
| "\n", | |
| "n = 25\n", | |
| "g0 = np.floor(np.random.random((n, n)) + 0.25)\n", | |
| "grids = [g0] + [get_similar_grid2(g0, 0.75) for _ in range(4)]\n", | |
| "\n", | |
| "show_grids(grids, jaccard_similarity, title='25x25 filled at 25%, J=0.75', n=n)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAEmCAYAAAAjslpVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt4FOX9///XSgTFAxo8tYOHeIioFHFR2yp+QKyyKvup\nWvXbiad6amptq1LTy7qtVdu0StBaFTWeKuqVtYinblFThSii9ZQRFaXEQ5S6FQ9EBSUchPz+4Jd8\njNl7Z5LJZGZ3n4/r2qt133Pfc8/svPZe7uwh1tTU1CEAAAAAAACgn20U9gAAAAAAAABQnFh4AgAA\nAAAAQCBYeAIAAAAAAEAgWHgCAAAAAABAIFh4AgAAAAAAQCBYeAIAAAAAAEAgWHgCAAAAAABAIFh4\nAgAAAAAAQCBYeAIAAAAAAEAgWHgCAACevfDCC/rZz36myZMna+LEifrtb38rSTr//PM1ceLEbtsu\nWLBAEydO1IwZM7rdn2vb/nbFFVdo4sSJ+uCDDwLdDwAAAPIrC3sAAABEzfLly/XUU0/p2Wef1dtv\nv61ly5aprKxMu+66qxKJhI488kjFYrFubZYuXaqqqipjn4ceemjXIk1fPf/883r22Wf1yiuv6MMP\nP9Tq1au1/fbb69vf/raqqqq09dZb92hz/vnn65VXXjH22djYqI033tjT/pcuXarf/OY32nLLLXX0\n0Udr6NCh2mmnnSRJsVisxznJpzfb9lWQ+3j00Uc1depU/epXv1IikfDcbqCurba2Nk2fPl2O4ygW\ni2n//ffXT3/6U2211VY92t9222168MEHdccdd2j48OGejyWfK664Qv/85z97fX68Wr58ue68807N\nnz9fbW1tGjZsmA444ACdfvrp2nbbbT31sWDBAk2ZMsV1u7/97W/d+sy3aLrXXntp+vTpnvYPAECp\nYOEJAICveeKJJ3TNNddo+PDh2m+//bTddtupra1NTz31lKZNm6bnn39el156ac62u+++uw4++OAe\n91dUVPga05o1a3TRRRdp44031ujRo7X//vtr/fr1chxH9913n+bOnatrr71WlmXlbH/aaaflvH+j\njby/+bm5uVlr167VOeec0+Mf37/+9a+1evVq7wc0ADo6OgLfR28Xtwbi2lq/fr0uvvhivfvuu0ok\nElq1apUee+wxZbNZXX/99d3G/Oabb+qee+7RBRdc0G+LTl8VxOLfZ599pp///Od67733FI/Hddhh\nh2nJkiV69NFH9eyzz2r69On6xje+4drPDjvsYMzF22+/raeeekoVFRU5F7J22GEHTZo0qcf9Xhe9\nAAAoJSw8AQDwNTvuuKNqa2v13e9+t9v9Z511ln76059q3rx5mjdvnv7nf/6nR9vddtvN+I9ZPwYN\nGqQzzzxT3//+97X55pt33d/R0aFrrrlGmUxGN9xwg2pra3u0jcVi/TKmjz/+WJJUXl7eo7bddtv5\n7r8Q9XZxayCurX//+99qaWnRr3/9ax1++OGSNiyUzJgxQ4sXL9bIkSMlSevWrdOVV16pMWPG6Kij\njurVcYTp1ltv1XvvvacTTzxRP/nJT7ruv//++3X99dfrmmuu0ZVXXunaT76Fp9///veSpMmTJ/e6\nLQAA6I6FJwAAvma//fbLeX95ebmSyaRuu+02vfzyyzkXB7x6/fXXdd5552m77bbTzTffrM0226yr\ntmzZMp199tlatWqV6uvrteOOO2rQoEE66aSTevQTi8V06qmnKpPJ6OWXX+7zePL5+keSvvr///zn\nP2vfffft+kjf3Llzfe3r+eef1/33369Fixapvb1d2267rQ455BCdfPLJ3RbcOjU3N2vGjBl64403\nNHjwYI0ePVpnn312r/e7ePFi/fOf/9SCBQv08ccfa9WqVdpuu+100EEH6ZRTTum2769+fHHq1Kma\nOnVqVy2dTmv77bc37mcgrq3O77XqXGD66v//4IMPuv5/Q0OD3n//ff3hD3/o874GWnt7ux577DFt\nuummPRZ+jj32WM2cOVMvvPCC3n//fU/vesrls88+01NPPaUhQ4boiCOO6I9hAwBQ0lh4AgCgFwYN\nGtTtf7/u448/1t///nctX75cW265pUaNGqVdd921x3Z77723zj77bN10002aNm2afve730na8DGp\n2tpaffrpp7rooou04447+h5TR0eHmpqa9P7776usrEy77LKL9ttvP8/f7dT57o4FCxbo5Zdf1qRJ\nk7TDDjt01Tr5/VjVjBkzNGPGDG255ZY66KCDtNVWW+mtt97SzJkz9dxzz2n69OkaOnRo1/ZPPvmk\nLr/8cg0ePFgTJkzQ8OHD9eqrr+pnP/tZznOez+zZszV//nyNGTNGBxxwgNavX6/Fixfr3nvv1XPP\nPacbb7xRm266qSQpkUhoiy220NNPP61x48Zpt9126+rnqwuIvdVf11bnwtfixYu7rp/FixdL+r/H\n65133tFdd92ln/70p3kXyqLm9ddf15o1a3TAAQd0PR6dYrGYDjzwQP3jH//QSy+91OeFp8bGRn35\n5Zc67LDDjI/nihUr9PDDD6utrU2bbbaZ9txzT+2999592h8AAMWOhScAADxat26d/vnPf0qSDjzw\nwJzbNDc3q7m5udt9Y8aM0UUXXdTj42gnnniiXnrpJT355JPKZDJKJpO66667tGDBAk2aNMnzuy0e\neeQRSdIBBxzQo9a5GNT50aFOW221lc477zyNHz/etf/OhaeOjg69/PLLSiQS2nfffT2NzauXXnpJ\nM2bM0D777KMrrrii2z/4O7/I+69//avOPfdcSRve+XL11Vdr0KBB+stf/qLKysqu7adPn6777ruv\nVwthJ510ki644IIebR5++GFNmzZNDz74oGzblqSuL8t++umndfDBB+f8rp/e6s9ra+TIkdpjjz10\n9dVX67XXXtOqVav0+OOPa+TIkdpzzz21bt06TZ06VXvvvbeOOeYY32PvjQULFmjBggWet//6x0SX\nLFkiSRoxYkTO7Tu/4yybzfZ5jP/4xz8Ui8WUTCaN27z11luaNm1at/t22203XXzxxb6/zw0AgGLD\nwhMAAB7dfPPNeuedd/Sd73xH+++/f7faJptsolNPPVXjxo3reqfFW2+9pTvuuEMLFizQL3/5S91y\nyy3aZJNNurW76KKLdPbZZ2v69On68ssvdeedd2qnnXbS+eef72lM//73vzVjxgwNHTpUZ555Zo/6\nwQcfrP/3//6f9thjD2255ZZaunSpGhsbNXPmTF1++eX605/+ZFzoGEj333+/JOnCCy/s8S6TRCKh\n++67T3PmzOlaeJo/f75WrFihSZMmdVt0kqQf/ehHeuSRR9Te3u55/6Z3/Rx55JG64YYb9OKLL3Yt\nPAWhP6+tjTbaSH/84x81ffp0PfHEE4rFYho/fnzXuZs1a5ZaW1t16623asWKFbr22mv1zDPP6Msv\nv9T++++vCy64QNtss00gx/nyyy/rzjvv9Lz91xeevvjiC0nmd5Z13v/555/3aXwLFizQe++9p4qK\nCuM7mE444QSNHz9eI0aM0ODBg/Xuu+8qnU5r3rx5mjJlim655ZbAzh8AAIWIhScAADy47777dO+9\n92qnnXbSxRdf3KO+1VZb6Uc/+lG3+0aPHq26ujr94he/0KJFizR79mz94Ac/6LbNsGHD9Jvf/EZT\npkzRddddpyFDhuiSSy7RkCFDXMf0n//8RxdffLHWr1+vVCqV86NFxx9/fLf/3nHHHXXWWWdp+PDh\nuu6663TrrbdGYuHptddeU1lZmZ544omcX9i9du1affrpp1qxYoW22GILvfHGG5KU851Xm222mXbf\nffeu72Hy4ssvv1Qmk9HcuXP17rvv6osvvug2js4vVg9CENfW8OHDdckll/To67333tMdd9yh008/\nXZZl6Te/+Y1efvllnX/++dp000117bXX6pJLLtENN9zQ78cpbfh1xSh/Kfc//vEPSeYvFZekc845\np9t/77nnnrr00kt16aWXat68efrb3/7WtcgHAABYeAIAwNUDDzyg6dOna5dddtFVV12V80uuTQYN\nGqSjjjpKixYt0quvvtpj4Una8NGo7bbbTkuXLtWYMWM8fT/Rf/7zH02ZMkWff/65fvvb3/b4lTQ3\nRx99tKZPn6633npL7e3tPb4vZ6AtX75c69ev14wZM4zbxGIxtbe3a4sttuh658vWW2+dc9tcv7yX\nz+WXX6758+frm9/8psaNG6fy8vKu78CaNWuW1q5d26v+vAr62vqqjo4O1dXVadddd9UJJ5yg9957\nT88884zOOOOMrl+/a29v15/+9Ce99NJLxi9CD1PnO5o6H/+v67y/N+ex0/LlyzVv3rw+f6l4MpnU\nvHnz9Oqrr/a6LQAAxYyFJwAA8pg1a5ZuuOEGVVRU6Oqrr9awYcN63Udnm1WrVuWsX3fddVq6dKmG\nDRum5557To8//ri+973vGft799139ctf/lIrVqzQpZdeqoMOOqjXYxo8eLCGDh2qL774QqtWrQp9\n4alzQeGhhx7q1faffPJJznpbW5vnfS9evFjz58/X2LFjdeWVV2qjjTbqqnV0dCidTnvuqzcG4tr6\nqgcffFCLFi3SrbfeqlgspnfffVeSun1UcY899pC04cvHg1h48vsdTzvttJOkDe/cyqXzftN3QOXj\n5UvF8+nNYwEAQClh4QkAAIN0Oq1bbrlFu+++u6ZNm6Ytt9yyT/0sWrRIknJ+FK6pqUmzZ8/Wvvvu\nq4svvljV1dX685//rL322qvri5K/6u2339aFF16olStX6vLLL9e3v/3tPo1pyZIl+vzzzzV06NA+\nLXj0t3322UfPPvus3nnnHe2yyy6u23culixYsKDry747ff7553rzzTc9f7l45xdRH3TQQd0WnaQN\nj92aNWt6tOncbv369Z728XUDcW191dKlS3XLLbfo1FNP7Vq86fTV48t1rP3J73c87b333ho8eLAW\nLlzY451669ev14svvqhYLNanRbPZs2e7fql4Pq+//rok98cCAIBSs5H7JgAAlJ4777xTt9xyi/bc\nc09dffXVrgsDLS0tOb+bqLm5Wffee69isVjXx5k6/fe//9VVV13V9T1P2267rS666CKtWrVKl112\nWY+Pd7355pu64IIL1N7erj/84Q+ui05Lly7V8uXLe9z/6aefaurUqZKkiRMn9lhsCUPnd1FNmzZN\ny5Yt61Fvb2/v+oe9tOFL07fYYgvNmTNHixcv7rbtjBkztHLlSs/73mGHHSSpxztxPvnkE11zzTU5\n23ReDx988IHn/XQaiGvr66ZNm6YRI0aoqqqq677OBb5nnnmm675//etfktTjl9kmTpyoiRMn5t2H\nF6eddprmzp3r+TZnzpxu7TfddFMdccQRam9v1x133NGt9sADD+iDDz7QAQcc0PWYdlqyZEnXL+Ll\n8sorr2jJkiXaZZddjF8qLm1Y+F23bl2P+9966y3ddtttnh4LAABKDe94AgDgax599FHdcccd2mij\njTRq1CjNmjWrxzY77LBDt3fa3HDDDcpms9pnn3207bbbStrwj9EFCxYoFovp9NNP7/YP2i+//FK/\n//3v1d7erlQqpeHDh0uSDjzwQJ1wwgmaOXOmbrzxRv3iF7+QJK1YsaLr43XxeFwLFy7UwoULe4zr\n+OOP7/p+mwULFujqq6/W6NGjtcMOO2jLLbfUBx98oOeee04rV67Unnvuqerq6n47b7kWR7xuG4/H\ndfbZZ+vWW2/VySefrG9/+9vaYYcd1N7erg8++ECvvPKKRo8erSuuuELShgWIKVOm6PLLL9d5552n\nQw89VOXl5Xr11Vf1zjvvaPTo0Z6/XHzkyJEaNWqUnnrqKf3sZz/TqFGj9Mknn+iFF17QjjvuqOHD\nh/cY76hRozRkyBDNmjVLy5cv7/quqeOOOy7vx7QG4tr6utmzZ+vll1/WjTfe2G2R0bIsjRs3To8+\n+qja29s1dOhQNTY2aq+99tKYMWO6tut8V9egQYPyncYBc9ZZZ2nBggW699579eabb2rkyJF69913\n9cwzz2jrrbfWeeed16NN55ezz507N2efXr5UXJJmzpypf/3rXxo9erS23XZbbbzxxlqyZImef/55\n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\nACAQLDwBAAAAAAAgEL36VTsAhW3RokXGWmtra96fGm1ra8vbt1v7sOtu4/d7fIV+fgaink9bW1vg\n7U31fLkAgP6S77mm2OeQoI+v2M8fczCAQhdramrqcNuopaVF1dXVuvvuu7XXXnvl3ObRRx9VIpEw\n9kGderHWFy1apJNPPln19fWqrKw09hGmZcuW6fe//71efvnlsIcCRNK+++6r3/72txo+fHjYQ+mB\nOZg6deZgoJgxB1OnXrh1r/Owp4UnJkwgvyhPmJ2WLVumZcuWhT0MIJKGDx8e2fwyBwP5MQcDhY05\nGChsXuZhTwtPEhMmkE+UJ0wAhY85GDBjDgYQJOZgID8v87DnhScAAAAAAACgN/hVOwAAAAAAAASC\nhScAAAAAAAAEgoUnAAAAAAAABIKFJwAAAAAAAASChScAAAAAAAAEgoUnAAAAAAAABIKFJwAAAAAA\nAASChScAAAAAAAAEgoUnAAAAAAAABIKFJwAAAAAAAASChScABe2KK66QbdthDwNAH5FhoHCRX6Cw\nkWEMlLKwBwAAfsRiMcVisbCH0Wtr1qzRX//6Vz322GP6/PPPteuuu+rMM8/U2LFjXduef/75euWV\nV3LWBg0apMceeyxn7fPPP9cpp5yizz77TL/73e80fvz4bvWOjg7dc889+vvf/662tjaNGDFCJ510\nkiZOnNhtuzvuuEN33nlnj/433nhjNTY2uo4f+Coy3N3XM2za9oADDtCVV17Z7b5sNqubb75ZL730\nktauXas99thDZ5xxhsaMGZNzX3PnztV9992nt99+W2VlZdp555115plnar/99nM9BkAiv1/31fwu\nXbpUVVVVxn6OOuooXXjhhV3/3Zv8fvTRR5o+fbqam5vV0dGhMWPG6Nxzz9U3vvEN1/EDX0WGu/tq\nhlevXq2HH35YzzzzjFpbW9Xe3i7LsjR58mRNnjxZG23U/T08d999txYtWqRFixbp008/1WmnnabT\nTjst537mzp2re+65R++++66GDh2qgw46SD/+8Y81bNiwXp6JwsHCE4CCduGFF6qjoyPsYfTalVde\nqXnz5un444/XiBEj9Mgjj+iiiy7S1VdfrW9961t5255yyin65JNPut3X3t6uP//5zzrggAOM7W6/\n/XatXr3a+CLj1ltvVTqd1uTJk7Xnnnvq6aef1h/+8AdJ6rH4JEkXXHCBNt10067//voEDHhBhjfI\nl+HttttOZ511Vrf7ttlmm27//eGHH+rcc89VWVmZfvjDH2qTTTbRI488opqaGl111VUaPXp0t+3v\nuNSnAV0AABA0SURBVOMO3XXXXRo/fryOPPJIrV27Vu+8844+/vjj3pwGlDjyu0Gu/G611Va6+OKL\ne7R//vnn9fjjj3fbtjf5bW9v15QpU7Ry5UqdfPLJGjRokGbNmqXzzz9ft9xyi7bccsu+nhaUIDK8\nQa4M//e//9X111+veDyuE088UUOHDtXzzz+va665Rq+//rouuuiibn3cfvvtGj58uPbYYw+98MIL\nxv0/9NBD+stf/qKxY8fq3HPP1Ycffqj77rtPixcv1g033KDBgwf34YxEHwtPAAraoEGDwh5Cry1a\ntEhNTU36yU9+ohNPPFGSdPjhh+uMM85QfX29rr/++rztc/01p/OvM9/73vdytmltbVUmk9Gpp56q\nv/71rz3qH330kWbOnKljjjlGv/jFLyRJRx99tM477zzV19drwoQJPRaWxo8fzwtc+EaGN8iX4c02\n28yY7U4NDQ1auXKlbr/9do0YMULShgyfdtppmj59uurr67u2ff3113XXXXfpnHPO0fHHH5//YIE8\nyO8GufK7ySab5MztI488os0220wHHXRQ1329ye+DDz6obDarG2+8UXvuuack6cADD9QZZ5yhmTNn\n9likBvIhwxvkynB5ebluv/127bzzzl33TZ48WVOnTtWjjz6qU045RZZlddXS6bS23357ffbZZzr2\n2GNz7nvt2rW69dZbte+++6qurq7r/n322UepVEqzZ882ti10/HkaQGStXLlS119/vX74wx/qiCOO\n0HHHHaeamhq98cYbXdt8/bPpS5cu1cSJEzVz5kzdf//9sm1bRx55pGpqavThhx9q/fr1uvPOO3XC\nCScokUjot7/9rVasWDGgx/Xkk09q0KBBSiaTXfcNHjxYRx11lF5//XV99NFHve5zzpw52nTTTXXw\nwQfnrF933XU65JBDjH8Fevrpp7Vu3Todc8wx3e7//ve/r48++kivvfZajzYdHR364osvCvIvZRgY\nZNi7fBnu6OjQunXr1N7ebmz/6quvavfdd+/6R6skDRkyRN/97nf1xhtvKJvNdt0/a9YslZeX6/jj\nj1dHR0feflG6yK93bnNwp2XLlmnBggU65JBDtPHGG3fd35v8zps3TyNHjuxadJKknXbaSfF4XE88\n8USvx47iRYa9y5XhYcOGdVt06jRu3DhJ0pIlS7rdv/3227vup7W1VV988YUOPfTQbvd/97vf1Sab\nbKK5c+f2euyFgnc8AYisq6++WvPmzdNxxx2nnXfeWZ999pkWLlyoJUuWaI899ujaLtfHxh577DGt\nW7dOP/jBD7R8+XLdc889uvzyyzVq1Ci99tprqqqqUjab1QMPPKAbb7xRv/rVr/KOZe3atVq5cqWn\ncbt9PvvNN9/UiBEjun1MTVLXi8g333xT2267rad9SdKnn36qF198URMnTtSQIUN61J944gm9/vrr\nmjFjht5//33jmDbddFPttNNOxjF9fdGqqqpK7e3t2mSTTTRu3Didc8452nrrrT2PG8WPDHvjluH3\n3ntPRx55pL788kttvfXWXe+E+OpfqteuXZvzHYid/S1evLjrL7OO42jUqFGaNWuW7rrrLq1YsULl\n5eU66aSTivYvreg98uuNW36/au7cuero6OjxTiiv+V2/fr3eeustHX300T22HTlypF588UW1t7f3\nODaUJjLsTW8yLEltbW2expnL2rVrJSnnx+mGDBmiN998s9d9FgoWngBE1rPPPqvJkyfrJz/5Sd7t\ncr3jZtmyZbr77rs1dOhQSdL69evV0NCg1atXq76+vutjY59++qkef/xxTZkyRWVl5qfEOXPmaOrU\nqa5jjsVimjNnTt5tli1bpuHDh/e4v/O+ZcuWue7nq5qamrR+/fqcb+lfvXq1brrpJp1wwgnafvvt\njQtPy5Yty7lolGtMW2yxhY499ljts88+2njjjfXKK6/owQcf1L///W/ddNNNXeccIMPe5MuwZVmK\nx+Padddd1d7erieffFJ333233nvvPV1yySVd2+2444569dVXe/yjc+HChd3GtGLFCi1fvlwLFy7U\nSy+9pNNOO03bb7+9HnnkEV133XUqKyvr9ldklC7y602+/H7d448/ruHDhysej3e7vzf5/fLLL3OO\nv7y8vGvbr75zCqWLDHvTmwyvXbtWs2bN0je+8Q2NHDmyV/uRpBEjRigWi2nhwoVKJBJd9y9ZskSf\nffaZYrGYVqxYoS222KLXfUcdC08AImuLLbbQokWLjBNMPhMmTOi2ANI5ORx++OHdvqto5MiRmjt3\nrj7++GPtsMMOxv4OPPBATZs2rZdHkNuaNWu6vcW+U+dfP1avXt2r/ubMmaOtttpK+++/f49aQ0OD\n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\nsxkAsGfPnujxHzx4gIGBAWg0GqSlpUEQBLhcLpw8eTJaTE5FLDwR0ZKUmZmJyspKvHr1Ck6nE6FQ\nCBs2bEB9fb2ouCGRSOJ+UjPTdv/Gk54/NTQ0oLW1Fd3d3RgdHYVKpcLVq1djikUzfb9QKASHw4HC\nwsJ5L5s80/etq6vDqlWrYLFYYLPZsHHjRjQ2NmLXrl2i7Xbv3o2+vj44nU4Eg0Hk5eWhuroaRqNR\nNDKD/m7M8K++LTTDeXl5KC4uhiAIGB4ehkQiQUFBAc6fP499+/aJtl25ciXWr1+Pp0+f4ufPn5DJ\nZDh48CCMRmPM1JuMjAzcuHEDd+/eRUdHB8bHx7FlyxZcu3YtrlV9KPUxv7/6luhvsMvlwsjICE6c\nODHjNvPJb1ZWFm7evInbt2/DbDYjHA6jpKQEZ86cwZo1a+ZxFiiVMcO/+rbQDPt8PgQCAUgkErS0\ntMTst6amRlR46ujogNvtjra73W709PRAIpGguLg4WnhSKpUQBAEvX77E5OQkVCoVLl68mNLT7ABA\n4nA4kl/iJCIiIiIiIiKiv0586/YSERERERERERHNEwtPRERERERERESUFCw8ERERERERERFRUrDw\nREREREREREREScHCExERERERERERJQULT0RERERERERElBQsPBERERERERERUVKw8ERERERERERE\nREnBwhMRERERERERESUFC09ERERERERERJQULDwREREREREREVFSsPBERERERERERERJ8Q+5Dfih\nL2d1vAAAAABJRU5ErkJggg==\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10bccfa50>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 8 | |
| }, | |
| { | |
| "cell_type": "markdown", | |
| "metadata": {}, | |
| "source": [ | |
| "And finally, we note that the procedure above (as well as the Jaccard similarity function as defined) would break for grids with density higher than 50%). But fortunately there is an easy fix: simply invert the meaning of a \"pixel\" (i.e. treat \"on\" pixels as \"off\", and vice versa), in the cases where the density is above the 50% threshold." | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "collapsed": false, | |
| "input": [ | |
| "def jaccard_similarity2(g1, g2):\n", | |
| " b = True if sum(g1) / g1.size <= 0.5 else False\n", | |
| " s1 = set(np.argwhere(g1.flatten() == b).flatten())\n", | |
| " s2 = set(np.argwhere(g2.flatten() == b).flatten())\n", | |
| " return len(s1 & s2) / len(s1 | s2) \n", | |
| "\n", | |
| "def get_similar_grid3(g, jaccard_sim):\n", | |
| " h = g.flatten()\n", | |
| " b = True if sum(g) / g.size <= 0.5 else False\n", | |
| " pos = np.argwhere(h == b).flatten()\n", | |
| " n_pos = len(pos) # p\n", | |
| " n_to_flip = (n_pos - (n_pos * jaccard_sim)) / (1 + jaccard_sim) # k\n", | |
| " n_to_flip = int(round(n_to_flip))\n", | |
| " flip_prob = n_to_flip / n_pos # k / p\n", | |
| " pos_flip = np.random.random(n_pos) <= flip_prob\n", | |
| " neg = np.argwhere(h == (not b)).flatten()\n", | |
| " h[pos] = np.logical_xor(h[pos], pos_flip)\n", | |
| " h[np.random.choice(neg, sum(pos_flip), replace=False)] = b\n", | |
| " return h.reshape(g.shape)\n", | |
| "\n", | |
| "n = 25\n", | |
| "g0 = np.floor(np.random.random((n, n)) + 0.75)\n", | |
| "grids = [g0] + [get_similar_grid3(g0, 0.25) for _ in range(4)]\n", | |
| "\n", | |
| "show_grids(grids, jaccard_similarity2, \n", | |
| " title='25x25 filled at 75%, J=0.25', n=n)" | |
| ], | |
| "language": "python", | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "metadata": {}, | |
| "output_type": "display_data", | |
| "png": "iVBORw0KGgoAAAANSUhEUgAABJ4AAAEmCAYAAAAjslpVAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xt8HFX9//H3Qri0QgtbQHQLEigpl1rLBrwAChQlKbBf\nEYHvdwM/7hhARW7hgawoF6NAABEoEG5S4JtRKBe/K9AVSrAU5GKGthRqQ2mgMlIuXbEFWi5lf3/0\nkUjJzs40k5OZ2byej0ceD81nzpkzs+dzPrOH7ibR2dlZEgAAAAAAADDI1gt7AAAAAAAAAKhObDwB\nAAAAAADACDaeAAAAAAAAYAQbTwAAAAAAADCCjScAAAAAAAAYwcYTAAAAAAAAjGDjCQAAAAAAAEaw\n8QQAAAAAAAAj2HgCAAAAAACAEWw8AQAA35599ln96Ec/0sEHH6zJkyfr/PPPlySdfvrpmjx58lrH\nzpkzR5MnT9a0adPW+n25YwfbJZdcosmTJ+uNN94weh4AAABUVhP2AAAAiJrly5fr8ccf11NPPaXF\nixdr2bJlqqmp0fbbb6/GxkZNmTJFiURirTZLly5VU1OTa5/77bdf3ybNQD3zzDN66qmnNG/ePL35\n5pv64IMP9PnPf15f+9rX1NTUpM0337xfm9NPP13z5s1z7bNQKGiDDTbwdf6lS5fqZz/7mUaNGqWD\nDjpII0eO1LbbbitJSiQS/e5JJety7ECZPMeMGTN02WWX6ZxzzlFjY+M6t6skkUho5syZff9/IHOr\nWCxq6tSpsm1biURCu+++u0499VRtttlm/drfcsstuv/++3XbbbdpzJgxvq+lkksuuUR//vOf1/n+\n+LV8+XLdfvvtmj17torFokaPHq099thDxx13nLbccktffaxataovz1966SW99dZbWm+99bTNNtto\n8uTJOvTQQ1VT0/9RudKm6c4776ypU6cO+LoAAKhGbDwBAPAZjz32mK666iqNGTNGu+22m7baaisV\ni0U9/vjjuvzyy/XMM8/oggsuKNt23Lhx2muvvfr9vra2NtCYPvzwQ5177rnaYIMNNHHiRO2+++76\n5JNPZNu27rnnHj366KO6+uqrlUqlyrY/5phjyv5+vfX8/+Pnrq4uffTRRzrllFP6vfn+6U9/qg8+\n+MD/BQ2BUqlk/Bzrurk1btw419di3rx5eu655/T1r3/dta2fufXJJ5/ovPPO06uvvqrGxkatWrVK\nDz/8sBzH0bXXXrvWmBctWqTf//73OuOMMwZt0+nTTGz+/fvf/9aPf/xjvfbaa0qn09p///21ZMkS\nzZgxQ0899ZSmTp2qL3zhC579zJs3T7/+9a81atQoTZo0Sd/85je1YsUKPfnkk7rhhhv0+OOP64or\nrtCGG27Yr+3WW2+thoaGfr/3u+kFAMBwwsYTAACfsc0226i1tVXf+MY31vr9iSeeqFNPPVWzZs3S\nrFmz9K1vfatf2x122MF1YyGI9ddfXyeccIK++93vapNNNun7falU0lVXXaV8Pq/rrrtOra2t/dom\nEolBGdPbb78tSUomk/1iW221VeD+42hdN7fGjRuncePGlY398Ic/lCQdfPDBZeN+59bf//53dXd3\n66c//am+853vSFqzUTJt2jQtXLhQO+20kyRp9erVuvTSSzVp0iQdeOCB63QdYbr55pv12muv6Ygj\njtDJJ5/c9/t7771X1157ra666ipdeumlnv0kk0nlcjntu+++Wn/99ft+f8opp+j000/XCy+8oPvv\nv19HHHFEv7Zbb721kTwHAKAa8R1PAAB8xm677dZv00la80Y1k8lIkubOnRvoHC+++KK+853v6Mgj\nj9R77723VmzZsmU69NBDdeCBB+of//iHpDUbT0ceeeRam07Smk2lo48+elDG5Oaz39V05plnavLk\nyZo8eXLfOQfre5ueeeYZnXvuufrud7+rAw44QEceeaRuuOEGvfvuu2WP7+rq0mmnnaYpU6bou9/9\nrs4//3wtWbJknc+7cOFCXXPNNX2bew0NDfp//+//6frrr+937tNPP73v43KXXXZZ370I8p1Sixcv\n1oIFC7Tlllu6/osnv3rH0LvB9On//enxdXR06PXXX9fZZ58d6HxDaeXKlXr44Yc1YsSIfhs/3/ve\n97TVVlvp2Wef1euvv+7Z17hx47T//vuvtekkSSNGjOjbbDKVUwAADCf8iycAANZB75vUz75Z7fX2\n22/r//7v/7R8+XKNGjVKEyZM0Pbbb9/vuF122UUnnXSSbrjhBl1++eX6xS9+IWnNx6RaW1v1zjvv\n6Nxzz9U222wTeEylUkmdnZ16/fXXVVNTo+2220677bab7+926v3XHXPmzNHcuXPV0NCgrbfeui/W\nK+jHqqZNm6Zp06Zp1KhR2nPPPbXZZpvp5Zdf1l133aWnn35aU6dO1ciRI/uO/8tf/qKLLrpIG264\nofbdd1+NGTNGzz//vH70ox+VveeVPPDAA5o9e7YmTZqkPfbYQ5988okWLlyou+++W08//bSuv/56\njRgxQpLU2NioTTfdVE888YT23ntv7bDDDn39fO5znxvQtf/pT3+SJB144IGu99Hv3Pr85z8vac1m\nWu/8WbhwoaT/vF6vvPKK7rjjDp166ql9x8fBiy++qA8//FB77LFH3+vRK5FI6Ktf/ar+9Kc/6bnn\nnvP1cTs3Xjm1YsUKPfjggyoWi/rc5z6n8ePHa5dddhnw+QAAqGZsPAEA4NPq1av15z//WZL01a9+\ntewxXV1d6urqWut3kyZN0rnnntvv42hHHHGEnnvuOf3lL39RPp9XJpPRHXfcoTlz5qihoUEHHHCA\nr3E99NBDkqQ99tijX6x3E+Piiy9e6/ebbbaZfvKTn2ifffbx7L9346lUKmnu3LlqbGzUV77yFV9j\n8+u5557TtGnTtOuuu+qSSy5ZawOn9wu5f/e73/V9HG3lypW68sortf766+u3v/2t6urq+o6fOnWq\n7rnnnnXaCDvyyCN1xhln9Gvz4IMP6vLLL9f999+vbDYrSX1flv3EE09or732KvtdP+vigw8+0MMP\nP6z111+/4kfe/M6tnXbaSTvuuKOuvPJKvfDCC1q1apUeeeQR7bTTTho/frxWr16tyy67TLvssosO\nOeSQQGNfV3PmzNGcOXN8H//Zj4n2/mu2sWPHlj2+9zvOHMcJMMr/5JRbnr/88su6/PLL1/rdDjvs\noPPOOy/w97kBAFBt2HgCAMCnG2+8Ua+88oq+/vWva/fdd18rtvHGG+voo4/W3nvv3fcvLV5++WXd\ndtttmjNnjs466yzddNNN2njjjddqd+655+qkk07S1KlT9fHHH+v222/Xtttuq9NPP93XmP7+979r\n2rRpGjlypE444YR+8b322kv//d//rR133FGjRo3S0qVLVSgUdNddd+miiy7Sr3/9a9c310Pp3nvv\nlSSdffbZ/f7VUGNjo+655x7NnDmzb+Np9uzZWrFihRoaGtbadJKkY489Vg899JBWrlzp+/xu/+pn\nypQpuu666/S3v/2tb+NpsHV2duq9997TN77xjbJfTr2uc2u99dbTr371K02dOlWPPfaYEomE9tln\nn757N336dPX09Ojmm2/WihUrdPXVV+vJJ5/Uxx9/rN13311nnHGGtthiCyPXOnfuXN1+++2+j//s\nxlPvx1Ld/mVZ7+/dPprpx3333adnn31W48aN05QpU/rFDz/8cO2zzz4aO3asNtxwQ7366quyLEuz\nZs3SmWeeqZtuusnY/QMAII7YeAIAwId77rlHd999t7bddludd955/eKbbbaZjj322LV+N3HiRLW1\ntem0007TggUL9MADD+j73//+WseMHj1aP/vZz3TmmWfqmmuu0UYbbaSf//zn2mijjTzH9I9//EPn\nnXeePvnkE+VyubIfLTrssMPW+v/bbLONTjzxRI0ZM0bXXHONbr755khsPL3wwguqqanRY489VvYL\nuz/66CO98847WrFihTbddFO99NJLklT2X1597nOf07hx4zRv3jzf5//444+Vz+f16KOP6tVXX9V7\n77231jh6v1jdhN6P2bl9qfhA5taYMWP085//vF9fr732mm677TYdd9xxSqVS+tnPfqa5c+fq9NNP\n14gRI3T11Vfr5z//ua677rrBu8BPOeaYYyL9pdyzZs3StddeqzFjxuiiiy4q+1G7U045Za3/P378\neF1wwQW64IILNGvWLP3hD3/o2+QDAABsPAEA4Om+++7T1KlTtd122+mKK67o9wXflfR+fGrBggV6\n/vnn+208SWs+GrXVVltp6dKlmjRpkq/vJ/rHP/6hM888U++++67OP//8sl+GXslBBx2kqVOn6uWX\nX9bKlSv7fV/OUFu+fLk++eSTvi8wLyeRSGjlypXadNNN+/7ly+abb1722HJ/ea+Siy66SLNnz9YX\nv/hF7b333komk33fgTV9+nR99NFH69SfXz09PXrxxRe11VZbrfOXivuZW59WKpXU1tam7bffXocf\nfrhee+01Pfnkkzr++OP7/vrdypUr9etf/1rPPfecdttttwFflym9/6Lps1/I36v39+uSo71mz56t\niy++WMlkUr/5zW/W+v4yPzKZjGbNmqXnn39+nc8NAEA1Y+MJAIAKpk+fruuuu061tbW68sorNXr0\n6HXuo7fNqlWrysavueYaLV26VKNHj9bTTz+tRx55RN/+9rdd+3v11Vd11llnacWKFbrgggu05557\nrvOYNtxwQ40cOVLvvfeeVq1aFfrGU++Gwh//+Md1Ov5f//pX2XixWPR97oULF2r27Nmqr6/XpZde\nqvXW+88f/S2VSrIsy3df66r3XztNmTJlQF/O7jW3Pu3+++/XggULdPPNNyuRSOjVV1+VpLU+qrjj\njjtKWvPl4yY2noJ+x9O2224rac2/3Cqn9/du3wHl5rHHHtMvf/lLbbHFFrriiiv6vitqXazLawEA\nwHDCxhMAAC4sy9JNN92kcePG6fLLL9eoUaMG1M+CBQskqexH4To7O/XAAw/oK1/5is477zw1Nzfr\nN7/5jXbeeeeyb34XL16ss88+W++//74uuugife1rXxvQmJYsWaJ3331XI0eOHNBm2mDbdddd9dRT\nT+mVV17Rdttt53l872bJnDlz+r7su9e7776rRYsW+d7I6f0i6j333HOtTSdpzWv34Ycf9mvTe9wn\nn3zi6xzlfPjhh76+VLySSnPr05YuXaqbbrpJRx99dN/mzafHUe5/mxD0O5522WUXbbjhhpo/f36/\nf6n3ySef6G9/+5sSicQ6bZo9/PDDuuSSS7TVVlsN6F869XrxxRcleb8WAAAMN+t5HwIAwPBz++23\n66abbtL48eN15ZVXem46dXd3l/1uoq6uLt19991KJBJ9H2fq9c9//lNXXHFF3/c8bbnlljr33HO1\natUqXXjhhf0+3rVo0SKdccYZWrlypX75y196bjotXbpUy5cv7/f7d955R5dddpkkafLkyf02W8LQ\n+11Ul19+uZYtW9YvvnLlyr439tKaL03fdNNNNXPmTC1cuHCtY6dNm6b333/f97l7Nxo++y9x/vWv\nf+mqq64q26Z3Przxxhu+z/NZjz32mN5991199atfLful4r0GMrc+6/LLL9fYsWPV1NTU97veDb4n\nn3yy73d//etfJanfX2abPHmyJk+e7HlNXo455hg9+uijvn9mzpy5VvsRI0bogAMO0MqVK3Xbbbet\nFbvvvvv0xhtvaI899ui3ebRkyZK+v4j3aTNmzNAll1yirbfeWr/97W89N50WL16s1atX9/v9yy+/\nrFtuucXXawEAwHDDv3gCAOAzZsyYodtuu03rrbeeJkyYoOnTp/c7Zuutt17rX9pcd911chxHu+66\na98mwssvv6w5c+YokUjouOOO0y677NJ3/Mcff6yLL75YK1euVC6X05gxYySt+fPthx9+uO666y5d\nf/31Ou200yRJK1as6Pt4XTqd1vz58zV//vx+4zrssMP6vt9mzpw5uvLKKzVx4kRtvfXWGjVqlN54\n4w09/fTTev/99zV+/Hg1NzcP2n0rtzni99h0Oq2TTjpJN998s4466ih97Wtf09Zbb62VK1fqjTfe\n0Lx58zRx4kRdcsklktZsQJx55pm66KKL9JOf/ET77befksmknn/+eb3yyiuaOHGi7y8X32mnnTRh\nwgQ9/vjj+tGPfqQJEyboX//6l5599llts802GjNmTL/xTpgwQRtttJGmT5+u5cuX933X1KGHHur6\nF9c+y+tLxXut69z6rAceeEBz587V9ddfv9YmYyqV0t57760ZM2Zo5cqVGjlypAqFgnbeeWdNmjSp\n77jef9VV7ou2w3DiiSdqzpw5uvvuu7Vo0SLttNNOevXVV/Xkk09q8803109+8pN+bXq/nP3RRx/t\n+91zzz2ntrY2lUolTZo0SQ8++GC/dptssslaX9B/11136a9//asmTpyoLbfcUhtssIGWLFmiZ555\nRtKa704bjA06AACqCRtPAAB8Ru+/YimVSrrnnnvKHjNp0qS1Np4OOOAAzZ49WwsXLtQzzzyjjz/+\nWMlkUvvtt58OOeQQffnLX16r/Y033qju7m4deuih/b4Y/KSTTtK8efP0xz/+Uel0Wnvvvbfee+89\nrVixQolEQrZty7btfmNKJBKaMmVK38bT+PHjtf/++6u7u1svvfSS3n//fY0cOVI77LCD9t13X/3X\nf/3XOm0mJBIJ14+vVYr5PTabzWrChAm69957NX/+fD355JPaZJNNtMUWWyiTyWj//fdf6/h99tlH\nl112maZNm6bHHntMG264oSZOnKipU6eqo6PD95c8r7feemptbdUtt9yip59+Wvfdd5+23HJLHXTQ\nQTrqqKN07LHH9hvvJptsogsvvFC33367ZsyYoVWrVimRSOiAAw7wtfH06quvav78+b6+VHxd59an\nvfXWW7rhhhuUzWY1bty4fvFzzjlHI0eO1BNPPKHVq1drzz337Ldxs3jxYknSfvvt53ldvXo3q3q/\noH0wjRo1SlOnTtW0adM0e/ZsPf/88xo9erSmTJmi4447TltssUXZdp99Dd944w2VSiUlEgk99NBD\nZdtsvfXWa2087b333nr//fe1ePFiPffcc/rwww81evRoff3rX9fBBx+8zl/yDwDAcJDo7Oz0/58n\nAQAAMKzcc889uu6663TrrbfqS1/6kq82LS0t6urq0uWXX650Om14hAAAIMrC/1IHAAAARNa8efO0\n1157+d50KhaLeuGFF1RTU7PWX8wDAADDEx+1AwAAgKsLL7zQ13GzZ89WV1eXZs+erVWrVul73/te\n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\nmbLx3tcnn88PqL3f98I1rpEyCoWCayyTySibzbrGLcuqGM/n87IsyzWezWYDxb3GZ/r8xIPH29ra\nXONe88tPvKWlZUDnt21buVzOtW2UBMnhuOdI1Neo4ZBDpscf5PxxUCl/414jwz5/3McXh/XD5PoQ\nFyZzOOw5TI6En4MDfY71297k9cVBmPkbh3jYNSLK8zsq8Y6OjrLx3tenqalpQO39vhfmo3YAAAAA\nAAAwgo0nAAAAAAAAGMHGEwAAAAAAAIxg4wkAAAAAAABGsPEEAAAAAAAAI9h4AgAAAAAAgBGJzs7O\nktdB3d3dam5uVkNDg5LJZNljUqmUHMdx7cN0PJ1OK5VKucZt2w61/7DH5ziOZ9y27YrnT6fTgdp7\nXZ9X/1Edf7FYVKFQUHt7u+rq6lz7CFNvDre2tqq2trbsMUHnYNg5Gnbc9BoxGDkW9bjpNSCuOTwU\n+TsYNaSa83so5nfYNTiu19/T06NcLhfZ/JWi8Rwd9nNsNTwDhFWjqiUe1xwejPxl/sc/P+Jegx3H\nUSaTKRvvfX3y+fyA2vvN4RrXSBmFQsE1ls1mZVlWaPFMJqNsNusaz+fzofYf9vgsy/KMt7S0VDx/\nW1tboPZe1+fVf5THHxeNjY2uC2fQORh2joYdN71GDEaORT1ueg2Iew6bzN/BqCHVnN9DMb/DrsFx\nvX7btpXL5VzbRkmYz9FhP8dWwzNAmDWqGuJxz+Eg+cv8j39+xL0GW5aljo6OsvHe16epqWlA7f3m\nMB+1AwAAAAAAgBFsPAEAAAAAAMAINp4AAAAAAABgBBtPAAAAAAAAMIKNJwAAAAAAABjBxhMAAAAA\nAACMSHR2dpa8Duru7lZzc7NaW1tVW1tb9hjbtuU4jmsfqVSqquPpdFqpVMo17jhOxXjQ++fn/LZt\nV+zf7c90+23vNf6g/Zse30DjxWJRhUJB7e3tqqurc+0jTOSw+Rzn/sU3HvUcrob8DbtGVkPcqwYG\nub9+4mHVWK941PNX+k8ONzQ0KJlMlj0mCnOsmmtg0DWomnNoqOJua1hPT49yuVxkc7gaanAUalTU\n53/U3wf7ub5MJuPafyqVUj6fD9S/G791uMY1UkZjY6PrTcvn87Isy7VtNput6ngmk1E2m3WNW5ZV\nMR70/vk5f0tLS8X+29raArX3Gn/Q/k2PL0g8LshhcznG/Yt3PA7inL9h18hqiHvVwCD31088zBpb\nDfkrSYVCwTUW9j2s9hoYdA2q9hwKcw2zbVu5XM61bVTEuQZHoUZFff5H/X2wn+vr6Ohw7T+bzaqp\nqcAuH6oAABZNSURBVClQ/0HxUTsAAAAAAAAYwcYTAAAAAAAAjGDjCQAAAAAAAEaw8QQAAAAAAAAj\n2HgCAAAAAACAEWw8AQAAAAAAwIhEZ2dnyeug7u5uNTc3q7W1VbW1tWWPsW1bjuO49pFKpWIdT6fT\nSqVSrvGwr99rfI7jeMZt2654frc/Ieq3vdf1efUf9PqCXr/b+IvFogqFgtrb21VXV+faR5h6c7ih\noUHJZLLsMWHnWNg5EjSHg+bgYKwhpnPUdDzo+AfaPuo57Cd/w57fYdfAOMTjnp9Rvf6o56/Ec/Rg\nxKOwBgV9Tg07x03X2IFef9Rz2E/+DsUz3nCPV3sNDft9cCqVUj6fdx1fpfH7zeEa10gZjY2Nrjcl\nn8/LsizXttlsNtbxTCajbDbrGg/7+r3GZ1mWZ7ylpaXi+dva2gK197o+r/6DXl/Q6680/rgoFAqu\nsbBzLOwcCZrDQXNwMNYQ0zlqOh50/EHax0Gl/A17foddA+MQj3t+Rvn642I4P0dHvYYPxXNq2Dlu\nusYGuf44qJS/Q/GMN9zj1V5Dw34fnM1m1dTU5Dq+wajBfNQOAAAAAAAARrDxBAAAAAAAACPYeAIA\nAAAAAIARbDwBAAAAAADACDaeAAAAAAAAYAQbTwAAAAAAADAi0dnZWfI6qLu7W83NzWpoaFAymSx7\nTCqVkuM4rn2YjqfTaaVSKde44zgV47ZtGz1/FPp3+xOg0pr7Y9v2gMfnJ276/EH7H2j7YrGoQqGg\n9vZ21dXVufYRJj85bDqHgvZvOoejvsZEIYdNx8nh8gYjf03nR7XHo1CDvdoHXV/jun5EPX+leDxH\nh/2cSzx4jpuqkb3th2sOxyF/o1Cj4p4fYY/fz/gymYxr+1QqpXw+P+DxBYn7zeEa10gZhULBNZbN\nZmVZVmjxTCajbDbrGrcsq2I8n88bPX8U+m9ra3ONW5allpaWAY/PT9z0+YP2H6R9XFTKYdM5FLR/\n0zkc9TUmCjlsOk4OVxYkf03nR7XHo1CDvdoHXV/jvH7ERZSfo8N+ziUePMdN1khyONr5G4UaFff8\nCHv8fsbX0dHh2j6bzaqpqWnA4xuK/OWjdgAAAAAAADCCjScAAAAAAAAYwcYTAAAAAAAAjGDjCQAA\nAAAAAEaw8QQAAAAAAAAj1umv2gGoXj09PRX/lKdXvFgsGu0/6PmDxqMwPq/zB+0/7HjQ6wvSHgDC\nFIU1uJKwa/BwiAd9Rgrav1d7k3EA1S/R2dlZ8jqou7tbzc3NuvPOO7XzzjuXPWbGjBlqbGx07YM4\n8WqNL1iwQEcddZTa29tVV1fn2keYli1bposvvlhz584NeyhAJH3lK1/R+eefrzFjxoQ9lH6owcSJ\nU4OBakYNJk48vnG/ddjXxhMFE6gsygWz17Jly7Rs2bKwhwFE0pgxYyKbv9RgoDJqMBBv1GAg3vzU\nYV8bTxIFE6gkygUTQPxRgwF31GAAJlGDgcr81GHfG08AAAAAAADAuuCv2gEAAAAAAMAINp4AAAAA\nAABgBBtPAAAAAAAAMIKNJwAAAAAAABjBxhMAAAAAAACMYOMJAAAAAAAARrDxBAAAAAAAACPYeAIA\nAAAAAIARbDwBAAAAAADACDaeAAAAAAAAYAQbTwBi7ZJLLlE2mw17GAAGiBwG4ov8BeKNHMZQqQl7\nAAAQRCKRUCKRCHsY6+zDDz/U7373Oz388MN69913tf322+uEE05QfX29Z9uuri498sgjmj9/vt5+\n+20lk0nttttuOv7445VMJvsdP3/+fLW3t2vRokUaOXKk9t13X5144okaMWLEWsc5jqMbb7xRzz33\nnD766CPtuOOOOv744zVp0qS1jluyZIny+bwWLFig7u5uffzxx7IsS5///OeD3RQMS+Swew4vXbpU\nTU1Nrv0ceOCBOvvssyVJt912m26//XbXY6+55hrtuuuukshhDB7yt3INvvPOO/Xkk0/q9ddf1/vv\nv68ttthC6XRaRx111Fr5tmTJEj344IP629/+ptdff10jRozQjjvuqGOPPVbjx48vO45HH31U99xz\njxYvXqyamhp96Utf0gknnKDddtst2M3BsEIOV87hjz/+WP/7v/+rQqGgt99+W1tuuaWmTJmibDar\n9ddfv++4dcnh//mf/9Gbb75ZdmypVEp33HHHAO5I9CU6OztLYQ8CAAZq9erVKpVKqqmJ1z76xRdf\nrFmzZumwww7T2LFj9dBDD2nhwoW68sor9eUvf7li2+bmZr377rvad999lUql9M9//lP333+/Ntpo\nI910001rFc1Fixbphz/8obbbbjsdfPDBeuutt/SHP/xBu+22my655JK+495880394Ac/UE1NjQ49\n9FBtvPHGeuihh/TKK6/oiiuu0MSJE/uOnTFjhtra2rTddttp/fXX18svv6yOjg7etGJAyGH3HF61\napVmz57dr/0zzzyjRx55RL/4xS+0zz77SJIWL16sxYsXr3VcqVTSLbfcopUrV+ree+/te0gmhzFY\nyN/KNfgXv/iFNttsM2277bYaOXKkXn31Vf3pT3/SRhttpFtvvVWjR4+WJF1//fV66KGH9K1vfUs7\n77yz3n33XeXzeS1dulSXXnppvzfTt912m+644w7ts88+SqfT+uijj/TKK69owoQJ+s53vjP4NwxV\nixyunMMXXnihZs2apSlTpmj8+PF68cUXVSgUdNBBB+mss87qO25dcnj27NlatWrVWmNaunSpbr31\nVh1yyCE67bTTBukuRQsbTwAwxBYsWKAf/vCHOvnkk3XEEUdIWvNfbo4//nhtttlmuvbaayu2f/75\n5/sV1Xnz5un000/XUUcdpeOPP77v9+eee65efvll3X777X3/wumBBx7QFVdcocsuu0y77767JOmq\nq67Sgw8+qFtvvVVjx46VJH3wwQc65phjNHr0aLW3t/f1uWLFCtXU1GjEiBH6wx/+oPb2dv61BIaV\noczhcs466yx1d3fr3nvv1QYbbOB63JtvvqlsNquDDjpIZ555Zt/vyWEMZ2Hn76xZs3TBBReopaVF\nU6ZMkSR1d3dr22231cYbb9x33PLly3Xsscdq7Nixuvrqq/t+/+KLL+rHP/6xTjnlFB122GHrdO1A\nNRiqHP773/+uU089VUcffbSOPfbYvmNvuOEG3X333brpppu0/fbbS1q3HC7njjvu0O9+9ztde+21\n2mWXXXzfiziJ19YmgGHl/fff16233qrZs2erWCxqk0020Q477KAf/OAH2nHHHSWt+Wz63LlzZVmW\npP98NOXkk09WTU2N7r77br3zzjuaMGGCWlpatMUWW+jOO+9UPp/XihUrtMcee+icc87RpptuOmTX\n9Ze//EXrr7++MplM3+823HBDHXjggbr55pv11ltvacstt3RtX+6/5EycOFGbbrqplixZ0ve79957\nT11dXTr88MPX+lhdQ0ODrrvuOj322GN9G0/PP/+8xo0b17fpJEkbbbSRvvGNb+iPf/yjHMdRKpWS\npCG9V4g3crg8vzlczrJlyzRnzhw1NDRU3HSSpJkzZ6pUKunb3/72Wr8nh+EH+VtekPyV1LfB++l/\n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\n", | |
| "text": [ | |
| "<matplotlib.figure.Figure at 0x10bba9850>" | |
| ] | |
| } | |
| ], | |
| "prompt_number": 9 | |
| } | |
| ], | |
| "metadata": {} | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment