Skip to content

Instantly share code, notes, and snippets.

@sergiobuj
Last active August 29, 2015 14:02
Show Gist options
  • Select an option

  • Save sergiobuj/e6f4bd0657d5ee2fa8d9 to your computer and use it in GitHub Desktop.

Select an option

Save sergiobuj/e6f4bd0657d5ee2fa8d9 to your computer and use it in GitHub Desktop.
What if we could use [the amazing] Clusterpy on top of Pysal?
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:3e709a2859947682334c7a57b672e4cf4bdae307dfa42fc2df49a1be53fa8496"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Load Pysal and the clusterpy (new concept)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%reload_ext autoreload\n",
"%autoreload 2\n",
"import pysal as ps\n",
"from pysal.contrib.viz import mapping as maps\n",
"import clusterpy as cl\n",
"from collections import Counter"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"(ImportError('cannot import name minimize_scalar',), 'Maximum Likelihood in PySAL requires SciPy version 0.11 or newer.')\n",
"(ImportError('cannot import name minimize_scalar',), 'Maximum Likelihood in PySAL requires SciPy version 0.11 or newer.')\n"
]
}
],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"filename = 'clusterpy/data_examples/n100'\n",
"dbf_f = ps.open(filename + '.dbf')\n",
"shp_f = ps.open(filename + '.shp')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a W object with Pysal"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w = ps.queen_from_shapefile(filename + '.shp')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Create a clusterpy's layer, with a W object from Pysal and a DBF object from Pysal"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"lay = cl.layer(w=w, dbf=dbf_f)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Running the MAXP on the layer"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"attrname = 'Uniform2'\n",
"threshold = 200\n",
"ans = lay.run_maxp(attrname, threshold)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### This is what 'ans' looks like"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ans"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 6,
"text": [
"{'max-p-threshold': 200,\n",
" 'max-p-threshold-attr': 'Uniform2',\n",
" 'regions': [3,\n",
" 3,\n",
" 0,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 3,\n",
" 3,\n",
" 3,\n",
" 1,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 3,\n",
" 3,\n",
" 3,\n",
" 3,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 3,\n",
" 3,\n",
" 4,\n",
" 2,\n",
" 4,\n",
" 0,\n",
" 0,\n",
" 1,\n",
" 1,\n",
" 1,\n",
" 3,\n",
" 3,\n",
" 3,\n",
" 4,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 0,\n",
" 3,\n",
" 3,\n",
" 4,\n",
" 3,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 3,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 2,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 0,\n",
" 0,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 4,\n",
" 2,\n",
" 2,\n",
" 0,\n",
" 2,\n",
" 0,\n",
" 0],\n",
" 'rseed': 68321}"
]
}
],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Ignore This... Trying something...\n",
"def printandpaint(ans):\n",
" regions = np.array(ans['regions'])\n",
" cnt = Counter(ans['regions'])\n",
" reg = np.array(ans['regions'])\n",
" threshold_col = np.array(dbf_f.by_col(attrname))\n",
" print cnt\n",
" print 'region\\t\\tAttribute sum\\t\\tAttribute threshold'\n",
" for r in np.unique(regions):\n",
" areas = nonzero(regions == r)\n",
" print \"%i (%i)\\t->\\t%f\\t>=\\t%i\" %(r, cnt[r], threshold_col[areas].sum(), threshold)\n",
" maps.plot_choropleth(filename+'.shp', regions, 'unique_values', title='weeee')\n",
" \n",
"def num_row(index):\n",
" ar = np.array([ i[0] for i in dbf_f.field_spec])\n",
" attrs = np.array(dbf_f.by_row(index))\n",
" num_values = nonzero((ar == 'N') | (ar == 'F'))\n",
" attrs = attrs[num_values].astype(float)\n",
" return attrs\n",
"\n",
"sample = [2, 3, 4]\n",
"region = np.array( [num_row(i) for i in sample] )\n",
"region.sum(axis=0) / len(sample)\n",
"None"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Run again, with the same random seed (rseed) as before and with a None rseed"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"ans2 = lay.run_maxp(attrname, threshold, rseed = ans['rseed'])\n",
"ans3 = lay.run_maxp(attrname, threshold)"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 8
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# looks fine\n",
"print Counter( ans['regions'])\n",
"print Counter(ans2['regions'])\n",
"print Counter(ans3['regions'])"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Counter({0: 23, 1: 20, 2: 20, 4: 19, 3: 18})\n",
"Counter({0: 23, 1: 20, 2: 20, 4: 19, 3: 18})\n",
"Counter({3: 23, 0: 22, 1: 22, 2: 17, 4: 16})\n"
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"printandpaint(ans)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Counter({0: 23, 1: 20, 2: 20, 4: 19, 3: 18})\n",
"region\t\tAttribute sum\t\tAttribute threshold\n",
"0 (23)\t->\t298.183287\t>=\t200\n",
"1 (20)\t->\t240.560397\t>=\t200\n",
"2 (20)\t->\t231.005233\t>=\t200\n",
"3 (18)\t->\t216.422315\t>=\t200\n",
"4 (19)\t->\t237.411078\t>=\t200\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAD5CAYAAACEcub7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFQtJREFUeJzt3WuQnGWZh/H/+759mJ7zTM4JMyFDwkllEVRwEWNtCaUo\noQoIiRYEAusIONl4wJXDBgst0JSyqGyIMYgGKZGF9RAjStDVqGCAJCRkjTGQyQmSECDJzCQ9Pd39\nvM9+GFOLLDOhtvC5s5XrV9UfqCZy5073NTNd4B157wUACCO2HgAAjiZEFwACIroAEBDRBYCAiC4A\nBER0ASAgootgvvOd78yeNm3a0kN/PWXKlGcvueSSfz/0121tbTueeeaZUzZu3HjiOeec8+iIESNe\nOfHEEzc++OCD0w/9PQMDA/nrrrvuqxMnTtw2duzY3ddcc83CUqlUc+j5ZcuWffjUU09d29LSsu+s\ns856bP369W879NzOnTvHX3TRRf8xevToPR0dHd133nnnnBC/b+CveO958Ajy6O7untTc3LzPe68X\nXnhh/MSJE7e2tbVt995r8+bNHS0tLXsPHjxYe8wxx+z47ne/e7lzLn766adPHTly5EsbNmw4yXuv\nT37yk3dccMEFP963b19zX19f/fnnn7/0hhtuuM17rzVr1rx99OjRLz755JPvTNM0WrJkyaxjjz12\nS7lczjrn4tNOO231F7/4xX+pVCqZ7u7uSR0dHZsfeeSRc633wuPoepgPwOPoerS1tW1fs2bN2++/\n//6ZnZ2di84444yVGzduPOGee+6ZPW3atJ888MADl5x99tm/ffWv6ezsXHTLLbfcnKZpVFdXd2Dz\n5s0dh557/PHH3z1p0qRu772uvvrqhfPmzfvCq3/tCSecsHHFihXvXbly5Rnt7e3bXv3cbbfddsPs\n2bPvsd4Jj6PrkbH+ThtHl6lTp674zW9+877nnntu8tSpU1c0NzfvX7FixdQ//OEP7546deqKbdu2\nTXziiSfOaGlp2Xfo11Sr1cysWbPuffnll0cWi8Xa008/ffWh57z3UZqmsSRt27Zt4r333jvr1R8b\nVCqV7K5du8ZFUeR37tw5/tX/u8655L3vfe9vQ/3eAUlEF2FNnTp1xdKlS6dt3br12JtuuunW5ubm\n/ffdd9+lK1euPHPOnDl3btq06fipU6euWL58+bmv/bVpmsaFQqF/w4YNJ48bN27Xa59vb2/fftNN\nN91644033vba51auXHnmpEmTtmzatOn4v9XvDXhDrL/V5nF0PTZt2jSlvr6+b8qUKZu89+rp6Wls\naWnZ29TUtD9N06i3t7dh4sSJW7/3ve9dWi6Xs+VyOfvkk0++809/+tOJ3nvNnTv3a5dccskDe/bs\nGeW91/PPPz/h0Oeyq1atOr2trW37E0888a40TaMDBw7ULVu27EN9fX31hz7TnT9//j8Xi8VCtVpN\n1q9f/9annnrqHdY74XF0Pfi3FxDUlClTnm1oaOg7++yzfydJjY2Nvccdd9zms84667EoinxDQ0Pf\n8uXLz/3BD34wc8KECS+MGzdu1w033PClcrmck6T58+d/bvLkyc+deeaZK5uamnrOOeecRw9993r6\n6aevXrx48ce6urr+rbW1de+UKVOevffee2dJUhzH6bJlyz68du3aUzs6OrpHjRr1Umdn57d6e3sb\n7baBo1HkPf8vYwAQCt/pAkBARBcAAiK6ABDQkP/K2FNPPfXO8z7wgV+kziUhB3qtUn9/TS6fL8dx\nnFrNUKlWk6RazdTU1AxYzSBJA8ViIVcolKIoMvsgfqBSySjvk5qavOkuSqVibT5f6LfcRalUyURR\nmuTz9ruoqaktWs7Q31/OJomiXC5XtpyjWCzW1tba7mLnzn3Nwz0/ZHR37949tlCpZE/o62t488d6\n434bRf5t5XLecog/Szo2SdwdPT01h/2b/4b+QfLfrFRybYYzfEFSdE69u+uuOtNdHH98j375y9bs\n2LF23xN0dr6ilpasmz/fdheTJu3X44+PbGpsjMxmuPTSfh1/fD69+ea6gtkQktra9mvdulFN2azl\nFMMb9j+OyMRxavpqkhRJykuynCMzOIMfazjDISMlWc5RkBQXYj9+vP1/VzN2bCLLOQqFSLW1sekM\nkhRF0rhxiZqa7D4trKmJVFcXme9CksaPT5TN2n0BOhw+0wWAgIguAAREdAEgIKILAAERXQAIiOgC\nQEBEFwACIroAEBDRBYCAiC4ABER0ASAgogsAARFdAAiI6AJAQEQXAAIiugAQENEFgICILgAERHQB\nIKAhDxq9/PLLI3b19dXvi2MXcqDXqqRpsiaK0ozh1ddimsa7nEveb7yLgThNrsrFad5wFy9UXJz+\npC95+8kDprtwFZ+ce+7LaS5nt4utWwfiOB6In3rKdheSkrPP3uMyGbu7YN3dA/GqVeXo17+23UU2\n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\nAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x376d8d0>"
]
}
],
"prompt_number": 10
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"printandpaint(ans2)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Counter({0: 23, 1: 20, 2: 20, 4: 19, 3: 18})\n",
"region\t\tAttribute sum\t\tAttribute threshold\n",
"0 (23)\t->\t298.183287\t>=\t200\n",
"1 (20)\t->\t240.560397\t>=\t200\n",
"2 (20)\t->\t231.005233\t>=\t200\n",
"3 (18)\t->\t216.422315\t>=\t200\n",
"4 (19)\t->\t237.411078\t>=\t200\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAD5CAYAAACEcub7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFOhJREFUeJzt3X1wVfWdx/HPOefePBKSAAkJmPAUxFKaamkrDqux7eI6\nW6VaK+qOskVGRp3YUFErsjKjndoybm1Xy1LrA4po1VrbAm0VbUe6goiIKBaRh8TIM4QEEvJ07/2d\n3/4RmVo1wd3R3y+7vF8z5w/mEPLN9977OefeAT6BtVYAADdC3wMAwImE0AUAhwhdAHCI0AUAhwhd\nAHCI0AUAhwhdOLN48eIZU6dOXXbs12PHjt02bdq0J4/9uqKiYucbb7xRvWXLllOmTJny3ODBgw+d\ncsopW371q19dfOz3dHd3Z99www3/PmLEiMaysrJ911xzzaKurq6cY+dXrFhx3qmnnrqxuLi4ZfLk\nyas3bdr0uWPn9uzZM+yiiy76dWlp6YHRo0fX33PPPde5+LmBv2Ot5eBwctTX148qKipqsdZq9+7d\nw0aMGPFORUXFu9Za7dixY3RxcXFze3t73kknnbTzoYce+ldjTPjaa6+dOmTIkIObN2/+jLVWs2fP\n/sk3vvGN37a0tBS1tbUNOP/885fNnTv3DmutNmzYcFppaen+devWfSmO4+Dhhx+ePnLkyIZUKpU0\nxoRf+MIXXv3+97//b+l0OlFfXz9q9OjRO5599tlzfO+F48Q6vA/AcWIdFRUV727YsOG0X/7yl5fO\nmjXr3tNPP33tli1bxj344IMzpk6d+rsnnnhi2plnnvmX93/NrFmz7r3tttvmx3Ec5OfnH92xY8fo\nY+fWrFlzxqhRo+qttbr66qsX3Xrrrbe//2vHjRu3ZdWqVWetXbv29MrKysb3n7vjjjvmzpgx40Hf\nO+E4sY6E7zttnFhqampWvfDCC2dv3769qqamZlVRUdHhVatW1bz00ktn1NTUrGpsbBzx8ssvn15c\nXNxy7GsymUxi+vTpS5qamoZ0dHTkTZw48dVj56y1QRzHoSQ1NjaOWLJkyfT3f2yQTqeTe/fuLQ+C\nwO7Zs2fY+/9cY0x01lln/cXVzw5IInThVk1Nzaply5ZNfeedd0bOmzfvB0VFRYeXLl16+dq1aydd\nd91192zduvXkmpqaVStXrjzng18bx3GYm5vbuXnz5vHl5eV7P3i+srLy3Xnz5v3glltuueOD59au\nXTtp1KhRDVu3bj350/rZgI/F9602x4l1bN26deyAAQPaxo4du9VaqyNHjgwsLi5uLiwsPBzHcdDa\n2lowYsSIdx555JHLU6lUMpVKJdetW/elt9566xRrrerq6n46bdq0Jw4cOFBirdWuXbuGH/tcdv36\n9RMrKireffnll78cx3Fw9OjR/BUrVny9ra1twLHPdBcsWHBTR0dHbiaTiTZt2jThlVde+aLvnXCc\nWAd/ewFOjR07dltBQUHbmWee+V+SNHDgwNYxY8bsmDx58uogCGxBQUHbypUrz3n88ccvHT58+O7y\n8vK9c+fO/WEqlcqSpAULFnyvqqpq+6RJk9YWFhYemTJlynPH7l4nTpz46n333XdVbW3tzwYNGtQ8\nduzYbUuWLJkuSWEYxitWrDhv48aNp44ePbq+pKTk4KxZs37R2to60N82cCIKrOV/GQMAV7jTBQCH\nCF0AcIjQBQCHev0rY6+88sqXLrjggmestZHLgT4olUrlJJPJVBAEsa8Zuru7o7ijI5GTnd3tawZJ\n6u7oyM3Kze0KgsDbB/Hd6XRCYRzl5PjdRVdnR152Tm6nz110dacTgeIo2/PzoquzIy8nN6/D5wyd\n3alkJAVZ2Vkpn3N0dLTn5eXle93FnoOHi/o632vo7tu3r2z8+PHJhx9+uOCTH+vjq66uto888kj2\n+PHjvc0wf/58bXvoIXPX+/6Nvw9flezP0+msCo8z3C4pOCUy/3mO312cvEh6/pJ0smyAvxlm/UEq\nzg3Ngq/43cWohdKay48UDsz2N8Plv5NOHhzE8/+hM9ffFFLFPdLrVx4pTPbj9/B9/uOInJyceNiw\nYa5m+UhBEKi0tFQ+58jPz1d2ENgybxP8zRBJPufIlRQmZId5vRT3KBsg+ZwjNynlZfmdQZICSeUD\npEKP0Z+TkPL7wS4kadgAKen1/Xnf+vH1AAD+/yF0AcAhQhcAHCJ0AcAhQhcAHCJ0AcAhQhcAHCJ0\nAcAhQhcAHCJ0AcAhQhcAHCJ0AcAhQhcAHCJ0AcAhQhcAHCJ0AcAhQhcAHCJ0AcAhQhcAHAqs/egy\n1cWLF3/7xhtvvL+ystLxSH/v7bffjioqKuK8vDxvra+7d+8Ou1pbNSKKvDUSS9L27s6oIrBxtscG\n3N0mDuNAGlkcet3FlkNxNGZwEGcl/O3inZY4DAOpssjvLjYfiKOTh4Qm4fEWqr4lDrNC6aRC/7v4\nTElogsDfDBv2mD67J3s9mZub21VSUhJfeeWVyU9+rI9v/vz5uvDCC8Phw4d7m+Gpp55SU1OTnXX1\n1V7r7ubd8B1d+mUblvi7/mjpJqljr+xFB2Ovu/hhUrp0vA2Lcvzt4oGNPeWU//JZv7uY87x0xWfj\nKNfjK3XRemnoAOmbp/jdRd1K6dufi6OoH7+H7zV08/Pz26uqqjpqa2sLXQ70Qbfddpu97LLLgurq\nam8zbNu2TQ0NDaa2trbPK9in7dabZtsrJpigapC/GV7bJzXvj8wM0/fV/NP2I0lXft5v++yqd6VB\neaGp/aLfoLnheWnWaX7bgP+wXfpMSRDXftF6jbu6ldK1E2kDBgC8h9AFAIcIXQBwiNAFAIcIXQBw\niNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAF\nAIcIXQBwqNeeq3Q6ndixY0f2nXfe6XKeD+no6NDixYs1bNgwbzOsW7dOTU1Noe9ddGdMcN9r0pA8\nfzNs3CcdNSb8ub8RJElpIy16VRqY7W+GzQel7EQc3PmSvxkkKRNL//GKlOuxtW7bIamly3rfRWyl\nH6+VfBZT3nic870+TAcOHCjdvXt39lNPPWU+4Zn+R8IwjJ577rk4Pz/fW+1rY2Nj2NnZGfreRZDM\ni55pHxPnxP4qcN81DWFaTeHvw9Dz8yKOVuwI46yEvO1i79E4jEKFT231vIsgjpZtD+Mo9LeLg51x\n2JpW0B928fQ2vxXs/+vQHT58+J6zzjqrdfny5V7bgEtKSuxjjz0W+mwDrqurU0NDQ2bZsmVeG3CL\ni4vtr59+OqyqqvI2w8yZM9W8ZEnmZ5mM112Mi6TfT4tDn23AFz/d0wZ877l+24BzfiT96bI49NkG\n/M+P97QB//hrfncR3SGtviKOaAMGAEgidAHAKUIXABwidAHAIUIXABwidAHAIUIXABwidAHAIUIX\nABwidAHAIUIXABwidAHAIUIXABwidAHAIUIXABwidAHAIUIXABwidAHAIUIXABwidAHAocDajy4Q\nXbhw4bXXX3/9wsBnraakZDKpVColn3MYYxSGRp5XIZOyir31vfawkhJJKfS8iyglZfyOIKOeuxbP\nq1AiIWWs3zkycU/tue9dBEFPDbvPOboyts9v32uja2Vl5c6zzz677cknn/TYtyqNGTPGPvPMM8GE\nCRO8zXDzzTeroWGpeeKJYq8do6WDdtkzrA3yPM7wpqRJ5w8wDzzodxfDindqpZVKPc7wXUkDw9Dc\nFvttwD3VStuukQqz/c1w8a+lk4cE8Q9qrNd3z4PukvbPlpL9+D18nzXaWVlZcWGh1wZ2BUGggoIC\n+ZwjKytLWVmBLSz0/EgGPQ9Y0uMIoaRkVuh/F5IGSBro8fsnJGV5nkHquasrzJZ8VrAnIik74XeG\nYwqzJSrYAQCSCF0AcIrQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0A\ncIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHem0Dvv/++2fefPPN95aVlXntn21sbEwM\nHTrU5OTkeJvjwIEDYTrdEQ4fnu21gLahoTWRl7AmCgJvu2hPmSiOpfKypPE1gyQ1NqYSZWFoEh53\nsd+YKJBUGkVed7HXmMTIwtBEob9d7Go1UVYglRb43UV9i0mMKooyPpu7/9qc6bPGsNdiyoKCgray\nsjIzZ86crE9+rI9vzpw5mj59elRRUeFthkcffVQHDx60s2fP7rPI89M2e/ZVmjO3IBo61F/r3oMP\ntumvq9N2QGPK6y6spIFxHPks6WyRlJBsoTFed7Fb0hVH4ijX4wz3SRoqaWqL313cKGnGYZPox72U\nvYduXl5e56hRozpnzJjhNXRvuukme8EFFwTV1dXeZti4caMaGhrMjBkzvD6hrr9+lv3Wt/KCqip/\nUfPii11qXGtMRcbvi+tNScMk+Syf3S8pJwzjCs8V7G9J+qb8thKvkDQ2COJLrN8K9hslXSy/jdnH\nw2e6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6\nAOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOBQrz1X3d3dWVu2bMm59dZbXc7zIe3t7br77rtV\nXl7ubYYXX3xRhw4dCn3voqvLBHfddUSDB/ur5Fq3rlvNGRO+7W2CHrGk7fLbhdUqqT2OA9+7MJLu\nlpTtcYZtkg5aG9zpcQap53nxY0k+S+t+epzzvYZuc3PzoEOHDiVXr17ttVI5kUhEr7/+elxfX++v\nanv//rCzc2+4evVPvO4iinKjDRsmxHl5ud520dS0JUxrX3jYc+14YEzUFoZx6LGC3RgTGsn7LkJj\noteiyGtT6FFjwowUrO8Hu3g1ikx/fgvf6+NUXl6+b/LkyW3Lly8vdDnQB5WUlNgHHngg9NkGXFdX\np4aGxZllywZ5bcAtLm6xS5cuDauqqrzNMHPmTD23ZEnm85mM1138UdJpcRz6bANeLyknDM0EY7y2\nAa+UtNiYyGcb8BXqaQOe73kXlZIeMyaiDRgAIInQBQCnCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQ\nBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCHCF0AcIjQBQCH\nAms/ukx14cKF137nO7ULHc/zIbm5gTo7vRW+SpKslYLA6wiSpJycPHV1dXmdwVqr3p4zLoXqqdtG\nT/V62vMMVlI/eIkoISnjeQZjbZ+r6LXRtbKycue555a0/va3uT5LRlVevtuuWlUSVFdneZvh+uub\n1dAg85vfDPLadFpSctiuX/9m4LMN+KqrrtKfHn00U+25DfhZSV+V5LMNeIOk7DA0n41jr8+L5yVt\nlFTgcYYZkqqCIJ5nrdd3z2Mkva0+gq0f6HO2MAxsMun3+hUEUjIZyOccYRgoDG0/2UVSyaS/guko\nihSof3wuFcr/HP1lFwlJPmvHj+2hP1Sf+97F8fSH5wsAnDAIXQBwiNAFAIcIXQBwiNAFAIcIXQBw\niNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAFAIcIXQBwiNAF\nAId67Ujbt2/f0DVrmgvGjYu8lmumUnFi6tQmk50dequgbW7OhMbEiXHj0l53YUw6MWXKGSYrK8vb\nLpqamsOjJpNYFfl9XsiYxNowNEEQeNtFlzFhEMfhIc+7iI1JfCWKTNRTyuvFIWOi160Nnve8ixxj\nEl+NoozPNsMdxznfa+gWFRUdPumk7Mwtt+T6q+GVdM01zbr22vxoxAh//Z4PPXRU+/db+73vFXgt\nGZ0165BmzzZRWVnK2wyLFllt+ktgRxrjdRevSxoZx5HPJ2e9pEQQ2ErPu9goqcyYyGcl8VFJp0r6\nludd1Er6rjGJ/5NtwDk5Od2Vlfmdl1ziN3Rra1vsuefmeq1gX7OmW8mkNZdcku/1sbz66mb79a/n\nBlVV/rpOV67sVP3qjBmW8R+6ZfJbwb5HUk4QxMOs9VrBvlE9u/DZgLtTPRXsUz1XsNdKOl+0AQMA\n3kPoAoBDhC4AOEToAoBDhC4AOEToAoBDhC4AOEToAoBDhC4AOEToAoBDhC4AOEToAoBDhC4AOETo\nAoBDhC4AOEToAoBDhC4AOEToAoBDhC4AONRrz1VXV1f2m2+25dbVdbqc50Pa22P98IeHVVrqr5Lr\nz3/uVEuLjerqmr3NIEkdHXFw++2HVVzsr5LrxRe7dChjor96m6BHLGmL/HZhHZHUFsdhf9mFzzuo\nNkkvWBsYjzNIPbu4TZLP0rr7j3O+1yQ7cuRI4dGj6URDg99K5URCiT17FLe329jXDO3tilIpGzQ0\nWK+7SCaDxK5dig8f9reLzs4gMlLQ5blqOzAmkYoiYzzWjltjorgf7CJpTGJkFJmkx120GhN1SsG7\nnncRGpPYGUUm9LiL4+k1dIcOHXpg0qRBbcuW5Ra6HOiDSko67T33FIXV1VneLuR1dc1qaLCZZcsG\ne23ALS7usL/4RVFYVZX0touZM5v03BKb+bznNuA/Sqo2JvLZBrxeUk4Ymgmea8dXSlpkTDTQ4wxX\nSBobBPF8z7uolHS/MRFtwAAASYQuADhF6AKAQ4QuADhE6AKAQ4QuADhE6AKAQ4QuADhE6AKAQ4Qu\nADhE6AKAQ4QuADhE6AKAQ4QuADhE6AKAQ4QuADhE6AKAQ4QuADhE6AKAQ332GWUycdDR4a0DUZJk\nTKzOzlg+50inY6XTtl/soqPDet6FlYljeW0fVE/ra+a9wxcr9ZtddOo4L+ZPWUZS2lp1eJxB+tsu\n0p7n6Etg7UeXZi5cuPDa2trahaHne+GcnEBdXX6LPeP3Ms73LrKzA3V3949d+Baq5wXWH/SHt4vs\n4m/f30gKPM5grO3z2/d6caysrNx53nmlR5Yv990GvMu+9FJpUF2d5W2G/tMGvNO+8UZ5UFXlr+u0\npw24q1+0Af+jJN9twF8LQ7MgjiOPY6hS0j9J8tmA+7KkC4Mgnm+t19ytlFQvv7s4Ht8XJgA4oRC6\nAOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOAQ\noQsADhG6AOAQoQsADhG6AOAQoQsADhG6AOBQr23AAIBPHne6AOAQoQsADhG6AOAQoQsADhG6AOAQ\noQsADhG6AODQfwPpRIxAPvH7/wAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7f62a294c6d0>"
]
}
],
"prompt_number": 11
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"printandpaint(ans3)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Counter({3: 23, 0: 22, 1: 22, 2: 17, 4: 16})\n",
"region\t\tAttribute sum\t\tAttribute threshold\n",
"0 (22)\t->\t251.612289\t>=\t200\n",
"1 (22)\t->\t257.803053\t>=\t200\n",
"2 (17)\t->\t226.670531\t>=\t200\n",
"3 (23)\t->\t275.236505\t>=\t200\n",
"4 (16)\t->\t212.259933\t>=\t200\n"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAAD5CAYAAACEcub7AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFRdJREFUeJzt3XtwVvWdx/HPOee55UlCLmAggQSJgEhdq7JeOlbp/qFj\nbcXWLmJdZOvasl6gqK27i7bu2FZbymasteh4v+BqVbys4mylF0WrRVFUUKQgYLjKpUASSJ48z/M7\nZ/+g7FhrgrOjvy87vF8z5w/mEPPNN+d8cjiT8RMkSSIAgB+h9QAAcDAhdAHAI0IXADwidAHAI0IX\nADwidAHAI0IX3tx9990XTJgw4cl9fx41atSqc8455+F9f25ubl6/dOnSo1asWDHm1FNP/fXAgQP/\nNGbMmBWPPPLIxH1/p7e3N/vd7373P4YPH94+ZMiQ9y+++OJbCoVCbt/5+fPnf/noo49+o66ubudJ\nJ5304rJly/5m37lNmzY1fe1rX3u0oaFha2tr65qbbrppuo+vG/gLSZJwcHg51qxZM6K2tnZnkiTa\nuHFj0/Dhw99rbm5elySJVq9e3VpXV7djz549+WHDhq2/5557/tE5F77++utHDxo0aNvy5cuPSJJE\nl1122Q1nnXXWEzt37qzt6uqqOvPMM5+cOXPm9UmSaMmSJcc0NDRseeWVV46L4zi49957pxx66KFr\ni8Vi2jkXHnvssa/98Ic//F6pVEqtWbNmRGtr6+pnnnnmNOu9cBxch/kAHAfX0dzcvG7JkiXHPPjg\ng+dOnTr11hNOOGHRihUrDr/rrrsumDBhwn899NBD55x88snPf/Bjpk6deuu11157TRzHQWVl5e7V\nq1e37jv30ksvfW7EiBFrkiTRRRdddMv3v//9H3zwYw8//PAVCxcuPGXRokUntLS0tH/w3PXXXz/z\nggsuuMt6JxwH15GyftLGwWX8+PELn3vuuS+8++67I8ePH7+wtrZ218KFC8f/4Q9/+Nz48eMXtre3\nD3/55ZdPqKur27nvY8rlcmrKlCn3bd++fVB3d3d+3Lhxr+07lyRJEMdxKEnt7e3D77vvvikffG1Q\nKpXSmzdvbgyCINm0aVPTB/+7zrnolFNOed7X1w5IInTh1/jx4xc++eSTE957771Dr7766utqa2t3\n3X///ZMXLVp04vTp029auXLl6PHjxy9csGDBaR/+2DiOw4qKip7ly5ePbWxs3Pzh8y0tLeuuvvrq\n66666qrrP3xu0aJFJ44YMWLtypUrR39aXxvwsVg/anMcXMfKlStHVVVVdY0aNWplkiTq6OgYUFdX\nt6OmpmZXHMdBZ2dn9fDhw9+bO3fu5GKxmC4Wi+lXXnnluHfeeWdMkiSaMWPGz84555yHtm7dekiS\nJNqwYcPQfe9lX3311XHNzc3rXn755ePjOA52795dOX/+/C91dXVV7XunO2vWrH/p7u6uKJfL0bJl\ny45cvHjx31rvhOPgOvjtBXg1atSoVdXV1V0nn3zyC5I0YMCAzsMOO2z1SSed9GIQBEl1dXXXggUL\nTvvlL3957tChQzc2NjZunjlz5o+LxWJGkmbNmvWvI0eOfPfEE09cVFNT03Hqqaf+et/T67hx4167\n/fbbvzVt2rRf1NfX7xg1atSq++67b4okhWEYz58//8tvvPHG0a2trWsOOeSQbVOnTr2ts7NzgN02\ncDAKkoT/yxgA+MKTLgB4ROgCgEeELgB41OevjC1evPi4M04//Vexc5HPgT4sCQu5bDZXDIIgtpqh\nt7ccJYlL5XLZXqsZ9s7RU5HJ5ApBEJi9iO/tLaWSJI6sd9GxY08+m63osdxFsVRKZXJJlM3a7qJQ\n6M7ncvluyxl6eorpKKoIMplM0XKO7u7ufD5vu4tNmzbV9ne+z9B9//33h1SUSunDu7qqP/mxPr7X\naqJk7txsduzYtNkM11yzS+vWhe6eeypz+//bn56xYzuTefNqMyNG2P169RVX7FShELmbb7bdxfBh\nuzSut5TOGs6wVNKpX612P/2p7S5GjNill14aVDNgQGA2w+TJPRo9+u/ja665psJsCEnNzc168803\na9Jpu7zYn37v3lQYxqZXkyQFUkNDpKYmu6CprAyVyyWJ5QySFATS4MHWuwgUhqH5LiQpK8ny+gy1\n99qw3kUQSI2NkWpq7N4W5nKBKisr1dTUZDbDPk1NTTqQQ5d3ugDgEaELAB4RugDgEaELAB4RugDg\nEaELAB4RugDgEaELAB4RugDgEaELAB4RugDgEaELAB4RugDgEaELAB4RugDgEaELAB4RugDgEaEL\nAB4RugDgUZ/lTtu3bx+4rbS76pXKyPkc6MO697joKxO2x/l8aNb6umljMSz0JtGRY0umu9jTGUen\nn7YtzuXsdrF+fTF0LomOHNtruguFit7IhnFo2AbcVXLho492hYsXG+9CqejkkztcKmX3DLVmjcJX\n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\nD+vnbVeBuMK2AAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x7f62a29439d0>"
]
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 12
}
],
"metadata": {}
}
]
}
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment