{ "metadata": { "name": "", "signature": "sha256:14bdf36c0b0aa590a6fe71f4712196c8b014f35a8de0d632108cf50921dc69c5" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "# Some nice default configuration for plots\n", "plt.rcParams['figure.figsize'] = 10, 7.5\n", "plt.rcParams['axes.grid'] = True\n", "plt.gray()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Loading the training and test set\n", "\n", "The first step is to load the training and set that was saved when running the [Training and test feature set generation notebook][genotes].\n", "\n", "[genotes]: http://nbviewer.ipython.org/github/ggray1729/opencast-bio/blob/master/notebooks/Training%20and%20test%20featureset%20generation.ipynb" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cd ../../features/" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/data/opencast/MRes/features\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "posdata = loadtxt(\"training.HIPPIE.positive.50.Entrez.vectors.txt\", delimiter=\"\\t\", dtype=\"str\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training with the full negative set is impossible on this computer, it is unable to load the file into RAM.\n", "To get around this, can use a negative training set only 10 times larger than the positive training set:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "negdata = loadtxt(\"training.HIPPIE.negative.Entrez.vectors.txt\", delimiter=\"\\t\", dtype=\"str\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are some conflicting entries in this notebook detected in the [training and test set generation][traintest].\n", "These can be removed using their indexes:\n", "\n", "[traintest]: http://nbviewer.ipython.org/github/ggray1729/opencast-bio/blob/master/notebooks/Classifier%20Training%20HIPPIE.ipynb" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open(\"training.HIPPIE.negative.conflicts.pickle\")\n", "conflicts = pickle.load(f)\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "negdata = delete(negdata,array(conflicts.keys()),0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.concatenate((posdata,negdata))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "plottablerows = X==\"missing\"\n", "plottablerows = where(plottablerows.max(axis=1)==False)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Unfortunately, some \"NA\" strings have sneaked in somehow, so we will have to zero these. Appears to be due to a feature in Gene_Ontology:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "NAinds = where(X==\"NA\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "X[NAinds] = 0.0" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": true, "input": [ "X[X==\"missing\"] = np.nan\n", "X = X.astype(np.float)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we can create the target vector y from what we know about the lengths of the positive and negative sets:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "#create the target y vector\n", "y = array([1]*len(posdata)+[0]*len(negdata))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Feature Selection\n", "\n", "We can investigate which features are likely to be useful in a number of ways.\n", "This is covered in the Scikit-learn [documentation][].\n", "\n", "\n", "[documentation]: http://scikit-learn.org/stable/modules/feature_selection.html" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.metrics" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 74 }, { "cell_type": "code", "collapsed": false, "input": [ "maxes = amax(abs(X),axis=0) + 1e-14" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "mutualinfo = map(lambda x: sklearn.metrics.mutual_info_score(y[plottablerows],X[plottablerows][:,x]/maxes[x]),\n", " range(222))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(mutualinfo)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 34, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nd+HChVt0Ol13enp6q8lkanY4HDnxWO9oCLYviIIflZfo+2L06NHtkydPPkhENGzYsDNZWVlNHo/H\nMBDfG6H2BZF67w3NBQWPx2NIS0tzCbeNRqNb2OiBguM4/p577vl7dnb2gddee+0xIqKOjg69Xq/v\nIGJHb3V0dOjju5axEWq729raxoqPhBso75O1a9c+YbFYDhUXF28QLg8zkPZFa2trekNDw5Tc3Nz6\ngf7eEPbFtGnT6ojUe29oLihEem5EItu3b9+PGxoapuzcuXPOH/7wh6V79+69U/x4qHM7El247U70\nfbJkyZJXW1pabj548ODkMWPGHPvVr371cqh5E3FfnDlzZtiCBQv+vGbNml8MHz78tPixgfbeOHPm\nzLD777//nTVr1vxi2LBhZ9R8b2guKERybkSiGzNmzDEiopEjR56YP3/+uw6HI2egntsRarulzoNJ\nVKNGjToufPg9+uijfxLKAANhX3R3d+sWLFjw54cffvgN4RD2gfreEPbFQw899KawL9R8b2guKERy\nbkQiO3fu3NWnT58eTkR09uzZoe+///7MiRMnfjFQz+0Itd1Wq7Vm69athV6vN6WlpeVmp9NpzsnJ\nccR3baPr2LFjY4R/v/vuu/MnTpz4BVHi7wue57ni4uIN48ePb3zyySd/L9w/EN8bofaFqu+NeHfT\ng02hzm8YCNM333xzs8ViOWixWA7eeuutXwrbPxDO7SgsLNwyZsyYNp1O5zUaja6NGzcuktruF154\n4dmMjIzmW2655bDdbp8V7/WP5r7YsGHD4ocffnjzxIkTP580adKhuXPn7mhvb9cPhH2xd+/eOziO\n67VYLAeFQy537tw5eyC+N4LtC5vNNkfN9wbH8wlVagMAAAU0Vz4CAID4QVAAAIBLEBQAAOASBAUA\nALgEQQEAAC5BUAAAgEv+D/yp3dydtW4DAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 34 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above graph is very strange.\n", "At this point we are just going to have to continue and come back later to try and figure out what's going on with it.\n", "Must be something to do with the mutual_info_score method.\n", "It is probably not well suited to this problem." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Choosing a classifier\n", "\n", "Each classifier will be tested in the following ways over :\n", "\n", "* Mean accuracy\n", "* Combined ROC curves\n", " * AUC values\n", " * Partial AUC values\n", "* Combined Precision vs. Recall curves\n", "* Informational loss function\n", "* Quadratic loss function\n", "* Kappa test?\n", "\n", "The importance of different features will also be tested through elimination and repeating the tests above.\n", "\n", "Finally, a sanity check looking at the model's prediction for some well-known protein interactions is the final test.\n", "\n", "## Logistic Regression\n", "\n", "Logistic regression is a simple classifier which uses a linear transformation of the input variables through a sigmoid function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "cd tmp/" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/data/opencast/MRes/features/tmp\n" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.linear_model" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 79 }, { "cell_type": "code", "collapsed": false, "input": [ "import sys, os\n", "sys.path.append(os.path.abspath(\"../../opencast-bio/\"))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 80 }, { "cell_type": "code", "collapsed": false, "input": [ "import ocbio.model_selection, ocbio.mmap_utils\n", "reload(ocbio.model_selection)\n", "reload(ocbio.mmap_utils)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 81, "text": [ "" ] } ], "prompt_number": 81 }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster stop" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-29 21:42:17.974 [IPClusterStop] Using existing profile dir: u'/home/fin/.ipython/profile_default'\r\n", "2014-07-29 21:42:17.975 [IPClusterStop] CRITICAL | Could not read pid file, cluster is probably not running.\r\n" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster start -n=10 --daemon" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-29 21:42:20.320 [IPClusterStart] Using existing profile dir: u'/home/fin/.ipython/profile_default'\r\n" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.parallel import *" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 82 }, { "cell_type": "code", "collapsed": false, "input": [ "client = Client(profile='default')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 83 }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise load balanced distributed processing\n", "lb_view = client.load_balanced_view()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 84 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Defining pipeline\n", "\n", "We have to define a pipeline for the data to include two transformations for the data:\n", "\n", "* Imputing missing values\n", "* Standard scaling of the feature vectors\n", "\n", "Both of these are built in operations of Scikit-learn.\n", "And they can be easily integrated to a pipeline in Scikit-learn." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.pipeline, sklearn.preprocessing" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "imputer = sklearn.preprocessing.Imputer(strategy='mean',missing_values=\"NaN\")\n", "scaler = sklearn.preprocessing.StandardScaler()\n", "classifier = sklearn.linear_model.LogisticRegression()\n", "model = sklearn.pipeline.Pipeline([('imp',imputer),('scl',scaler),('cls',classifier)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 86 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting a learning curve\n", "\n", "We would like to plot a learning curve to get an idea of the required size of our training set to train a model on k-fold validation steps to get valid results.\n", "Until we decide on a final classifier it is preferable to be able to run fast iterations of different parameters for more complex parameters than to absolutely maximimise performance.\n", "A learning curve plots the performance of the algorithm on the training and test set for different training set sizes.\n", "\n", "As with the imported code, much of this code is taken from the excellent [parallel machine learning tutorial][parml] by Oliver Grisel.\n", "\n", "[parml]: https://github.com/ogrisel/parallel_ml_tutorial" ] }, { "cell_type": "code", "collapsed": false, "input": [ "trainsizes=logspace(3,5,5)\n", "#initialise and start run\n", "lcsearch = ocbio.model_selection.LearningCurve(lb_view)\n", "lcsearch.launch_for_arrays(model,X,y,trainsizes,n_cv_iter=5,params={'cls__C':0.316}, name=\"lrlc\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 87, "text": [ "Progress: 00% (000/125)" ] } ], "prompt_number": 87 }, { "cell_type": "code", "collapsed": false, "input": [ "print lcsearch" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 100% (125/125)\n", "\n" ] } ], "prompt_number": 99 }, { "cell_type": "code", "collapsed": false, "input": [ "lrlc = lcsearch.plot_curve()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnsAAAHaCAYAAAB4nI9BAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX+P/DXbDADDDCAIouAO5rkhpqpQbdcKjPtVmq5\npbdsUen6vZVr0qLtlmmWmmuWlWU3f1poWqiVCZm3VHCXVRRkR2CGmTm/Pw4HBgREGRgOvJ73cR53\nzv6ZeQ/N2892FIIggIiIiIhaJqWjC0BEREREjYfJHhEREVELxmSPiIiIqAVjskdERETUgjHZIyIi\nImrBmOwRERERtWBM9ohuUEpKSpBery8UBEHhqDLo9frCpKSkEEfdXxIZGRm7bt266Y4uB8nH1KlT\nNy5atOhVe12P30Gi62OyR61KSEhIkrOzszE7O9vbdnufPn2OKpVKa0pKStD1rhEUFJRSWFioVygU\nNzxJZWxsbGT79u1Tb/S86goLC/UhISFJDb1OQykUCqG2zyE6Ojp60qRJn9rjPkql0nr+/PmO9riW\nnFy8eNG/vt+Xt99++/mwsLBj7u7uBR07djz/zjvv/Odm7tnYyVNd35nmcD2ilojJHrUqCoVC6Nix\n4/mtW7dOkLYdO3YsrKSkRNdcfjAsFovK0WVojhxZk2o2m9WNcd3o6Ojol19+eXFt+7///vt777nn\nnh/qe71PP/10Ul5enmdMTMzIlStXzvzyyy/H3WiZmuLv4GZiKQiCojG/AzXF+Eb/Fvm3S80Vkz1q\ndSZOnLhl8+bNk6X1TZs2TZk8efJm2x+SXbt23denT5+jHh4e+UFBQSm2P8hJSUkhSqXSarValYBY\nE/LSSy+9MmTIkF/c3d0LRowYsbt6zSEAXL161fWee+754eLFi/56vb7Q3d29ICMjwy86Ojr6oYce\n+nrSpEmfenh45G/atGlKfHx8/0GDBh0yGAy5/v7+F2fNmrWirKxMI13LtqZr6tSpG5999tkPR40a\ntdPd3b3gtttu+72uWrCHH354m5+fX4anp2deRETE/oSEhB7Svutd68cffxwWGhp60tPTM2/WrFkr\navsBjomJGfn666/P+/LLL8fp9frCPn36HAWA/Px8j+nTp6/z9/e/GBgYmLZo0aJXpc/x7NmznSMi\nIvZ7enrmtWnTJmvChAlbAeCOO+44AAC9evX6S6/XF27btu3h6verfu748eO/kPadOHHilmHDhv3o\n7e2d3a5du0uvv/76PAAwGo3Ozz333PsBAQHpAQEB6f/+97/fM5lMToBYAxsYGJj21ltvveDn55cx\nffr0dYIgKN544425nTt3Puvj43Nl3LhxX+bm5hoAoLS0VDtx4sQtPj4+VwwGQ+6AAQPiMjMz29YW\nA8n1Eqvvv//+3nvvvff7610HAJ5//vm3e/fu/T+lUmnt2rXr6QceeOC7X3/9dXBNx9ZW3gULFiw5\nePDg0JkzZ67U6/WFs2fP/gAAoqKilgcFBaV4eHjkh4eH//HLL78Mka4VHR0d/cgjj3w1ZcqUTe7u\n7gU9e/Y8fuTIkX7S/qNHj/bp27fvn+7u7gXjx4//orS0VCvty83NNYwaNWpn27ZtM728vHLuv//+\n/5eenh4g7Y+MjIxduHDha4MHD/7V1dX16oULFzrU9zsIiAlibTGT/o7Xr18/LTg4OPmuu+7at2nT\npimDBw/+dc6cOct8fHyuvPzyy4sLCgrcJ0+evLlt27aZISEhSUuWLFkg3W/jxo1Tqx9f13eRyGEE\nQeDCpdUsISEhF/bu3XtXt27dTiYmJoaazWZVYGBganJycpBCobAmJycHCYKA2NjYiOPHj98iCAL+\n/vvvMF9f30v//e9/HxAEARcuXAhRKBRWi8WiFAQBERERsZ07dz5z5syZziUlJdrIyMif586d+3pN\n94+NjY0IDAxMtd22ePHiaI1GY/ruu+9GC4KAkpIS7ZEjR/oePnx4gMViUSYlJQV379494f3334+S\nzlEoFNZz5851FAQBU6ZM2ejt7X0lPj4+3Gw2qx577LEt48eP31rbZ7Bhw4apRUVFriaTSfPcc8+9\n17t376PSvrqulZWV5aPX6wu++eabB81ms+q99957Tq1Wl61bt25aTfeJjo5ePGnSpM2228aMGfPt\nU0899VFxcbEuMzOzzYABAw6vXr36SUEQMH78+K1Lly6dJwgCjEaj06+//np7Te+3pqW2cwsKCvTt\n2rXLWLZs2b+NRqNTYWGh2+HDhwcIgoBFixa9MmjQoN+ysrJ8srKyfG6//fZfFy1a9IogCPj5558j\n1Wp12dy5c183mUyakpIS7fvvvx81aNCg39LT0/1NJpNmxowZH0+YMOFzQRDw8ccfz7j//vt3lJSU\naK1Wq+LPP//sU1BQoL/e9zE6OnpxdHT04pr2mUwmjY+PT1ZRUZHrjX7PrVaronfv3kelz7b6Uld5\nIyMjf64e0y1btjyWk5NjsFgsynfffXdOu3btMoxGo5P0/dVqtSU//PDDSKvVqpg3b97S22677ZAU\ni6CgoOT3338/ymw2q77++ut/ajQak/Q5Z2dne23fvn1sSUmJtrCw0O3hhx/+asyYMd9K942IiIgN\nDg5OSkhI6G6xWJSZmZltbuQ7WFfMpL/jKVOmbCwuLtaVlJRoN2zYMFWtVpetXLnyWYvFoiwpKdFO\nmjRp85gxY74tKipyTUpKCu7atesp6X41HV/X95gLF0ctDi8AFy5NuUjJ3muvvbZg3rx5S3/44YeR\nw4cP3202m1W2yV71JSoq6v1///vfywTh2mQvMjLy5yVLlsyXjl21atXTI0eO/KGm6/z888+RNSV7\nERERsXWV+7333ntu7Nix26V12+Rn6tSpG5544ok10r7vv//+ntDQ0MT6fB65ubmeCoXCKv3Q13Wt\nTZs2TR40aNBvtucHBgam1vZDu3jx4uiJEyd+Kq1funTJ19nZubSkpEQrbfv8888n3HnnnT8JgoDJ\nkydvevLJJ1enpaUFVL/W9ZK92s79/PPPJ/Tt2/dITed06tTp7A8//DBSWt+9e/fwkJCQC1KcnJyc\njFJCIwgCunfvnrBv375/SOsXL17002g0JrPZrFq/fv3jt99++69///132I18HxcvXhxdW7K3d+/e\nu+666669N/M9f+mll17u3bv3UZPJpKlpf13ljYyM/PmTTz6ZXtf1DQZDjnTu4sWLo4cNG7ZH2nfi\nxIkeOp2uWBAE7N+//w5/f/9023Ntk+rqy9GjR3sbDIYc27IsXrw4Wlq/0e9gbTGzWCxK6e/4woUL\nIdL+DRs2TA0KCkqW1s1ms8rJycmYmJgYKm1bvXr1k5GRkT/XdPz1vsdcuDhqYTMutToKhUKYNGnS\np5999tljNTXhAsDhw4cH3nnnnT+3bds209PTM2/16tUzamqalbRr1+6S9Fqn05UUFRW53UiZAgMD\n02zXT58+3XXUqFE7/fz8Mjw8PPIXLFiwpK77+/r6Xq7P/a1Wq3Lu3LlvdO7c+ayHh0d+hw4dLgDA\nlStXfK53rYsXL/pXL+eNDDZJTk4OLisr0/j5+WUYDIZcg8GQ+9RTT32clZXVBgDeeuutFwRBUAwY\nMCCuZ8+exzds2PB4fa9d27mpqantO3bseL6mcy5evOgfHBycLK0HBQWlXLx40V9ab9OmTZaTk5NJ\nWk9KSgoZO3bst1LZe/TokaBWq82ZmZltJ02a9OmIESN2jx8//ouAgID0F1988c3a+vmNGjVqp3SN\nN99888U33nhjrrQ+evToHdJx33///b333XffLgD47LPPHtPr9YV6vb5Q2lablStXztyyZcvEXbt2\n3afRaMpqOuZ65a3evPzOO+/8p0ePHgmenp55BoMhNz8/36O274yLi0txaWmp1mq1Ki9evOgfEBCQ\nbnut4ODgZOnvrbi42GXGjBmrQ0JCkjw8PPIjIiL25+fne9j+Pdp+x270O1hbzC5fvuxb2/m261eu\nXPEpKyvTVP+e2DY1Vz+/Id9josbCZI9apaCgoJSOHTue/+GHH+558MEHt1ff/+ijj34+ZsyY/6al\npQXm5eV5PvXUUx9LfcsaoqY+WjWNJnz66ac/6tGjR8LZs2c75+fneyxZsmSBPe7/2WefPbZjx47R\n+/btuys/P9/jwoULHYD6dZj39/e/mJqa2l5aFwRBYbtenVKptNqut2/fPlUaCZ2bm2vIzc015Ofn\nexw7diwMEBOGNWvWPJmenh6wevXqGc8888yq+o7Arencc+fOdQoKCkqp7Rr+/v4XbaevSUlJCfL3\n978orVePSVBQUEpMTMxIqey5ubmG4uJiFz8/vwy1Wm1+6aWXXjlx4sQtv/322+07d+4cZdsv1NbO\nnTtHSefPnTv3jXnz5r0ure/YsWO0dNwPP/xwj9Rf77HHHvussLBQX1hYqN+1a9d9tX0O69evn/bW\nW2+9sG/fvrts30t1dZW3+vs+ePDg0Lfffvv5bdu2PZyXl+eZm5tr8PDwyK/Pd8bPzy/DNjECxKRf\nuse77777f6dPn+4aFxc3ID8/32P//v0RQrU+eLbludHvYF0xq+n61dd9fHyuaDSasurfE9uEs/r5\nDfkeEzUWJnvUaq1bt276Tz/99A+dTldSfV9RUZGbwWDIdXJyMsXFxQ34/PPPH62rM319fvgA8Ycg\nOzvbu6CgwL2uc4uKitz0en2hi4tL8cmTJ0M/+uijpxt6b+m6zs7ORi8vr5yrV6+6zp8/f2l9r3Xv\nvfd+f+LEiVu+/fbbsWazWf3BBx/MvnTpUrvajvf19b2clJQUIl3Tz88vY/jw4XvmzJmzrLCwUG+1\nWpXnzp3rdODAgTsAYNu2bQ+npaUFAoCnp2eeQqEQpITR19f38rlz5zrVdq+azlWpVJZRo0btzMjI\n8Fu+fHmU0Wh0Liws1MfFxQ0AgAkTJmx97bXXFl65csXnypUrPq+88spLdU0V89RTT308f/78pdL0\nPFlZWW2k5Cw2Njby2LFjYRaLRaXX6ws1Gk2ZSqWy1HYtSfXERnLhwoUORqPRuVu3bqeudw3JZ599\n9tiCBQuW7NmzZ/j1puWpq7zVP+vCwkK9Wq02+/j4XDGZTE6vvPLKS7bf37oMGjTokFqtNn/wwQez\ny8rKNNu3b38wPj6+v7S/qKjITafTlXh4eOTn5OR41TQy2fbzue+++3bdyHewrpjVh0qlsjzyyCNf\nLViwYElRUZFbcnJy8HvvvffviRMnbqntnLq+x0SOwmSPWq2OHTue79u375/Sum0yt2rVqmdeeuml\nV9zd3QteffXVRePGjfvS9ty6agPqmvcrNDT05IQJE7Z27NjxvJeXV05GRoZfTce/8847//n8888f\ndXd3L3jyySfXjB8//ovq96jrfrXdf/LkyZuDg4OTAwIC0nv27Hl80KBBh+p7LR8fnyvbtm17eO7c\nuW/4+PhcOXv2bOchQ4b8UtN9AHHULwB4e3tnh4eH/wEAmzdvnmwymZx69OiR4OXllfPwww9vk36s\n//jjj/Dbbrvtd71eX/jAAw9898EHH8yWkpbo6OjoKVOmbDIYDLlff/31Q9XvVdu5bm5uRT/++OOw\n//f//t/9fn5+GV27dj0dGxsbCQALFy58LTw8/I9bb73171tvvfXv8PDwPxYuXPhabZ9hVFTU8tGj\nR+8YPnz4Hnd394JBgwYdkhLHS5cutXv44Ye3eXh45Pfo0SMhMjIytj5zDNb2Xdm1a9d912uurW7R\nokWv5uTkePXv3z9eavJ95plnVtV0bF3ljYqKWv71118/5OXllfPcc8+9P3LkyJiRI0fGdO3a9XRI\nSEiSTqcrCQoKSqnrPUjrTk5Opu3btz+4cePGqd7e3tlfffXVI//85z+/kY577rnn3i8pKdH5+Phc\nuf3223+75557fqjru+zt7Z19I9/BumJW/dq1vZcVK1bMcnV1vdqxY8fzQ4cOPfjYY4999vjjj2+o\n7fi6vsdEjqIQhGYxtRgREZW77777ds2aNWvFyJEjYxxdFiKSP7vX7E2bNm29r6/v5bCwsGO1HTN7\n9uwPunTpcqZXr15/HT16tI+0PSYmZmRoaOjJLl26nHnzzTdflLbn5OR4DRs27MeuXbueHj58+J68\n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\ntWOfvQbIzgZCQoCuXe1/bSIiImrZ2GdPBgwG4Px5oLDQ0SUhIiIiqlmjJHsxMTEjQ0NDT3bp0uXM\nm2+++WL1/bm5uYaxY8d+26tXr78GDhx4+MSJE7dI+5YvXx4VFhZ2rGfPnseXL18eZXveihUrZnXv\n3j2xZ8+ex1988cU3G6PsN0KpFKdjSUgAWlAFqUOw34m8MX7yxvjJF2NH9aG29wUtFotq5syZK/fu\n3Xt3QEBAev/+/eNHjx69o3v37onSMUuXLp3ft2/fP7/99tuxp06d6vbss89+uHfv3ruPHz/e85NP\nPvlXfHx8f41GUzZy5MiYUaNG7ezUqdO5n3/++c4dO3aM/vvvv2/VaDRlWVlZbexd9pvh5gZkZgIZ\nGYC/v6NLQ0RERFSV3Wv24uLiBnTu3PlsSEhIkkajKRs/fvwX33333QO2xyQmJna/8847fwaAbt26\nnUpKSgrJzMxsm5iY2H3gwIGHtVptqUqlskREROzfvn37gwDw0UcfPT1v3rzXNRpNGQC0adOm2YyF\n9fISn6xhNDq6JPIVGRnp6CJQAzB+8sb4yRdjR/Vh95q99PT0gPbt21c8YyIwMDDt8OHDA22P6dWr\n11/bt29/cMiQIb/ExcUNSE5ODk5PTw8ICws7tnDhwtdycnK8tFpt6a5du+4bMGBAHACcOXOmy4ED\nB+6YP3/+Uq1WW/rOO+/8Jzw8/I/q9586dSpCQkIAAJ6enggN7Q2FIhIAcORILACgXz/7rysUwOef\nx6JDh8o/Pql6netc5zrXuc51rnNdep2UlISmZPfRuN98880/Y2JiRq5du/YJANiyZcvEw4cPD1yx\nYsUs6ZjCwkJ9VFTU8qNHj/YJCws7dvLkydBPPvnkX7feeuvf69evn7Zq1apnXF1dr95yyy0ntFpt\n6bJly+aEhYUd+8c//vHT8uXLo+Lj4/uPGzfuy/Pnz3es8maaeDSuLUEQm3MHDRIHbtCNiY2Nrfij\nIPlh/OSN8ZMvxk7emmo0rt1r9gICAtJTU1PbS+upqantAwMD02yP0ev1hevXr58mrXfo0OFCx44d\nzwPAtGnT1k+bNm09AMyfP39pUFBQCiDWED744IPbAaB///7xSqXSmp2d7e3t7Z1t7/dwMxQKwN1d\nbM4dNEh80gYRERGRoyntfcHw8PA/zpw50yUpKSnEZDI5ffnll+NGjx69w/aY/Px8D5PJ5AQAa9eu\n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\nejolJWX/7Y4PDQ29UFRUFC5tFxUVhYeFhTW4J4ivr+/1jIyMSdJ2ZGRkQYcOHc4CwKRJkzImTZqU\nAQBvv/32rHbt2p2Xjlu6dOnE77777jfbt28feG9fU7527br1tirSyI8rFXzO8stKFMXaXyRi7S8Q\no9lY/4vFJJrq/7T6mmiC2Wyuf24ym+p/ERnFWz/HLJrxc+XPVuMouFaAj/Z+dNu+L2uXLKVta2t1\nWe3DUjVaf6vuOD8Pv4YF2W2Ktcb7uFaXfDnLzx/dO2fPnXSHjsYFWeOHLQQIUClVUArK+oWZlQol\nNAoN1Ap1g4JNqVA2KMSsFWzu1Id619/O//jHP37/6aefviQttdK3b99d06ZNW3i741NSUvafOnWq\nY2FhYUTbtm0vrl27dvTq1avHWh5TUVHh7+npWaXRaPTp6ekv9OvX70cfH58bAPDLL7+EhISE/HL+\n/Pl2X3/99XDpEnBmZuaQ999///Uff/yxn9TT5w7Wblx7y/3zirsXY92mdfdV7Ek/eHcsWuoKEcui\nRTrOWkFjreBpUNxYvtbofA22LeJqUCTd5Xy3fM4diq8G3+M231khKBr87036JaFSqBr84rD83521\n1xQKRYPjpH0q4ddjK2sqreZJDTVaeLW4da0uG0a8WHQR0YOwNlom/X6U/g2xRoQIAQ0LKKWgrB0l\nU6rrR8saP1cr1bcdLWtcpNH9uetl3Js3b3prtdpqpVJpAmpn29bU1Hh4eXlZ/1cKwPfff/+YtPTK\n5MmTl7z11luzFy1aNBUApk6dumjPnj09J06cuFQQBDEhIeHokiVLJkvLqDz88MM/lZSUBKvVasNH\nH330xwEDBvwAAB07djyl1+s1QUFBpQDQs2fPPQsXLpzW4Mu44GXcqX+aigMxB27Z7/lvT7R9vO3d\nC59GhZ1ZNN/yg9R4aNqyuLFWtDQubhRCbQFT/zmNCh7L4uZ2BdSlo5cQnhT+6+c2Op/U62AtFmsF\nltXiy8p3bnC+utfs+b89ayO3YdlheG38a7IauXW3S0muhvmTrwO7D0DXU3fHUTOT2QRREGHL1U1p\n9EytUNcXaY2fS6Nod7qkKT13p9Gz+2Gvy7h3LfZSU1Oztm/fPlAaebt+/bpvWlra5t27d/dq7uDu\nlasVewaTAU9Pfxpnk8/e8lri0US8/V9v37FouV2B5Yw/fO78j82uXbuwbtM66EU9NIIGo4aOklWh\nB7h3/lwB82dfUrtI49Gyxpc8b/t+ixG0w1mHoXtIZ3XkTKOs7TfTqGovc97pkqb0nKNn9uU0xV7X\nrl0PHjx4sOvd9jkDVyn2qo3V2HhiI1YcXgHfn31RfrQcV3peqX9djiM/RERy1pTLagiC0GC0rH4y\ngGUPmlJtU98ZJyjJm9NM0PD29r554MCBbt26dTsAAPv370/x9PSsau7A3NFN/U2sz1+PL498ifiQ\neMwZOAcJIQm3jvyMl9/IDxGRPd1utOxeJgZII2gCBCgERf2C1mqFGl4ar/pLmpYF291mbLrbxABy\nDncd2du3b1/3MWPGrGnTps3PAHDp0qXWa9asGXOnGbmOIteRvYrqCqw9thbr8tahR2gPPJf0HDoG\nd3R0WHbFy0jyxvzJm7Pkz9poWXMsqyGNqjX3shr2sHPnTvTv39/RYdB9cvjIXnZ2do/w8PCi7t27\n78vPz49bvHjxlA0bNoxIS0vbLC2TQg/mauVVfHnkS2w8sRH9IvohY2gG2vm3c3RYREQ2aaplNUSI\nUEBx38tqWCvSOHpG9KvbjuzpdLrc7du3DwwKCir96aefHh49evTaBQsWTM/NzdUdP348dv369U/a\nOda7ksvI3qUbl7D80HJknsnEkOghGN9lPFr7tHZ0WETkBu53WQ1r7rashkalqZ/Vz2U1iG7l8JE9\ns9mskJY5Wbt27eipU6cuGjly5FcjR478Kikp6VBzB+aKzlWcw7KDy/DjuR8xLGYY/vnkPxHsFezo\nsIjIid1xOQ3pkud9LquhVWm5rAaRG7htsWcymZQGg0GtVqsN27Zte3Tx4sVTpNeMRiNXbb0Hp0pO\n4YuDXyD7YjZGdR6FDaM2wF/r7+iwnIqz9AzR/WH+fvWgy2o0phSUzb6sBvu+5Iu5I1vctmgbO3bs\n6n79+v3YokWLq15eXpV9+/bdBQCnTp3qGBAQUG6/EOXr6C9HkZGbgWNXjuHpxKfxTt934K3xdnRY\nRNTInUbN7mdiAJfVICJncsfZuHv27Ol56dKl1oMHD97i7e19EwBOnjzZ6caNGz7Jyck5dovSRs7Q\nsyeKIg78fAAZuRk4f+08xncZj6ExQ6FVae1yfiJ3cK/Lali7jZOk8bIaSkEJtUp912U1rBVpnBhA\nRPfCaRZVlhNHFnuiKOI/Rf9BRm4GKmoqMCFpAn7T8Te8TylRnbstq3EvEwPcZVkNInJtDp+gQbYx\nmU3YUbgDX+R+AREiJukm4ZGIR/gPyD1iz5fzudtyGpajZ4ezDqNLapfbjqBJEwO4rIZzYt+XfDF3\nZAsWe/fJaDbi+9PfY+nBpfD18MXvu/8efcL78B8hcihbltW40yVNS/eyrEZVcBW6h3bnshpERE6I\nl3HvUY2xBptObsLyQ8sR6heKSV0noXvb7izy6IEZzUboTXqbltWwVrAJglBfiFkupcFlNYiInBMv\n49rZrl27sHbjWhhggBpqjB42usH9ZysNlfgq/yusOrIKscGxeO+R99ClVRcHRkxypjfpUW2sht6k\nr5/l6anyhK/Gt8FEgcbLalgr0u62rAYREbk3FnuoLfQ+WPEBirsX1+8rXlH7PKlHUu19a4+tQ7c2\n3TBvyDzEBMc4KlSX5ao9e6IoosZUg2pjNYxmY/2InI/GB619WiNAGwAvtRe81F5QK9WODve+sW9I\n3pg/+WLuyBYs9gCs3bi2QaEHAMXdi/H+ivdxs+AmHm7/MNIfT0dEQIRjAiRZMItm1BjrCjvRCABQ\nCAr4efghzD8MAR6/FnacwENERPbCYg+AAQbr+0UDVgxfgba+be0ckfuR26ieyWxCtbEa1cZqmGGu\nX6stQBuANr5t4OfhBy+1FzzVnm5xeZUjC/LG/MkXc0e2YLEHQA3rl8+iA6JZ6BGMZmNtYWeqrp8o\noVaqEaANQDv/dvD18IWX2gtalZaTGoiIyOm4/pCDDUYPG42wfWEN9oVlh2HU0FEOisj9HNh9wNEh\nAKidOHGt5hquVl6tf1QZqxDoGYj4FvHoEdoD/SP645HIR5DcJhkRgREI9gqGp9rTrQu9nTt3OjoE\negDMn3wxd2QLjuwB9bNu121ah+OlxxGkDcL08dMbzMYl19J44oTEW+ONEO8QBHkGucTECSIiIq6z\n18jIdSMxZ+AcdAzu2BwhkgOIoohqYzVqTDX1hZ0gCPDV+CLIM6jBjFhOnCAiInvhOnsOcFN/E5dv\nXkZkYKSjQ6H7ZDKb6kfspFt5CYKAAI8AtPZpDX+tv1tNnCAiImKxZ+FkyUlEBUZBpeBfi73dzzp7\n0sSJGlMNpBFdlUKFQG0gwv3COXHCjrjWl7wxf/LF3JEtWNVYyL+aj7gWcY4Og6wwmAwN7jghQoRW\nqUWgZyCCPIPgo/GBp9oTWpXW0aESERE5FfbsWfivnf+F5NbJeCL2ieYKkWwgLUxsMBvqbyXmrfZG\nkGcQArWB8NLU9tdplBoHR0pERHT/2LPnACeunsC4hHGODsNt3O5WYn4efgj1C0WANgCeak94atx7\nBwAAIABJREFUqb14aZ2IiOg+sUO9TpWhCsXXihEVGOXoUFySWTSj0lCJ0qpSXKm8giuVV1BaXQq1\nQo32/u1ReboSfdr1waCoQegZ3hMxLWLQyqcV/Dz8WOjJANf6kjfmT76YO7IF/xWtc6r0FDoEduCa\nak3AcuKENCNWrVAjUBuIML+w+okTnqpfFyIu1hbDR+PjyLCJiIhcEnv26qw9thanS0/jnb7vNGeI\nLsdy4oR0j1gPpQcCPAPqJ05IM2KJiIjoV+zZs7MTV08gPiTe0WE4NcuJExIvtRdaeLVAoGcgvDXe\nnDhBRETkZNizVyf/aj5iW8Q6OgynIN1xory6vP7+sCWVJQCANr5tkNQ6CT3De2Jgh4Ho274vElol\n1E+ouN9Cj30n8sb8yRvzJ1/MHdmCI3uoHbE6X3Ee0YHRjg7F7syiGdXG6lvuOOHn4Ydw//D6W4l5\nqjx5KzEiIiIZYs8egKO/HMWsXbPw5cgvmztEh5ImTuhN+vrCTiEo6hcm9vPwu2XiBBERETUP9uzZ\n0YmrJxDb0rUu4RpMhto17EzVqFuXGGqlGoGegQj2DObECSIiIjfBYg91/XrB8i329CZ9/YgdAIgQ\n4anyRJBnEII8g2QxcYL3d5Q35k/emD/5Yu7IFiz2ABwvOY5hMcMcHcZd3e6OEz4aH7T2aY1Az8D6\ny7BcL5CIiIgA9uxBb9JjwLIB2D5+u1Nf0jSYDCitKkWQV+1oXYA2AJ6q2luJceIEERGR/LBnz07O\nlp1FmF+YUxd6AFBWXYbkNslo7dva0aEQERGRjLj9OntyWF+voqYCrXxauXShx7Wi5I35kzfmT76Y\nO7KF2xd7x68eR1yLOEeHcVtGsxEms8mpYyQiIiLnxWLv6nGnHtkrrS5FXMs4eKo9HR1Ks+JsMnlj\n/uSN+ZMv5o5s4dbFntFsxOnS0+gU3MnRoVh1veY6grXBCPUNdXQoREREJFNuXeydLTuLNr5t4KX2\ncnQotzCZTag2VSM+JN4t7mbBvhN5Y/7kjfmTL+aObNEsxV5mZuaQ2NjY4x07djw1d+7cNxu/XlZW\nFjh8+PCvk5KSDqWmpmYdO3YsXnpt3rx5MxITE48kJCQcnTdv3gxpf2lpadCgQYO2durU6eTgwYO3\nlJeXBzxonM7cr1daXYrY4Fh4a7wdHQoRERHJWJMXeyaTSTl9+vQFmZmZQ/Ly8jqvXr16bH5+foOK\natasWW8nJyfnHDp0KGn58uXjZ8yYMQ8Ajh49mvD5558/v2/fvu6HDh1K+uabb3535syZKACYM2fO\nzEGDBm09efJkp4EDB26fM2fOzAeN1Vn79W7qb8LPww/tAto5OhS7Yd+JvDF/8sb8yRdzR7Zo8mIv\nOzu7R3R09OmIiIhCtVptGDNmzJqNGzc2uD1Ffn5+3IABA34AgJiYmBOFhYURv/zyS0h+fn5campq\nllarrVYqlaZ+/fr9uGHDhhEAsGnTpqETJkxYBgATJkxY9q9//euJB43VGYs9s2hGpbESCSEJUAhu\nfZWdiIiImkCTL6p84cKF0PDw8CJpOywsrDgrKyvV8pikpKRDGzZsGNGnT59/Z2dn9zh37lz7Cxcu\nhCYmJh7585///LfS0tIgrVZb/e233/62R48e2QBw+fLlVq1atboMAK1atbp8+fLlVtbOP3HiRERE\nRAAAAgICEBsfCyGytuftwO4DAIBuvbrBaDbi+IHjqAqsAtrgltcdtV1RU4Hhjw2Hn4dffS+G9D83\nV9627Dtxhni4zfy50zbzJ99taZ+zxMPtO29LzwsLC2FPTX67tK+++mpkZmbmkPT09BcAYOXKlc9k\nZWWlzp8//2XpmOvXr/vOmDFjXm5uri4xMfHI8ePHYz///PPnu3TpcjgjI2PSwoULp3l7e9+Mj48/\nptVqqz/88MNXAwMDy8rKygKlzwgKCiotLS0NavBl7uF2aWfKzuD1La9jw+gNTfr9H0SVoQpm0Yze\n7Xq73S3Qdu7cWf9DQfLD/Mkb8ydfzJ28yfZ2aaGhoReKiorCpe2ioqLwsLCwYstjfH19r2dkZEyS\ntiMjIws6dOhwFgAmTZqUMWnSpAwAePvtt2e1a9fuPFA7mnfp0qXWrVu3vvTzzz+3CQkJ+eVB4jx+\nxbku4YqiiOv663go7CG3K/QA8JeVzDF/8sb8yRdzR7ZQNPUHpqSk7D916lTHwsLCCL1er1m7du3o\noUOHbrI8pqKiwl+v12sAID09/YV+/fr96OPjcwMAfvnllxAAOH/+fLuvv/56+Lhx474EgKFDh25a\ntmzZBABYtmzZhCeeeOJfDxLn8RLnKvZKq0sRERiBQM/Aux9MREREZKMmL/ZUKpVxwYIF09PS0jZ3\n7tw5b/To0Wvj4uLyFy1aNHXRokVTASAvL69zYmLikdjY2OObN29Os1xi5cknn1wfHx9/bOjQoZsW\nLlw4zc/P7xoAzJw5c87WrVsHderU6eSOHTsemTlz5pwHidOZ7olbbayGRqlBdGC0o0NxGMt+BpIf\n5k/emD/5Yu7IFk1+GRcAHnvsse8fe+yx7y33TZ06dZH0vGfPnntOnDgRY+29P/3008PW9gcFBZVu\n27bt0aaIzyyacbLkpNMUe9dqrqFHaA+olWpHh0JEREQupsknaDiSrRM0CssLMSNzBjaO2WjvEG9R\nVlWG1r6tkRCS4OhQiIiIyI7sNUGjyS/jyoGzrK+nN+kBAU57b14iIiKSP7cs9pylX6+sugyJIYnQ\nKDWODsXh2Hcib8yfvDF/8sXckS3csthzhnvilteUo41PG7Tysbo2NBEREVGTcLuePbNoxoBlA7Bx\nzEYEaAMcESaMZiMqairwcPuHoVVpHRIDERERORZ79prJhWsX4Ovh67BCDwBKq0oR3zKehR4RERE1\nO7cr9vKv5iM22HH9etdqrqGFVwu09W3rsBicEftO5I35kzfmT76YO7KF2xV7x68eR1xLx/Trmcwm\n1Jhq0LllZwhCs4/aEhEREblfz960b6fh6cSn0btdb7vHd6XyCuJaxKF9QHu7n5uIiIicC3v2moEo\nig67J+4N/Q34e/gj3D/c7ucmIiIi9+VWxd7F6xfhofRAsFewXc9rFs2oNFQiISQBCsGt/sptxr4T\neWP+5I35ky/mjmzhVpXH8RLHrK9XWlWKTsGd4Ovha/dzExERkXtzq569T/d9CrVCjSndptgtpkpD\nJQRBQM+wnlAqlHY7LxERETk39uw1A3vfE1cURdzQ30BCSAILPSIiInIItyn2RFG0+z1xS6tLERkY\n6dAFnOWCfSfyxvzJG/MnX8wd2cJtir3LNy9DKSjR0qulXc5XbayGRqlBdFC0Xc5HREREZI3b9Owd\n/eUoNhzfgE+GfGKXWC7fuIzUsFS7z/wlIiIieWDPXhM7ftV+M3HLqsrQLqAdCz0iIiJyOLcp9uzV\nr6c36SEIAjoFd2r2c7kS9p3IG/Mnb8yffDF3ZAu3KfbsNbJXXl2OxFaJ0Cg1zX4uIiIiortxi569\njcc3Ytp307Dt2W0QhOa7NF5eU45gz2B0bd212c5BREREroE9e03odOlpxLWMa9ZCz2g2wmw2O+S+\nu0RERES347LF3rdbv0Xac2l47IXH8Nn7n8H7gneznq+0qhTxLeOhVWmb9Tyuin0n8sb8yRvzJ1/M\nHdlC5egAmsO3W7/FjE9n4IzuTO2ODoD+P3rsitmFvn37Nvn5rtVcQ0vvlmjj26bJP5uIiIjoQbhk\nz17ac2nYErHlltd7nuyJ+e/Pb9JzGs1GlFeXo2/7vvBSezXpZxMREZHrYs/eA6gRa6zu14v6Jj9X\naVUpOrfszEKPiIiInJJLFnsegofV/RqhaZdDuaG/gQBtAEL9Qpv0c90R+07kjfmTN+ZPvpg7soVL\nFnuvjHsFUblRDfaFZYdh1NBRTXYOs2hGpaESCSEJUAgu+ddIRERELsAle/aA2kka89fMR6WxEpU1\nlXhm+DNNOjnjys0r6NSiEzoEdmiyzyQiIiL3Ya+ePZct9iQ39Tfx7/P/RguvFk12nkpDJQRBQM+w\nnlAqlE32uUREROQ+OEHDSYmiiBv6G0gMSWSh14TYdyJvzJ+8MX/yxdyRLVjs3aPS6lJEBUXBX+vv\n6FCIiIiI7oqXce9BtbEaBrMBfdr1gUrhkutRExERkZ3wMq6TEUUR12quoUurLiz0iIiISDZY7Nmo\nrLoM7f3bI8gzyNGhuCT2ncgb8ydvzJ98MXdkCxZ7Nqgx1kAhKBAdHO3oUIiIiIjuCXv2bHD5xmV0\nD+2Olt4tHzREIiIiIgDs2XMa5dXlCPULZaFHREREssRi7w4MJgPMMCO2RayjQ3F57DuRN+ZP3pg/\n+WLuyBYs9u6grLoMCS0T4KHycHQoRERERPeFPXu3ca3mGvw8/JDcJhmC0OyX04mIiMjNsGfPgYxm\nIwwmA+JaxrHQIyIiIlljsWdFaVUp4lrGwUvt5ehQ3Ab7TuSN+ZM35k++mDuyBYu9RmqMNfDR+CDM\nL8zRoRARERE9sGYp9jIzM4fExsYe79ix46m5c+e+2fj1srKywOHDh3+dlJR0KDU1NevYsWPx0muz\nZ89+Kz4+/lhiYuKRcePGfVlTU+MBANnZ2T169OiRrdPpcrt3775v37593Zsjdr1JjyDPIF6+tbP+\n/fs7OgR6AMyfvDF/8sXckS2avNgzmUzK6dOnL8jMzBySl5fXefXq1WPz8/PjLI+ZNWvW28nJyTmH\nDh1KWr58+fgZM2bMA4DCwsKI9PT0F3JycpKPHDmSaDKZlGvWrBkDAG+88cbf//rXv76bm5ur+3//\n7//91xtvvPH3po4dqC32fD18m+OjiYiIiOxO1dQfmJ2d3SM6Ovp0REREIQCMGTNmzcaNG4fFxcXl\nS8fk5+fHzZw5cw4AxMTEnCgsLIy4cuVKSz8/v2tqtdpQWVnppVQqTZWVlV6hoaEXAKBNmzY/V1RU\n+ANAeXl5gLS/sYkTJyIiIgIAEBAQgNj4WAiRtaN0B3YfAAB069XtttsVNRXQPaED8GsvhPQ/J243\n37Zl34kzxMNt5s+dtpk/+W5L+5wlHm7feVt6XlhYCHtq8qVX1q9f/+TmzZvT0tPTXwCAlStXPpOV\nlZU6f/78l6Vj3nnnnfeqqqo8P/zww1ezs7N79O7d+z/Z2dk9dDpd7uLFi6e89tprH3h6elalpaVt\nXrFixbMAcO7cufZ9+vT5tyAIotlsVuzZs6dneHh4UYMv0wRLr1ytvIpe4b04umdnO3furP+hIPlh\n/uSN+ZMv5k7eZLv0iiAId60eZ86cOae8vDxAp9PlLliwYLpOp8tVKpWmM2fORH388cd/KCwsjLh4\n8WLbGzdu+KxateppAJg8efKSTz755JXz58+3++ijj/44adKkjKaOXcJFlO2Pv6zkjfmTN+ZPvpg7\nskWTF3uhoaEXioqKwqXtoqKi8LCwsGLLY3x9fa9nZGRMys3N1S1fvnz8lStXWnbo0OHs/v37U3r1\n6rU7ODi4RKVSGUeMGLFh9+7dvYDay8PDhw//GgCefPLJ9dnZ2T2aOnZRFKEQFNAoNU390UREREQO\n0eTFXkpKyv5Tp051LCwsjNDr9Zq1a9eOHjp06CbLYyoqKvz1er0GANLT01/o16/fjz4+PjdiYmJO\n7N2796GqqipPURSFbdu2Pdq5c+c8AIiOjj79448/9gOAHTt2PNKpU6eTTR273qSHj8anqT+WbGDZ\nz0Dyw/zJG/MnX8wd2aLJJ2ioVCrjggULpqelpW02mUzKyZMnL4mLi8tftGjRVACYOnXqory8vM4T\nJ05cKgiCmJCQcHTJkiWTAaBr164Hx48fvzwlJWW/QqEwJycn50yZMmUxACxevHjKSy+99GlNTY2H\np6dn1eLFi6c0dewGswFBnkFN/bFEREREDsN741oorSpFp+BOaB/QvrlCJCIiIgIg4wkacmYWzbxF\nGhEREbkUFnuNcCauY7DvRN6YP3lj/uSLuSNbsNhrxEPJYo+IiIhcB3v26oiiiNLqUgyOGtycIRIR\nEREBYM+e3RnMBi67QkRERC6HxV4dvUkPXw1vkeYo7DuRN+ZP3pg/+WLuyBYs9uqw2CMiIiJXxJ69\nOlcrr0LXRocQ75DmDJGIiIgIAHv2HIIzcYmIiMjVsNirI0KEVqV1dBhui30n8sb8yRvzJ1/MHdmC\nxR5ql11RCApolBpHh0JERETUpNizh9rJGWbRjN7tejd3iEREREQA2LNnV3qTnmvsERERkUtisQfA\nYDLA14PLrjgS+07kjfmTN+ZPvpg7sgWLPQAm0cSRPSIiInJJ7NlD7Rp7D4U9BH+tf3OHSERERASA\nPXt256HiGntERETkeljsobay5oLKjsW+E3lj/uSN+ZMv5o5s4fbFnsFkgKfKE4LQ7KOoRERERHbn\n9j17N/Q3EKANQFLrJHuESERERASAPXt2w2VXiIiIyJW5fbFnEk3wVns7Ogy3x74TeWP+5I35ky/m\njmzh9sUewJm4RERE5LrcvmfvSuUV9I/oD61Ka48QiYiIiACwZ89uFIKCy64QERGRy3LrYo/LrjgP\n9p3IG/Mnb8yffDF3ZAu3Lvb0Jj18PHhPXCIiInJdbt2zV15djvb+7REdHG2vEImIiIgAsGfPLkyi\niWvsERERkUtz62JPFEUuu+Ik2Hcib8yfvDF/8sXckS3cutgDwJm4RERE5NLcumfvauVVDIoaBIXg\n9jUvERER2Rl79pqZ0WyEVqVloUdEREQuzW0rHb1JDz+tn6PDoDrsO5E35k/emD/5Yu7IFm5d7Pmq\nOROXiIiIXJvb9uxdrbyKpNZJaO3T2p4hEhEREQFgz55dcCYuERERuTq3Lva0Kq2jQ6A67DuRN+ZP\n3pg/+WLuyBZuXexxQWUiIiJydW7Zs2c0G1FtrEa/iH72DpGIiIgIAHv2mpXepIevhjNxiYiIyPW5\nbbHn4+Hj6DDIAvtO5I35kzfmT76YO7KFWxZ7JrMJfh5cUJmIiIhcX7MUe5mZmUNiY2OPd+zY8dTc\nuXPfbPx6WVlZ4PDhw79OSko6lJqamnXs2LF46bXZs2e/FR8ffywxMfHIuHHjvqypqamfRTF//vyX\n4+Li8hMSEo6++eabc+83PjPMXHbFyfTv39/RIdADYP7kjfmTL+aObNHkxZ7JZFJOnz59QWZm5pC8\nvLzOq1evHpufnx9necysWbPeTk5Ozjl06FDS8uXLx8+YMWMeABQWFkakp6e/kJOTk3zkyJFEk8mk\nXLNmzRgA+OGHHwZs2rRp6OHDh7scPXo04U9/+tP/3m+MAgTOxCUiIiK3oGrqD8zOzu4RHR19OiIi\nohAAxowZs2bjxo3D4uLi8qVj8vPz42bOnDkHAGJiYk4UFhZGXLlypaWfn981tVptqKys9FIqlabK\nykqv0NDQCwDwj3/84/dvvfXWbLVabQCAli1bXrF2/okTJyIiIgIAEBAQgNj4WAiRtRNdDuw+AABo\n37U9PJQe9b0O0v+MuO24bcu+E2eIh9vMnzttM3/y3Zb2OUs83L7ztvS8sLAQ9tTkS6+sX7/+yc2b\nN6elp6e/AAArV658JisrK3X+/PkvS8e8884771VVVXl++OGHr2ZnZ/fo3bv3f7Kzs3vodLrcxYsX\nT3nttdc+8PT0rBo8ePCWlStXPgMAOp0ud9iwYRszMzOHaLXa6v/93//9U0pKyv4GX8aGpVeMZiOq\nDFXoH9m/Sb83PZidO3fW/1CQ/DB/8sb8yRdzJ2+yXXpFEIS7Vo8zZ86cU15eHqDT6XIXLFgwXafT\n5SqVStOZM2eiPv744z8UFhZGXLx4se3Nmze9V61a9TQAGI1GVVlZWeDevXsfev/9918fNWrUuvuJ\nz2AywNeDy644G/6ykjfmT96YP/li7sgWTV7shYaGXigqKgqXtouKisLDwsKKLY/x9fW9npGRMSk3\nN1e3fPny8VeuXGnZoUOHs/v370/p1avX7uDg4BKVSmUcMWLEht27d/cCgLCwsOIRI0ZsAIDu3bvv\nUygU5pKSkuB7ja/GVMNij4iIiNxGkxd7KSkp+0+dOtWxsLAwQq/Xa9auXTt66NChmyyPqaio8Nfr\n9RoASE9Pf6Ffv34/+vj43IiJiTmxd+/eh6qqqjxFURS2bdv2aOfOnfMA4IknnvjXjh07HgGAkydP\ndtLr9Zrg4OCSe43PaDZyQWUnZNnPQPLD/Mkb8ydfzB3ZosknaKhUKuOCBQump6WlbTaZTMrJkycv\niYuLy1+0aNFUAJg6deqivLy8zhMnTlwqCIKYkJBwdMmSJZMBoGvXrgfHjx+/PCUlZb9CoTAnJyfn\nTJkyZTEATJo0KWPSpEkZiYmJRzQajX758uXj7zdGzsQlIiIid+F298a9WnkVfdv3hZfayxEhEhER\nEQGQ8QQNZydC5ILKRERE5Dbcqtgzmo3QKrVQKpSODoUaYd+JvDF/8sb8yRdzR7Zwq2LPYDLAx8PH\n0WEQERER2Y1b9exVVFcg1C8UMS1iHBQhERERUS327DUDg2iAn4efo8MgIiIishu3KvZEUeSyK06K\nfSfyxvzJG/MnX8wd2cKtij0BAmfiEhERkVtxq569q5VXMbDDQKgUTb6WNBEREdE9Yc9eEzOZTVAr\n1Sz0iIiIyK24TbFnMBt4T1wnxr4TeWP+5I35ky/mjmzhNsVejbGGM3GJiIjI7bhNzx4EIKFlAkL9\nQh0UHREREdGv2LPX1ERAq9I6OgoiIiIiu3KfYg/gGntOjH0n8sb8yRvzJ1/MHdnCbYo9ESJH9oiI\niMjtuEXP3k/nfoKHygOPRD7ioMiIiIiIGmLPXhMymA3wUfs4OgwiIiIiu3OLYs8smuHrwTX2nBn7\nTuSN+ZM35k++mDuyhVsUewC4oDIRERG5Jbfo2dtZuBMPhT2EYK9gB0VGRERE1BB79pqQWqnmsitE\nRETkltyi2NMoNfBQsthzZuw7kTfmT96YP/li7sgWblHseSg9oFaqHR0GERERkd25fM9epaESBWUF\niA+Jd1BURERERLeyV8+eyxd7AKA36aFRahwQEREREZF1nKDRhFjoOT/2ncgb8ydvzJ98MXdkC7co\n9oiIiIjclVtcxiUiIiJyNryMS0REREQPjMUeOQX2ncgb8ydvzJ98MXdkCxZ7RERERC6MPXtERERE\nDsCePSIiIiJ6YCz2yCmw70TemD95Y/7ki7kjW7DYIyIiInJh7NkjIiIicgD27BERERHRA2OxR06B\nfSfyxvzJG/MnX8wd2YLFHhEREZELY88eERERkQOwZ4+IiIiIHhiLPXIK7DuRN+ZP3pg/+WLuyBYs\n9sgpHDx40NEh0ANg/uSN+ZMv5o5s0SzFXmZm5pDY2NjjHTt2PDV37tw3G79eVlYWOHz48K+TkpIO\npaamZh07dixeem327NlvxcfHH0tMTDwybty4L2tqajws3/vBBx+8plAozKWlpUHNETs5Rnl5uaND\noAfA/Mkb8ydfzB3ZosmLPZPJpJw+ffqCzMzMIXl5eZ1Xr149Nj8/P87ymFmzZr2dnJycc+jQoaTl\ny5ePnzFjxjwAKCwsjEhPT38hJycn+ciRI4kmk0m5Zs2aMdL7ioqKwrdu3Tqoffv255o6biIiIiJX\n1OTFXnZ2do/o6OjTERERhWq12jBmzJg1GzduHGZ5TH5+ftyAAQN+AICYmJgThYWFEVeuXGnp5+d3\nTa1WGyorK72MRqOqsrLSKzQ09IL0vldfffXDv//97280dczkeIWFhY4OgR4A8ydvzJ98MXdkC1VT\nf+CFCxdCw8PDi6TtsLCw4qysrFTLY5KSkg5t2LBhRJ8+ff6dnZ3d49y5c+2Li4vDdDpd7muvvfZB\nu3btznt6elalpaVtfvTRR7cBwMaNG4eFhYUVd+nS5fCdzi8IzT6DmZrJsmXLHB0CPQDmT96YP/li\n7uhumrzYEwThrgvdzZw5c86MGTPm6XS63MTExCM6nS5XqVSazpw5E/Xxxx//obCwMMLf37/iqaee\n+ueqVaueHj58+NezZs16e+vWrYOkz7C2Lo091qohIiIikpMmL/ZCQ0MvFBUVhUvbRUVF4WFhYcWW\nx/j6+l7PyMiYJG1HRkYWdOjQ4ey333772169eu0ODg4uAYARI0Zs2L17d6+kpKRDhYWFEUlJSYcA\noLi4OKxbt24HsrOze4SEhPzS1N+BiIiIyFU0ec9eSkrK/lOnTnUsLCyM0Ov1mrVr144eOnToJstj\nKioq/PV6vQYA0tPTX+jXr9+PPj4+N2JiYk7s3bv3oaqqKk9RFIVt27Y92rlz57yEhISjly9fblVQ\nUBBZUFAQGRYWVpyTk5PMQo+IiIjozpp8ZE+lUhkXLFgwPS0tbbPJZFJOnjx5SVxcXP6iRYumAsDU\nqVMX5eXldZ44ceJSQRDEhISEo0uWLJkMAF27dj04fvz45SkpKfsVCoU5OTk5Z8qUKYsbn8OWS8VE\nREREBEAURZd4fP/990NiYmKOR0dHn5ozZ86bjo7HXR/nz58P79+//w+dO3c+Fh8ff3TevHmviKKI\nkpKSoEcffXRrx44dTw4aNGhLWVlZgPSeWbNmvRUdHX0qJibm+ObNmwdL+/fv398tISHhSHR09KlX\nXnllnrS/urraY9SoUWujo6NPpaam7i0sLGzv6O/tSg+j0ajs2rVr7u9+97v/Y+7k9SgrKwsYOXLk\n+tjY2Py4uLi8vXv3pjJ/8njMmjXrrc6dOx9LSEg4Mnbs2C+rq6s9mDvnfTz33HMZISEhlxMSEo5I\n++yVr6VLl07o2LHjyY4dO55ctmzZeFvidfhfWFM8jEajMioq6nRBQUGEXq9XJyUlHczLy4tzdFzu\n+Pj5559b5+bmdhVFEdevX/fp1KnTiby8vLjXX3/973Pnzn1DFEXMmTPnzTfffHOOKIo4duxY56Sk\n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\nndu0afNz7969/7N79+5eycnJOS+++OJnu3bt6tu+fftz48aN+9LavS0XLVo0dcaMGfPGjRv3pdFo\nVBmNRlV+fn7cunXrRu3evbuXUqk0TZs2beGqVauenjNnzsxPP/30pdzcXF3jzzl48GDXixcvtj1y\n5EgiAFy7ds1P+t6CIIjdunU7IL3vjTfe+PtvfvOb7wBgypQpixctWjQ1Ojr6dFZWVuq0adMW8rIv\nEd0Jiz0iclpPPfXUP6WCq7y8PGD8+PHLT58+HS0IgmgwGNSNjxcEQfztb3/7rVqtNgQHB5eEhIT8\ncvny5VZt27a9aHlcjx49sqV9Xbt2PVhQUBDp5eVV2aFDh7Pt27c/BwBjx45dvXjx4imNz9GzZ889\n77333jvFxcVhI0aM2BAdHX16+/btAw8cONAtJSVlPwBUVVV5tm7d+tKdvltUVNSZs2fPdnjllVc+\n+e1vf/vt4MGDt0iviaIoSM/Xrl07OicnJ3nr1q2Dbty44bNnz56eTz311D+l1/V6vcbWv08ick8s\n9ojIaXl5eVVKz999992/Dhw4cPvXX389/Ny5c+379++/09p7NBqNXnquVCpN1iZ4eHh41DQ+pvEo\nnmXBZWns2LGrH3roob3ffPPN737zm998t2jRoqkAMGHChGX3MhkjICCg/PDhw10yMzOHfPbZZy+u\nW7du1JIlSyZbHnP06NGEv/zlL/+9a9euvoIgiGazWREQEFBubaSQiOh22LNHRLJw7do1P2k07osv\nvnjO2jG3K9DuRhAEMSYm5sTZs2c7nDt3rj1QO6Jm7TJuQUFBZGRkZMHLL788f9iwYRuPHDmSOHDg\nwO3r169/8sqVKy0BoLS0NOj8+fPtAECtVhusFZwlJSXBRqNRNWLEiA1//etf37Us4ARBEMvLywPG\njh27esWKFc8GBweXAICfn9+1yMjIAunytSiKwuHDh7vcz3cmIvfBYo+InJZlsfXGG2/8/a233pqd\nnJycYzKZlJavSc+lfre7fZa1Y7RabfXChQunDRkyJDMlJWW/n5/fNT8/v2uNj1u3bt2ohISEozqd\nLvfYsWPx48ePXx4XF5f/t7/97c+DBw/ekpSUdGjw4MFbLl261Bqo7bHr0qXL4cYTNC5cuBA6YMCA\nH6TJG7Nnz37L8vVNmzYNPX/+fLvnn3/+c2kZGgBYtWrV00uWLJnctWvXgwkJCUc3bdo01Na/TyJy\nT1x6hYiozs2bN729vb1vAsBLL730aadOnU7asoYfEZEz48geEVGd9PT0F3Q6XW58fPyxa9eu+U2d\nOnWRo2MiInpQHNkjIiIicmEc2SMiIiJyYSz2iIiIiFwYiz0iIiIiF8Zij4iIiMiFsdgjIiIicmEs\n9oiIiIhc2P8HAFapwedPDoMAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 100 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/logistic.regression.learning.curve.npz\",lrlc)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 101 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows that we can test the model on a grid search with only 40,000 to 60,000 samples and still get meaningful results.\n", "When the grid search returns a best possible combination of parameters we will have to plot this learning curve again to make sure that the results are still valid.\n", "In the mean time, this will speed up our grid search considerably." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Running parallel grid search" ] }, { "cell_type": "code", "collapsed": false, "input": [ "altclient = Client(profile='altcluster')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 94 }, { "cell_type": "code", "collapsed": false, "input": [ "alb_view = altclient.load_balanced_view()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 95 }, { "cell_type": "code", "collapsed": false, "input": [ "#make sure the processors aren't busy doing anything else:\n", "alb_view.abort()\n", "#initialise parameters to test:\n", "lr_params = {\n", "'cls__C':logspace(-3,1,7)\n", "}" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 98 }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise mmaped data - had to increase CV iterations to reduce output variance\n", "split_filenames = ocbio.mmap_utils.persist_cv_splits(X,y, test_size=10000, train_size=40000,\n", " n_cv_iter=20, name='testfeatures',random_state=42)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 97 }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise and start run\n", "lrsearch = ocbio.model_selection.RandomizedGridSearch(alb_view)\n", "lrsearch.launch_for_splits(model,lr_params,split_filenames)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 102, "text": [ "Progress: 00% (000/140)" ] } ], "prompt_number": 102 }, { "cell_type": "code", "collapsed": false, "input": [ "print lrsearch.report()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 100% (140/140)\n", "\n", "Rank 1: validation: 0.99254 (+/-0.00021) train: 0.99268 (+/-0.00009):\n", " {'cls__C': 0.0046415888336127772}\n", "Rank 2: validation: 0.99247 (+/-0.00021) train: 0.99281 (+/-0.00008):\n", " {'cls__C': 0.021544346900318832}\n", "Rank 3: validation: 0.99245 (+/-0.00021) train: 0.99256 (+/-0.00008):\n", " {'cls__C': 0.001}\n", "Rank 4: validation: 0.99233 (+/-0.00020) train: 0.99289 (+/-0.00008):\n", " {'cls__C': 0.10000000000000001}\n", "Rank 5: validation: 0.99227 (+/-0.00020) train: 0.99294 (+/-0.00008):\n", " {'cls__C': 0.46415888336127775}\n" ] } ], "prompt_number": 114 }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this data only one in every 18 examples will be positive therefore the expected accuracy of a classifier that only predicts zeros is:\n", "\n", "$$\n", "1 - \\frac{1}{18} = \\frac{17}{18} = 0.9(4)\n", "$$\n", "\n", "So this model is outperforming the hypothetical all zeros classifier.\n", "\n", "We can implement this all zeros classifier and use it to create a comparative measure to make it easier to discriminate between classifiers." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.dummy" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 91 }, { "cell_type": "code", "collapsed": false, "input": [ "def dummycompare(X,y,train,test,best_score):\n", " dummy = sklearn.dummy.DummyClassifier(strategy=\"most_frequent\")\n", " dummy.fit(imputer.fit_transform(X[train]),y[train])\n", " score = dummy.score(imputer.fit_transform(X[test]),y[test])\n", " if score > best_score:\n", " return 0.0\n", " else:\n", " #using a logit function here on a biased and scaled best score\n", " best_score = (best_score-score)*(1.0/(1.0-score))\n", " return best_score,log(best_score/(1.0-best_score))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 92 }, { "cell_type": "code", "collapsed": false, "input": [ "results = np.zeros([5,2])\n", "for i,(train,test) in enumerate(sklearn.cross_validation.StratifiedShuffleSplit(y,n_iter=5,\n", " test_size=10000, train_size=40000)):\n", " results[i,:] = dummycompare(X,y,train,test,lrsearch.find_bests()[0][0])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 242 }, { "cell_type": "code", "collapsed": false, "input": [ "print mean(results,axis=0)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0.85861742 1.80385393]\n" ] } ], "prompt_number": 243 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting a ROC curve\n", "\n", "A ROC curve indicates the tradeoffs possible with this classifier in terms of true positive versus false positive rate when setting the decision threshold.\n", "In some applications the price of a high false positive rate is acceptable to obtain a high true positive rate.\n", "As the false positive rate grows to 1.0 though, the true positive rate also grows to 1.0 inevitably for any classifier as all samples are being classified as positive." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def plotroc(model,Xtest,ytest):\n", " estimates = model.predict_proba(Xtest)\n", " fpr, tpr, thresholds = sklearn.metrics.roc_curve(ytest,estimates[:,1])\n", " clf()\n", " plot(fpr, tpr)\n", " plot([0, 1], [0, 1], 'k--')\n", " xlim([0.0, 1.0])\n", " ylim([0.0, 1.0])\n", " xlabel('False Positive Rate')\n", " ylabel('True Positive Rate')\n", " title('Receiver operating characteristic AUC: {0}'.format(sklearn.metrics.roc_auc_score(ytest,estimates[:,1])))\n", " show()\n", " return fpr,tpr" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "train,test = next(iter(sklearn.cross_validation.StratifiedShuffleSplit(y,\n", " test_size=100000,train_size=400000)))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 104 }, { "cell_type": "code", "collapsed": false, "input": [ "bestparams = lrsearch.find_bests()[0][-1]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 117 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "model.set_params(**bestparams)\n", "model.fit(X[train],y[train])\n", "fpr,tpr = plotroc(model,X[test],y[test])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAHYCAYAAAABLe9WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XlcVPX3P/Azw6Ao++ICDIqKuCKCW9CGJuKWZWYuM5Zp\n5V5mi2UWBEJZYZkkmhGbYeb2FZewUMgyY3PfF0QBdVRAGFmEuXN/f9zfzYkPyCLDnTvzej4e9yF3\n5s7cMxxGDu973u+RsCxLAAAAACAMqdABAAAAAJgyFGMAAAAAAkIxBgAAACAgFGMAAAAAAkIxBgAA\nACAgFGMAAAAAAkIxBkahf//+pw4ePPiU0HEIbd68edErVqxY3prnnDlzZtzHH38c1prn1JeffvpJ\nERQUtK85j8XPIAA0G8uy2LC16Na1a9e8du3aVVhZWak7dep0U6lUJpaWltoIHZexbbGxsTOfeOKJ\nP4WOY+bMmbEff/xxqNBxBAcHhyiVysTWONcrr7wSt3z58rCWej61Wm1laWl5b8yYMXtr3yeRSLSX\nL1/u/rDXWlpaavPWW29906VLl6tWVlbqHj16XFq8ePHXd+7ccWzM+a9cueIeEBCQ1r59+/LevXuf\nTU1Nfaa+Y0tKSuxefvnl+I4dO6o6duyoCgkJCa59zDfffPNWt27dci0tLe/16dPnzMWLFz1YlqXw\n8PBlVlZWan5r165dhVQqZYqKihx0H19UVOTg5OR0u76f7/j4+JclEon2hx9+mM3fdvLkyf6jRo3a\n5+TkdFsikWhrP6aoqMjh+eef32FpaXmva9eueUlJSdP4+06fPt130KBB2fb29sW2trZ3/f39D/35\n559P6H6/ZTJZDR+3tbV12ZUrV9z5+0+dOtXv6aefTre1tb0rl8vzw8LCluuee/369W/06NHjko2N\nTengwYOz/vrrr8d1c6dQKDY6OTnddnJyuq1QKDaWlZVZC/U+wibMhpExaHESiYTdvXv3eLVabX38\n+HHvkydPerX2aE1L0Gg0MlM8t5AYhjEzxXNv27ZtUpcuXa6lp6cHqFSqTg0dL5FI/l2tu7q6us0z\nzzyz/+zZs3327dsXpFarrQ8fPuzn5OR0JzMzc2hjzj9t2rRNgwYNyikuLnYIDw//6MUXX9x6584d\np7qOffvtt7+uqqqyuHr1atfMzMyhiYmJM+Li4mby9//www+v/fjjj7P27t079t69e1Z79uwZ5+jo\nWEREtGzZsgi1Wm3Nb0uXLl05fPjwNAcHh2LdcyxdunRl3759z+i+Tl5JSYl9RETEsv79+5/Svb9N\nmzbVU6dO/TkmJmZ2XXEvWLDgOwsLi6pbt251/OmnnxTz5s2LPnPmTF8iIldX18ItW7ZMLioqciwp\nKbGfOnXqzy+++OJW3e/3tGnTNvFxl5WV2bi7u+fx98+YMSPxySef/LOkpMT+jz/+eHrt2rXzd+3a\n9SwR0bFjxwa+8847kVu2bJlcWlpqO3v27JiJEyfuYFlWQkQUEhIScufOHacrV650u3z5cg+VStUp\nJCQkpBFpA2MidDWIzfg2d3f3K/v37x/B77/33ntfjB07dg+/f/jw4cf8/Pz+trOzK/H29j6Wnp7+\nNH9fUVGRw8yZM2NdXFwK7e3ti59//vkd/H27du0a7+3tfczOzq7E39//0IkTJ7z4+7p27Zq3f//+\nEYWFhS7t2rWrKC4utufvO3LkiI+Tk9NtjUZjxrIsxcTEzOrTp88Ze3v74qCgoJSrV6924Y+VSCTa\n7777br6Hh8fF7t27X67r9e3cuXNC3759T9vZ2ZUEBASknT17trduHJ999tkHffv2PW1vb1/86quv\n/lhVVdW2sa9h5cqV73t5eZ2wsLCo1Gg0Zp999tkHPXr0uGRtbV3Wt2/f0zt27HieZVk6c+ZMHwsL\ni0ozMzONlZWV2t7evphl/ztik5aWFuDq6loQGRm5pGPHjipnZ+frsbGxM/nz3blzx3H8+PG7bGxs\nSocMGZL50UcfrXjYSNuff/75BJ83Nze3a/Hx8S+zLDcytmDBgqhx48bttra2Lhs2bNg/uiM5b775\n5mo3N7drNjY2pYMGDcquPeIwadKkrUqlMtHGxqY0JiZmVmZm5pDHHnvssJ2dXYmzs/P1hQsXrqmu\nrjbnH3Pq1Kl+I0eO/N3BwaGoU6dONyMiIj5MSUkJatOmzX1zc/NqKysr9cCBA4+yLEt37961nTVr\nVoyzs/N1V1fXguXLl4cxDCNlWW5k0d/f/9Dbb7+9ytHR8c7y5cvDdEcbtVqtZPHixV937NhRZWNj\nU+rl5XXi1KlT/davX/+Gubl5dZs2be5bWVmpJ0yYsJPPHz+ipNFozMLDw5fxuRs0aFB2fn6+vL7v\n7fDhww9ERkYuGTly5O9fffXVO7r3NTQytmHDhtc6dep0s7y8vH1z3q/nz5/3bNu2bdW9e/cs+due\neuqpP9atWzenruOdnJxuZ2VlDeb3IyIiPnzyyScPsixLDMNI5XJ5/oEDB4Y3dF6tVivp1q1bbkJC\nwgzd2w8dOuTv5+f3d30jv3PmzFm3du3aeQEBAWkxMTGzat9/8eJFj9ojY/fu3bNs06bNfX6EjmVZ\nevnll+M/+OCDz2o/vqamRhYVFbWA/xmq/f2ua2vbtm2V7v8DkydP/uXzzz9fyrIs/fTTT9OHDh2a\noRuLRCLR3rx5sxPLsjRq1Kh90dHRc/n7o6KiFgQFBaU0J5fYxLsJHgA249vc3d2v8L+U8vPz5V5e\nXic+/fTTT1iWpYKCAldHR8c7v/7662iWZen3338f6ejoeIe/nDJ27Ng9U6dO3XT37l3bmpoa2cGD\nB59kWa6g6tixoyozM3OIVquVxMfHv+zu7n6F/yWtWwCOGDFi/4YNG17j43n33Xe/nDdv3lqWZen/\n/u//nvPw8Lh47ty5XgzDSFesWPGRv7//If5YiUSiHTVq1L6SkhI73SKK386fP+9paWl5LzU19RmN\nRmP2xRdfvOfh4XGxpqZGxrLcL2QvL68TBQUFrsXFxfaPP/74X3xx1NBr6Nq1a56Pj8+RgoICV/7c\nW7ZsefHGjRudWZalzZs3v2RpaXmP/088Li7uldq/rHQvGaalpQXIZLKa4ODgEI1GY7Z3794x7du3\nL797964ty7I0ZcqUn6dNm5ZUWVlpcebMmT5ubm7X+F+qtbe8vLyu1tbWZT///PMUjUZjVlRU5HDs\n2DFvluUKQEdHxztZWVmDNRqNmUKh2Dh16tRN/GM3btyoKC4utmcYRhoZGbmkc+fON+7fv9+GZblf\ncubm5tU7d+6cwLIsVVZWWuTk5PhmZGQMZRhGmpeX17VPnz5nvvnmm7dYlqWysjLrzp0731i1atXb\n9+/fb6NWq60yMjKGsixLISEhwTNmzEjQjfv555/fMXfu3OiKiop2t27d6jB06NCM9evXv8GyXDEm\nk8lqoqKiFjAMI62srLTQLQBSUlKCBg0alM1fYj937lwvPhd1XZrV/Rn84osv3vPy8jpx4cKFnizL\n0okTJ7xqX4rT/d6amZlp8vPz5d9///3rAwYMOK57f33FGP9ap0yZ8vPMmTNjH/aenD9//nfz58//\nrq77tm/fPrFPnz5ndG9btGjRt4sWLfq2ruOdnJxuZ2ZmDuH3V6xY8RH/x8DVq1e7SCQS7erVq990\nc3O71q1bt9zg4OAQrVYrqf08f/zxx1NWVlZq3SJSo9GY+fr65hw5csSnrmIsIyNj6JAhQzK1Wq2k\nKcXYkSNHfNq3b1+ue1tkZOSSZ599Nln3Nltb27symaymS5cuVy9dutSDvz0kJCTY1tb2roODQ1G/\nfv1O6RZPLMvSs88+m/zBBx98VlNTIzt79mxvuVyen52dPYhlWbp27Zpbhw4dbmVkZAzVaDRm3377\n7SJfX98c3ThGjhz5e0lJiV1xcbH98OHDD6xevfrNpvyfi038m+ABYDO+rWvXrnl8X4VEItE+//zz\nO/jRiM8//3xp7V+YQUFBKfHx8S9fv37dWSqVMnyxoLvNnTs3uvYvv169ep3jizXdX4Q//PDD7BEj\nRuxnWe6vbzc3t2v8aMzo0aN/1f0PnGEYafv27cuvXbvmxrLcL760tLSA+l5baGjox1OmTPmZ39dq\ntRJXV9eCP/744yk+Dv6XPcuytHfv3jE9evS41NjXoDtyVdc2cODAo3zhUtcvq5kzZ8bqjoy1a9eu\ngv/esyxLHTt2VPG/FMzNzav5YoFlWVq+fHlYfSNjERERH77wwgvb6rpv5syZsa+//vr3uq+5d+/e\nZ+t7Dfb29sX8iGBwcHDI008/nf6w1/z1118vnjhx4naWZSkpKWma7i8y3a326MXNmzc7tW3btqqy\nstKCvy0pKWna8OHDD/Dfvy5dulzVfQ7d7+n+/ftHeHp6nv/nn3+G6X4Pa3+f+U33Z9DT0/N8cnLy\ns415v4SFhS338/P7m2W50UqZTFZz9OjRgfz9DRVjgYGBv3344YcRzX2/JiQkzHjssccO69720Ucf\nraivwFMqlYmTJk3aqlarrS5evOjRvXv3yxYWFpUsy41qSSQS7fjx43eVlpba5OXldfX09Dyv+8cR\nv82aNSvm1Vdf/VH3tlWrVr3NF421f741Go3Z4MGDs/jiuynF2MGDB5/s3LnzDd3bvv/++9cDAgLS\naj++vLy8/fvvv7/Sx8fnCF9Enjlzps+NGzc6a7Vayd9//+3n7Ox8fdOmTVP5x1y6dKlHt27dcmUy\nWY1EItHW7qNbv379GzKZrEYmk9V06NDhlu7IYlVVVduRI0f+LpVKGalUyowaNWqf7kgwNtPY0DMG\nLU4ikbA7d+58rqyszCY9PT3gwIEDI7KzswcTEV29erXrli1bJtvb25fw26FDhx6/efNm5/z8fDcH\nB4diW1vb0trPefXq1a6RkZHv6D6uoKBAfv36dZfax77wwgvbDx8+7Hfz5s3OBw8efEoqlWqfeOKJ\nv/jneeutt1bzz8H3shQWFrryj3dzc8uv77XduHHDuUuXLtd0X6ubm1t+fY/v0qXLNT7GxryG2udO\nSEh42cfH5yh//KlTp/oXFRU5NpQDnqOjY5FUKtXy++3bt6+4d++e1e3btztoNBqZ7vnkcnlBfc9T\nUFAg7969e25993fq1EnFf92uXbvKe/fuWfH7X3311bt9+/Y9Y2dnd9fe3r6ktLTUVrcfqfZ5L1y4\n4Dl+/Pjdzs7ON2xtbUs/+uijcP415+fnuz0sDl1Xr17tWlNTY+7s7HyD//7NnTt33e3btzvwxzws\n1yNGjDiwcOHCqAULFnzXqVMn1Zw5c9ar1Wrrxpy7oKBA3qNHj8uNOTYhIeHlyZMnbyHi8hUQEJAe\nHx//Cn+/mZkZU1NTY677mJqaGnNzc/Ma/jF1vQ8ay8rK6l5ZWZmN7m137961s7GxKavr+G+//fZN\nCwuLqp49e16cOHHijunTpye5uroWEnG5JyJ6//33v7CxsSnr2rXr1Tlz5qzfu3fvWN3nqKioaL91\n69YXX3nllXj+tuvXr7usWbNmUX39pWvXrp0/YMCAE0OHDs3kb2P/f99Vc15jaWmprbW1tbr2se3b\nt6/4/PPPP7hw4YLnyZMnvYiI+vTpc7Zz5843JRIJ6+fnd/itt95avXXr1hf51zJixIgDoaGhn9y/\nf79tfn6+W0pKyujo6Oh5RETJyckTIiMj3zl79myfmpoa88TExBnjx4/fffPmzc5ERAqF4qdevXqd\nv3fvnlVZWZlN9+7dc5VK5cbGvC4wHijGQK+eeuqpg4sWLVqzdOnSlURccTJjxozEkpISe35Tq9XW\n77///hdubm75xcXFDqWlpba1n6dLly7XPvroo3Ddx927d89qypQpm2sfa29vXzJq1KjfNm/ePCUp\nKWn6tGnTNuk+z/fff/+G7vOUl5dbPvbYY//wx9TVNMxzcXG5fvXq1a78Psuykvz8fDf+lxER0bVr\n17rofs3f15jXoHvuq1evdn3jjTe+/+677xYUFxc7lJSU2Pfv3/8U/wuovjgfFj+vQ4cOt2UymSY/\nP9+Nv03369rc3NzyL1++3KOh563tzz//fPLLL798b8uWLZPv3r1rV1JSYm9ra1uq+0u0drzz5s2L\n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\nAABJRU5ErkJggg==\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 2min 13s, sys: 19.3 s, total: 2min 32s\n", "Wall time: 2min 35s\n" ] } ], "prompt_number": 118 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above graphs shows extremely high true positive rates even at low false positive rates, which is typically very good in a classifier.\n", "This is also shown in the extremely high AUC score the classifier is achieving." ] }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/logistic.regression.roc.npz\",fpr,tpr)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 119 }, { "cell_type": "code", "collapsed": false, "input": [ "print dummycompare(X,y,train,test,model.score(X[test],y[test]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "(0.85730507191521588, 1.7930848504691246)\n" ] } ], "prompt_number": 120 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Precision recall curve\n", "\n", "Precision recall curves plot precision against recall.\n", "\n", "* Precision is the [\"fraction of retrieved instances which are relevant\"][wkpda]\n", "* Recall is the [\"fraction of relevant instances which are retrieved\"][wkpda]\n", "\n", "These are [implemented][] in Scikit-learn.\n", "\n", "[wkpda]: http://en.wikipedia.org/wiki/Precision_and_recall\n", "[implemented]: http://scikit-learn.org/stable/auto_examples/plot_precision_recall.html" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def drawprecisionrecall(X,y,test,model):\n", " try:\n", " yscore = model.decision_function(X[test])\n", " except AttributeError:\n", " yscore = model.predict_proba(X[test])[:,1]\n", " precision,recall,_ = sklearn.metrics.precision_recall_curve(y[test],yscore)\n", " average_precision = sklearn.metrics.average_precision_score(y[test], yscore,\n", " average=\"micro\")\n", " plt.clf()\n", " plt.plot(recall,precision)\n", " plt.xlim([0.0, 1.0])\n", " plt.ylim([0.0, 1.05])\n", " plt.xlabel('Recall')\n", " plt.ylabel('Precision')\n", " plt.title('Precision-Recall curve, AUC: {0:0.2f}'.format(average_precision))\n", " plt.show()\n", " return precision, recall" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 29 }, { "cell_type": "code", "collapsed": false, "input": [ "precision,recall = drawprecisionrecall(X,y,test,model)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAHYCAYAAAABLe9WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclPX6//FrWBRlEQQ1BRIVFJcAjSQzCzVz19QsPek3\nl8zMJeuck+1a3xbtnL6nk55T6k89pqVmZu5obtkGRCpuqEigQOaKgriwze+PaU5IINvMfOYz83o+\nHvdjuGfumbnGt+XFfV9z3waj0SgAAABQw0V1AQAAAM6MZgwAAEAhmjEAAACFaMYAAAAUohkDAABQ\niGYMAABAIZoxwMF88sknj/Xu3XtrZdtNmjTpwzfffPMVW9RkCyEhIRk7d+7sISIya9asWaNHj16m\nuiYAqAqaMcCGQkJCMurXr3/V29s777bbbvt17NixS/Lz8z0t+R6PPfbYJ1u3bu1d2XYffvjhpFde\neeVNS763mYuLS4mXl9cVb2/vvMDAwOxp06Z9UFRU5GaN9zIzGAzG8n7WmdFoNLRs2fLn9u3bHy77\nWEhISMaOHTt6lr7vP//5z5hu3bp9Y14vKCioM2vWrFmtW7c+7uXldaVFixbp48ePX3Ty5MnmVXn/\nixcvNhwyZMhaLy+vKyEhIRkrVqwYWdG2N27cqPvss8/+IzAwMLthw4YXJ0+e/K/SmY8aNWp506ZN\nT/v4+OS2bNny57feeuvlqv0pAI6PZgywIYPBYNy4ceOAvLw8771793ZKSkqKLm/vlLUbF1s4cOBA\nRF5enveePXvu++KLL4YuWLDgSVu9t9FoNFj7PWyR0Z49e+67ceNG3XPnzjVKSkqKLv2YwWAwVtZ0\nPvzww59v3LhxwIoVK0bm5ub6JCcnR0ZHRyeVbeIqMnny5H95eHhcP3v2bONPPvnksUmTJn145MiR\nduVtO3v27Bf27t3b6fDhw+2PHz/eeu/evZ1K/91+8cUX30lPT2+Rm5vrs2XLlr5z586dGhcX16cq\ndQCOjmYMUKRZs2a/9OnTJ+7w4cPtRUx7k/79738/HRYWltqmTZtjIiIbN24cEBUVtd/Pzy+na9eu\n3x08ePAO8/MzMzODhw4d+kXjxo3PBgQEnJ86depckZv3jhiNRsOzzz77jyZNmpxp0KDB5YiIiAPm\nf0zHjBnzn1dfffV/za+3cOHCCWFhYan+/v4XBg8evO706dNNzY+5uLiUzJ8/f2Lr1q2P+/n55UyZ\nMmVeVT9nq1at0rp27fpd6X/Ea/K50tLSWvXo0WNnQEDA+UaNGp0bNWrU8suXLzeo/p+8yLp16wZH\nRUXtb9CgweXQ0NAT27Zte1Dkj3ubSh/uzMjICHFxcSlZvHjxuObNm5/s2bPnjn79+m3+17/+Nbn0\na0dGRiZ/+eWXD4mIHD16NLxXr15f+fv7XwgPDz+6evXq4dWpc+nSpY8PGzZszeDBg9ctXbr08eo8\nd/v27Q9s3779gXXr1g2+8847f3JxcSnx8fHJnTRp0ofjxo1bXNnz8/PzPb/44ouh//u///tq/fr1\nr3bt2vW7wYMHr1u2bNno8rbfuHHjgKlTp8719fW9FBAQcH7atGkfLF68eJz58fbt2x/28PC4bl53\nc3Mraty48dnqfCbAUdGMATZm3muTmZkZvGXLlr4dO3bcZ35s3bp1g3/88ce7jhw50m7fvn0dx48f\nv2jhwoUTLl682HDixInzBw0atL6wsNC9uLjYdcCAARtbtGiRfvLkyebZ2dmBI0eOXFH2vbZt2/bg\nN9980y01NTXs8uXLDVavXj28YcOGF0Vu3rOyc+fOHi+99NLbq1evHn769OmmzZs3PzlixIiVpV9r\n06ZN/ZOSkqIPHDgQ8dlnnz1S2aFQ8+c8evRo+DfffNOtc+fOiSIi1f1cpet4+eWX3zp9+nTTlJSU\ntpmZmcGzZs2aVd0//8TExM6PP/740vfee+/Ply9fbrBnz577mjdvfrLsn4l5vezz9+zZc9/Ro0fD\nt27d2nvkyJErSh+6O3LkSLtTp07d3r9//035+fmevXr1+mrUqFHLz50712jlypUjnn766X+npKS0\nrUqdV69erb9mzZphjz766KpHHnnks5UrV44oLCx0r+rn3L59+wMxMTEJgYGB2RVtM3v27BcGDhy4\nobzHjh8/3trNza0oNDT0hPm+yMjIZPMvD+UpvUeypKTEJSsrKygvL8/bfN/TTz/9b09Pz/z27dsf\nfuWVV97s1KnT3qp+HsChGY1GFhYWGy3NmzfP8PLyyvP19c1p3rx5xuTJk+ddv369rtFoFIPBULJr\n165Y87ZPPfXUh6+++uobpZ/fpk2bo19//fV933//fZdGjRqdLS4udin7HkuWLBlz7733fmM0GmXH\njh09WrdufSw+Pj6m7LZjxoxZYn79cePGLZoxY8Zs82NXrlzxdHd3Lzh58uTt5tq+++67e8yPP/LI\n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\nPDxl3rx5k8ve/+677/71rrvuSjQaTbNXs2fPnhEWFnbcx8fncrt27Q4vXrx4bOntCwoK3GfOnDkr\nNDQ01dPT80rz5s0zJkyYsCAzMzPIaDTKW2+99VLfvn03V/TndPHiRb+HHnporfm5K1asGGF+7OTJ\nk7d7eXnlmV9rz5493UJCQtLr16+fHx4envLpp5+ONG977ty5gPvvv3+3r69vToMGDS7dddddievW\nrRuk+r9HFhZ7WQxGo0OcGxEAtNK7d++tH3zwwTTzaUwAOC+aMQAAAIWYGQMAAFDIbi+54ijXlgMA\nAM7BWMNLsdltMyZi+nIB9DRr1iypwcnRYQfITm/kpy+y05vBUPNL4nKYElaRkZGhugTUENnpjfz0\nRXbOi2YMAABAIZoxWMWYMWNUl4AaIju9kZ++yM552e2pLQwGg9FeawMAACjNYDDUeICfPWOwit27\nd6suATVEdnojP32RnfOiGQMAAFCIw5QAAAC1xGFKAAAATdGMwSqYfdAX2emN/PRFds6LZgwAAEAh\nZsYAAABqiZkxAAAATdGMwSqYfdAX2emN/PRFds6LZgwAAEAhZsYAAABqiZkxAAAATVm8GRs3btzi\nJk2anLnjjjsOVrTNtGnTPggLC0uNjIxM3rdvX0dL1wD1mH3QF9npjfz0RXbOy+LN2NixY5fExcX1\nqejxzZs39ztx4kRoampq2IIFC56cNGnSh5auAQAAQBduln7Bbt26fZORkRFS0ePr168f9Pjjjy8V\nEYmJiUm4dOmS75kzZ5o0adLkTNltH3xwjNx2m+mlPD19pVWrKImMjBURkeTk3SIirNdyfejQWGnZ\n8vffyGJjTY/Xdt18n6Vej3XbrcfGxtpVPayTH+us2+O6+eeMjAypLasM8GdkZIQMHDhww8GDB+8o\n+9jAgQM3vPjii+/cc88934uIPPDAA9vnzJkz48477/zppsIMBuMDDzDAb23794s8/7xIs2YiJSWm\npbi4/J8rWjcaTUtJye8/W+M+a79+deooKRE5e1Zk+PCbHxP54/MrWqq6rSVes04dkUceERk0SMTV\n1fZ/zwDA0dVmgN/ie8aqomyxBoOh3K7rq69sU48zO3RI5N13TU2Zi4tpcXX9/eeqrBsMv9+al1On\ndkvLlrE33VfedlW9r6bPs+Z927ebmpyyj4v88b6KFltte/myyN/+JvLccyJt297cZJqbS/PPOTm7\n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\nfz5j+0pRXTXtWSw+wF8dljonGdSoTg67du3qvnjx4nHfffddV2vWhKqpSnbTp09/f/bs2S8YDAaj\n0ctL3CkAAATMSURBVGg0lP3vEOpUJb/CwkL3vXv3dtqxY0fPq1ev1u/SpcsPd999d3xYWFiqLWpE\nxaqS39tvv/1SVFTU/t27d8empaW16tWr11fJycmR3t7eebaoETVXk55FaTPGOcn0VpX8REQOHDgQ\nMWHChIVxcXF9brV7F7ZTlex++umnO0eMGLFSROT8+fMBW7Zs6evu7l5Y9lQ1sL2q5BccHJwZEBBw\nvl69etfq1at37b777tuTnJwcSTOmXlXy+/777+95+eWX3xIRadWqVVqLFi3Sjx071iY6OjrJ1vWi\n6mrcs6gchCssLHRr2bJlWnp6esiNGzfqVDbA/8MPP9zNALj9LFXJ7+TJk7e3atXqxA8//HC36npZ\nqpdd6WXMmDFL+Dal/SxVyS8lJSW8Z8+e24uKilzz8/Prd+jQ4eDhw4fbqa6dpWr5Pfvss/83a9as\nmUajUX799dcmgYGBWRcuXGiounYWo6Snp4dUZYC/Oj2L0j1jnJNMb1XJ74033ngtJyfHzzx35O7u\nXpiYmNhZbeWoSnaqa0TFqpJfeHj40T59+sRFREQccHFxKZkwYcLCdu3aHVFdO6qW30svvfT22LFj\nl0RGRiaXlJS4vPvuu883bNjwourand3IkSNXfP311/efP38+IDg4OPP111+fWVhY6C5Su57FYDQy\nfgUAAKCK0m9TAgAAODuaMQAAAIVoxgAAABSiGQMAAFCIZgyAllxdXYs7duy4LyIi4sDQoUO/uHLl\nipclXz8kJCTj4sWLDUVEvLy8rljytQGgNJoxAFqqX7/+1X379nU8cOBAhI+PT675tACWUvqs2Vz1\nA4A10YwB0F6XLl1+SEtLayUikpaW1qpv375boqOjk+677749x44dayMicubMmSZDhgxZGxUVtT8q\nKmp/fHz83SIiQ4YMWRsdHZ3UoUOHQwsXLpyg8nMAcE5KT/oKALVVXFzsum3btgd79uy5Q0TkySef\nXDB//vyJoaGhJxISEmKefvrpf+/YsaPntGnTPujevfuutWvXDikpKXExH9ZcvHjxOD8/v5xr167V\n69y5c+LDDz/8OZftAmBLnPQVgJbc3NyK7rjjjoPZ2dmBISEhGfHx8XdfvXq1fuPGjc+2adPmmHm7\ngoKCOocPH27fuHHjs9nZ2YHu7u6FpV9n1qxZs7788suHREQyMjJCtm3b9mDnzp0TW7Rokf7TTz/d\n2bBhw4ve3t55eXl53rb+jACcA3vGAGipXr161/bt29fx2rVr9Xr37r113bp1gx944IHtvr6+l/bt\n29exvOcYjUZD6fXdu3fH7tixo2d8fPzdHh4e17t3777r+vXrHrb5BABgwswYAK3Vq1fv2gcffDDt\n5ZdffsvLy+tKixYt0j///POHRUzN14EDByJERHr27Lnjww8/nCRiOrSZm5vrk5ub6+Pn55fj4eFx\n/ejRo+HmOTIAsCWaMQBaKv0Nx6ioqP2hoaEnPvvss0c++eSTxxYtWjQ+Kipqf4cOHQ6tX79+kIjI\nP//5z2d27drVPSIi4kB0dHRSSkpK2z59+sQVFRW5tWvX7siLL774TpcuXX6o7L0AwNKYGQMAAFCI\nPWMAAAAK0YwBAAAoRDMGAACgEM0YAACAQjRjAAAACtGMAQAAKPT/AWt1cOfcgmbYAAAAAElFTkSu\nQmCC\n", "text": [ "" ] } ], "prompt_number": 121 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows that it is not possible, even with loss of precision, to recall all of the positive training examples.\n", "Unfortunately, it is only possible to recall less than 10% with perfect precision." ] }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/lr_precisionrecall.npz\",precision,recall)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 122 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Classifier coefficients\n", "\n", "We can also plot the weightings which this model is using to achieve the above performance:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(model.named_steps['cls'].coef_.T)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 123, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nJTdX5JlnfDJihMj48V557z2Rq6/2ya23ihxyiFcGDxa5+WafdO4scvrpevvA+7dP6x5lXvn8c5FF\ni3yydq3I2297ZfJkkUce8UllpUhxsVe6dw9/e/t069YipaU+mTNHZODA4MsHD/bKNdeIfPyxPl/2\n7T/91CdTpohMnar3/+c/+6RPH31+A29/wgleuf9+kTZtfOLz+W/frp1PXnpJ5J57vP/twfJJ/fp6\n+b59Il26+KRdO5FnnvHKwIEic+f6pKxMpFs3r/zpTyLz5/tk6FCRzz7z/q/x9LHHRH7+2SszZ4r0\n6+eTZ58VuekmfbxPPvFJVpbIiSd6Zd48kauu8o+nTx+RJUt88vHHIkOG6PWffNIngweLjBrllcsu\nE+nRw/ffBKjm8zdggMjbb/skNzf88/vXv4qcf75PVqzQ+7vuOpEPPvBJkyb+6195pU+++EJkwQKv\n+Hwil13mk6ef1tfD6tUanz179PqHHSaycKFPPvpIZNUqryxe7H+866/3ynHH6e09Hr3+8uUiOTk+\n2bBBZPhwr0yfLtKpU/Dr4bvvfP9NtvR0VZVPPvtM5JJLIr/+wp2eN88rRx8t0rhxcLy3bfPJtm3+\n8U+frs+n1+uVjz7S98fmzSJlZXr9mTN9kp2t8V6zpubj3Xefvl5uucUrlZUiN97ok4ICkezs4PF0\n7eqVZ58NP96vvhJ56CGvvPuuSGVl8OWffuqTd9/V+xcR+ewzn0yYINKmjW4fSkr0/8vP98qHH+r9\n/fKLyI8/emX2bJGTTvLfn05Z+2TNGpFTTtHX35YtevnGjV7Jy4v+/HbsKPLmmz7p2TPy879+vU9W\nrRI5+WSvtG0rMm9ezdfjjBkip53mlbIykSee8MmJJ2oiVVCg9z9ggF7/yy9FOnTwydy5/ts3a+aT\n998XueEGfb2ddJLvv32w8b8+fvpJ5NVXvVJcXPPyL77wyZFH6vZx8GC9fPVqkaOO8kqDBnq6vFxk\nw4bg+58xwyvjxkV+/NNO88rXX4t8+aWezs3V/3/tWp98+aVI/frxj//DD0U6dYp+/ZYtvbJhg8ia\nNbHvL9zprl31/b57t34ePPJI8OU9e3pl716R1at9Qf2b0e6/fn2RoiKfHHqonq6uFpk40SevvCJy\n7bVe6dw5+u3PPFO3T6++KnLxxcGXV1To/ft8Op6KCr38s898/01CI/+/Xm/iz4/pp+2/SxOpsERj\nWVatft58883zrrrqqmfs0y+99NKlEydOfDzwOmecccb78+fPP9E+PXjw4I+/+uqrY0PvS4dhWbfe\nalkPPmhZlmVZ779vWb/6lf794YeWddpplvXjj5bVooVlDRxoWatWWVazZpa1ZYtep3t3y3rnHctq\n3tyydu60grz5pmWdeqplVVVZtfaPf+h4LrvMsu6807LKyy2rd2/LOvlkyxo92n+9J5/U8xs1sqx2\n7SyrVSvL6tPHsqqrg+/v888tq2fPmo+zdq1lHX64ZZWW6u9Y9u+3rJwcyxo0SJ+nUL16WdbChcHn\nLV1qWe3b1xxTqJkzLatr15rn/+UvlnXbbfr3E09Y1pFHWta2bXr69tst6+KLo9/vgQMazxtv1NNz\n5lhWQYE/bjfeaFkPPeS//gknWNaQIZY1aZJlHXtszfvr2tWylizRv3futKxDD7Wsn37SeLdpY1lH\nHWVZM2aEH8u//21ZJ50U/rL9+/X1tGmT/7zRoy3rhRdqPv5XX+nf1dWWdfrplnXGGZZ1xBH6Og50\n77362hgyRMe2YoWev3q1vlZ69LCsf/7Tf/1Jkyzryiv179dft6wRI4Lvb98+y2rQIPi1/eijlnXT\nTeH/p0hWrbKsww7T1100PXv6n+vqav0fVq2yrGXLLKtbNz3/u+8sq2NHy3r3XX0eAlVWWlbr1pbV\npYu+L7p1s6yhQy1r5cqaj7Vihd5PqMmTLSs317Kuvdayhg+vefnLL+vzGOv1/eWXOgbL0vh17mxZ\nTZoEbz+++ML/mnv2WcsaM8Z/WeD2KpJLL7WsKVOiX6dVK/9r7MEHLeuWW2pe57LLLOvpp/Xy66+3\nrOJiy8rPt6zf/May/v53//X++EfL+vOfg2+7bJlldeqkf590kmXNmqWvmQMHoo8r0AMPWNbYsZEv\nv/12y7r7bv/pl1+2rAsu8J9+6aXg527vXn2ud+2KfJ/PPRf8eu/XT7dlu3dblsdjWYWFNW9TXa2P\nVV4efP6dd+pPNAMH6vYgkp079f1mmzNHX9/2e2/KFMs6/3zL+vZbfS+VlATffu5c3ZYlYswYy3rl\nFf27ulrjfcIJ+h6L1w031HxNWFbwe/n55/U1ZlmWtXy5fp4iuv/mLbXOoWo97ejxeOLaj86yrKBC\nb7TbBU6XBE47tm2ru85efLFOC552mk4lnnyyf6+o0aO1/+Cii7REHejcc7XfIMtBh9u4cToF9eGH\nOoacHG0i/f57bdK3XXutSFGR9hjMnat77OzeXfNQI2+84W9qDlRYqKX6SZNi93uJaP9KkyY6rRBu\nam3AgJrTalOn6hRatF2JRXTPxs8+q3m+3XRfWal9Yt276/O+dKlOBURb10dES9pvv63P5b336krq\nzz3nj1vgVOCGDTodcc452hM4cmTN+wtc22raNH19NG2q8T7zTJ3KjDTt2K+fxjXcgWj//W+9XWBT\na+jUY2mpxrrPf7sZPR5dWbyqSnuEzjgj+D5PPVWnTGbP1tfstGl6/vvv63XffVebme3n/dNP9f8R\n8S838sILOo1eXKxTTu3aBb+2a7NS+n33aeNz+/bRrxfY92Xvzt6hQ/BB3rds0Wn9I4+sOe04b55e\nt7hYp1IfeUT7MO3pqUBHHaVTVYHTLtOn620WLNCp4G++kf9WxdV//qN73736auzXd+C044oVGsOT\nTw7uqwrsRTvlFB2/PaUUa9pRJHYjt2XptKM9hRNpodV58/TxBw/W8c2apa+HLl2CpxAD+71s3brJ\nfyuT+lydcIJWzOzqi2UFH/O0vFy3l/YUX3m57th0882R/4+TT9bXpi2wsdz+vwL76xYu1G14s2aR\n7/PXvw4+IoXd92UfA3T79pp7fz7+uE77hS7NEq3Z3hat78uy9Pnu0UOf/2nTtIWiuFhfvyLafjJy\npF7nzjt1/IF7BCba7yUS3PN1113awzprlk77xWvcOG2deP99jb2956mThns4V+t0JC8vb8O6desK\n7NPr1q0ryM/PXx/tOuvXr8/Py8uLuHN3mzb+DU9gw32bNvrmadhQ5Pe/16bmadP0g9s2erS+GSdO\nrHm/Ho+zxEtEH3vSJO0bs8fVt6/26QT229gaNdLzc3P1DTlzpv8yexHLcMmXiCaZ//hH7H4vW5s2\n2ocRbs+X0J4me2+nCy+Mfb8eT/gGVTvZefNNkaZNff/rtxs4UJerCDeOUM2ba8/H44/rcgZDhoQf\n8wcfaBI4YYJ+kN95Z837svu+fv5ZE7Rx4/yXnXmmJmIFBTVvJ6KxbN8+/G7mb7+tSV+gM87Qni67\nB3HOHN2jLPD11bGjxjvcBvLEE3XJiuxsfc3az529B16nTtqXeM45mtzPm6cJmz3WBx7QnQ7eeUf7\nkIYMqfn6S7Tna+dOvT+7zzGaVq38ezyuWeNfN6llS+3TKy/3J1/t29dc68t+7WVlaU/WyJGRk6T6\n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\n", "text": [ "" ] } ], "prompt_number": 123 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/logistic.regression.coef.npz\",model.named_steps['cls'].coef_.T)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 124 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Which feature is the largest peak in the above plot?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "where(model.named_steps['cls'].coef_.T==amax(model.named_steps['cls'].coef_.T))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 125, "text": [ "(array([202]), array([0]))" ] } ], "prompt_number": 125 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see from the notebook on training and test set generation that this corresponds to one of the iRefIndex features.\n", "Looking at the notebook on [extracting iRefIndex features][iref] it appears the 202nd features is the biogrid feature.\n", "Given that Biogrid is an extremely large interaction database which is also used in the production of our training set it is not surprising it is a useful feature.\n", "\n", "[iref]: http://nbviewer.ipython.org/github/ggray1729/opencast-bio/blob/master/notebooks/Extracting%20iRefIndex%20features.ipynb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Support Vector Machine\n", "\n", "A support vector machine is a kernel-based classifier which aims to fit a hyperplane between training examples to separate the examples into different classes.\n", "The algorithm aims to maximise the distance from any given training point to the hyperplane in the high-dimensional space of the training vectors.\n", "\n", "### Building the pipeline\n", "\n", "Optimal performance of a SVM with the default parameters depends on scaling of the data so we must build a pipeline for the model as before with logistic regression:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.svm" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "imputer = sklearn.preprocessing.Imputer(strategy='mean',missing_values=\"NaN\")\n", "scaler = sklearn.preprocessing.StandardScaler()\n", "classifier = sklearn.svm.SVC()\n", "svmodel = sklearn.pipeline.Pipeline([('imp',imputer),('scl',scaler),('cls',classifier)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting a learning curve\n", "\n", "Again, it would be useful to get an idea of acceptable sample sizes prior to running the grid search to save processing time:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster start -n=10 --profile='altcluster' --daemon" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-28 23:28:21.044 [IPClusterStart] Using existing profile dir: u'/home/fin/.ipython/profile_altcluster'\r\n" ] } ], "prompt_number": 62 }, { "cell_type": "code", "collapsed": false, "input": [ "altclient = Client(profile='altcluster')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 181 }, { "cell_type": "code", "collapsed": false, "input": [ "alb_view = altclient.load_balanced_view()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 182 }, { "cell_type": "code", "collapsed": false, "input": [ "trainsizes=logspace(3,5,5)\n", "#initialise and start run\n", "lcsearch = ocbio.model_selection.LearningCurve(alb_view)\n", "lcsearch.launch_for_arrays(svmodel,X,y,trainsizes,n_cv_iter=3,params={'cls__C':1.0}, name=\"lrlc\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 128, "text": [ "Progress: 00% (000/075)" ] } ], "prompt_number": 128 }, { "cell_type": "code", "collapsed": false, "input": [ "print lcsearch" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 80% (060/075)\n", "\n" ] } ], "prompt_number": 155 }, { "cell_type": "code", "collapsed": false, "input": [ "alb_view.abort()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 159 }, { "cell_type": "code", "collapsed": false, "input": [ "svmlc = lcsearch.plot_curve()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nuvWGhIQcq/iZbt++/aXs7GyFWq02+eyzz+a0bNkyvaSkxEx8fi0sLIoOHDgwWKPRSObNm/dhz549\nT4ufhaenZ+KqVatmqVQq6U8//fQvmUxWKso5KyvLfvfu3aOKioos8vPzrUePHr3r2Wef/UW8b3Bw\ncLSXl5cyLi6uvVqtNsnIyHCqzTNY3Wcm/h1PmjRpS2FhoWVRUZHF5s2bJ5uampatXbv2LbVabVJU\nVGQxYcKEbc8+++wvBQUFVkql0qtdu3bXxPtVdn51zzFvvNV2a/AF8MZbfW2igrZ06dIF8+bN+/DA\ngQODBw0adFClUkm1FbSK26xZs1a9/fbbnwvCowpaSEjIsWXLls0Xz/3qq6/eGDx48IHK5jl27FhI\nZQpacHBwdHXrXrly5exRo0btFsfaCsvkyZM3v/rqq+vEY/v37x/i7+8fXxN55OTk2EkkEo345Vzd\nXFu3bp3Yq1evU9rXe3h4JFf15bh48eLw8ePHfyuOb9++7WJubl5cVFRkIe777rvvxj311FO/CYKA\niRMnbn3ttdciUlJS3CvO9TgFraprv/vuu3Fdu3a9UNk1rVu3vnngwIHB4vjgwYODvL29E8TPyczM\nrERUQgRBQPv27eOOHj06QBynpaW5ymSyUpVKJd20adPLvXv3/uPSpUsBtXkeFy9eHF6VgnbkyJGn\nn3766SN1ec7ff//9JV26dIkpLS2VVXa8uvWGhIQc27Bhw9Tq5lcoFNnitYsXLw4fOHDgIfHYlStX\nOlhaWhYKgoDjx4/3d3NzS9W+VlsRrrjFxMR0USgU2dprWbx4cbg4ru0zWNVnplarTcS/44SEBG/x\n+ObNmyd7enomimOVSiU1MzMriY+P9xf3RUREvBYSEnKssvMf9xzzxlttN3ZxMs0KiUQiTJgw4dsd\nO3a8VJl7EwDOnj3b46mnnjrm7OycYWdnlxsRETGtMrelSMuWLW+Lry0tLYsKCgqsa7MmDw+PFO3x\n9evX2w0fPnyfq6truq2tbd6CBQuWVXd/FxeXOzW5v0ajMZk7d+6KNm3a3LS1tc3z8fFJAIC7d+86\nPm6utLQ0t4rrrE3CQ2JioldZWZnM1dU1XaFQ5CgUipzXX3/9m8zMTCcA+Pjjj/8tCIIkKCjoXKdO\nnS5v3rz55ZrOXdW1ycnJrXx9ff+p7Jq0tDQ3Ly+vRHHs6emZlJaW5iaOnZycMs3MzErFsVKp9B41\natQv4to7dOgQZ2pqqsrIyHCeMGHCt6GhoQfHjh37vbu7e+p77733UVVxa8OHD98nzvHRRx+9t2LF\nirniOCwsbK943v79+4cOGzYsEgB27Njxklwuz5fL5fnivqpYu3bt9O3bt4+PjIwcJpPJyio753Hr\nreh6/fTTT/+vQ4cOcXZ2drkKhSInLy/PtqpnpkWLFoXFxcUWGo3GJC0tzc3d3T1Vey4vL69E8e+t\nsLCwxbRp0yK8vb2Vtra2ecHBwcfz8vJstf8etZ+x2j6DVX1md+7ccanqeu3x3bt3HcvKymQVnxNt\nN2zF63V5jhmmIqygMc0OT0/PJF9f338OHDgw5Lnnnttd8fiLL7743bPPPvvflJQUj9zcXLvXX3/9\nGzFWShcqizmqLAvtjTfe+LpDhw5xN2/ebJOXl2e7bNmyBfq4/44dO17au3dv2NGjR5/Oy8uzTUhI\n8AFqFrTt5uaWlpyc3EocC4Ig0R5XxMTERKM9btWqVbKYQZuTk6PIyclR5OXl2cbGxgYA9CW/bt26\n11JTU90jIiKmvfnmm1/VNHOzsmtv3brV2tPTM6mqOdzc3NK0S5UkJSV5urm5pYnjip+Jp6dnUlRU\n1GBx7Tk5OYrCwsIWrq6u6aampqr333//P1euXOl46tSp3vv27RuuHeeozb59+4aL18+dO3fFvHnz\nlovjvXv3honnHThwYIgYf/bSSy/tyM/Pl+fn58sjIyOHVSWHTZs2Tfn444//ffTo0ae130tFqltv\nxfd98uTJfp988sm7P/744+jc3Fy7nJwcha2tbV5NnhlXV9d0bWUGIEVdvMdnn332zvXr19udO3cu\nKC8vz/b48ePBQoWYMu311PYZrO4zq2z+imNHR8e7MpmsrOJzoq0kVrxel+eYYSrCChrTLNm4cePU\n3377bYClpWVRxWMFBQXWCoUix8zMrPTcuXNB33333YvVBXTX5MsKoP+8s7KyHO7du2dT3bUFBQXW\ncrk8v0WLFoVXr171//rrr9/Q9d7ivObm5iX29vbZ9+/ft5o/f/6HNZ1r6NCh+69cudLxl19+GaVS\nqUy/+OKLmbdv325Z1fkuLi53lEqltzinq6tr+qBBgw7NmTPn8/z8fLlGozG5detW6xMnTvQHgB9/\n/HF0SkqKBwDY2dnlSiQSQVTyXFxc7ty6dat1Vfeq7FqpVKoePnz4vvT0dNfVq1fPKikpMc/Pz5ef\nO3cuCADGjRu3c+nSpQvv3r3rePfuXcf//Oc/71dXFuT111//Zv78+R+KpVgyMzOdRIUqOjo6JDY2\nNkCtVkvlcnm+TCYrk0ql6qrmEqmojIgkJCT4lJSUmPv5+V173BwiO3bseGnBggXLDh06NOhxJViq\nW29FWefn58tNTU1Vjo6Od0tLS83+85//vK/9/FZHr169Tpuamqq++OKLmWVlZbLdu3c/d/78+e7i\n8YKCAmtLS8siW1vbvOzsbPvKMlq15TNs2LDI2jyD1X1mNUEqlapfeOGFXQsWLFhWUFBgnZiY6LVy\n5cq3x48fv72qa6p7jhmmtrCCxjRLfH19/+natetf4lhbAfvqq6/efP/99/9jY2Nz74MPPlg0ZsyY\nH7Svre5Xd3V1mfz9/a+OGzdup6+v7z/29vbZ6enprpWd/+mnn/7fd99996KNjc291157bd3YsWO/\nr3iP6u5X1f0nTpy4zcvLK9Hd3T21U6dOl3v16nW6pnM5Ojre/fHHH0fPnTt3haOj492bN2+26du3\n7++V3QegbFEAcHBwyOrWrdufALBt27aJpaWlZh06dIizt7fPHj169I/iF+yff/7ZrWfPnmfkcnn+\nyJEj93zxxRczRUUjPDw8fNKkSVsVCkXOTz/99HzFe1V1rbW1dcHhw4cH/vrrryNcXV3T27Vrdz06\nOjoEABYuXLi0W7dufz7xxBOXnnjiiUvdunX7c+HChUurkuGsWbNWh4WF7R00aNAhGxube7169Tot\nKnu3b99uOXr06B9tbW3zOnToEBcSEhJdkxpwVT0rkZGRwx7nyqzIokWLPsjOzrbv3r37edEd+uab\nb35V2bnVrXfWrFmrf/rpp+ft7e2zZ8+evWrw4MFRgwcPjmrXrt11b29vpaWlZZGnp2dSde9BHJuZ\nmZXu3r37uS1btkx2cHDI2rVr1wv/+te/fhbPmz179qqioiJLR0fHu7179z41ZMiQA9U9yw4ODlm1\neQar+8wqzl3Ve1mzZs0MKyur+76+vv/069fv5EsvvbTj5Zdf3lzV+dU9xwxTWySCYBTlnxiGYRiQ\npWjGjBlrBg8eHNXQa2EYpuHQuwVtypQpm1xcXO4EBATEVnXOzJkzv2jbtu2Nzp07X4yJiQkU90dF\nRQ329/e/2rZt2xsfffTRe+L+7Oxs+4EDBx5u167d9UGDBh3Kzc210/e6GYZhjIGQkJDokJCQ6IZe\n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\nuaSkRCKRSErEYnFpSUmJpON6sVhc+qrPhc/0kSl7TYvF4tJ79+4NJiLSarWi+vp62/79+9e82jPi\nFwcHh/vsP7oRERHfpKamBhEh35fV1tZmOmPGjO8XLFhwiJ3SCNew/rD5zp8//zCbL65h/bO1ta2f\nOnXqv9LT00cY4/XbKwq0nsy9Br/X0tJi0djYaE1E1NzcbPnTTz9NkMvlud3NORcWFpZ47NixuRqN\nxkytVrvdvHlzWFBQUKqTk1OFjY1NQ0pKiophGMGhQ4cWYJ66p+kj02nTpv3Y+btOnjw5MzQ09ILh\nzowfysvLndm/T506NV0ul+cSId+XwTCMYMmSJQleXl75a9as+ZJdj2tYP7rLF9ewfjx48MCe7R5u\nbW01P3fu3HilUplplNevoQfx6audPn16sqen5w13d/db27ZtW2/o4zGGdufOHTeFQpGlUCiyvL29\nr7O5VVdX9w8NDT3f1ePIW7du3eDu7n5LKpX+lpSUNJFdzz6O7O7ufmvVqlV/NfS5GbLNnTv3qLOz\nc5mpqalGIpEU79u37z19Zvrw4cM+s2bNOsE+4q1Wq10Nfc6GzDchIWHxggULvpXL5Tm+vr7Z06ZN\n+4EdDIx8X7wlJye/LhAI2hUKRRY75cOZM2cm4RrmLt/Tp09PxjWsn5aTkyNXKpUZCoUiSy6X53z+\n+edrGUa//117VflyMlEtAAAAALy8XtHFCQAAANCboEADAAAA4BkUaAAAAAA8gwINAAAAgGdQoAGA\nwVVXVw9QKpWZSqUy09nZuVwikZQolcpMf3//DK1WK3rWvunp6SOioqJin/cbwcHBv+rviHtu27Zt\nG15k+02bNm25cOFCKFfHAwDGAU9xAgCvbNmyZZO1tXXjRx999AW7TqfTCYVCoc6Qx/WyrK2tG9n5\nBgEAegp30ACAdxiGEYSHhx9YunTpVyNHjry6bt26HdeuXQt87bXXLvv7+2cEBwf/WlhY6ElE9Msv\nv4x98803/0FEtHnz5s2LFy/eFxISctHd3f12XFzcKvY7raysmtjtx44d+8usWbO+k8lkBfPnzz/M\nbnP69OkpMpmsICAgIG316tV/Zb+3o7y8PG+VSpWiVCozFQpF9u3bt92JiA4fPjyfXb906dKv2tvb\nTaKjo2NaW1vNlUpl5oIFCw51/B6dTicMDw8/IJfLc319fXNiY2OjiIjCw8MPfP/99zPS09NHsHcV\n5XJ5romJSTsR0e3bt90nT558JiAgIO2NN964dOPGDan+/xcAAEN7ZtcBAIChCAQCpqysbNCVK1dG\nCQQCprGx0To5OXm0UCjUnT9/ftyGDRu2nTx5cmbn/QoLCz0vXrwY0tDQYCOVSm8sX758j1Ao1HV8\n915WVpZffn6+l7Ozc3lwcPCvly9ffs3f3z9j6dKlXyUnJ48eMmTI3XfeeefvXb2vLz4+PjIqKir2\nnXfe+btWqxVptVpRQUGB7MSJE7MvX778mlAo1C1fvnzPkSNH3o2JiYnevXv3iszMTGXn78nKyvIr\nKysblJubKyciamhosGHPWyAQMCNGjEhn9/vkk08+nzJlymkiog8++ODr+Pj4SA8Pj1spKSmq5cuX\n70GXKEDvgwINAHhr1qxZ37FFUl1dnd3ChQu/vXXrlodAIGDa2tpMO28vEAiYqVOn/svU1LRtwIAB\n1Q4ODvcrKysdBw0aVNZxu6CgoFR2nZ+fX5ZarXazsLBoGTp06J0hQ4bcJSKaN2/e0a+//vqDzr8x\natSoK1u3bv1TSUmJ5O233/4vDw+PWxcuXAhNT08fERAQkEb0+BUzTk5OFc86N3d399t37twZunr1\n6r9OnTr1XxMmTPiJ/YxhGAH79/Hjx+dkZGT4nzt3bnxTU5PVlStXRs2aNes79nONRmPW0zwBwHig\nQAMA3rKwsGhh/964ceOnoaGhF06dOjX97t27Q8aOHftLV/uYmZlp2L+FQqGuq4cM+vTp86jzNp3v\nlnUskjqaN2/e0ZEjR1795z//+R9Tpkw5HR8fH0lEtGjRooMv8kCAnZ1dXU5Ojm9SUtKkr776aumJ\nEydmJyQkLOm4zfXr1322bNmyKTk5ebRAIGDa29tN7Ozs6rq6IwcAvQvGoAGAUWhoaLBh73rt37//\nva626a6oeh6BQMBIpdIbd+7cGXr37t0hRI/vXHXVxalWq93c3NzUq1atips2bdqPubm58tDQ0Asn\nT56cWVVVNZCIqKampv+9e/cGExGZmpq2dVUkVldXD9BqtaK33377vz799NONHYsugUDA1NXV2c2b\nN+/ooUOHFgwYMKCaiMjGxqbBzc1NzXbtMgwjyMnJ8X2ZcwYAfkOBBgC81bFA+uSTTz5fv379dn9/\n/wydTifs+Bn7Nzt+63nf1dU2ffv2fbhnz57lkyZNSgoICEizsbFpsLGxaei83YkTJ2b7+PhcVyqV\nmXl5ed4LFy78ViaTFXz22Wf/a8KECT8pFIrsCRMm/FRRUeFE9HjMmK+vb07nhwRKS0vFISEhF9kH\nCLZv376+4+eJiYlh9+7dGxwREfENO+UIEdGRI0feTUhIWOLn55fl4+NzPTExMayneQKA8cA0GwAA\n/625udnS0tKymYhoxYoVuz09PQt7MscaAIC+4Q4aAMB/27t37/tKpTLT29s7r6GhwSYyMjLe0McE\nAP9/wh00AAAAAJ7BHTQAAAAAnkGBBgAAAMAzKNAAAAAAeAYFGgAAAADPoEADAAAA4BkUaAAAAAA8\n838BYnebNQ9gdsYAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 156 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/svmlc.npz\",svmlc)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 158 }, { "cell_type": "markdown", "metadata": {}, "source": [ "From this curve we can conclude that at least 20,000 training samples are going to be necessary for meaningful results." ] }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise parameters to test:\n", "svm_params = {\n", "'cls__C':logspace(-1,1,3),\n", "'cls__degree':array([1,2,3,4]),\n", "'cls__gamma':logspace(-1,1,3)\n", "}" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 160 }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise mmaped data\n", "split_filenames = ocbio.mmap_utils.persist_cv_splits(X,y, test_size=2000, train_size=20000,\n", " n_cv_iter=3, name='testfeatures',random_state=42)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 161 }, { "cell_type": "code", "collapsed": false, "input": [ "#initialise and start run\n", "search = ocbio.model_selection.RandomizedGridSearch(alb_view)\n", "search.launch_for_splits(svmodel,svm_params,split_filenames)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 183, "text": [ "Progress: 00% (000/108)" ] } ], "prompt_number": 183 }, { "cell_type": "code", "collapsed": false, "input": [ "print search" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 100% (108/108)\n", "\n", "Rank 1: validation: 0.95650 (+/-0.00029) train: 0.99723 (+/-0.00032):\n", " {'cls__gamma': 0.10000000000000001, 'cls__degree': 4, 'cls__C': 10.0}\n", "Rank 2: validation: 0.95650 (+/-0.00029) train: 0.99723 (+/-0.00032):\n", " {'cls__gamma': 0.10000000000000001, 'cls__degree': 3, 'cls__C': 10.0}\n", "Rank 3: validation: 0.95650 (+/-0.00029) train: 0.99723 (+/-0.00032):\n", " {'cls__gamma': 0.10000000000000001, 'cls__degree': 2, 'cls__C': 10.0}\n", "Rank 4: validation: 0.95650 (+/-0.00029) train: 0.99723 (+/-0.00032):\n", " {'cls__gamma': 0.10000000000000001, 'cls__degree': 1, 'cls__C': 10.0}\n", "Rank 5: validation: 0.95600 (+/-0.00058) train: 0.99685 (+/-0.00026):\n", " {'cls__gamma': 0.10000000000000001, 'cls__degree': 4, 'cls__C': 1.0}\n" ] } ], "prompt_number": 233 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is taking an _extremely_ long time to train, and is not feasible in the sample sizes above.\n", "Quote from Murphy textbook on SVMs:\n", "\n", "> SVMs also take $O(N^{3})$ time to train...\n", "\n", "Which is also repeated in the [documentation for the Scikit-learn SVM classifier][skdocs].\n", "\n", "Due to this problem, it does not seem to be well-suited to this data, where we will primarily be working with very large sample sizes.\n", "\n", "[skdocs]: http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html#sklearn.svm.SVC" ] }, { "cell_type": "code", "collapsed": false, "input": [ "train,test = next(iter(sklearn.cross_validation.StratifiedShuffleSplit(y,\n", " test_size=2000,train_size=10000)))\n", "print len(train),len(test)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "10000 2000\n" ] } ], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "svmparams = search.find_bests()[0][-1]\n", "svmparams['cls__probability'] =True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 237 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "svmodel.set_params(**svmparams)\n", "svmodel.fit(X[train],y[train])\n", "fpr,tpr = plotroc(svmodel,X[test],y[test])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\ndVjc/vjx493y8/OdasqByMnJKd/CwkInrjdv3vzO7du3ba5fv95Ko9FY6h/Pzc0tt7r95Obmuj36\n6KMXqnu+devWavH/zZo1K719+7aNuP7ZZ5+91aVLl5MODg63HB0dbxYWFtrr9yNVPu6ZM2c6jhgx\nYoezs/MVe3v7wvfeey9CfM85OTnu94tD36VLl9qWl5dbOTs7XxG/fjNmzFh+/fr1VuI298v1oEGD\nds+ZMyd69uzZS1u3bq2ePn36iuLiYtvaHDs3N9etffv252uz7erVqyeNHTt2E1CRr8DAwNT4+PiX\nxOcbNWqkLS8vt9J/TXl5uZWVlVW5+JqqPge1ZWNjc7uoqMhO/7Fbt2452NnZFVW1/VtvvfVZcXGx\nbUFBQYuSkhLr0aNHbx02bNiPYiz/+9//no2KinqzTZs2V3ft2hX81FNPJYs5trGxuV1YWGivv7/C\nwkJ7W1vbYhsbm9sAoB+L+BxQ0bfVvXv3Y35+funi84IgKCrHd/nyZY89e/Y8OWnSpNX6j/v5+aVb\nW1uXWFlZlU+aNGl1//79f/3hhx+ers3X6H7vefv27SNv375tI+ZQEARFVXHduXOn+ebNm59/6aWX\n4vUfX7duXcjFixfbubu758yePXupUqlc6+rqmlebuMh0sBgjg3riiSf2zp07d8n8+fMXAxXFyYsv\nvrjm5s2bjuJSXFxs+/bbb3/i7u6eU1BQ0KLyD2vxde+9916E/utu375tM27cuA2Vt3V0dLw5ZMiQ\nnzZs2DAuISFh4oQJE9br7+frr79+RX8/JSUl1v369ftN3KZy864+FxeXPy5dutRWXBcEQZGTk+Ou\n/8Pz8uXLHvr/F5+rzXvQP/alS5favvLKK18vXbp0dkFBQYubN286duvW7bj4g766OO8Xv6hVq1bX\nLS0tNTk5Oe7iY/r/r8zd3T3n/Pnz7Wvab2X79u17/NNPP523adOmsbdu3XK4efOmo729faH+L6vK\n8c6cOTOmS5cuJ8+dO+dVWFhoHxER8Z5Op7MAKr6GFy5ceLSqY+kXnWLMTZo0uZefn+8kfr0LCwvt\nf//9d5/qjl3Z3Llzl2RkZPQ+efJklzNnznT89NNP59Xmde7u7jnnzp3zut82ALB///6Ac+fOeS1a\ntOh9Z2fnK87OzlcOHDjgn5CQMFH/PV+8eLGd/usuXrzYrm3btpcA4KmnnkretWtX8J07d5rXdLyq\ndO3a9cSFCxce1S+gjx492qNr164nqto+KSlp6OTJk2MdHBxuNW7cuGzOnDnR6enpfgUFBS2Ais98\nenq6X35+vtPq1asnnTp1ylssoLp27Xri6NGjPcR9nT9/vn1ZWVnjjh07nnF0dLzp7Ox85ciRIz31\n4+jWrdtxANi9e/egrVu3jha/Tvv37w948803o1599dX/6se3Zs2aFwcMGPCLp6dndl2+Hg/ynvPz\n853EPzbFuDZu3PjCl19++fro0aO36u9j69ato52cnPKffPLJPfqPe3h4XN6+ffvIa9euPXLgwAH/\n69evt+rbt29afcVO8sBijAzu9ddf/zI9Pd0vLS2tr1KpXLt9+/aRP/300xCtVtvo7t27TVNTUwPz\n8vJcnZ2drwwbNuzHWbNmLbt165ZDeXm5lThv08svv7xy+fLlM9LT0/0EQVCUlJRY79y5c7j+LxB9\nEydOTIiPj39py5YtYyZOnJggPj5jxozlkZGR7548ebILUPGX96ZNm8bW9r288MILG3fu3Dl89+7d\ng8rLy62ioqLebNq06d2AgID9QEVxtmzZsll5eXmu4pVpYrH1oO+hpKTEWqFQCC1btryh0+ksYmNj\nJx8/fryb+Hzr1q3Vubm5bvqjJtX9VV5Zo0aNtM8999z3CxYsWFBaWtrs1KlT3mvWrHmxuiIjJCRk\nXXJy8lObNm0aq9FoLPPz853EX6r3O15xcbGtpaWlpmXLljfKysoah4eHf1h5FKay27dv29ja2hY3\nb978zqlTp7xjYmJmis8NHz5855UrV5y/+uqr1+7du9ekuLjYVrxisHXr1urs7GxPMR5nZ+crQ4YM\n+emNN974vLi42Fan01mcP3++fW3nAsvIyOidlpbWt7y83Kp58+Z3mjZterdRo0Za8VjVFYUAMG3a\ntG8++OCDhefOnfMSBEFx7Nix7mKxoi8+Pv6lIUOG/JSVldX56NGjPY4ePdrj+PHj3UpLS5uJozbj\nxo3bsGjRovfz8vJcdTqdRXJy8lM7duwY8fzzz28GgBdffHGNu7t7zpgxY7acPn26k06ns8jPz3eK\njIx898cffxxW0/vs2LHjmZ49ex756KOPwu7evdv0+++/f+748ePdxowZs6Wq7bt3734sPj7+paKi\nIrvy8nKrZcuWzXJ1dc0Trw48fPhwr/LycquioiK7t9566zMPD4/LQUFBPwMV30fbt28f+csvvwwo\nKSmx/uCDDxaOGTNmi7W1dQkATJo0afWiRYvev3XrlkNWVlbnb775ZlpoaGgcAMTFxYWeOnXK++jR\noz2OHDnSs3fv3hkLFixYEBER8Z5+fKtXr54kvkZUWFhov2vXruC7d+821Wg0luvWrQvZt2/f40OH\nDk0St7l3716Tu3fvNq38//u9Zycnp/yFCxd+cPbs2Q5iXKNGjUp85ZVXvo6NjZ1cOdeVR+sA4NSp\nU97FxcW2ZWVljdeuXav8+eefg954443Pa8obmRipz5NyMb2l8tWUgiBg5syZy8S+n7S0NL8nn3wy\ntUWLFvmtWrW6NmLEiO1iz1ZBQYHjSy+9FNe6deurjo6OBWPGjNks7iMpKSm4T58+6eJVdi+88MIG\n8SqsyscsLS1tamtrW9StW7ffK8e3Zs0apY+PzzE7O7tCd3f3y1OnTv1GfM7CwkJbVR+J/rJ169Zn\nu3TpcsLe3v5WYGCg6uTJk5313/vHH388X7zaMjQ0NFa/Z+lB3oMgVPTutGjRIr9ly5bX33jjjSj9\nPpmysjKr4cOH7xC/joLwzwZ+d3f3y9Xl5vr16y2HDx++w87OrtDPzy9t/vz5Hw8ePDi5uve9b9++\nAX379v1N/LqJV4RV7pHRP65Wq7WYMmXKKjs7u0JnZ+c/Pvnkk3nt2rW7IMZQVdP93r17H/f29s6y\nsbEpfvzxx/d++OGHH+lfWHD8+PGugwcPTnZ0dCxo06bNlcWLF78tCBVX4g4YMGCfo6NjwWOPPZYh\nCBXzb82cOXOZm5tbjr29/a1evXod2rBhwwuCUHEBROULFvQfS0lJGdS9e/ejNjY2xS1btryuVCrX\niI3XZ8+e9erZs+dhBweHm+L3tf7XVrw4pF27dhdsbW2L/Pz80irPS1VaWtrU0dGxYMeOHcMrf61n\nzZq1dOzYsRvF7ebNm/eJp6fnRXt7+1uPPfZYxvbt20fob19YWGj3+uuvf+Hu7n5ZnGfszTff/Ezs\na5oxY0aM2LdV1ZKdnd02MDBQ1axZszve3t5Z+t+He/fufdzGxqZYXL969WrrsWPHbmzZsuV1BweH\nm48//vjegwcP9hafnzBhQoK9vf0te3v7W+PHj1+vf6WgIFT07enPM3bz5k0H8bl79+41Fr9fWrdu\nffWLL754vbqYq+oZ279/v7+NjU2x/pWh4ve6OPeZg4PDTX9///2V51Jr27ZttkKh0FlYWGjFf8Ur\nrWt6z/pLVT1jubm5rlZWVmVV/Wz58ssvX2vVqtU1a2vr248//vjezMxM3/v9/OFimotCEGo8o0FE\ntdSuXbuLq1atmjpo0KDdUsfyoObPn7/42rVrj1T+i56IiAyr3k9TTpky5dvWrVurfXx8fq9um1df\nffW/HTp0ONujR4+jhw8f7lXfMRBRzU6fPt3p2LFj3QVBUKSnp/t9++23Uyr3uRARkeHVezE2efLk\n2KSkpKHVPf/DDz88fe7cOa+zZ892+Prrr1+ZOXNmTH3HQEQ1Ky4uth0zZswWGxub2+PHj//urbfe\n+mzUqFGJUsdFRGR2DHHu8+LFi55V9eoIQsXsyd999904cb1Tp06nxEks9RcAAhcuXLhw4cKFi1yW\nutZNDX7/u7y8PNfKcxvl5ua66c9TJGI/m3wtWLAACxYskDoMqgPmTt6YP/li7u5PpwOuXwfy8u6/\nlJYCrq6AvT2gqPHa8vpRUpKO06f71vn1ktyMWKh0KXxt5kUiecnOzpY6BKoj5k7emD/5MufclZbW\nXGRdvQrY2VUUWvpLQMDf11u0aLgiTJSb6wL3amdqrFmDF2Ourq55+pNL5ubmunG2YSIiItMjCMCN\nG38VVLm5VRdaJSWAi8vfiyoPD8Df/691Z2egadOajykFNze3h3p9gxdjo0aNSoyOjp4zfvz47377\n7bd+Dg4Ot6o6RUnyFhoaKnUIVEfMnbwxf/LVkLkrKQEOHqyffel0wLVrVRdZV64A1tb/HM3q2/fv\n6y1bNvxoljGp93nGJkyYsH7Pnj1P3rhxo2Xr1q3VH330UZg4Q/j06dNXAMCcOXOik5KShlpbW5fE\nxsZO9vX1PfSPwBQKgT1jRERE9W/ZMiAyEvCq8aZdNVMogFat/llwubpWjHY1a/bwxzAWWq0WCQkJ\nCAkJgYXF3yekUCgU/2jDqi2jnfSVxZi8paamIjAwUOowqA6YO3lj/uSrIXP30UeAVguEhzfI4UyC\nWq1GSEgINBoNtm3bBnv7v99G+WGKMd6bkoiIyMzk5wNOTlJHIR8qlQq+vr4ICAhAcnLyPwqxh8WR\nMSIiIjPTvz8wcyagVEodiXHTarWIiIhATEwMVq9ejaCgoGq3fZiRMUmmtiAiIiJpfP89kJUF9Okj\ndSTGTxAEFBYWIjMzEy4uLgY7Dk9TkkGkpqZKHQLVEXMnb8yffDVE7vLyKkbEfvwR6NTJ4IeTPUtL\nS0RFRRm0EANYjBEREZkFnQ4IDQXmzKmYWoKMB3vGiIiIzMDnnwNbtgB79gCWbFL6B7VaDQsLC7Rq\n1apOr+fVlERERFSto0eBjz8G1q5lIVYV8WrJXbt2SXJ8FmNkEOxbkS/mTt6YP/kyVO5KS4GJE4Go\nKKBdO4McQra0Wi3Cw8MREhKCuLg4KCW6vJT1MRERkQmbPx/o3p3TWFSmP4lrRkaGwZv074c9Y0RE\nRPchCIBGU/NSXv5w2xjiV961a8CqVRWnKR0c6n//chYZGYnS0lKEhYXBsh7O3fJ2SEREZHD6RUlN\nhcfDFibGdBytFmjUqKLXysqq4t/qlpqer26bRo0ACwM1Dk2bBvTubZh901846SsZHd4fT76Yu5rp\ndMZbeOTmpsLJKdAgx9Hp6qfwqOs+mjdvmONUVSgp6vQr9sHws2e+WIwRUZ0Iwj+LEmMazTDkcQSh\n6l/chiwI9J9v2rT658+eregPMkSRZGHRMEUJUX0rKSmBtbW11GFUi6cpiSSg0QBLlwL37tXt9VX1\nsEhRvFhYGL7weNh9GOI4hjqdRET1S7y3ZGJiIg4ePAiFAf+aYM8YkcxcugT4+AAzZtR9H3UZmanP\n4sWQPS5ERA9L/2rJhIQEg18tyWKMjA57H+7v0iXgiScq/jU2zJ28MX/yxdzVH5VKBaVSiSlTptTb\n1ZI1YQM/EREREYALFy5AqVQiLi4OQUFBUodTKxwZIzKgffuAn3765+O3bgGJicY5MkZEJHdSNOzz\nNCWRkXrlFeDqVaBPn38+9+ijQEhIw8dERET1j6cpyeiw9+EvI0ZUFGVywdzJG/MnX8yd+eK1UERE\nRCQ7arUaw4YNQ2ZmptShPDQWY2QQ/Ouuwm+/GeZ+c4bE3Mkb8ydfzF3tqVQq+Pr6ok+fPujRo4fU\n4Tw0nqYkMqBTpwBfX6mjICIyDVqtFpGRkYiJiUF8fLxsrpasCUfGyCBSU1OlDsEotGwJuLpKHcWD\nYe7kjfmTL+auZkqlEikpKcjIyDCZQgzgyBgRERHJRFhYGLy8vBpkEteGxKktiAzIxQXIyKj4l4iI\nTNfDTG3B05REREREEmIxRgbB3gf5Yu7kjfmTL+buLyqVCtHR0VKH0WBYjBEREZFR0Gq1CA8Px8SJ\nE9GxY0epw2kw7BkjqgfXrwOvvgpoNH9/fPt24OJFwNlZmriIiORCrVYjJCQEGo0GCQkJcJFZsy1v\nh0QkscuXgbQ0YPHivz8+aRLQpo00MRERyUV6ejpGjx6NKVOmICwszOSulqyJeb1bajDmeI81R0dg\n7Fipo3gst7gsAAAgAElEQVR45pg7U8L8yZc5587FxQWxsbEYMmSI1KFIgsUYERERScrNzQ1ubm5S\nhyEZ9owR1YFWC0ycCBQWVqwXFlb0ix08KG1cREQkjYfpGWMxRlQHd+8CtrYVDfoiDw+gSxfpYiIi\nMnZarRYJCQkICQmBhYVpTejASV/J6JjDfDmNGgFDh/61mEohZg65M2XMn3yZeu7UajWCg4OxatUq\nFBcXSx2OUWExRkRERAalUqng6+uLgIAAJCcnw97eXuqQjApPU5JZGDcOyM2tv/3pdMCxY0BJSf3t\nk4jI1Gi1WkRERCAmJgarV69GUFCQ1CEZDOcZI6rBDz8AW7YA1tb1t08Hh/rbFxGRKRIEAYWFhcjM\nzJTdJK4NiSNjZBDGNl+OrS3wxx8V/9L9GVvu6MEwf/LF3MkbG/iJiIiIZIojY1Rnt28DgwcDd+5I\nHUnNsrKAoiKgeXOpIyEiMk1qtRoWFhZo1aqV1KFIgj1jJImTJysa2NevlzqSmjVvzkKMiMhQVCoV\nlEolFi9eDKVSKXU4ssNijOrszBnAx6diqYy9D/LF3Mkb8ydfcsydeLXk8uXLER8fb9JXSxoSizGq\nszNngI4dpY6CiIikoFarERISAo1Gg4yMDF4t+RDYM0a1dvo0oFQC169XrOfnA998UzGHFxERmZfI\nyEiUlpYiLCwMlpYc2+G9KcngfvsNePZZIDwcGDKk4jGFAnB3B0zs9mJEREQPjFNbkEElJgKjRgGx\nscArrwCenhVL27bVF2Kmfo81U8bcyRvzJ1/MnfliMUb3tXIlMH06sHMnMGyY1NEQEZEUSnjvN4Pi\naUqq1tatwJtvAj/9BHh5SR0NERE1NPFqycTERBw8eBAKRZ3OwpkFzjNGBhEVBXz6KQsxIiJzpH+1\nZGJiIgsxA+JpSqrS4cPApUvAM8/U7fXsfZAv5k7emD/5MqbcqVQq+Pr6wt/fH8nJyZy2wsA4MkZV\nio4GZs4EeLUyEZF5uXDhApRKJeLi4jiJawNhzxj9Q35+xanJM2cAM73FGBGRWSspKYG1tbXUYcgK\np7agerVqVcVUFizEiIjMEwuxhsVijP5GqwWWLQPmzn24/RhT7wM9GOZO3pg/+WLuzBeLMfqbHTuA\nNm2A3r2ljoSIiAxJrVZj2LBhyMzMlDoUs8eeMfqbp54CJk8GQkKkjoSIiAxFpVJBqVRi6tSp+PDD\nD3lvyXrAe1NSvcjKAgYOrJjSokkTqaMhIqL6ptVqERkZiZiYGMTHx/NqyXrEBn6qF9HRFfeerI9C\njL0P8sXcyRvzJ18NkTulUomUlBRkZGSwEDMiHJckAEBhIZCQABw/LnUkRERkKGFhYfDy8uJpSSPD\n05QEAPjvf4FffwU2bJA6EiIiIvnhvSnpoeh0wNKlwDffSB0JERGR+WHPGOHnn4FmzYABA+pvn+xb\nkS/mTt6YP/mqz9ypVCpER0fX2/7IsFiMEaKjgTlzAEWdBleJiMhYaLVahIeHY+LEiejYsaPU4VAt\nsWfMzF24APj5AZcvA82bSx0NERHVlVqtRkhICDQaDRISEuDi4iJ1SGaFU1tQnS1bVjHJKwsxIiL5\nSk9Ph6+vL/z9/ZGcnMxCTGZYjJmxO3eAuDhg1qz63zf7VuSLuZM35k++HiZ3Li4uiI2NxcKFCzlt\nhQwxY2Zs3TogIABo107qSIiI6GG4ubnBzc1N6jCojtgzZqYEAejZE/jsM4CTMBMRET0c9ozRA9u3\nD7h3Dxg8WOpIiIiotrRaLdasWQOdTid1KFSPWIyZKXE6CwsDfQewb0W+mDt5Y/7kq6bcqdVqBAcH\nY9WqVSguLm6YoKhBsBgzQ7m5QHIyMGmS1JEQEVFtqFQq+Pr6IiAgAMnJybC3t5c6JKpH7BkzQx98\nANy8WTE6RkRExkur1SIiIgIxMTFYvXo1gtjka7SMrmcsKSlpqLe396kOHTqcXbx48fzKz9+4caPl\n0KFDk3r27HmkW7dux+Pi4kINEQf90717wMqVFacoiYjIuAmCgMLCQmRmZrIQM2H1XoxptdpGc+bM\niU5KShp68uTJLuvXr5+QlZXVWX+b6OjoOb169Tp85MiRnqmpqYFvvvlmlEaj4TQbDWDTJsDHB/D2\nNuxx2LciX8ydvDF/8lVV7iwtLREVFcVJXE1cvRdj6enpfl5eXuc8PT2zraysysePH//dtm3bntHf\nxtnZ+UpRUZEdABQVFdk5OTnlW1paauo7FvqnJUuAuXOljoKIiIhE9T4alZeX5+ru7p4jrru5ueWm\npaX11d/m5ZdfXjlo0KDdLi4ufxQXF9tu3Ljxhar2FRoaCk9PTwCAg4MDevbsicDAQAB//QXB9dqv\nZ2UB164FYvhwwx9PfMyY3j/Xa7ceGBhoVPFwnfkzl/XOnTvj+vXrOHHihFHEw/X7r4v/z87OxsOq\n9wb+LVu2jElKShq6cuXKlwFg7dq1yrS0tL5Lliz5czxm0aJF79+4caPll19++fr58+fbBwUF/Xz0\n6NEetra2f16rywb++jdpUsUpynnzpI6EiIj0qVQqKJVKLF68GEqlUupwqA6MqoHf1dU1Lycnx11c\nz8nJcXdzc8vV32b//v0BY8eO3QQA7du3P9+uXbuLp0+f7lTfsdBfrl0Dtm8HpkxpmOPp/+VA8sLc\nyRvzJy9arRbh4eEICQnBv/71LxZiZqrei7HevXtnnD17tkN2drZnWVlZ4w0bNowbNWpUov423t7e\np5KTk58CALVa3fr06dOdHn300Qv1HQv9ZeVKYMwYwMlJ6kiIiAj4axLX3bt3IyMjA71795Y6JJKI\nQeYZ+/HHH4e9/vrrX2q12kZTp05d9c477/xnxYoV0wFg+vTpK27cuNFy8uTJsZcvX/bQ6XQW77zz\nzn8mTpyY8LfAeJqy3mg0FTcD37694n6UREQkvcjISJSWliIsLAyWlpxQQO4e5jQlJ301A5s3A199\nVXE/SiIiIqp/RtUzRsZHvA9lQ2Lfinwxd/LG/MkXc2e+WIyZuGPHgLNngeeekzoSIiLzVVJSInUI\nZMR4mtLETZ8OuLoCH34odSREROZHvLdkYmIiDh48CIWiTmexSAYe5jQlOwZN2M2bwMaNQFaW1JEQ\nEZkftVqNkJAQaDQaJCYmshCjavE0pQmLjQWefhpo06bhj83eB/li7uSN+TMOKpUKvr6+8Pf3R3Jy\ncq3uLcncmS+OjJkorRZYuhRYt07qSIiIzMuFCxegVCoRFxeHoKAgqcMhGWDPmInauRMICwMOHgQ4\nMk5E1LBKSkpgbW0tdRjUgDi1Bf3DkiXA3LksxIiIpMBCjB4EizETdOYMcOgQMG6cdDGw90G+mDt5\nY/7ki7kzXyzGTNCyZcC0aUDTplJHQkRkutRqNYYNG4bMzEypQyGZY8+Yibl9G2jbFjh8GPDwkDoa\nIiLTpFKpoFQqMXXqVHz44Ye8tyRxnjH6y5o1QGAgCzEiIkPQarWIjIxETEwM4uPjebUk1QuepjQh\ngiDNfSirwt4H+WLu5I35MyylUomUlBRkZGTUeyHG3JkvjoyZEJWq4urJwECpIyEiMk1hYWHw8vLi\naUmqV+wZMyGjRwPBwcCMGVJHQkREZF4epmeMxZiJuHQJ8PWt+NfGRupoiIiIzAsnfSXExACTJhlP\nIcbeB/li7uSN+asfKpUK0dHRDXpM5s58sRgzAaWlwKpVwKxZUkdCRCRvWq0W4eHhmDhxIjp27Ch1\nOGQmeJrSBMTGAps2AT/8IHUkRETypVarERISAo1Gg4SEBLi4uEgdEskIT1OaMUGouA+lMUxnQUQk\nV+np6fD19YW/vz+Sk5NZiFGDYjEmcwcOAEVFwNChUkfyd+x9kC/mTt6Yv7pxcXFBbGwsFi5cKNm0\nFcyd+eJEKTIXHQ3Mng1YsKwmIqozNzc3uLm5SR0GmSn2jMnYlStAly7AxYuAg4PU0RAREZkv9oyZ\nqa+/BsaNYyFGRFRbWq0Wa9asgU6nkzoUoj+xGJOpsjJgxQrjbdxn74N8MXfyxvxVT61WIzg4GKtW\nrUJxcbHU4fwDc2e+WIzJ1PffA506Ad26SR0JEZHxU6lU8PX1RUBAAJKTk2Fvby91SER/Ys+YTPXv\nD7z5JvDcc1JHQkRkvLRaLSIiIhATE4PVq1cjKChI6pDIRD1MzxivppShQ4eAnBxg1CipIyEiMm6C\nIKCwsBCZmZmcO4yMFk9TylB0NDBzJiDRVDi1wt4H+WLu5I35+ztLS0tERUXJohBj7syXEf86p6rk\n5wNbtwJnzkgdCREREdUH9ozJzOLFQFYWEBcndSRERMZFrVbDwsICrVq1kjoUMkOcZ8xMaLXAsmXG\nO50FEZFUxKsld+3aJXUoRA+MxZiM7NgBuLgAvXtLHUnN2PsgX8ydvJlb/rRaLcLDwxESEoK4uDgo\nlUqpQ6ozc8sd/YU9YzKyZAlHxYiIRGq1GiEhIdBoNMjIyJBFkz5RVdgzJhNZWcDAgcDly0DjxlJH\nQ0QkvcjISJSWliIsLAyWxnx5OZmFh+kZYzEmE7NnA05OQHi41JEQERFRZWzgN3GFhcD69cCMGVJH\nUnvsfZAv5k7emD/5Yu7MF4sxGYiPB4KCKpr3iYjMUUlJidQhEBkMT1MaOZ0O6NwZ+OYb4PHHpY6G\niKhhifeWTExMxMGDB6FQ1OksEJHB8d6UJuznn4FmzYABA6SOhIioYelfLZmYmMhCjEwWT1Mauejo\niuks5PYziL0P8sXcyZup5E+cxNXf3x/JyclmMW2FqeSOHhxHxozYhQvAgQPAhg1SR0JE1HAuXLgA\npVKJuLg4BAUFSR0OkcGxZ8yIvfVWxYjYp59KHQkRUcMqKSmBtbW11GEQ1RrnGTNBJSVA27bAwYNA\nu3ZSR0NERET3w3nGTFBCAhAQIN9CjL0P8sXcyRvzJ1/MnfliMWaEBKHiPpRz50odCRGR4ajVagwb\nNgyZmZlSh0IkKZ6mNEJ79wKvvAKcPAlYsFwmIhOkUqmgVCoxdepUfPjhh7y3JMke5xkzMUuWVExn\nwUKMiEyNVqtFZGQkYmJiEB8fz6slicDTlEYnNxdISQEmTZI6kofD3gf5Yu7kzdjzp1QqkZKSgoyM\nDBZilRh77shwODJmZJYvB0JCADs7qSMhIqp/YWFh8PLy4mlJIj3sGTMi9+4BHh7Anj2At7fU0RAR\nEVFtcWoLE7FxI9CjBwsxIiIic8JizIiI96E0Bex9kC/mTt6MJX8qlQrR0dFShyErxpI7angsxoxE\nejpw7RowfLjUkRAR1Z1Wq0V4eDgmTpyIjh07Sh0OkSywZ8xITJoE+PgA8+ZJHQkRUd2o1WqEhIRA\no9EgISEBLi4uUodE1GDYMyZz164B27cDU6dKHQkRUd2kp6fD19cX/v7+SE5OZiFG9ABYjBmBlSuB\nMWOAFi2kjqT+sPdBvpg7eZMqfy4uLoiNjcXChQs5bUUd8bNnvviJkZhGUzG32PbtUkdCRFR3bm5u\ncHNzkzoMIlliz5jENm8GvvoK2LdP6kiIiIiortgzJmPR0cDcuVJHQURUO1qtFmvWrIFOp5M6FCKT\nwWJMQseOAWfPAqNHSx1J/WPvg3wxd/JmyPyp1WoEBwdj1apVKC4uNthxzBU/e+aLxZiEli4FZswA\nrKykjoSI6P5UKhV8fX0REBCA5ORk2NvbSx0Skclgz5hEbt4EHn0UyMoC2rSROhoioqpptVpEREQg\nJiYGq1evRlBQkNQhERmlh+kZ49WUEomNBZ5+moUYERk3QRBQWFiIzMxMzh1GZCA8TSkBrbbiFKUp\nN+6z90G+mDt5q+/8WVpaIioqioVYA+Bnz3yxGJNAUhLg6Aj07St1JERERCQ19oxJYOhQYMIE4KWX\npI6EiOgvarUaFhYWaNWqldShEMkO5xmTkTNngEOHgHHjpI6EiOgv4tWSu3btkjoUIrPDYqyBLV0K\nTJsGNG0qdSSGxd4H+WLu5O1B86fVahEeHo6QkBDExcVBqVQaJjCqET975otXUzag4mJgzRrgyBGp\nIyEiqjgtGRISAo1Gg4yMDDbpE0mEPWMNaNkyICUF2LJF6kiIiIDIyEiUlpYiLCwMlpb825zoYTxM\nzxiLsQYiCEDXrhWnKQcOlDoaIiIiqk9s4JeB3bsBCwsgMFDqSBoGex/ki7mTN+ZPvpg788VirIFE\nRwNz5gCKOtXMREQPp6SkROoQiKgaPE3ZAC5dAnx9K/61sZE6GiIyJ+K9JRMTE3Hw4EEo+BchkUEY\n3WnKpKSkod7e3qc6dOhwdvHixfOr2iY1NTWwV69eh7t163Y8MDAw1RBxGIuYGGDSJBZiRNSw1Go1\ngoODsXv3biQmJrIQIzJS9V6MabXaRnPmzIlOSkoaevLkyS7r16+fkJWV1Vl/m1u3bjnMnj176fbt\n20ceP3682+bNm5+v7ziMRWkpsGoVMHu21JE0LPY+yBdzJ29i/sRJXP39/ZGcnMxpK2SAnz3zVeti\n7M6dO81rs116erqfl5fXOU9Pz2wrK6vy8ePHf7dt27Zn9LdJSEiYOGbMmC1ubm65ANCyZcsbDxa2\nfHz3HdCnD+DlJXUkRGQuLly4AKVSibi4OCxcuJDTVhAZuRo/ofv37w+YNm3aN8XFxbY5OTnuR44c\n6fn111+/smzZsllVbZ+Xl+fq7u6eI667ubnlpqWl/e2W2GfPnu1QXl5uNXDgQFVxcbHta6+99tWL\nL764pvK+QkND4enpCQBwcHBAz549Efj/lyOKf0EY87ogAEuWBCIiwjjiach18TFjiYfrtV8PDAw0\nqni4Xrf8rVq1CkFBQZLHw3Wum+q6+P/s7Gw8rBob+P38/NI3b978/DPPPLPt8OHDvQCga9euJ06c\nONG1qu23bNkyJikpaejKlStfBoC1a9cq09LS+i5ZsmSuuM2cOXOiDx065JuSkjL4zp07zf39/Q/s\n3LlzeIcOHc7+GZgJNPDv319xM/DTpyumtSAiIiLTZPAGfg8Pj8v665aWlprqtnV1dc3LyclxF9dz\ncnLcxdORInd395whQ4b81KxZs1InJ6f8J554Yu/Ro0d7PGjwxi46uqJXzBwLMf2/HEhemDt5Y/7k\ni7kzXzWWCR4eHpd//fXX/gBQVlbW+LPPPnurc+fOWdVt37t374yzZ892yM7O9iwrK2u8YcOGcaNG\njUrU3+aZZ57Z9ssvvwzQarWN7ty50zwtLa1vly5dTj782zEeV64AP/4IhIZKHQkRmSq1Wo1hw4Yh\nMzNT6lCI6CHUWIzFxMTMXLp06ey8vDxXV1fXvMOHD/daunRptdcGWlpaaqKjo+cEBwfv6tKly8lx\n48Zt6Ny5c9aKFSumr1ixYjoAeHt7nxo6dGhS9+7dj/Xt2zft5ZdfXmlqxdjXXwPjxwMODlJHIg3x\n3DrJD3MnD+LVkn369EGPHn+dWGD+5Iu5M1819oz9+uuv/fv37/9rTY/Ve2Ay7hkrKwM8PYGffgK6\ndZM6GiIyJVqtFpGRkYiJiUF8fPyfTfpEJC2D9ozNmTMnujaP0V++/x7w9jbvQoy9D/LF3Bk3pVKJ\nlJQUZGRkVFmIMX/yxdyZr2qntjhw4ID//v37A65fv97q888/f0Os9oqLi211Op0ZtqTX3pIlwJtv\nSh0FEZmisLAweHl5ce4wIhNS7ae5rKyscXFxsa1Wq21UXFxsKz5uZ2dXZMoz5j+sQ4eAnBxg1Cip\nI5EWex/ki7kzbt7e3vd9nvmTL+bOfNXYM5adne3p6emZ3TDh/EWuPWNTpgAdOgDvvCN1JERERNRQ\nDNoz1rx58ztvvfXWZ08//fQPAwcOVA0cOFA1aNCg3XU5mKnLzwe2bgWmTZM6Eumx90G+mDvjoFKp\nEB394O25zJ98MXfmq8ZiLCQkZJ23t/epCxcuPLpgwYIFnp6e2b17985oiODk5ptvgGeeAVq1kjoS\nIpIrrVaL8PBwTJw4ER07dpQ6HCJqADWepvT19T106NAh3+7dux87duxYd6BiYteMjIzeBg1MZqcp\ntVrg0UeBLVuA3gb9yhCRqVKr1QgJCYFGo0FCQgJcXFykDomIasmgpykbN25cBgBt2rS5umPHjhGH\nDh3yvXnzpmNdDmbKtm8HXFxYiBFR3aSnp8PX1xf+/v5ITk5mIUZkRmosxt57772IW7duOURFRb35\n2WefvTVt2rRvvvjii381RHByEh0NzJkjdRTGg70P8sXcScPFxQWxsbFYuHDhQ01bwfzJF3Nnvmr8\nxI8cOXI7ADg4ONxKTU0NBID09HQ/A8clKydPAsePA2PHSh0JEcmVm5sb3NzcpA6DiCRQbc+YTqez\n2Lp16+jz58+379at2/Gnn376h4yMjN7vvvtu5LVr1x45cuRIT4MGJqOesdmzAScnIDxc6kiIiIhI\nCg/TM1ZtMTZt2rRvLl682M7Pzy99z549Tzo7O185deqUd0RExHvPPPPMNoVCYdBKSS7FWGFhxX0o\nT5yo6BkjIrofrVaLhIQEhISEwMKCNzMhMhUPU4xVe5ryt99+63fs2LHuFhYWurt37zZt06bN1fPn\nz7d3cnLKr3uopic+HhgyhIVYZampqZxNWqaYO8PRv1py1KhRsLe3r/djMH/yxdyZr2r/LLOysiq3\nsLDQAUDTpk3vtmvX7iILsb/T6Soa9+fOlToSIjJ2KpUKvr6+CAgIQHJyskEKMSKSp2pPUzZr1qzU\ny8vrnLh+/vz59u3btz8PVJxCFOccM1hgMjhNuWsXMH8+cPgwoKjTwCQRmTqtVouIiAjExMRg9erV\nCAoKkjokIjIAg5ymzMrK6lz3kMzDkiUVo2IsxIioOoIgoLCwEJmZmZw7jIiqVOMM/FIx9pGx8+eB\nfv2AS5eA5s2ljsb4sPdBvpg7eWP+5Iu5kzeDzsBPVVu2DJg8mYUYERERPRyOjNVBSQnQti1w8CDQ\nrp3U0RCRsVCr1bCwsECrVq2kDoWIGpjBR8bu3LnT/PTp053qcgBTlJAA9O/PQoyI/iJeLblr1y6p\nQyEimamxGEtMTBzVq1evw8HBwbsA4PDhw71GjRqVaPjQjJMgVDTu8z6U98d7rMkXc/dgtFotwsPD\nERISgri4OCiVSknjYf7ki7kzXzXem3LBggUL0tLS+g4cOFAFAL169Tp84cKFRw0fmnHatw8oKwOe\nekrqSIhIavqTuGZkZPBqSSKqkxpHxqysrModHBxu/e1F/z8ZrDkSR8U4ncX98Yog+WLuam/VqlXw\n9/dHcnKy0RRizJ98MXfmq8aRsa5du55Yt25diEajsTx79myH//73v68GBATsb4jgjE1uLpCSAnz7\nrdSREJExePfdd6UOgYhMQI0jY0uWLJl74sSJrk2aNLk3YcKE9XZ2dkVffvnl6w0RnLFZvhwICQFs\nbaWOxPix90G+mDt5Y/7ki7kzXzWOjJ0+fbpTZGTku5GRkWb9J+C9e8DKlcCePVJHQkRSKCkpgbW1\ntdRhEJEJqnGescDAwNSrV6+2GTt27KZx48Zt6Nat2/EGCczI5hlbs6Zi+eknqSMhooYk3lsyMTER\nBw8ehIINo0RUBYPOM5aamhqoUqkGtmzZ8sb06dNX+Pj4/L5w4cIP6nIwOYuO5nQWROZGrVYjODgY\nu3fvRmJiIgsxIjKIWk366uzsfOW11177avny5TN69OhxNDw8/ENDB2ZM0tOBa9eA4cOljkQ+2Psg\nX8xdBXESV2O7WrImzJ98MXfmq8aesZMnT3bZuHHjC5s3b37eyckpf9y4cRs+//zzNxoiOGMRHQ3M\nmgU0aiR1JETUEC5cuAClUom4uDgEBQVJHQ4Rmbgae8b69ev32/jx478bO3bsJldX17wGistoesau\nXQM6dQLOnwdatJA6GiJqKGzYJ6IH8TA9Y7xReA0iIoCLF4FvvpE6EiIiIjJWBmngHzt27CYA8PHx\n+b3y0r1792N1DVZOysuBmBg27tcFex/ki7mTN+ZPvpg781Vtz9hXX331GgDs2LFjROVKT6FQSD9k\n1QC2bQPatQN69pQ6EiIyBLVajdDQUCxatAiPPfaY1OEQkZmqdmTMxcXlDwBYtmzZLE9Pz2z9Zdmy\nZbMaLkTpLFkCzJ0rdRTyxHusyZe55E68WrJPnz7o0aOH1OHUG3PJnyli7sxXjVNb/PTTT0MqP/bD\nDz88bZhwjMexY8C5c8Do0VJHQkT1SavVYuHChQgJCUFcXBzCw8NhaVnjheVERAZTbTEWExMz08fH\n5/fTp0930u8X8/T0zDaHnrHoaGDGDMDKSupI5Im9D/Jl6rlTKpVISUlBRkaGSU5bYer5M2XMnfmq\n9s/BiRMnJgwbNuzHf//73x8vXrx4vtg3ZmtrW+zk5JTfcCE2vJs3gU2bgKwsqSMhovoWFhYGLy8v\njoYRkdGodmqLoqIiOzs7u6L8/Hynqhr2W7RoUWDQwCSc2iIqCjh8GFi7VpLDExERkcwYZJ6x4cOH\n79y5c+dwT0/P7KqKsYsXL7arywFrHZhExZhWC3TsCKxbB/Tr1+CHJyIiIhkyyDxjO3fuHA4A2dnZ\nnhcvXmxXealrsMbuxx8rZtrv21fqSOSNvQ/yZSq5U6lUiI6OljqMBmcq+TNHzJ35qvFqyl9//bX/\n7du3bQBgzZo1L77xxhufX7p0qa3hQ5NGdHTFJK+KOtW2RCQ1rVaL8PBwTJw4ER07dpQ6HCKiGtV4\nOyQfH5/fjx492uP333/3CQ0NjZs6deqqTZs2jd2zZ8+TBg1MgtOUZ84AAwYAly8DTZs26KGJqB6o\n1WqEhIRAo9EgISEBLi4uUodERGbCIKcpRZaWlhoLCwvd//73v2dnz569dM6cOdHFxcW2dTmYsVu6\nFJg2jYUYkRylp6fD19cX/v7+SE5OZiFGRLJRYzFma2tbHBkZ+e7atWuVI0aM2KHVahuVl5eb3Oxb\nxcXAmjXAzJlSR2Ia2PsgX3LNnYuLC2JjY7Fw4UKznrZCrvkj5s6c1ViMbdiwYVyTJk3uffvtt1Pa\ntLNvsTIAACAASURBVGlzNS8vz3XevHmfNkRwDWnNGmDgQMDdXepIiKgu3NzcMGTIP24YQkRk9Grs\nGQOAq1evtjl48GAfhUIh+Pn5pT/yyCPXDB5YA/aMCQLQtSuwbBnAW4MRERHRgzJoz9jGjRtf6Nu3\nb9qmTZvGbty48QU/P7/0TZs2ja3LwYzV7t1Ao0bAkwa9JIGI6oNWq8WaNWug0+mkDoWIqF7UODLW\nvXv3Y8nJyU+Jo2HXr19vNXjw4JRjx451N2hgDTgyNno0MHQoMH16gxzOLKSmpiKQw4yyZMy5079a\nctu2bbC3t5c6JKNjzPmj+2Pu5M2gI2OCIChatWp1XVx3cnLKr+vBjNGlS8DevUBIiNSRENH9qFQq\n+Pr6IiAgAMnJySzEiMhk1DgyNm/evE+PHj3aY+LEiQmCICg2bNgwrnv37sc++eSTtw0aWAONjP37\n38C9e8AXXxj8UERUB1qtFhEREYiJicHq1asRFBQkdUhERP9gkHtT6vv++++f++WXXwYAwOOPP75v\n9OjRW+tysAcKrAGKsdJSwMMDOHAA8PIy6KGIqI40Gg3mz5+PN998k3OHEZHRMkgxdubMmY7z5s37\n9Ny5c17du3c/9umnn85zc3PLfahIHySwBijGYmOBTZuAH34w6GHMEnsf5Iu5kzfmT76YO3kzSM/Y\nlClTvh0xYsSOLVu2jPH19T306quv/rfuIRofQQCWLAHmzpU6EiIiIjJn1Y6M9ezZ88iRI0d6iuu9\nevU6fPjw4V4NFpiBR8b27wdeegk4fRqwqPEyBiJqCGq1GhYWFmjVqpXUoRARPZCHGRmr9p4hd+/e\nbXro0CFfoOKKytLS0maHDh3yFQRBoVAoBF9f30N1DdgYLFkCzJ7NQozIWKhUKiiVSixevBhKpVLq\ncIiIGky1I2OBgYGpCoXizyfFIkxcV6lUAw0amAFHxq5cAbp0AS5eBBwcDHIIs8feB/lq6NyJV0su\nX74c8fHxvFryIfGzJ1/MnbwZZGQsNTU1sM4RGbkVK4Dx41mIEUlNfxLXjIwMXi1JRGapVlNbSMFQ\nI2NlZUDbtsDPPwPdutX77onoAURGRqK0tBRhYWGwtKz2b0MiIqNn8HnGpGCoYmz9emDlyor7URIR\nERHVB4PeDsnUREcDc+ZIHYXpS01NlToEqiPmTt6YP/li7sxXjcWYTqezWLNmzYvh4eEfAsDly5c9\n0tPT/QwfWv07dAjIyQFGjZI6EiLzU1JSInUIRERGqcbTlDNmzFhuYWGh271796BTp055FxQUtBgy\nZMhPGRkZvQ0amAFOU06ZAnToALzzTr3ulojuQ7xaMjExEQcPHoRCUadRfCIio2aQqylFaWlpfQ8f\nPtyrV69ehwGgRYsWBeXl5VZ1OZiUbtwAtm4FzpyROhIi86F/tWRiYiILMSKiKtR4mrJx48ZlWq22\nkbh+/fr1VhYWFjrDhlX/Vq0CnnkG4MTeDYO9D/JVX7lTqVTw9fWFv78/kpOTOW1FA+FnT76YO/NV\n48jY3Llzl4wePXrrtWvXHnn33XcjN2/e/PyiRYveb4jg6otGAyxbBnz/vdSREJmHCxcuQKlUIi4u\njpO4EhHVoFZTW2RlZXVOSUkZDACDBw9O6dy5c5bBA6vHnrH//Q9YvBg4cKBedkdEtVBSUgJra2up\nwyAiahAGnWfs8uXLHgD+PIB4SyQPD4/LdTlgrQOrx2LsqacqmvcnTqyX3RERERH9jUGLsW7duh0X\nC7C7d+82vXjxYrtOnTqdPnHiRNe6HLDWgdVTMXbyJDB4MHDpEtC4cT0ERrXCe6zJF3Mnb8yffDF3\n8mbQSV+PHz/e7ffff/f5/ffffc6ePdshPT3dr1+/fr/V5WBSWLoUeOUVFmJEhqBWqzFs2DBkZmZK\nHQoRkWzV6XZI3bp1O378+HGD3tmxPkbGCguBdu2A48cBXshFVL9UKhWUSiWmTp2KDz/8kPeWJCKz\nZtB5xqKiot4U/6/T6SwOHTrk6+rqmleXgzW0+HhgyBAWYkT1SavVIjIyEjExMYiPj+fVkkRED6nG\n05S3b9+2EZeysrLGI0aM2LFt27ZnGiK4h6HT8T6UUuJ8OfJVU+6USiVSUlKQkZHBQswI8bMnX8yd\n+brvyJhWq21UVFRkpz86Jhc//ww0bw707y91JESmJSwsDF5eXjwtSURUT6rtGdNoNJaWlpaafv36\n/XbgwAF/8YrKBgvsIXvGRowARo8Gpk6tx6CIiIiIqmCQqyn9/PzSAaBnz55HnnnmmW1r1qx5ccuW\nLWO2bNky5vvvv3/ufjtNSkoa6u3tfapDhw5nFy9ePL+67Q4ePNjH0tJSU9P+HtT580BaGjBhQn3u\nlYiIiKj+VVuMidXd3bt3mzo5OeXv3r170I4dO0bs2LFjxPbt20dW9zqtVttozpw50UlJSUNPnjzZ\nZf369ROysrI6V7Xd/PnzFw8dOjSprpVkdZYtAyZPrjhNSdJg74N8iblTqVSIjo6WNhh6YPzsyRdz\nZ76qbfq4fv16q88///wNHx+f3x9kh+np6X5eXl7nPD09swFg/Pjx323btu2ZyrdQWrJkydznn39+\n88GDB/tUt6/Q0FB4enoCABwcHNCzZ88/J8QTv2krr/fpE4j4eGDJklSkpv7zea43zPqRI0eMKh6u\n135dp9Nh8uTJSExMxPr16yWPh+tcN5d1kbHEw/X7r4v/z87OxsOqtmfM2dn5yowZM5ZX98KwsLCP\nqnp88+bNz+/atSt45cqVLwPA2rVrlWlpaX2XLFkyV9wmLy/PValUrt29e/egKVOmfDty5Mjtzz33\n3N9u413XnrGvvwZ27gS2bXvglxKZPbVajZCQEGg0GiQkJMCF88IQEdWKQeYZa9OmzdXqCq4agqmx\ngnr99de//Pjjj//9/wWXor5OUwpCxXQWUVH1sTci85Keno7Ro0djypQpCAsL49WSREQNpN5/2rq6\nuubl5OS4i+s5OTnubm5uufrbZGZmPjZ+/PjvAODGjRstf/zxx2FWVlblo0aNSnyYY+/dC5SVVdwY\nnKSVmpr655AuyYOLiwtiY2PRuHFjFmIyxs+efDF35qvan7jJycl1Kml69+6dcfbs2Q7Z2dmeLi4u\nf2zYsGHc+vXr/3Zd44ULFx4V/z958uTYkSNHbn/YQgz4a5JXRb1eDkBkHtzc3ODm5vaP/hUiIjKs\naosxJyen/Drt0NJSEx0dPSc4OHiXVqttNHXq1FWdO3fOWrFixXQAmD59+oq6Bns/OTlASgrw7beG\n2Ds9KP51J1/Mnbwxf/LF3JmvOt0ovCE8aAP/++9X3Bh8yRIDBkVkArRaLRISEhASEgILCwupwyEi\nMgkGmfRVTu7eBVauBGbPljoSEvFUl3FSq9UIDg7GqlWrUFxcXOU2zJ28MX/yxdyZL5MoxjZtAnr0\nALy9pY6EyHipVCr4+voiICAAycnJsLe3lzokIiKCiZym9PMDPvgAGFntfQGIzJdWq0VERARiYmKw\nevVqBAUFSR0SEZHJMcg8Y3KRng5cvw48/bTUkRAZJ0EQUFhYiMzMTE7iSkRkhGR/mnLJkopesUaN\npI6E9LH3wXhYWloiKiqq1oUYcydvzJ98MXfmS9bFmFoN7NgBTJkidSREREREdSPrnrGICCA7u+JK\nSiKquFrSwsLi/9q7/7gq6/v/4y9+VUSFlrpPCH1MwdSCA/gTnIbfIsQ2KyozD1v0A5uf9WNbtmW/\nKFRm++hun5SNjzbk+LNpZsqWgh6j6UxFEMFlPzA10bWTNhU6YnIO1/cPPmdjTOwAB67rfa7H/Xa7\nbjfPvDjnhU8dr67r9X5f0rdvX71LAQBTMeXWFk1NIgUFLTvuA/jnasnS0lK9SwEAdICyzdjGjSID\nB7ZsaQHjYfah57jdbsnNzRWr1So2m00yMzO79H5kpzbyUxfZmZeyqykXLeKqGOBwOMRqtYrL5ZKK\nigpWSwKAgpScGaupEUlPb5kXCwnp2boAI8nLy5PGxkbJycmR4GBl/9sKAJTXlZkxJZux6dNFoqJa\nNnoFAADQm6kG+E+fbnn8UXa23pXgUph9UBfZqY381EV25qVcM7Z0qcidd4r8x3/oXQnQs5xOp94l\nAAC6gVK3Kd1ukcGDRVatEhkzRqfCgB7mebZkcXGx7N27VwICOnUVHADQjUzzbMrNm0WuvVZk9Gi9\nKwF6RuvVksXFxTRiAOCHlLpNmZ/fsp0FP4+Mj9mHrvNs4pqUlCR2u73Htq0gO7WRn7rIzryUuTL2\nySci+/aJbNigdyVA9zt8+LBkZmaKzWaT1NRUvcsBAHQjZWbGnn5aJCxMJC9Px6KAHuR0OiUsLEzv\nMgAAXvD7mbHXXxdZuFDk2DG9KwF6Do0YAJiDEjNjNTUir7zSstEr1MDsg7rITm3kpy6yMy8lmrHA\nQBEeuQd/5HA4JD09XSorK/UuBQCgEyWaMagnJSVF7xIMz7NacuTIkWKxWPQu5x/ITm3kpy6yMy8l\nZsaam9nOAv7D7XZLXl6eFBQUyLJly1gtCQAmp8SVsTNnRMLD9a4CHcHsQ/syMzNl27ZtUlFRYchG\njOzURn7qIjvzUuLK2FdfiVx3nd5VAL6Rk5Mj0dHREhysxD8/AEA3U2KfsdhYkZUrRQw0VgMAAPAP\nXdlnTInblKdPi/TurXcVAAAAvqdEM9bcLMIdHbUw+9CyWjI/P1/vMjqM7NRGfuoiO/NSohkDVOJ2\nuyU3N1emTZsmgwcP1rscAIDBKTEzFhEhUlHBxq8wPofDIVarVVwul6xevVoi+EsLAKbg9zNjgArK\ny8slMTFRkpKSxG6304gBALxCM4ZuYcbZh4iICCkqKpLZs2crvW2FGbPzJ+SnLrIzL3V/YgAGExkZ\nKZGRkXqXAQBQjOFnxlwukchIkX37mBkDAADG5NczY+npIufPi1x5pd6VAC3cbresWLFCmpub9S4F\nAOAHDN+MNTSIlJSI9OqldyXoCH+dfXA4HJKWliaFhYXS0NCgdzndwl+zMwvyUxfZmZfhmzHAKMrK\nyiQxMVGSk5PFbrdLOE+vBwD4gOFnxiwWkcWLRcaM0bsimJXb7Za5c+dKQUGBLF++XFJTU/UuCQBg\nMF2ZGTP0asr6epGaGpHrrtO7EpiZpmly9uxZqaysZO8wAIDPGfo25YULLY1YTIzelaCj/Gn2ITg4\nWBYsWGCaRsyfsjMj8lMX2ZmXoZsxAAAAf2fombGTJzUZMkTk1Cm9q4FZOBwOCQwMlL59++pdCgBA\nIX69zxjQUzyrJUtLS/UuBQBgIjRj6BYqzT643W7Jzc0Vq9UqNptNMjMz9S5JVyplh39HfuoiO/My\n9GpKoLs5HA6xWq3icrmkoqLCNEP6AADjMPTM2IkTmtxwg4jLpXc18Fd5eXnS2NgoOTk5EhzMf5sA\nADqnKzNjhm7Gioo0eeqplv3GAAAAjMpvB/gDAkTuuUfvKtAZzD6oi+zURn7qIjvzMnQzBviS0+nU\nuwQAAP6NoW9T2myavPeeyLJlelcDlXmeLVlcXCx79+6VgIBOXUUGAKBdfvtsSqCrWq+WLC4uphED\nABgOtynRLYww++DZxDUpKUnsdjvbVnjJCNmh88hPXWRnXlwZg186fPiwZGZmis1mk9TUVL3LAQCg\nXYaeGXv1VU0+/VRk5Uq9q4GKnE6nhIWF6V0GAMAE/HZri4oKkV699K4CqqIRAwCowNDN2OWXi9x6\nq95VoDOYfVAX2amN/NRFduZl6GYM+DYOh0PS09OlsrJS71IAAOgUmjF0i5SUlG7/DM9qyZEjR4rF\nYun2zzOLnsgO3Yf81EV25sVqSijH7XZLXl6eFBQUyLJly1gtCQBQGlfG0C26c/YhMzNTtm3bJhUV\nFTRi3YC5FbWRn7rIzry4Mgbl5OTkSHR0tAQH89cXAKA+Q+8zdt99mkyZInL//XpXAwAA0D6/3WcM\nAADA39GMoVv4YvahrKxM8vPzu14MOoS5FbWRn7rIzrxoxmA4brdbcnNzZdq0aTJ48GC9ywEAoFsx\nMwZDcTgcYrVaxeVyyerVqyUiIkLvkgAA+FbMjMEvlJeXS2JioiQlJYndbqcRAwCYAs0YukVnZh8i\nIiKkqKhIZs+ezbYVOmJuRW3kpy6yMy9+4sEwIiMjJTIyUu8yAADoUYaeGRswQJPXXhOZMkXvagAA\nANrntzNjR4+KDB+udxXwNbfbLStWrJDm5ma9SwEAQHeGbsZCQ0Wuv17vKtAZ7c0+OBwOSUtLk8LC\nQmloaOjZouAV5lbURn7qIjvzMnQzBv9SVlYmiYmJkpycLHa7XcLDw/UuCQAA3XVLM1ZSUjJxyJAh\nH8fExNS+9tprv2j7+6tWrbJaLJbquLi4mrFjx+6sqamJ6446oJ+UlJR//Lr1Jq42m01yc3NZLWlg\nrbODeshPXWRnXj7/ieh2u4OeeOKJfLvdfnv//v1PjBw5cu/kyZOLhw4d+pHnnIEDBx7evn37+PDw\n8LMlJSUTp0+fvmT37t1jfF0LjEHTNDl79qxUVlaydxgAAG34/MpYeXn5qOjo6EMDBgw4GhIS0jR1\n6tTfb9y48a7W5yQlJe0KDw8/KyIyevToPcePH2c/Az/TevYhODhYFixYQCOmCOZW1EZ+6iI78/L5\nlbETJ070j4qKqvO8joyMPL5nz57R7Z1fWFj46KRJkzZd7PcuXMiSuXMHSEiISK9evSQ+Pv4fl3E9\nf2l5bczX+/fvN1Q9vOY1r3lt9NceRqmH15d+7fn10aNHpat8vs/Y22+/fW9JScnEN954I1tEZOXK\nlZl79uwZvWjRoifbnltWVjbhxz/+8W927tw5tnfv3qf/pbCAAC00VJNTp0SuvNKnJaIbORwOCQwM\nlL59++pdCgAAPcZQ+4z179//RF1dXZTndV1dXVRkZOTxtufV1NTEZWdnv1FcXDy5bSMGNXlWS5aW\nlupdCgAAyvB5MzZixIiK2tramKNHjw64cOHCZWvWrHlg8uTJxa3POXbs2A0ZGRnrV65cmRkdHX3I\n1zWgZ3lWS1qtVrHZbJKZmflvl92hDrJTG/mpi+zMy+czY8HBwa78/Pwn0tLSSt1ud9Cjjz5aOHTo\n0I8WL178uIjI448/vjg3N/fl06dP954xY0aBiEhISEhTeXn5KF/Xgu7ncDjEarWKy+WSiooKhvQB\nAOggQz+bUkSTc+daduKHMeXl5UljY6Pk5OSwdxgAwLS6MjNm6Gasf39Njv/btBkAAICxGGqA35di\nYvSuAJ3F7IO6yE5t5KcusjMvQzdjMBan06l3CQAA+B1D36ZMSdGkrEzvSuB2u2Xu3LlSXFwse/fu\nlYCATl2FBQDAb3XlNiUT17ik1qsli4uLacQAAPAxblOiXZ5NXJOSksRut3do2wpmH9RFdmojP3WR\nnXlxZQwXdfjwYcnMzBSbzSapqal6lwMAgN9iZgztcjqdEhYWpncZAAAYnt9ubQF90YgBAND9aMbQ\nLZh9UBfZqY381EV25kUzZnIOh0PS09OlsrJS71IAADAlmjET86yWHDlypFgsFp++d0pKik/fDz2H\n7NRGfuoiO/NiNaUJud1uycvLk4KCAlm2bBmrJQEA0BFXxkwoMzNTtm3bJhUVFd3WiDH7oC6yUxv5\nqYvszIsrYyaUk5Mj0dHREhxM/AAA6I19xgAAALqIfcYAAAAURTPmx8rKyiQ/P1+Xz2b2QV1kpzby\nUxfZmRfNmB9yu92Sm5sr06ZNk8GDB+tdDgAAuARmxvyMw+EQq9UqLpdLVq9eLREREXqXBACA3/Pb\nmbGATn1L5lVeXi6JiYmSlJQkdrudRgwAAAUYuhkLNHR1xhMRESFFRUUye/Zs3betYPZBXWSnNvJT\nF9mZl6E3muLKWMdERkZKZGSk3mUAAIAOMPTMWGqqJlu26F0JAADApTEzZjJut1tWrFghzc3NepcC\nAAC6yNDNGDNj/87hcEhaWpoUFhZKQ0OD3uW0i9kHdZGd2shPXWRnXoZud7gy9q/KysokMTFRkpOT\nxW63S3h4uN4lAQCALjL0zNikSZq8+67elejP7XbL3LlzpaCgQJYvXy6pqal6lwQAAFrpysyYoVdT\ncpuyhaZpcvbsWamsrGTvMAAA/Iyh2x1uU7YIDg6WBQsWKNWIMfugLrJTG/mpi+zMi2YMAABAR4ae\nGbvrLk02bNC7kp7lcDgkMDBQ+vbtq3cpAADAS367z5jZZsY8qyVLS0v1LgUAAPQQQ7c7ZrlN6Xa7\nJTc3V6xWq9hsNsnMzNS7pC5j9kFdZKc28lMX2ZmXoVdTmqEZczgcYrVaxeVySUVFhVJD+gAAoOsM\nPTN2//2arF2rdyXdKy8vTxobGyUnJ0eCgw3dGwMAgHZ0ZWbM0M3YlCmarFmjdyUAAACX5rcD/Ga4\nTemvmH1QF9mpjfzURXbmRTPWg5xOp94lAAAAgzH0bcpp0zRZtUrvSrrO82zJ4uJi2bt3rwT4W5cJ\nAIDJ+e2zKf2hZ2m9WrK4uJhGDAAA/AtuU3YjzyauSUlJYrfbTbVtBbMP6iI7tZGfusjOvAx9ZUzl\nHfgPHz4smZmZYrPZJDU1Ve9yAACAQRl6ZuyhhzSx2fSupPOcTqeEhYXpXQYAAOhmbG1hUDRiAADg\n29CMoVsw+6AuslMb+amL7MzL0M2YCjNjDodD0tPTpbKyUu9SAACAggzd7hj9yphnteTIkSPFYrHo\nXY6hpKSk6F0COons1EZ+6iI78zL0akqjNmNut1vy8vKkoKBAli1bxmpJAADQaYa+MmbU25SZmZmy\nbds2qaiooBFrB7MP6iI7tZGfusjOvLgy1gk5OTkSHR0twcGG/uMDAAAKMPQ+YzNmaPLb3+pdCQAA\nwKWxzxgAAICiDN2M6T0zVlZWJvn5+foWoShmH9RFdmojP3WRnXkZuhnT68qY2+2W3NxcmTZtmgwe\nPFifIgAAgCkYembsqac0ef31nv1ch8MhVqtVXC6XrF69WiIiInq2AAAAoBy/nRnr6duU5eXlkpiY\nKElJSWK322nEAABAtzN0M9bTtykjIiKkqKhIZs+ezbYVXcTsg7rITm3kpy6yMy9Ddxw93YxFRkZK\nZGRkz34oAAAwNUPPjD3zjCbz5+tdCQAAwKUxM9ZBbrdbVqxYIc3Nzd3zAQAAAF4ydDPWHbcpHQ6H\npKWlSWFhoTQ0NPj+AyAizD6ojOzURn7qIjvzMlUzVlZWJomJiZKcnCx2u13Cw8N9+wEAAAAdZOiZ\nsVmzNMnL6/p7ud1umTt3rhQUFMjy5cslNTW1628KAADwf7oyM2aK1ZSapsnZs2elsrKSvcMAAICh\nmOI2ZXBwsCxYsIBGrAcx+6AuslMb+amL7MzLFM0YAACAURl6ZuzllzV59dWOfZ3D4ZDAwEDp27dv\n9xQGAADQht/uM9bRK2Oe1ZKlpaXdUxAAAICP+UUz5na7JTc3V6xWq9hsNsnMzOzewvCtmH1QF9mp\njfzURXbmZejVlN7swO9wOMRqtYrL5ZKKigqG9AEAgFIMPTM2e7YmL7546fPy8vKksbFRcnJyJDjY\n0L0lAADwU6beZ+z555/v/kIAAAC6iV/MjMF4mH1QF9mpjfzURXbmZehmrO3MmNPp1KcQdNj+/fv1\nLgGdRHZqIz91kZ15dUszVlJSMnHIkCEfx8TE1L722mu/uNg5Tz311MKYmJhai8VSXVVVlXCxczxX\nxjyrJVNSUsSoM274V2fOnNG7BHQS2amN/NRFdubl82bM7XYHPfHEE/klJSUTDx48OOzNN9988KOP\nPhra+pxNmzZNOnToUHRtbW3MkiVLps+YMaPgYu8VENCyWjItLU3ee+892bhxowRw7xIAAPgRnzdj\n5eXlo6Kjow8NGDDgaEhISNPUqVN/v3Hjxrtan1NcXDz5oYceWiYiMnr06D1nzpzp5XA4vtP2vT77\nrGUT16SkJLHb7WxboZCjR4/qXQI6iezURn7qIjvz8vlqyhMnTvSPioqq87yOjIw8vmfPntHfds7x\n48cjv/Od7zhan7dkyf8TEZE5c+bInDlzfF0qutmyZcv0LgGdRHZqIz91kZ05+bwZCwgI8Gqoq+1e\nHG2/rrN7dQAAAKjE57cp+/fvf6Kuri7K87quri4qMjLy+KXOOX78eGT//v1P+LoWAAAAo/N5MzZi\nxIiK2tramKNHjw64cOHCZWvWrHlg8uTJxa3PmTx5cvHy5ct/KCKye/fuMb169TrT9hYlAACAGfj8\nNmVwcLArPz//ibS0tFK32x306KOPFg4dOvSjxYsXPy4i8vjjjy+eNGnSpk2bNk2Kjo4+FBYW5iwq\nKnrY13UAAAAoQdM0XY/NmzdPvOmmmz6Ojo6unTdv3i8uds6TTz65MDo6ujYuLq563759CXrXzOF9\nfitXrrTGxcVVx8bG1iQnJ++srq6O07tmDu+y8xzl5eUjg4KCXG+//XaG3jVzdCy/srKylPj4+Kqb\nb775L7feeuv7etfM4X1+J0+e7JOWllZisVj233zzzX8pKirK0rtmDk0efvjhpf369XPccsstB9o7\npzM9i67flMvlCho0aNChI0eODLhw4UKIxWLZf/DgwaGtz3n33Xcnpaenb9I0TXbv3j169OjRu/UO\ng8P7/D744IOkM2fOhGtay//5kJ8xDm+y85w3YcKE9+68884/rlu37l696+bwPr/Tp0/3GjZs2Id1\ndXWRmtbyw13vujm8zy8nJ+eV55577pee7K699tqvmpqagvWu3ezH9u3bx+3bty+hvWassz2Lro9D\n8uWeZOh53uSXlJS0Kzw8/KxIS37Hjx+P1KdatOZNdiIiixYtevK+++5b17dv35N61ImL8ya/1atX\nT7v33nvf9iyg6tOnzyl9qkVb3uR3/fXXf1FfX3+NiEh9ff0111133VfBwcEufSqGx7hx43b07t37\ndHu/39meRddm7GL7jZ04caL/t53DD3Rj8Ca/1goLCx+dNGnSpp6pDpfi7b+9jRs33uV5Qoa3Q5QX\nfAAACepJREFU29ag+3mTX21tbczf//73aydMmFA2YsSIihUrVvyg5yvFxXiTX3Z29hsffvjhzRER\nEX+1WCzVr7/++tM9Xyk6qrM9i88H+DvCV3uSQR8dyaGsrGzC0qVLH9m5c+fY7qwJ3vEmu5/85Cf/\nM2/evOcCAgI0TdMC2v47hH68ya+pqSlk3759idu2bbvt3LlzVyYlJe0aM2bM7piYmNqeqBHt8ya/\nvLy85+Pj4/e///77KZ999tmg1NTUrdXV1Zarr766oSdqROd1pmfRtRljTzK1eZOfiEhNTU1cdnb2\nGyUlJRMvdXkXPceb7CorK4dPnTr19yIip06d6rN58+b0kJCQprZb1aDneZNfVFRUXZ8+fU6FhoY2\nhoaGNo4fP357dXW1hWZMf97k98EHHyS/8MILc0VEBg0a9NmNN9545JNPPrlpxIgRFT1dL7zX6Z5F\nz0G4pqam4IEDB3525MiRAd98881l3zbAv2vXrjEMgBvn8Ca/zz///IZBgwYd2rVr1xi96+XoWHat\nj6ysrCJWUxrn8Ca/jz76aMhtt91md7lcQU6n88pbbrnlwIcffjhM79o5vMvvpz/96a9feeWVHE3T\n5G9/+9t3+vfvf/yrr766Vu/aOTQ5cuTIAG8G+DvSs+h6ZYw9ydTmTX65ubkvnz59urdn7igkJKSp\nvLx8lL6Vw5vs9K4R7fMmvyFDhnw8ceLEkri4uJrAwMDm7OzsN4YNG3ZQ79rhXX7PP/983sMPP1xk\nsViqm5ubA3/1q1/9/Nprr/273rWb3YMPPvjmn/70p1tPnTrVJyoqqu7VV1/NaWpqChHpWs8SoGmM\nXwEAAOhF19WUAAAAZkczBgAAoCOaMQAAAB3RjAEAAOiIZgxApwUFBbkTEhKqPMexY8duaO/cq666\n6uuufl5WVpZt4MCBhxMSEqqGDx9euXv37jEdfY/s7Ow3Pv744yEiLRtrtv69sWPH7uxqjSL//HOJ\ni4urycjIWP/1119fdanzq6urLZs3b073xWcDUA+rKQF02tVXX93Q0NBwta/Pbc/DDz9c9P3vf/8P\nGRkZ67du3Zo6c+bM+dXV1ZbOvp8vavq2983KyrLFxsYeeOaZZxa0d77NZsuqrKwcvmjRoid9XQsA\n4+PKGACfcTqdYbfffrt9+PDhlXFxcTXFxcWT257zxRdfXD9+/PjtCQkJVbGxsQf+/Oc/f1dEZMuW\nLXckJyd/MHz48MopU6asdTqdYRf7DO3/HjUybty4HYcOHYoWEfn1r3/9s9jY2AOxsbEHPM/wczqd\nYXfeeee78fHx+2NjYw+89dZb94uIpKSkvF9ZWTn8ueeem9fY2BiakJBQ9YMf/GCFyD+v3k2dOvX3\nmzZtmuT5zKysLNv69eszmpubA5999tn/HjVqVLnFYqlesmTJ9G/7M0lKStr12WefDRJpeUB0cnLy\nB4mJifvGjh2789NPPx184cKFy15++eXcNWvWPJCQkFD11ltv3e90OsMeeeSRpaNHj96TmJi472J/\njgD8iN472XJwcKh7BAUFueLj46vi4+OrMjIy3na5XEH19fVXa5omJ0+e7BMdHV3rOfeqq65q0DRN\n5s+f/8zcuXOf1zRN3G53YENDw1UnT57sM378+D+dO3cuVNM0mTdv3i9yc3Nfavt5WVlZRevWrbtX\n0zRZu3bt/WPGjNlVWVmZGBsbW3Pu3LnQr7/+Ouzmm2/+S1VVVfy6devuzc7OXuL52rNnz16jaZqk\npKSUVVZWJrauqW2N77zzzt0PPfSQTdM0+eabby6Lioo6dv78+csXL148fc6cOS9omibnz5+/fMSI\nEXuPHDkyoG2dnvdxuVxBGRkZb//mN7/5L03TpL6+/mqXyxWkaZps3br19nvvvXedpmlis9keevLJ\nJxd6vn7WrFl5K1eutGqaJqdPn+41ePDgT5xO55V6583BwdE9h6478ANQW2hoaGNVVVWC53VTU1PI\nrFmzfrljx45xgYGBzX/9618jvvzyy379+vX70nPOqFGjyh955JGlTU1NIXffffcGi8VS/f7776cc\nPHhwWHJy8gciIhcuXLjM8+vWNE0LePbZZ/97zpw5L/br1+/LwsLCR7du3ZqakZGxPjQ0tFFEJCMj\nY/2OHTvGTZw4sWTmzJnzn3vuuXnf+973/vjd7373z95+XxMnTix5+umnX79w4cJlmzdvTr/11lv/\ndPnll3+zZcuWOw4cOBC7bt26+0RE6uvrrzl06FD0gAEDjrb+es8VtxMnTvQfMGDA0R/96Ef/KyJy\n5syZXj/84Q+XHzp0KDogIEBzuVzBnu9La/Vw4S1bttzxhz/84fvz58+fKSLyzTffXF5XVxd10003\nfeLt9wBAHTRjAHxm1apV1lOnTvXZt29fYlBQkPvGG288cv78+StanzNu3LgdO3bsGPfHP/7xe1lZ\nWbaf/exnv+7du/fp1NTUratXr552qfcPCAjQ5s+fPzMjI2O953+z2+23t25kNE0LCAgI0GJiYmqr\nqqoS3n333TtffPHFObfddtu2l156abY338cVV1xxPiUl5f3S0tK0tWvXTnnwwQff9Pxefn7+E6mp\nqVsv9fWeJrWxsTE0LS2tdOPGjXfdc88977z00kuzb7vttm3vvPPOPZ9//vl/pqSkvN/ee6xfvz6D\nh3oD5sDMGACfqa+vv6Zfv35fBgUFucvKyiZ8/vnn/9n2nGPHjt3Qt2/fk4899tjvHnvssd9VVVUl\njBkzZvfOnTvHemarnE5nWG1tbczFPqN14yXS0txt2LDh7sbGxlCn0xm2YcOGu8eNG7fjiy++uP6K\nK644b7VaV82cOXN+6yt4HiEhIU2eq1NtPfDAA2uWLl36iOcqm4hIWlpa6W9/+9v/8nzNp59+Ovjc\nuXNXtvfnERoa2rhw4cKnXnjhhbmapgXU19dfExER8VcRkdbPrLvmmmvqWy8kSEtLK124cOFTntcX\nqx2A/6AZA9BpAQEB/7Ic22q1rqqoqBgRFxdXs2LFih8MHTr0o7bnlpWVTYiPj9+fmJi4b+3atVOe\nfvrp1/v06XPKZrNlPfjgg29aLJbq5OTkDz755JObvPnMhISEqqysLNuoUaPKx4wZszs7O/sNi8VS\nfeDAgdjRo0fvSUhIqMrNzX35xRdfnNP2vaZPn74kLi6uxjPA3/q977jjji3bt28fn5qaujU4ONgl\nIvLYY4/9btiwYQcTExP3xcbGHpgxY0bBxZq51u8THx+/Pzo6+tDatWun/PznP//VrFmzfpmYmLjP\n7XYHec6bMGFC2cGDB4d5Bvhfeuml2U1NTSFxcXE1t9xyy19ycnJe9S4RACpiawsAAAAdcWUMAABA\nRzRjAAAAOqIZAwAA0BHNGAAAgI5oxgAAAHREMwYAAKCj/w+LoRaMF6ipMgAAAABJRU5ErkJggg==\n", "text": [ "" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "CPU times: user 2min 4s, sys: 1min 11s, total: 3min 16s\n", "Wall time: 3min 50s\n" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/svm.roc.npz\",fpr,tpr)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "svmprecision,svmrecall = drawprecisionrecall(X,y,test,svmodel)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAHYCAYAAAABLe9WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd4VHXaxvF7UqSFEAzVJBIgkQ6hi0gHqQkIKqAgICIW\nUHzXgh0VV1h014KrAeldBA01VCMqmNCCKC0gkSSySCf0lHn/OO+8RhZICDM5c2a+n+uaC05yMvOE\n28jD+T3zOza73S4AAACYw8fsAgAAALwZzRgAAICJaMYAAABMRDMGAABgIpoxAAAAE9GMAQAAmIhm\nDPAwc+bMeahz586r8jvviSee+HTs2LGvFkVNRSE8PDx1/fr17SVpzJgxYwYOHDjL7JoAoCBoxoAi\nFB4enlqyZMnzpUuXzqxUqdJ/hgwZMu3cuXOlnPkaDz300JxVq1Z1zu+8Tz/99IlXX311rDNf28HH\nxyc3ICDgbOnSpTNDQkIynn766Y+ys7P9XPFaDjabzX6131uZ3W63VatW7dc6der8cuXnwsPDU9et\nW9ch78emT58+uFWrVt85ji9fvnzLmDFjxtxxxx37AgICzlatWvXg0KFDp/z2229VCvL6J06cuPXe\ne+/9KiAg4Gx4eHjqvHnz+l/r3OnTpw/29fXNKV26dKbjsWHDhtaOz+/evbtW+/bt1wcFBZ2KjIxM\n+frrr3sV7E8B8Hw0Y0ARstls9mXLlvXIzMwsvW3btkZbtmxpcrWrU65uXIrCTz/9VD8zM7P0hg0b\nWi9evLj3pEmTHiuq17bb7TZXv0ZRZLRhw4bWly5dKnb06NHyW7ZsaZL3czabzZ5f03nfffd9uWzZ\nsh7z5s3rf+bMmcAdO3Y0aNKkyZYrm7hreeqppz4pXrz4xT/++KPCnDlzHnriiSc+3bVrV+1rnd+y\nZcsfMjMzSzserVu33iAZf1Y9e/aMi4mJWXLy5MmykyZNemzAgAGzU1JSIgtSB+DpaMYAk9x2222/\nd+nSJf6XX36pIxlXk/79738/GRkZmVKjRo29krRs2bIeUVFRyWXLlj3ZsmXLH3bu3FnP8fVpaWlh\nvXv3XlyhQoU/ypUrd2zkyJEfS3+9OmK3223PPvvsvypWrHikTJkyp+vXr/+T4y/TwYMHT3/ttdfe\ndjzf5MmTh0VGRqYEBwcf79mzZ9zhw4crOz7n4+OTGxsbO/yOO+7YV7Zs2ZMjRoyYWNDvs3r16gda\ntmz5Q96/xAvzfR04cKB6+/bt15crV+5Y+fLljw4YMGD26dOny9z4n7wUFxfXMyoqKrlMmTKnIyIi\n9q9evfoe6b+vNuVd7kxNTQ338fHJnTp16iNVqlT5rUOHDuu6deu24pNPPnkq73M3aNBgh+Oqz549\ne2p26tRpTXBw8PGaNWvuWbhw4f03UueMGTMG9enTZ1HPnj3jZsyYMehGvnbt2rUd165d2zEuLq5n\n48aNt/r4+OQGBgaeeeKJJz595JFHpub39efOnSu1ePHi3m+//fZrJUuWPN+yZcsfevbsGTdr1qyB\n1/qaazXBe/bsqXn48OHKo0aN+sBms9nbtWv3TcuWLX+43nMB3oRmDChijr+w0tLSwlauXNm1YcOG\n2x2fi4uL67l58+amu3btqr19+/aGQ4cOnTJ58uRhJ06cuHX48OGxMTExS7KysvxzcnJ8e/Tosaxq\n1aoHf/vttyoZGRkh/fv3n3fla61evfqe7777rlVKSkrk6dOnyyxcuPD+W2+99YT01ysr69evb//y\nyy//feHChfcfPny4cpUqVX7r16/f/LzPtXz58u5btmxp8tNPP9X/4osvHshvKdTxfe7Zs6fmd999\n16pZs2ZJknSj31feOl555ZV3Dh8+XHn37t210tLSwsaMGTPmRv/8k5KSmg0aNGjG+++//7fTp0+X\n2bBhQ+sqVar8duWfieP4yq/fsGFD6z179tRctWpV5/79+8/Lu3S3a9eu2ocOHbq9e/fuy8+dO1eq\nU6dOawYMGDD76NGj5efPn9/vySef/Pfu3btrFaTO8+fPl1y0aFGfvn37LnjggQe+mD9/fr+srCz/\ngn6fa9eu7di8efPEkJCQjGudM27cuNHR0dFLr/a5ffv23eHn55cdERGx3/GxBg0a7HD84+FKNpvN\nvn379obly5c/WqNGjb1jx459NScnx/dar52bm+vz888/1y3o9wN4MpoxoAjZ7XZbr169vi5btuzJ\nVq1afde2bduEl19++e+Oz7/00kvvBgUFnSpWrNilSZMmPTZ8+PDYpk2bbrbZbPaHH354ZrFixS5t\n2rSpRVJSUrPDhw9XnjBhwvMlSpS4UKxYsUt33XXXxitfz9/fPyszM7P07t27a+Xm5vrUqFFjb6VK\nlf5z5Xlz5sx5aOjQoVOioqKSb7nllsvvvvvuS5s2bWpx6NCh2x3njB49elxgYOCZsLCwtHbt2n2T\n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\n", "text": [ "" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/svm.precisionrecall.npz\",svmprecision,svmrecall)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Random forest classifier\n", "\n", "Random forest classifiers have proven to be effective in the task of protein interaction prediction in the past.\n", "A random forest classifier combines the results of many decision tree classifiers.\n", "In this way, it can react to correlations in the data in a way that simpler methods, such as logistic regression, cannot.\n", "\n", "The combination of decision trees is implemented in [Scikit-learn][rfsklearn] by averaging the results of the individual trees.\n", "\n", "### Initialising the pipeline\n", "\n", "As above we will define the pipeline with the same scaling and imputation:\n", "\n", "[rfsklearn]: http://scikit-learn.org/stable/modules/ensemble.html#random-forests" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import sklearn.ensemble" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 129 }, { "cell_type": "code", "collapsed": false, "input": [ "imputer = sklearn.preprocessing.Imputer(strategy='mean',missing_values=\"NaN\")\n", "scaler = sklearn.preprocessing.StandardScaler()\n", "classifier = sklearn.ensemble.RandomForestClassifier()\n", "rfmodel = sklearn.pipeline.Pipeline([('imp',imputer),('scl',scaler),('cls',classifier)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 130 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting a learning curve\n", "\n", "As above, we would like to know how quickly this model will learn in a pipeline with the scaling and imputer defined as with previous models before trying to tune hyper-parameters." ] }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster stop" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 21:09:21.580 [IPClusterStop] Using existing profile dir: u'/home/fin/.ipython/profile_default'\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 21:09:21.642 [IPClusterStop] Stopping cluster [pid=26959] with [signal=2]\r\n" ] } ], "prompt_number": 258 }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster stop --profile='altcluster'" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 17:47:09.978 [IPClusterStop] Using existing profile dir: u'/home/fin/.ipython/profile_altcluster'\r\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 17:47:10.029 [IPClusterStop] Stopping cluster [pid=3655] with [signal=2]\r\n" ] } ], "prompt_number": 179 }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster start --n=10 --daemon" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 21:09:34.085 [IPClusterStart] Using existing profile dir: u'/home/fin/.ipython/profile_default'\r\n" ] } ], "prompt_number": 259 }, { "cell_type": "code", "collapsed": false, "input": [ "!ipcluster start --n=10 --profile='altcluster' --daemon" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "2014-07-30 17:47:14.542 [IPClusterStart] Using existing profile dir: u'/home/fin/.ipython/profile_altcluster'\r\n" ] } ], "prompt_number": 180 }, { "cell_type": "code", "collapsed": false, "input": [ "client = Client(profile=\"default\")\n", "lb_view = client.load_balanced_view()\n", "lb_view.abort()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 260 }, { "cell_type": "code", "collapsed": false, "input": [ "trainsizes=logspace(3,6,7)\n", "#initialise and start run\n", "rflcsearch = ocbio.model_selection.LearningCurve(lb_view)\n", "rflcsearch.launch_for_arrays(rfmodel,X,y,trainsizes,n_cv_iter=3,\n", " params={'cls__n_estimators':100,'cls__bootstrap':False},\n", " name=\"lrlc\")" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "print rflcsearch" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 71% (105/147)\n", "\n" ] } ], "prompt_number": 145 }, { "cell_type": "code", "collapsed": false, "input": [ "rflc = rflcsearch.plot_curve()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nYOUkvBF3igAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 146 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training a single model with 100,000 to see how long each one of these is going to take:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/random.forest.learning.curve.npz\",rflc)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 148 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Running a grid search\n", "\n", "The major [parameters][] to vary with a Random Forest classifier are:\n", "\n", "* `n_estimators` - the number of trees in the forest\n", "* `max_features` - size of random subsets of features to consider when splitting nodes\n", "\n", "According the to the [documentation][parameters] a good value for `max_features` is the square root of the number of features, in our case approximately 15.\n", "With the number of trees in the forests, the more trees the better the performance will be, but it will take longer to train the model.\n", "We will try up to a maximum of 200 estimators to see at which point there are no longer significant gains from increasing the number of estimators.\n", "\n", "Also the random trees are using bootstrapping by default when training, which is unnecessary on a dataset as large as this.\n", "Therefore, we should set `bootstrap=False`.\n", "\n", "[parameters]: http://scikit-learn.org/stable/modules/ensemble.html#parameters" ] }, { "cell_type": "code", "collapsed": false, "input": [ "split_filenames = ocbio.mmap_utils.persist_cv_splits(X,y, test_size=20000, train_size=100000,\n", " n_cv_iter=3, name='rffeatures',random_state=42)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 138 }, { "cell_type": "code", "collapsed": false, "input": [ "rfparams = {'cls__n_estimators':100,'cls__bootstrap':False}" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 149 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "train,test = next(iter(sklearn.cross_validation.StratifiedShuffleSplit(y,\n", " test_size=20000,train_size=100000)))\n", "rfmodel.set_params(**rfparams)\n", "rfmodel.fit(X[train],y[train])\n", "print \"Training score: {0}\".format(model.score(X[train],y[train]))\n", "print \"Test score: {0}\".format(model.score(X[test],y[test]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Training score: 0.99938\n", "Test score: 0.99935" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CPU times: user 2min 14s, sys: 1min 24s, total: 3min 38s\n", "Wall time: 3min 44s\n" ] } ], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "rf_params = {\n", "'cls__n_estimators':logspace(1,2.3,5).astype(np.int),\n", "'cls__max_features':arange(5,30,5).astype(np.int),\n", "'cls__bootstrap':[False]\n", "}" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 172 }, { "cell_type": "code", "collapsed": false, "input": [ "rfsearch = ocbio.model_selection.RandomizedGridSearch(lb_view)\n", "rfsearch.launch_for_splits(rfmodel,rf_params,split_filenames)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 173, "text": [ "Progress: 00% (000/075)" ] } ], "prompt_number": 173 }, { "cell_type": "code", "collapsed": false, "input": [ "print rfsearch" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 100% (075/075)\n", "\n", "Rank 1: validation: 0.99367 (+/-0.00033) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 44, 'cls__max_features': 20, 'cls__bootstrap': False}\n", "Rank 2: validation: 0.99367 (+/-0.00017) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 199, 'cls__max_features': 25, 'cls__bootstrap': False}\n", "Rank 3: validation: 0.99367 (+/-0.00017) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 44, 'cls__max_features': 25, 'cls__bootstrap': False}\n", "Rank 4: validation: 0.99367 (+/-0.00017) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 21, 'cls__max_features': 20, 'cls__bootstrap': False}\n", "Rank 5: validation: 0.99350 (+/-0.00029) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 10, 'cls__max_features': 25, 'cls__bootstrap': False}\n" ] } ], "prompt_number": 187 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Training a the model we would like to use on a large training set to get the best possible performance:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "rfparams = rfsearch.find_bests()[0][-1]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 190 }, { "cell_type": "code", "collapsed": false, "input": [ "%%time\n", "train,test = next(iter(sklearn.cross_validation.StratifiedShuffleSplit(y,\n", " test_size=20000,train_size=100000)))\n", "rfmodel.set_params(**rfparams)\n", "rfmodel.fit(X[train],y[train])\n", "print \"Training score: {0}\".format(model.score(X[train],y[train]))\n", "print \"Test score: {0}\".format(model.score(X[test],y[test]))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Training score: 0.99275\n", "Test score: 0.9934" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", "CPU times: user 5min 1s, sys: 58.4 s, total: 5min 59s\n", "Wall time: 6min 14s\n" ] } ], "prompt_number": 191 }, { "cell_type": "code", "collapsed": false, "input": [ "rfroc = plotroc(rfmodel,X[test],y[test])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAHYCAYAAAABLe9WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3XtcU/X/B/D3xkDlfhWBoaioeEEUr1DfQgtRU8vMvGwV\n2kUzTbOLpRYGQmlhF0k0Q26GmVqJpljD0cWSm/drKqJIuuQiTARhZ+f3B79Ti5hcx9nZXs/H4zzi\nsLOd9/Z27c3nvD+fiViWJQAAAADgh5jvAAAAAADMGYoxAAAAAB6hGAMAAADgEYoxAAAAAB6hGAMA\nAADgEYoxAAAAAB6hGAOTMGjQoFM///zzA3zHwbcXX3wxfvXq1Ss78pzh4eFJb7/9dlRHntNQvvzy\nS1lYWNiB1twX/wYBoNVYlsWGrV23Hj16FHbp0uWOra2t2t3d/YZcLk+tqKiw5zsuU9sSExPD77//\n/l/4jiM8PDzx7bffjuQ7joiIiFVyuTy1I871zDPPJK1cuTKqvR5PrVbb2tjY3J4wYcK+hreJRCLt\npUuXet3ruVZUVNgvXrz44+7du1+xtbVV9+7d++KSJUs+KikpcWnO+S9fvuwTEhKitLa2rvLz8zur\nUCge0ndseXm549NPP53ctWtXVdeuXVWrVq2KaHjMxx9/vLhnz54FNjY2t/v373/mjz/+6MOyLCmV\nyhCRSKS1tbVVc1tKSspT3P1qamo6zZkzZ4u9vX1Ft27drq9bt+4V7raSkhKX4ODgQy4uLiX29vYV\nQ4YMOfrtt98+xt2elJT0zLBhw/Ls7e0rpFJp0RtvvLFGo9FY6Ma1bdu2mX5+fmdtbGxu9+7d++Iv\nv/xyP8uytHXrVpluTNbW1lUikUh75MiRoSzL0vjx4/fr3m5lZXXX39//RHNev+jo6OW69+3Spcsd\nsVjMlJaWOnO5k8lkW11dXW+6urrelMlkWysrK+34fj9h69gNI2PQ7kQiEbt3795JarXa7vjx4wEn\nT5707+jRmvag0Wgk5nhuPjEMY2GO5961a9e07t27X83KygpRqVTuTR0vEon+Xq27trbW6qGHHso8\ne/Zs/wMHDoSp1Wq733//PcjV1bUkJydnZHPOP2vWrG3Dhg3LLysrc46Ojl7xxBNP7CwpKXFt7NhX\nXnnlo5qams5XrlzpkZOTMzI1NfWppKSkcO72L7744rktW7bM3bdv38Tbt2/bfv/994+4urqWcLd7\neXkVq9VqO2576qmnUrnbVq1aterSpUu9r1692l2pVI5Zu3btGwcOHAgjIrK1tb29ZcuWuX/99VfX\niooKh1WrVq168sknv759+7YtEVF1dXWXTz75ZHFpaalLdnb2qMzMzIc+/PDD17jH/vHHH0PffPPN\n95OTk5+5ffu27S+//PK/Xr16FRARyWSyL3Vj2rBhw4LevXtfGjp06FEiov3790/QvT04OPi3J598\n8uvmvH7Lly+P0b3vsmXL1owZM0bp7Oxcxj3nkpIS18uXL/e8dOlSb5VK5b5q1apVzckbmBC+q0Fs\nprf5+PhczszMHMvtv/7662snTpz4Pbf/+++/jw4KCvrN0dGxPCAg4FhWVtaD3G2lpaXO4eHhiZ6e\nnsVOTk5ljz322LfcbXv27JkUEBBwzNHRsTw4OPjQiRMn/LnbevToUZiZmTm2uLjYs0uXLnfKysqc\nuNuOHDky1NXV9Sb3V3JCQsLc/v37n3FycioLCwvLuHLlSnfuWJFIpP3ss88W+Pr6XujVq9elxp7f\n7t27pwwYMOC0o6NjeUhIiPLs2bN+unG89957bw4YMOC0k5NT2Zw5c7bU1NR0au5zWLNmzRv+/v4n\nOnfuXK3RaCzee++9N3v37n3Rzs6ucsCAAae5kYAzZ87079y5c7WFhYXG1tZW7eTkVMay/x6xUSqV\nIV5eXtdiY2OXdu3aVeXh4fFnYmJiOHe+kpISl0mTJu2xt7evGDFiRM6KFStW32uk7Zdffrmfy5u3\nt/fV5OTkp1m2fmTspZdeinvkkUf22tnZVY4aNeqw7kjOyy+//Im3t/dVe3v7imHDhuVxoxEsWz/C\nM23atJ1yuTzV3t6+IiEhYW5OTs6I0aNH/+7o6Fju4eHx58KFC9fX1tZacvc5derUwIcffvhHZ2fn\nUnd39xsxMTFvZWRkhFlZWd21tLSstbW1VQ8ZMuQoy7J069Yth7lz5yZ4eHj86eXldW3lypVRDMOI\nWbZ+ZDE4OPjQK6+8ss7FxaVk5cqVUbqjjVqtVrRkyZKPunbtqrK3t6/w9/c/cerUqYGbNm16wdLS\nstbKyuqura2tesqUKbu5/HEjIhqNxiI6Ono5l7thw4blFRUVSfW9tmPGjDkYGxu79OGHH/7xww8/\nfFX3tqZGxjZv3vycu7v7jaqqKuvWvF/Pnz/ft1OnTjW3b9+24X73wAMP/LRx48Z5jR3v6up6Mzc3\n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\n4u7v7e1dpO+5Xb9+3aN79+5XdZ+rt7d3kb77d+/e/SoXY3OeQ8Nzp6SkPD106NCj3PGnTp0aVFpa\n6tJUDjguLi6lYrFYy+1bW1vfuX37tu3NmzfdNBqNRPd8Uqn0mr7HuXbtmpTrr2mMu7u7ivu5S5cu\n1VwfDxHRhx9++NqAAQPOODo63nJyciqvqKhw0O1HanjeP/74o++kSZP2enh4XHdwcKhYsWJFNPec\ni4qKvO8Vh64rV670qKurs/Tw8LjOvX7z58/fePPmTTfumHvleuzYsQcXLlwY99JLL33m7u6umjdv\n3ia1Wm3XnHNfu3ZN2rt370vNOTYlJeXp6dOn7yCqz1dISEhWcnLyM9ztFhYWTF1dnaXuferq6iwt\nLS3ruPs09j5oLltb29uVlZX2ur+7deuWo729fWVjx3/66acvd+7cuaZPnz4Xpk6d+u3s2bPTvLy8\nionqc09E9MYbb6y1t7ev7NGjx5V58+Zt2rdv30Si+n8nfn5+54iIfHx8CteuXfvGrl27pnFxEBHp\nxlJRUeFgZ2enbhiDlZVV7aJFi9bb2dmpMzMzH9K97bvvvnts+fLlMfv375/A9WVxcS1atGi9u7u7\nysXFpXTp0qXruLh0paSkPP3MM88kN/bcf/311/tVKpX7E088sbOlr9+dO3esd+7c+UTDx5bJZF/2\n69fv/O3bt20rKyvte/XqVSCXy7c2dn4wXSjGwKAeeOCBnxctWrR+2bJla4jqi5Onnnoqtby83Inb\n1Gq13RtvvLHW29u7qKyszLmiosKh4eN079796ooVK6J173f79m3bGTNmbG94rJOTU/m4ceN+2L59\n+4y0tLTZs2bN2qb7OJ9//vkLuo9TVVVlM3r06MPcMbrN0Q15enr+eeXKlR7cPsuyoqKiIm/uw4iI\n6OrVq911f+Zua85z0D33lStXerzwwguff/bZZy+VlZU5l5eXOw0aNOgUy7Kie8V5r/g5bm5uNyUS\niaaoqMib+53uzw15e3sXXbp0qXdTj9vQL7/88r8PPvjg9R07dky/deuWY3l5uZODg0MF9xwai/fF\nF1+MHzBgwJmLFy/6VlRUOERHR6/QarViovrXsKCgoFdj59ItOrmYO3XqdLe0tNSFe70rKiocTp48\n6a/v3A0tWrRofV5e3vAzZ84M+OOPP/p+8MEHrzfnft7e3kUXL170vdcxRES//fZb8MWLF31Xr169\n0sPD47qHh8f133//PSgtLW227nO+fPlyT937Xb58uWePHj2uEBE9/PDDigMHDoTduXPHuqnzNWbg\nwIGnCwoKeukW0MePHw8YOHDg6caOd3JyKt+6dav8+vXrHidPnvRnGMZi1KhR2URE/fr1O29lZVXb\n8D73er245+nk5FTu4eFx/dixY0N04xg0aNApfffVaDQSGxubKm4/IyNj/AsvvPD53r17J+nG7+Tk\nVH6vPzY4hw4duu/69eseusWWruTk5GemTZu2y9ra+g73u+a+ft9+++1UFxeX0gcffPAn3d9nZGSM\nnzdv3qYuXbpU29jYVOkWr2A+UIyBwS1ZsuTjnJyckdnZ2aPkcvnWPXv2TP7hhx/GMQxjUVNT0zkr\nKyukuLjYy8PD4/qECRP2L1iwYMOtW7cc6+rqLLl1m55//vnNGzdunJ+TkzOSZVlRVVWVzffff/+I\n7v8Adc2ePTstOTn5mV27dk2bPXt2Gvf7+fPnb4yJiVl+5syZAUT1f3nv2LFjenOfy5NPPvn1999/\n/8jBgwfH1tXVWcbGxr7auXPnmuDg4N+I6ouzDRs2LCguLvbiZlZxxVZLn0NVVZWNSCRiXV1dS7Ra\nrTgxMXHOqVOnBnG3u7u7q65duybVHTVhWVakW+joY2FhwTz++OPfrFq1alV1dXWXc+fO+aWmpj6l\n70NTJpN9qVAoHt6xY8d0jUYjKS0tdTl+/HgAd05951Gr1XYSiUTj6upaUltbaxUZGflOw1GEhm7f\nvm1rZ2entra2vnPu3Dm/+Pj4F7nbHnnkke+vX7/u8cknnyy+e/duJ7VabcfNGHR3d1cVFhb6cPF4\neHhcHzdu3A9Lly5dp1ar7bRarfjSpUu9m7sWWF5e3vDs7OxRdXV1ltbW1nc6d+5cY2FhwXDn0lcU\nEhE999xzX7z99ttRFy9e9GVZVnTixInBZWVlzg2PS05OfmbcuHE/nD17tv/x48cDjh8/HnDq1KlB\n1dXVXbgP5BkzZmxfvXr1yuLiYi+tVitWKBQP7927dxJXMDz11FOp3t7eRdOmTdt1/vz5flqtVlxa\nWuoSExOzfP/+/ROaep59+/b9Y8iQIcfefffdiJqams7ffPPN46dOnRo0bdq0XY0dX1BQ0Ku0tNSF\nYRiL/fv3T9i8efPzK1euXE1UP/I6Y8aM7WvXrn3j9u3btteuXZNu3rz5+UmTJu0lIsrKygq5cuVK\nD+6PmGXLlq157LHHvuMe++mnn05ZvXr1ylu3bjmePXu2/xdffPFceHh4EhFRdnb2qF9//fX+2tpa\nq+rq6i5r1qxZVlNT05n7Q+rgwYNjZTLZl998883jw4cPz2sY95w5cxLXr1+/6ObNm27l5eVOH330\n0SuTJ0/e0zAfTzzxxE7dAo9TXV3dZceOHdO5eFr6+iUnJz/z9NNPpzR83MGDB5/YvHnz8zU1NZ2r\nq6u7fP755y8EBAQc15cvMFF8XyfFZnpbw9mULMvSiy++uIHr+8nOzh754IMPZjk7O5e6ubn9NWnS\npD1cz1ZZWZnTM888k+Tu7n7DycmpbNq0aTu5x8jIyAgbMWJEDjfL7sknn9zOzWBqeM7q6urOdnZ2\nlYMGDTrZML7U1FS5v7//CXt7+wpvb++rzz777BfcbWKxmGnYn9Nw+/bbbx8bMGDAaQcHh1shISHK\nM2fO9Nd97u+///4ybrZleHh4om7PUkueA8vW9544OzuXurq63ly6dGlsSEiIkut5q62ttXzkkUf2\ncq8jy/63gd/b2/uqvtzcvHnT9ZFHHtlrb29fMXLkyOxly5a9/9BDDyn0Pe9ffvnl/lGjRh3mXjdu\nRljDZnbd8zIMI547d26Cvb19hYeHx59r1659vWfPngVcDI013f/888//8/PzO2tra6v+3//+9/M7\n77zzru7EglOnTg186KGHFE5OTmXdunW7vmbNmjdYtn4m7v333/+Lk5NT2bBhw/JYtn4NpxdffHGD\nVCotcnBwuDV06NAj27dvf5Jl6ydANJywoPu7zMzMsYMHDz5ua2urdnV1vSmXy1O5xusLFy74Dhky\n5Kijo2M59+9a97XlJof07NmzwM7OrnLkyJHZxcXFnrrnqq6u7uzk5FS2d+/eRxq+1gsWLPhs+vTp\nX3PHvf7662t9fHwuOzg43Bo2bFjenj17JukeX1FRYb9kyZKPvL29r3LrjL366qsfcrOK58+fHz9/\n/vx4fbktLCzsERISouzSpcsdPz+/s7r/Dn/++ef/2draqrn9r7/+erqnp2extbV11dChQ4/88MMP\nobqPVVlZaTdz5sxtdnZ2ld7e3lejoqJWcretW7fuFS8vr2vW1tZV3t7eVxcvXvyx7izEu3fvWnH/\nXtzd3W989NFHS7jbfvrppwcCAgKO2dnZVbq6ut6cOHHi96dOnRrI3T5mzJiD3GxabtOdxV1XVydZ\nsGDBZ46OjuXdunW7vnjx4o91+9Oqq6s7Ozo6luubCZqWljarsf61pl4/lq2fuGRpaVnb2P9bzp8/\n3zcsLCzD2dm51NnZuXTChAn7Ll682Ls5/6/FZjqbiGWbvKIBAM3Us2fPywkJCc+OHTv2IN+xtNSy\nZcvW/PXXX10TExPn8B0LAIA5affLlHPnzt3i7u6u8vf3P6nvmJdffvnTPn36XAgICDh+9OjRoe0d\nAwA07fz58/1OnDgxmGVZUU5OzsgtW7bMnTp16rd8xwUAYG7avRibM2dOYkZGxnh9t+/bt2/ixYsX\nfS9cuNDn888/f+HFF1+Mb+8YAKBparXabtq0abtsbW1vz5w586vXXnvtwylTpqTzHRcAgNkxxLXP\ny5cv+zTWq8OyLM2bN2/jV199NYPb79ev3zluEUvdjYhYbNiwYcOGDRs2oWytrZs6/PvviouLvRqu\nbXTt2jWp7jpFHPSzCdeqVasIX68mTMidsCF/woXc8YNliaqricrL9W9lZfpvE4uJbGxyqLR0VKtj\n4OXLiNkGU+Gbsy4SCEthYSHfIUArIXfChvwJF3LXNvoKqnsVUtztYjGRk5P+rU8f/bd17kx07Zon\neetdqbFpHV6MeXl5FesuLnnt2jWp7oKZAAAAYJ5qappfRDU8hui/hZKz8z8/9+6tv6Dq0qVtcUul\n0jbdv8OLsSlTpqTHxcUtnDlz5leHDx8e7ejoeKuxS5QgbOHh4XyHAK2E3Akb8idcppI73YKqpZf9\ntNrGCylu69mTKDCw8WPaWlDxqd3XGZs1a9a2n3766cGSkhJXd3d31bvvvhvBrRA+b968TURECxcu\njMvIyBhvY2NTlZiYOCcwMPDIfwITiVj0jAEAAHS8u3dbd8mvvJxIo2m8kNI3YtVwhErU5HeI8Idh\nGEpLSyOZTEZi8b8XpBCJRP9pw2ouo130FcWYsGVlZVFISAjfYUArIHfChvwJV3vnrra25YUUd4xG\n0/JCitusrY27oGotlUpFMpmMNBoN7d69mxwc/v01ym0pxnhp4AcAAICmNSyoWnLZr7b23oWUtzfR\n4MGN326qBVVrKZVKksvl9Oyzz9I777xDEkn7lk8YGQMAADCgurrWLZlQXl5/udDRsenRqMZGrGxs\nUFC1FcMwFB0dTfHx8ZSSkkKhoaF6j8XIGAAAgAHV1RHdutW6S35cQaWviPL0JBo0qPHbbG1RUPGJ\nZVmqqKig/Px88vT0NNh5MDIGBoG+FeFC7oQN+dNPo2n9Jb/qav0FVVOjVnZ2zSuokDthw8gYAACY\nBY3m3yNULbnkd+cOkYOD/kLK3Z3Iz6/x25tbUAG0BkbGAACgQzHMfwuq5qySzhVU9vbNG5FqeLud\nXf1K6wCNUalUJBaLyc3NrVX3x9IWAADQZgxTv2BnTU39ZbkNG4hKSv5bLKnV9d/n1xp1df8uqFq6\nfIK9PQoqaH/cbMk1a9aQXC5v1WPgMiUYHfQ+CBdyxx+N5p9iqLXbhQtZ5OYWQnfvtvy+DFO/6Gbn\nzkRWVkSlpUTr1/+3SGrLCJOFBQoqffDe63jcbMmNGzdScnLyPWdLGhKKMQAAqh/pqavTX6i0prhp\nzqb7uCz7TzHU3K1Tp3/vOzkR9evXssfgNokEfVFgPnQXcc3LyzPobMmm4DIlABgFlq1fpLK9CpvW\nbBLJf4ub9tqa87jtvI4kANxDTEwMVVdXU0RERLss4oqeMQBoM63238WMoUaC9D323btElpbtW9y0\ntFiysOA7CwAgVOgZA6OD3oeWY5jWFUDtVTTV1tYXJBJJFtnahrSqoHF0bH3R1KkT+ojaA957woXc\nmS8UYwD/j2ue7ojeoMY2jabto0HOzq0fFbKyqi+GsrKI8HkAAKakqqqKbGxs+A5DL1ymBKPAsi2f\nSdbeRRPLdmx/UMPN0hLN0wAA7YmbLZmenk65ubkkMuD/ZHGZEgymtrZ+TaHbt+u35vzMMP/0H7Wk\nYBKL217cNHaZrLmFE2aSAQCYDt3Zkunp6QYtxNoKI2MmRKP5pyBqbuHU1M8sW7+mkK3tP/+918+2\ntvVFzfnzWRQQ0Py+o/peJb5fQSBC34rQIX/Chdy1H24R17lz57bbbMmmYGRMQC5dIrp4sb7YUauJ\nKiv//d+qKv33Zdn6lav1FU61tU0XS9zPbm5EvXo1fXynTq17nug7AgAAPhQUFJBcLqekpCTeFnFt\nKYyMtcGtW0RnzxKdOUNUUfHf2775pv6SHUerrf99QEB9wWNv/+//2tkR2djc+1KZtbX+wqlLF1xm\nAwAA4KNhH+uMGVhpaX3B1XCrrCTq379+c3H5933EYqLJk4m6dv3373186osmAAAAMB0oxtoByxL9\n9VfjRdfdu0QDBvx3k0qxLpI+6H0QLuRO2JA/4ULuhA09Yy3AskTXrxOdPv3foouIaODAf4qtqVPr\n/+vhgct/AAAAxkSlUlF4eDitXr2ahg0bxnc4bSLYkbGSEqLERKKrV+uLqz//JLpx4989Wo2pqKhv\nSm9spKtiVhpRAAAgAElEQVRrVxRdAAAAxo6bLfnss8/SO++80yGzJZtiVpcpq6uJ4uKI1q6t78kK\nCCDy9KwfvXJ3r19F/F5sbf/b3wUAAADGj2EYiomJofj4eEpOTjaq2ZJmc5mSZYnmzq0fBfvlFyI/\nP74jAn3Q+yBcyJ2wIX/Chdw1TS6X0/Xr1ykvL488PT35DqfdCKYYy8oievnl+qUdlErMSAQAADA3\nERER5OvraxSXJduTIC5T3rlD1KcP0XvvEcnlmMEIAAAAxsWke8ZYlujxx+sXQ926le+oAAAAAP6r\nLcWY0Y8xbdpEVFxcP3MShCMrK4vvEKCVkDthQ/6EC7n7h1KppLi4OL7D6DBGXYxVVRF98AHRmjVE\nlpZ8RwMAAACGxDAMRUZG0uzZs6lv3758h9NhjPoy5QcfsJSbS7R9O9/RAAAAgCGpVCqSyWSk0Wgo\nLS1NcLMlTfYy5dmzRA8/zHcUAAAAYEg5OTkUGBhIQUFBpFAoBFeItZVRF2OFhUQ9evAdBbQGeh+E\nC7kTNuRPuMw5d56enpSYmEhRUVEmt2xFcxj1My4urv8ybgAAADBdUqmUpGb8gW/UPWMODiwVFBA5\nO/MdDQAAAIB+JtszVl1N5OTEdxQAAADQHhiGodTUVNJqtXyHYlSMuhhzdiYStarGBL6Zc++D0CF3\nwob8CZep506lUlFYWBglJCSQWq3mOxyjYtTFmL093xEAAABAWymVSgoMDKTg4GBSKBTk4ODAd0hG\nxah7xoYNYykvj+9IAAAAoDUYhqHo6GiKj4+nlJQUCg0N5Tskg2lLz5hRz6bEyBgAAIBwsSxLFRUV\nlJ+fb3Zrh7WEUV+mtLbmOwJoLVPvfTBlyJ2wIX/CZYq5k0gkFBsbi0KsCUZdjHXqxHcEAAAAAIZl\n1D1jM2eytG0b35EAAABAU1QqFYnFYnJzc+M7FF6Y7DpjVlZ8RwAAAABN4WZLHjhwgO9QBMmoizGx\nUUcH92KKvQ/mArkTNuRPuISYO4ZhKDIykmQyGSUlJZFcLuc7JEEy6tmUAAAAYJxUKhXJZDLSaDSU\nl5eHJv02MOqesfBwlhIT+Y4EAAAAGoqJiaHq6mqKiIggiQRjOya7zhgAAAAYp+XLl/MdgslAVxYY\nhBB7H6AecidsyJ9wIXfmy6iLMXxJOAAAAP+qqqr4DsGkGXXP2Jw5LG3ZwnckAAAA5on7bsn09HTK\nzc0lEUZJ9ELPGAAAALQr3dmS6enpKMQMyKgvU4JwofdBuJA7YUP+hMuYcsct4hoUFEQKhQLLVhgY\nRsYAAADgbwUFBSSXyykpKYlCQ0P5DscsoGcMAAAA/qWqqopsbGz4DkNQTPa7KXF5GgAAoOOhEOtY\nRl2MgXAZU+8DtAxyJ2zIn3Ahd+YLxRgAAIAZUqlUNGHCBMrPz+c7FLOHYgwMIiQkhO8QoJWQO2FD\n/oSrI3PHzZYcMWIEBQQEdNh5oXGYTQkAAGAmGIahmJgYio+Pp+TkZMyWNBJGPTKGBn7hQu+DcCF3\nwob8CVdH5E4ul1NmZibl5eWhEDMiGBkDAAAwExEREeTr60sSCT7+jYlRrzP27LMsffEF35EAAAAA\n3JvJrjMGAAAAYOpQjIFBoG9FuJA7YUP+hKs9c6dUKikuLq7dHg8MC8UYAACAiWAYhiIjI2n27NnU\nt29fvsOBZjLqnrHnnmNp82a+IwEAADB+KpWKZDIZaTQaSktLI09PT75DMivoGQMAADBjOTk5FBgY\nSEFBQaRQKFCICQyKMTAI9K0IF3InbMifcLUld56enpSYmEhRUVFYtkKAkDEAAACBk0qlJJVK+Q4D\nWgk9YwAAAABtZLI9Y/g6JAAAgH8wDEOpqamk1Wr5DgXakVEXYyBc6FsRLuRO2JA/4WoqdyqVisLC\nwighIYHUanXHBAUdAsUYAACAkVMqlRQYGEjBwcGkUCjIwcGB75CgHRl1z9jzz7P0+ed8RwIAAMAP\nhmEoOjqa4uPjKSUlhUJDQ/kOCfQwup6xjIyM8X5+fuf69OlzYc2aNcsa3l5SUuI6fvz4jCFDhhwb\nNGjQqaSkpHBDxAEAACBkLMtSRUUF5efnoxAzYe1ejDEMY7Fw4cK4jIyM8WfOnBmwbdu2WWfPnu2v\ne0xcXNzCoUOHHj127NiQrKyskFdffTVWo9H8Z5kNNPALF/pWhAu5EzbkT7gay51EIqHY2Fgs4mri\n2r0Yy8nJGenr63vRx8en0NLSsm7mzJlf7d69+1HdYzw8PK5XVlbaExFVVlbau7i4lEokEk17xwIA\nAABg7Np90dfi4mIvb2/vIm5fKpVey87OHqV7zPPPP7957NixBz09Pf9Uq9V2X3/99ZONPVZWVjit\nWuVDRESOjo40ZMgQCgkJ+f/bsoiIsG+k+9zvjCUe7Dd/PyQkxKjiwT7yZy77/fv3p5s3b9Lp06eN\nIh7s33uf+7mwsJDaqt0b+Hft2jUtIyNj/ObNm58nItq6das8Ozt71Pr16xdxx6xevXplSUmJ68cf\nf7zk0qVLvUNDQ388fvx4gJ2d3d9zdUUiEfvCCyxt2tSu4QEAABgdpVJJcrmc1qxZQ3K5nO9woBWM\nqoHfy8uruKioyJvbLyoq8pZKpdd0j/ntt9+Cp0+fvoOIqHfv3pd69ux5+fz58/3aOxbgj+5fDiAs\nyJ2wIX/CwjAMRUZGkkwmo1deeQWFmJlq92Js+PDheRcuXOhTWFjoU1tba7V9+/YZU6ZMSdc9xs/P\n75xCoXiYiEilUrmfP3++X69evQraOxYAAABjxS3ievDgQcrLy6Phw4fzHRLwxCDrjO3fv3/CkiVL\nPmYYxuLZZ59NeOutt97btGnTPCKiefPmbSopKXGdM2dO4tWrV7trtVrxW2+99d7s2bPT/hWYSMTO\nm8fSxo3tHh4AAADvYmJiqLq6miIiIkgiafcWbuhgbblMadSLvqIYAwAAACEwqp4xACL0rQgZcids\nyJ9wIXfmC8UYAACAgVVVVfEdAhgxXKYEAAAwEO67JdPT0yk3N5dE+GoZk9WWy5RG3TGIf7MAACBU\nKpWKZDIZaTQaSk9PRyEGeuEyJRgEeh+EC7kTNuTPOCiVSgoMDKSgoCBSKBTN+m5J5M58GfXIGAAA\ngNAUFBSQXC6npKQkCg0N5TscEACj7hmbP5+l+Hi+IwEAAGiZqqoqsrGx4TsM6EBY2gIAAMCIoBCD\nljDqYgy9jsKF3gfhQu6EDfkTLuTOfBl1MQYAAGCsVCoVTZgwgfLz8/kOBQQOxRgYREhICN8hQCsh\nd8KG/HUMbrbkiBEjKCAgoF0eE7kzX5hNCQAA0EwMw1BMTAzFx8dTcnIyZktCu8DIGBgEeh+EC7kT\nNuTPsORyOWVmZlJeXl67F2LInfnCyBgAAEAzRUREkK+vL0kk+PiE9mPU64wtWMDSZ5/xHQkAAADA\nvWGdMQAAAACBQjEGBoHeB+FC7oQN+WsfSqWS4uLiOvScyJ35QjEGAADw/xiGocjISJo9ezb17duX\n73DATKBnDAAAgOoXcZXJZKTRaCgtLY08PT35DgkExGR7xvB1SAAA0BFycnIoMDCQgoKCSKFQoBCD\nDmXUxRgIF3ofhAu5Ezbkr3U8PT0pMTGRoqKieFu2ArkzX1goBQAAzJ5UKiWpVMp3GGCmjLpn7KWX\nWOrgySwAAAAALWayPWMAAADtiWEYSk1NJa1Wy3coAH8z6mIMDfzChd4H4ULuhA3500+lUlFYWBgl\nJCSQWq3mO5z/QO7Ml1EXYwAAAO1BqVRSYGAgBQcHk0KhIAcHB75DAvibUfeMLVzI0vr1fEcCAABC\nxTAMRUdHU3x8PKWkpFBoaCjfIYGJakvPGGZTAgCAyWJZlioqKig/Px9rh4HRwmVKMAj0PggXcids\nyN+/SSQSio2NFUQhhtyZLxRjAAAAADwy6p6xRYtY+vRTviMBAAAhUKlUJBaLyc3Nje9QwAxhnTEA\nADBr3GzJAwcO8B0KQIuhGAODQO+DcCF3wmZu+WMYhiIjI0kmk1FSUhLJ5XK+Q2o1c8sd/AOzKQEA\nQJBUKhXJZDLSaDSUl5cniCZ9gMagZwwAAAQpJiaGqqurKSIigiQSjC0Av0x2nTF8HRIAAOizfPly\nvkMAaBfoGQODQO+DcCF3wob8CRdyZ75QjAEAgNGrqqriOwQAgzHqnrGXX2bpk0/4jgQAAPjCfbdk\neno65ebmkgj9K2CkTLZnDAAAzJfubMn09HQUYmCyjPoyJd53woXeB+FC7oTNVPLHLeIaFBRECoXC\nLJatMJXcQcthZAwAAIxKQUEByeVySkpKotDQUL7DATA4o+4ZW7yYpY8/5jsSAADoaFVVVWRjY8N3\nGADNhu+mBAAAk4JCDMwJijEwCPQ+CBdyJ2zIn3Ahd+YLxRgAAPBCpVLRhAkTKD8/n+9QAHhl1MUY\nZlMKV0hICN8hQCshd8ImlPxxsyVHjBhBAQEBfIdjFISSO2h/mE0JAAAdhmEYiomJofj4eEpOTsZs\nSQAy8pExEC70PggXcidsxp4/uVxOmZmZlJeXh0KsAWPPHRgORsYAAKDDREREkK+vL0kk+PgB4Bj1\nOmNLlrD00Ud8RwIAAABwbya7zhga+AEAAMDUGXUxBsKF3gfhQu6EzVjyp1QqKS4uju8wBMVYcgcd\nD8UYAAC0G4ZhKDIykmbPnk19+/blOxwAQTDqnrFXXmFp3Tq+IwEAgOZQqVQkk8lIo9FQWloaeXp6\n8h0SQIcx2Z4xAAAQhpycHAoMDKSgoCBSKBQoxABaAMUYGAR6H4QLuRM2vvLn6elJiYmJFBUVhWUr\nWgnvPfNl1O8YzKYEABAGqVRKUqmU7zAABMmoe8aWLmUpNpbvSAAAAADuDT1jAADQIRiGodTUVNJq\ntXyHAmAyUIyBQaD3QbiQO2EzZP5UKhWFhYVRQkICqdVqg53HXOG9Z75QjAEAQJOUSiUFBgZScHAw\nKRQKcnBw4DskAJNh1D1jr77K0ocf8h0JAID5YhiGoqOjKT4+nlJSUig0NJTvkACMUlt6xox6NiUA\nAPCLZVmqqKig/Px8rB0GYCC4TAkGgd4H4ULuhK298yeRSCg2NhaFWAfAe898oRgDAAAA4BF6xgAA\ngIjqZ0uKxWJyc3PjOxQAwTHZdcawAj8AQMfgZkseOHCA71AAzI5RF2MgXOh9EC7kTthamj+GYSgy\nMpJkMhklJSWRXC43TGDQJLz3zBdmUwIAmCmVSkUymYw0Gg3l5eWhSR+AJ0bdM/baayx98AHfkQAA\nmKaYmBiqrq6miIgIkkjwtzlAW2CdMQAAaLHly5fzHQIAEHrGwEDQ+yBcyJ2wIX/ChdyZL6MuxjCb\nEgCgfVRVVfEdAgDoYdQ9Y6+/ztLatXxHAgAgXNx3S6anp1Nubi6J8FcugEEY3TpjGRkZ4/38/M71\n6dPnwpo1a5Y1dkxWVlbI0KFDjw4aNOhUSEhIliHiAAAwZyqVisLCwujgwYOUnp6OQgzASLV7McYw\njMXChQvjMjIyxp85c2bAtm3bZp09e7a/7jG3bt1yfOmllz7bs2fP5FOnTg3auXPnE+0dB/ALvQ/C\nhdwJG5c/bhHXoKAgUigUWLZCAPDeM1/NLsbu3Llj3ZzjcnJyRvr6+l708fEptLS0rJs5c+ZXu3fv\nflT3mLS0tNnTpk3bJZVKrxERubq6lrQsbAAA0KegoIDkcjklJSVRVFQUlq0AMHJNvkN/++234Oee\ne+4LtVptV1RU5H3s2LEhn3/++QsbNmxY0NjxxcXFXt7e3kXcvlQqvZadnT1K95gLFy70qaursxwz\nZoxSrVbbLV68+JOnnnoqteFj7d8fTtbWPkRE5OjoSEOGDKGQkBAi+ucvCOwb5z73O2OJB/vN3w8J\nCTGqeLDfuvwlJCRQaGgo7/FgH/umus/9XFhYSG3VZAP/yJEjc3bu3PnEo48+uvvo0aNDiYgGDhx4\n+vTp0wMbO37Xrl3TMjIyxm/evPl5IqKtW7fKs7OzR61fv34Rd8zChQvjjhw5EpiZmfnQnTt3rIOC\ngn7//vvvH+nTp8+FvwMTidg33mBpzZo2P0cAAAAAgzJ4A3/37t2v6u5LJBKNvmO9vLyKi4qKvLn9\noqIib+5yJMfb27to3LhxP3Tp0qXaxcWl9IEHHvj5+PHjAS0NHoyX7l8OICzInbAhf8KF3JmvJoux\n7t27Xz106NB9RES1tbVWH3744Wv9+/c/q+/44cOH5124cKFPYWGhT21trdX27dtnTJkyJV33mEcf\nfXT3r7/+ej/DMBZ37tyxzs7OHjVgwIAzbX86AADmQ6VS0YQJEyg/P5/vUACgDZosxuLj41/87LPP\nXiouLvby8vIqPnr06NDPPvvsJX3HSyQSTVxc3MKwsLADAwYMODNjxozt/fv3P7tp06Z5mzZtmkdE\n5Ofnd278+PEZgwcPPjFq1Kjs559/fjOKMdPCXVsH4UHuhIGbLTlixAgKCPjnwgLyJ1zInflqsmfs\n0KFD9913332HmvpduwcmErHLlrH0/vuGPAsAgLAwDEMxMTEUHx9PycnJfzfpAwC/DNoztnDhwrjm\n/A5AF3ofhAu5M25yuZwyMzMpLy+v0UIM+RMu5M586V3a4vfffw/67bffgm/evOm2bt26pVy1p1ar\n7bRabbMa/wEAoH1FRESQr68v1g4DMCF63821tbVWarXajmEYC7Vabcf93t7evhIr5kNT0PsgXMid\ncfPz87vn7cifcCF35qvJnrHCwkIfHx+fwo4J5x/oGQMAAAChMGjPmLW19Z3XXnvtw4kTJ+4bM2aM\ncsyYMcqxY8cebM3JwHyg90G4kDvjoFQqKS6u5e25yJ9wIXfmq8liTCaTfenn53euoKCg16pVq1b5\n+PgUDh8+PK8jghO1qr4EABAuhmEoMjKSZs+eTX379uU7HADoAE1epgwMDDxy5MiRwMGDB584ceLE\nYKL6hV3z8vKGGzQwkYh9802W3nvPkGcBADAeKpWKZDIZaTQaSktLI09PT75DAoBmMuhlSisrq1oi\nom7dut3Yu3fvpCNHjgSWl5c7teZkAADQuJycHAoMDKSgoCBSKBQoxADMSJPF2IoVK6Jv3brlGBsb\n++qHH3742nPPPffFRx999EpHBAfChd4H4ULu+OHp6UmJiYkUFRXVpmUrkD/hQu7MV5Pv+MmTJ+8h\nInJ0dLyVlZUVQkSUk5Mz0sBxAQCYFalUSlKplO8wAIAHenvGtFqt+Ntvv5166dKl3oMGDTo1ceLE\nfXl5ecOXL18e89dff3U9duzYEIMGJhKxb73FUkyMIc8CAAAA0HYG6Rl74YUXPt+wYcOC8vJyp9Wr\nV6+cNm3armeeeSZ5wYIFG44ePTq09eECAJgvhmEoNTWVtFot36EAgJHQe5ny8OHDo0+cODFYLBZr\na2pqOnfr1u3GpUuXeru4uJR2ZIAgTFlZWVhNWqCQO8PRnS05ZcoUcnBwaPdzIH/ChdyZL70jY5aW\nlnVisVhLRNS5c+eanj17XkYhBgDQOkqlkgIDAyk4OJgUCoVBCjEAECa9PWNdunSp9vX1vcjtX7p0\nqXfv3r0vEdX3c3FrjhksMPSMAYAJYBiGoqOjKT4+nlJSUig0NJTvkADAANrSM6b3MuXZs2f7tz6k\n9oEV+AFA6FiWpYqKCsrPz8faYQDQKL3FGB9fDg6mA70PwoXctS+JREKxsbEddj7kT7iQO/PV5KKv\nAAAAAGA4TX43JV9EIhG7fDlL0dF8RwIA0DwqlYrEYjG5ubnxHQoAdDCDfjclEdGdO3esz58/3681\nJwAAMAfcbMkDBw7wHQoACEyTxVh6evqUoUOHHg0LCztARHT06NGhU6ZMSTd8aCBk+I414ULuWoZh\nGIqMjCSZTEZJSUkkl8t5jQf5Ey7kznw1+d2Uq1atWpWdnT1qzJgxSiKioUOHHi0oKOhl+NAwmxIA\njJvuIq55eXmYLQkArdLkyJilpWWdo6PjrX/d6f8XgwXQBzOChAu5a76EhAQKCgoihUJhNIUY8idc\nyJ35anJkbODAgae//PJLmUajkVy4cKHPp59++nJwcPBvHREcAIAxW758Od8hAIAJaHJkbP369YtO\nnz49sFOnTndnzZq1zd7evvLjjz9e0hHBgXCh90G4kDthQ/6EC7kzX02OjJ0/f75fTEzM8piYGPwJ\nCABmq6qqimxsbPgOAwBMUJPrjIWEhGTduHGj2/Tp03fMmDFj+6BBg051SGAiEbtyJUtRUR1xNgCA\nxnHfLZmenk65ubkkwswiAGiEQdcZy8rKClEqlWNcXV1L5s2bt8nf3/9kVFTU2605GQCAkKhUKgoL\nC6ODBw9Seno6CjEAMIhmLfrq4eFxffHixZ9s3LhxfkBAwPHIyMh3DB0YCBt6H4QLuavHLeJqbLMl\nm4L8CRdyZ76a7Bk7c+bMgK+//vrJnTt3PuHi4lI6Y8aM7evWrVvaEcEBAPChoKCA5HI5JSUlUWho\nKN/hAICJa7JnbPTo0Ydnzpz51fTp03d4eXkVd1Bc6BkDAF6hYR8AWqItPWNNjowdPnx4dGseuD2g\nPQMA+IJCDAA6it6esenTp+8gIvL39z/ZcBs8ePCJjgsRhAi9D8KF3Akb8idcyJ350jsy9sknnywm\nItq7d++khsNuIpHo3tc2AQAEQKVSUXh4OK1evZqGDRvGdzgAYKb0jox5enr+SUS0YcOGBT4+PoW6\n24YNGxZ0XIggRPiONeEyl9xxsyVHjBhBAQEBfIfTbswlf6YIuTNfTS5t8cMPP4xr+Lt9+/ZNNEw4\nAACGxTAMRUVFkUwmo6SkJIqMjCSJpMn2WQAAg9FbjMXHx7/o7+9/8vz58/10+8V8fHwK0TMGTUHv\ng3CZeu7kcjllZmZSXl6eSS5bYer5M2XInfnS++fg7Nmz0yZMmLD/zTfffH/NmjXLuL4xOzs7tYuL\nS2lHBIfZlADQ3iIiIsjX1xejYQBgNPSuM1ZZWWlvb29fWVpa6tJYw76zs3OZQQMTidh33mHp3XcN\neRYAAACAtjPIOmOzZs3a9v333z8ybNiw/MaKscuXL/dszQkBAAAA4B96e8a+//77R4iICgsLfS5f\nvtyz4dZxIYIQofdBuEwld0qlkuLi4vgOo8OZSv7MEXJnvpqcTXno0KH7bt++bUtElJqa+tTSpUvX\nXblypYfhQwMAaDmGYSgyMpJmz55Nffv25TscAIAmNfndlP7+/iePHz8ecPLkSf/w8PCkZ599NmHH\njh3Tf/rppwcNGhh6xgCghVQqFclkMtJoNJSWlkaenp58hwQAZqItPWNNjoxJJBKNWCzWfvfdd4+9\n9NJLny1cuDBOrVbbteZkAACGkpOTQ4GBgRQUFEQKhQKFGAAIRpPFmJ2dnTomJmb51q1b5ZMmTdrL\nMIxFXV2dZUcEB8KF3gfhEmruPD09KTExkaKiosx62Qqh5g+QO3PWZDG2ffv2GZ06dbq7ZcuWud26\ndbtRXFzs9frrr3/QEcEBADSXVCqlceP+84UhAABGr8meMSKiGzdudMvNzR0hEonYkSNH5nTt2vUv\ngweGnjEAAAAQCIP2jH399ddPjho1KnvHjh3Tv/766ydHjhyZs2PHjumtORkAQFsxDEOpqamk1Wr5\nDgUAoF00WYytXr16ZW5u7oiUlJSnU1JSns7NzR0RFRX1dkcEB8KF3gfhMubcqVQqCgsLo4SEBFKr\n1XyHY5SMOX9wb8id+WqyGGNZVuTm5naT23dxcSlt7TAcAEBrKZVKCgwMpODgYFIoFOTg4MB3SAAA\n7aLJKUfjx4/PCAsLOzB79uw0lmVF27dvnzFhwoT9HREcCFdISAjfIUArGVvuGIah6Ohoio+Pp5SU\nFAoNDeU7JKNmbPmD5kPuzFeTxdgHH3zw+jfffPP4r7/+ej8R0bx58zZNnTr1W8OHRiTC+BuA2WNZ\nlioqKig/Px9rhwGASdJ7mfKPP/7o++ijj+4eOHDg6R07dkxfunTpunXr1i3tqEIMhA29D8JlbLmT\nSCQUGxuLQqyZjC1/0HzInfnSW4zNnTt3y6RJk/bu2rVrWmBg4JGXX375044MDAAAAMAc6F1nbMiQ\nIceOHTs2hNsfOnTo0aNHjw7tsMBEIjYigqVVqzrqjADAN5VKRWKxmNzc3PgOBQCgRdqyzpjenrGa\nmprOR44cCSSqn1FZXV3d5ciRI4Esy4pEIhEbGBh4pLUBAwA0pFQqSS6X05o1a0gul/MdDgBAh9E7\nMhYSEpIlEon+vpErwrh9pVI5xqCBYWRM0LKysjAzSKA6OnfcbMmNGzdScnIyZku2Ed57woXcCZtB\nRsaysrJCWh0RAEAzqFQqkslkpNFoKC8vD036AGCWmvXdlHzAyBiA6YuJiaHq6mqKiIggiaTJlXYA\nAIyWQUbGAAAMbfny5XyHAADAuya/DgmgNbBejnAhd8KG/AkXcme+mizGtFqtODU19anIyMh3iIiu\nXr3aPScnZ6ThQwMAU1JVVcV3CAAARqnJnrH58+dvFIvF2oMHD449d+6cX1lZmfO4ceN+yMvLG27Q\nwNAzBmASuNmS6enplJubSyJ8zxkAmCCD9oxlZ2ePOnr06NChQ4ceJSJydnYuq6urs2zNyQDAvOjO\nlkxPT0chBgDQiCYvU1pZWdUyDGPB7d+8edNNLBZrDRsWCB16H4SrvXKnVCopMDCQgoKCSKFQYNmK\nDoL3nnAhd+aryZGxRYsWrZ86deq3f/31V9fly5fH7Ny584nVq1ev7Ijg8Ec0gDAVFBSQXC6npKQk\nLOIKANCEZq0zdvbs2f6ZmZkPERE99NBDmf379z9r8MBEInbVKpYiIgx9JgAwhKqqKrKxseE7DACA\nDmHQnrGrV692t7GxqZo8efKe/z8Ze/Xq1e7du3e/2poTAoB5QCEGANA8TRZjEydO3Md9J2VNTU3n\ny5cv9+zXr9/506dPDzR8eCBU+I414ULuhA35Ey7kznw12cB/6tSpQSdPnvQ/efKk/4ULF/rk5OSM\nHOEH4hYAACAASURBVD169OGOCA4AjJtKpaIJEyZQfn4+36EAAAhWi1fgDwwMPJKdnT3KEMGA6cBf\nd8LV3NxxsyVHjBhBAQEBhg0Kmg3vPeFC7sxXk5cpY2NjX+V+1mq14iNHjgR6eXkVGzYsADBWDMNQ\nTEwMxcfHU3JyMmZLAgC0UZMjY7dv37blttraWqtJkybt3b1796MdERwIF9bLEa6mcieXyykzM5Py\n8vJQiBkhvPeEC7kzX/ccGWMYxqKystJed3QMAMxbREQE+fr6kkTS5MA6AAA0g951xjQajUQikWhG\njx59+Pfffw/iZlR2WGBYZwwAAAAEoi3rjOm9TDly5MgcIqIhQ4Yce/TRR3enpqY+tWvXrmm7du2a\n9s033zx+rwfNyMgY7+fnd65Pnz4X1qxZs0zfcbm5uSMkEommqccDAAAAMFV6izGuuqupqens4uJS\nevDgwbF79+6dtHfv3kl79uyZrO9+DMNYLFy4MC4jI2P8mTNnBmzbtm3W2bNn+zd23LJly9aMHz8+\no7WVJBgv9D4IF5c7pVJJcXFx/AYDLYb3nnAhd+ZLb9PHzZs33datW7fU39//ZEseMCcnZ6Svr+9F\nHx+fQiKimTNnfrV79+5HG36F0vr16xc98cQTO3Nzc0foe6zvvgsnlvUhIiJHR0caMmTI31N/uX+0\n2DfO/WPHjhlVPNhv/r5Wq6U5c+ZQeno6bdu2jfd4sI99c9nnGEs82L/3PvdzYWEhtZXenjEPD4/r\n8+fP36jvjhEREe829vudO3c+ceDAgbDNmzc/T0S0detWeXZ29qj169cv4o4pLi72ksvlWw8ePDh2\n7ty5WyZPnrzn8ccf/+ZfgaFnDKDDqVQqkslkpNFoKC0tjTw9PfkOCQBAEAzy3ZTdunW7oa/gaiKY\nJhv9lyxZ8vH777//pkgkYlmWFekLXoSLlwAdJicnh6ZOnUpz586liIgIzJYEAOgg7f5/Wy8vr+Ki\noiJvbr+oqMhbKpVe0z0mPz9/2MyZM78iIiopKXHdv3//BEtLy7opU6akt3c8wI+srKy/h3RBGDw9\nPSkxMZGsrKxQiAkY3nvChdyZL73/x1UoFA+35gGHDx+ed+HChT6FhYU+np6ef27fvn3Gtm3bZuke\nU1BQ0Iv7ec6cOYmTJ0/eg0IMgF9SqZSkUul/+lcAAMCw9BZjLi4upa16QIlEExcXtzAsLOwAwzAW\nzz77bEL//v3Pbtq0aR4R0bx58za1NlgQDvx1J1zInbAhf8KF3JkvvQ38fBOJROy777L0zjt8RwJg\nWhiGobS0NJLJZCQWi/kOBwDAJBhk0VeAtsClLuOkUqkoLCyMEhISSK1WN3oMcidsyJ9wIXfmC8UY\ngJlQKpUUGBhIwcHBpFAoyMHBge+QAACAcJkSwOQxDEPR0dEUHx9PKSkpFBoayndIAAAmxyDrjAGA\naWBZlioqKig/Px+LuAIAGCFcpgSDQO+D8ZBIJBQbG9vsQgy5EzbkT7iQO/OFYgwAAACAR+gZAzAh\nKpWKxGIxubm58R0KAIBZwdIWAPD3bMkDBw7wHQoAALSAURdj+KJw4ULvQ8dhGIYiIyNJJpNRUlIS\nyeXyNj0ecidsyJ9wIXfmC7MpAQRMpVKRTCYjjUZDeXl5mC0JACBARt0zFhnJ0ttv8x0JgPGKiYmh\n6upqioiIIIkEf1sBAPAF64wBmKnly5fzHQIAALSRUfeMgXCh90G4kDthQ/6EC7kzXyjGAASiqqqK\n7xAAAMAA0DMGYOS475ZMT0+n3NxcEmGaMQCA0UHPGICJ0p0tmZ6ejkIMAMAE4TIlGAR6H9qOW8Q1\nKCiIFApFhy1bgdwJG/InXMid+cLIGIARKigoILlcTklJSRQaGsp3OAAAYEDoGQMwUlVVVWRjY8N3\nGAAA0Az4bkoAE4RCDADAPKAYA4NA74NwIXfChvwJF3JnvlCMAfBIpVLRhAkTKD8/n+9QAACAJ0Zd\njGEWv3CFhITwHYLR42ZLjhgxggICAvgO52/InbAhf8KF3JkvzKYE6GAMw1BMTAzFx8dTcnIyZksC\nAJg5ox4ZA+FC74N+crmcMjMzKS8vzygLMeRO2JA/4ULuzBdGxgA6WEREBPn6+pJEgrcfAAAY+Tpj\nUVEsrVzJdyQAAAAA94Z1xgAAAAAECsUYGAR6H+pnS8bFxfEdRoshd8KG/AkXcme+UIwBtDOGYSgy\nMpJmz55Nffv25TscAAAwcugZA2hHKpWKZDIZaTQaSktLI09PT75DAgCADoCeMQAjkJOTQ4GBgRQU\nFEQKhQKFGAAANAuKMTAIc+x98PT0pMTERIqKihL0shXmmDtTgvwJF3JnvoT7iQFgZKRSKUmlUr7D\nAAAAgUHPGAAAAEAboWcMoAMxDEOpqamk1Wr5DgUAAEyAURdjolbVl2AMTLX3QaVSUVhYGCUkJJBa\nreY7HIMw1dyZC+RPuJA782XUxRiAMVEqlRQYGEjBwcGkUCjIwcGB75AAAMAEGHXP2OrVLK1YwXck\nYO4YhqHo6GiKj4+nlJQUCg0N5TskAAAwMm3pGcNsSoAmsCxLFRUVlJ+fj7XDAACg3eEyJRiEKfU+\nSCQSio2NNZtCzJRyZ46QP+FC7swXijEAAAAAHqFnDECHSqUisVhMbm5ufIcCAAACgnXGANoBN1vy\nwIEDfIcCAABmBMUYGISQeh8YhqHIyEiSyWSUlJREcrmc75B4JaTcwX8hf8KF3JkvzKYEs6ZSqUgm\nk5FGo6G8vDyzadIHAADjgZ4xMGsxMTFUXV1NERERJJHgbxMAAGgdrDMG0ErLly/nOwQAADBz6BkD\ng0Dvg3Ahd8KG/AkXcme+UIyB2aiqquI7BAAAgP8w6p6x6GiWcBUJ2or7bsn09HTKzc0lkahVl/QB\nAAD0Qs8YgB66syXT09NRiAEAgNHBZUowCGPofeAWcQ0KCiKFQoFlK5rJGHIHrYf8CRdyZ74wMgYm\nqaCggORyOSUlJVFoaCjf4QAAAOiFnjEwWVVVVWRjY8N3GAAAYAbw3ZQAjUAhBgAAQoBiDAwCvQ/C\nhdwJG/InXMid+UIxBoKmUqlowoQJlJ+fz3coAAAArYJiDAwiJCTE4OfgZkuOGDGCAgICDH4+c9ER\nuQPDQf6EC7kzX5hNCYLDMAzFxMRQfHw8JScnY7YkAAAIGkbGwCAM2fsgl8spMzOT8vLyUIgZAPpW\nhA35Ey7kznxhZAwEJyIignx9fUkiwT9fAAAQPqwzBgAAANBGWGcMAAAAQKCMuhjDdzoLV3v0PiiV\nSoqLi2t7MNAi6FsRNuRPuJA782XUxRiYJ4ZhKDIykmbPnk19+/blOxwAAACDMuqesZgYlt56i+9I\noCOpVCqSyWSk0WgoLS2NPD09+Q4JAACgSegZA5OQk5NDgYGBFBQURAqFAoUYAACYBRRjYBCt6X3w\n9PSkxMREioqKwrIVPELfirAhf8KF3JkvfOKB0ZBKpSSVSvkOAwAAoEOhZwwAAACgjdAzBoLCMAyl\npqaSVqvlOxQAAADeoRgDg9DX+6BSqSgsLIwSEhJIrVZ3bFDQLOhbETbkT7iQO/OFYgw6jFKppMDA\nQAoODiaFQkEODg58hwQAAMA7gxRjGRkZ4/38/M716dPnwpo1a5Y1vP3LL7+UBQQEHB88ePCJ++67\n79CJEycGGyIO4E9ISMjfP+su4pqUlESRkZGYLWnEdHMHwoP8CRdyZ77a/RORYRiLhQsXxikUioe9\nvLyKR4wYkTtlypT0/v37n+WO6dWrV8HPP//8gIODQ0VGRsb4F1544fPDhw+Pbu9YwDiwLEsVFRWU\nn5+PtcMAAAAaaPeRsZyc/2vv7qOirNM+gF8Dg0n4vmAnGFrKwXdmmBGFwVA8RoMvWY1tqUOJL+S6\nq7lbWooahUJW2HlSWh51kVHMUvEFSgXFxjR8QQYEEjNQUCB30kLBEWVmuJ8/3Hl2YsVGGLjnx3w/\n5/zO6Y577rngm3mdm+v+Tf4osVhc4efnV+Xm5macNm3al5mZmc9bn6NQKE727t37JhFRcHDw6Zqa\nGuxn0MVYzz4IhUJau3YtGjFGYG6FbciPXcjOedn9zlhtba2Pr69vteVYJBLVnD59Ori181NTU+dM\nnDjxwP2+lpERTXfv+hERUZ8+fSgwMPD/b+Na/qPFsWMenz171qHqwTGOcYxjRz+2cJR6cPzgY8s/\nV1VVUXvZfZ+x3bt3T83Ozo7ctGlTDBHRtm3bok6fPh28fv36hS3P1Wq14/76179+lpeXN7pv3751\nvylMIOA++ICjpUvtWh50ML1eTy4uLuTl5cV3KQAAAJ3GofYZ8/Hxqa2urva1HFdXV/uKRKKalueV\nlJRIYmJiNmVlZU1p2YgBmyxPS+bk5PBdCgAAADPs3owFBQUVlJeX+1dVVfk1NTV127FjxytTpkzJ\nsj7nypUrT6hUqj3btm2LEovFFfauATqX5WlJtVpNGo2GoqKi/uu2O7AD2bEN+bEL2Tkvu8+MCYVC\nU3Jy8gKlUpljNptd58yZkzpkyJDzGzZsmEdENG/evA3x8fHv1tXV9Z0/f34KEZGbm5sxPz9/lL1r\ngY6n1+tJrVaTyWSigoICDOkDAAA8JIf+bErMjDm+xMREamxspLi4OOwdBgAATqs9M2P42xPaJTY2\nlu8SAAAAmGb3mTEAIsw+sAzZsQ35sQvZOS80Y2Azg8HAdwkAAABdDmbG4HeZzWZKSEigrKwsOnPm\nDAkEbfqVOAAAQJeFmTHoMNZPS2ZlZaERAwAAsDP8mhJaZdnEVaFQUG5u7kNtW4HZB3YhO7YhP3Yh\nO+eFO2NwX5cuXaKoqCjSaDQUERHBdzkAAABdFmbGoFUGg4E8PDz4LgMAAMDhOdRnU0LXgUYMAACg\n4zl0M4ZZcXZh9oFdyI5tyI9dyM55OXQzBh1Pr9fThAkTSKfT8V0KAACAU0Iz5sQsT0uOHDmSpFKp\nXa8dHh5u1+tB50F2bEN+7EJ2zgtPUzohs9lMiYmJlJKSQlu2bMHTkgAAADzCnTEnFBUVRUeOHKGC\ngoIOa8Qw+8AuZMc25McuZOe8cGfMCcXFxZFYLCahEPEDAADwzaH3GVuzhqN33uG7EgAAAIAHwz5j\nAAAAAIxCM9aFabVaSk5O5uW9MfvALmTHNuTHLmTnvNCMdUFms5ni4+NpxowZNHDgQL7LAQAAgAfA\nzFgXo9frSa1Wk8lkou3bt5O3tzffJQEAAHR5mBkDIiLKz88nuVxOCoWCcnNz0YgBAAAwAM1YF+Lt\n7U1paWm0atUq3retwOwDu5Ad25Afu5Cd88JGU12ISCQikUjEdxkAAADwEBx6ZuzDDzl6+22+KwEA\nAAB4MMyMORmz2Uzp6enU3NzMdykAAADQTmjGGKPX60mpVFJqaio1NDTwXU6rMPvALmTHNuTHLmTn\nvNCMMUSr1ZJcLqfQ0FDKzc2l3r17810SAAAAtBNmxhhgNpspISGBUlJSaOvWrRQREcF3SQAAAGCl\nPTNjeJqSARzH0c2bN0mn02HvMAAAgC4Gv6ZkgFAopLVr1zLViGH2gV3Ijm3Ij13IznmhGQMAAADg\nEWbGHIxerycXFxfy8vLiuxQAAACwEfYZ6yIsT0vm5OTwXQoAAAB0EjRjDsBsNlN8fDyp1WrSaDQU\nFRXFd0nthtkHdiE7tiE/diE754WnKXmm1+tJrVaTyWSigoICpob0AQAAoP0wM8azxMREamxspLi4\nOBIK0RsDAACwCPuMMSw2NpbvEgAAAIBHDj0zJmhTfwmOALMP7EJ2bEN+7EJ2zsuhm7GuxmAw8F0C\nAAAAOBiHnhn76COOlizhu5L2s3y2ZFZWFp05c4YEuOUHAADQpWBmzIFZPy2ZlZWFRgwAAAB+A7+m\n7ECWTVwVCgXl5uY61bYVmH1gF7JjG/JjF7JzXrgz1kEuXbpEUVFRpNFoKCIigu9yAAAAwEFhZqwD\nGQwG8vDw4LsMAAAA6GD4bEoHhUYMAAAAfg+aMegQmH1gF7JjG/JjF7JzXmjG2kmv19OECRNIp9Px\nXQoAAAAwCM1YO1ielhw5ciRJpVK+y3Eo4eHhfJcAbYTs2Ib82IXsnBeepmwDs9lMiYmJlJKSQlu2\nbMHTkgAAANBmuDPWBlFRUXTkyBEqKChAI9YKzD6wC9mxDfmxC9k5L9wZa4O4uDgSi8UkFOLHBwAA\nAO3j0PuMffwxR4sX810JAAAAwINhnzEAAAAARqEZewCtVkvJycl8l8EkzD6wC9mxDfmxC9k5LzRj\n92E2myk+Pp5mzJhBAwcO5LscAAAA6MIwM9aCXq8ntVpNJpOJtm/fTt7e3p1bAAAAADAHM2N2kp+f\nT3K5nBQKBeXm5qIRAwAAgA6HZsyKt7c3paWl0apVq7BtRTth9oFdyI5tyI9dyM55oeOwIhKJSCQS\n8V0GAAAAOBHMjAEAAAC0E2bGHpLZbKb09HRqbm7muxQAAABwck7XjOn1elIqlZSamkoNDQ18l9Nl\nYfaBXciObciPXcjOeTlVM6bVakkul1NoaCjl5uZS7969+S4JAAAAnJxTzIyZzWZKSEiglJQU2rp1\nK0VERLT/ogAAAAD/1p6ZMad4mpLjOLp58ybpdDrsHQYAAAAOxaF/TSloU3/534RCIa1duxaNWCfC\n7AO7kB3bkB+7kJ3zcuhmDAAAAKCrc+iZsaQkjt566+Fep9frycXFhby8vDqmMAAAAIAWsM/Yv1me\nlszJyeG7FAAAAACbdIlmzGw2U3x8PKnVatJoNBQVFcV3SU4Psw/sQnZsQ37sQnbOi/mnKfV6PanV\najKZTFRQUIAhfQAAAGAK8zNjiYmJ1NjYSHFxcSQUMt9bAgAAAIOcep+x2NhYvksAAAAAaLMuMTMG\njgezD+xCdmxDfuxCds6LqWbMYDDwXQLY6OzZs3yXAG2E7NiG/NiF7JxXhzRj2dnZkYMHD/7B39+/\n/MMPP3znfue88cYb6/z9/culUmlxUVGR7EHXszwtGR4eTo464wa/dePGDb5LgDZCdmxDfuxCds7L\n7s2Y2Wx2XbBgQXJ2dnZkWVnZ0C+++GL6+fPnh1ifc+DAgYkVFRXi8vJy/40bN74+f/78lNaup9fr\nSalU0jfffEOZmZkksNdnJAEAAAA4ALs3Y/n5+aPEYnGFn59flZubm3HatGlfZmZmPm99TlZW1pSZ\nM2duISIKDg4+fePGjT56vf6xlteqqLi3iatCoaDc3FxsW8GQqqoqvkuANkJ2bEN+7EJ2TozjOLuu\nXbt2vTR37txNluP09PSoBQsWrLc+Z/LkyV/l5eWFWo7Hjx+fW1BQMML6HCLisLCwsLCwsLBYWW3t\nney+tYVAIOBsOa/lXhwtX9fWvToAAAAAWGL3X1P6+PjUVldX+1qOq6urfUUiUc2DzqmpqRH5+PjU\n2rsWAAAAAEdn92YsKCiooLy83L+qqsqvqamp244dO16ZMmVKlvU5U6ZMydq6detrRESnTp0K6dOn\nz43HHntMb+9aAAAAAByd3X9NKRQKTcnJyQuUSmWO2Wx2nTNnTuqQIUPOb9iwYR4R0bx58zZMnDjx\nwIEDByaKxeIKDw8PQ1pa2ix71wEAAADABHsP8D/sOnjwYOSgQYN+EIvF5WvWrHnnfucsXLhwnVgs\nLpdIJMWFhYUyvmvGsj2/bdu2qSUSSXFAQEBJaGhoXnFxsYTvmrFsy86y8vPzR7q6upp2796t4rtm\nrIfLT6vVhgcGBhYNGzbs+7Fjxx7lu2Ys2/O7du2ap1KpzJZKpWeHDRv2fVpaWjTfNWNxNGvWrM39\n+/fXDx8+vLS1c9rSs/D6TZlMJtcBAwZUVFZW+jU1NblJpdKzZWVlQ6zP2b9//8QJEyYc4DiOTp06\nFRwcHHyK7zCwbM/vxIkTihs3bvTmuHv/80F+jrFsyc5y3rhx476ZNGnS1xkZGVP5rhvL9vzq6ur6\nDB069Fx1dbWI4+795c533Vi25xcXF/fe0qVLP7Bk169fv1+MRqOQ79qdfR07diyssLBQ1loz1tae\nhdePQ7LnnmTQ+WzJT6FQnOzdu/dNonv51dTUiPipFqzZkh0R0fr16xe+9NJLGV5eXtf4qBPuz5b8\ntm/fPmPq1Km7LQ9QeXp6XuenWmjJlvwef/zxq/X19b2IiOrr63v94Q9/+EUoFJr4qRgswsLCjvft\n27euta+3tWfhtRmrra318fX1rbYci0SimtraWp/fOwd/oTsGW/KzlpqaOmfixIkHOqc6eBBb/+xl\nZmY+b/mEDFu3rYGOZ0t+5eXl/r/++mu/cePGaYOCggrS09Nf7fxK4X5syS8mJmbTuXPnhnl7e/8k\nlUqLP/3000WdXyk8rLb2LHYf4H8Y9tqTDPjxMDlotdpxmzdvnp2Xlze6I2sC29iS3d/+9rf/WbNm\nzVKBQMBxHCdo+ecQ+GNLfkaj0a2wsFB+5MiR8bdv335UoVCcDAkJOeXv71/eGTVC62zJLzExMTYw\nMPDs0aNHwy9evDggIiLicHFxsbRnz54NnVEjtF1behZemzHsScY2W/IjIiopKZHExMRsys7OjnzQ\n7V3oPLZkp9PpRkybNu1LIqLr1697Hjx4cIKbm5ux5VY10Plsyc/X17fa09Pzuru7e6O7u3vjmDFj\njhUXF0vRjPHPlvxOnDgRunz58gQiogEDBlx88sknKy9cuDAoKCiooLPrBdu1uWfhcxDOaDQKn3rq\nqYuVlZV+d+/e7fZ7A/wnT54MwQC44yxb8rt8+fITAwYMqDh58mQI3/ViPVx21is6OjoNT1M6zrIl\nv/Pnzw8eP358rslkcjUYDI8OHz689Ny5c0P5rh3Ltvz+/ve/f/Lee+/FcRxH//rXvx7z8fGp+eWX\nX/rxXTsWR5WVlX62DPA/TM/C650x7EnGNlvyi4+Pf7eurq6vZe7Izc3NmJ+fP4rfysGW7PiuEVpn\nS36DBw/+ITIyMlsikZS4uLg0x8TEbBo6dGgZ37WDbfnFxsYmzpo1K00qlRY3Nze7fPTRR2/369fv\nV75rd3bTp0//4ttvvx17/fp1T19f3+r3338/zmg0uhG1r2cRcBzGrwAAAAD4wuvTlAAAAADODs0Y\nAAAAAI/QjAEAAADwCM0YAAAAAI/QjAFAm7m6upplMlmRZV25cuWJ1s7t0aPHrfa+X3R0tOapp566\nJJPJikaMGKE7depUyMNeIyYmZtMPP/wwmOjexprWXxs9enRee2sk+s/PRSKRlKhUqj23bt3q8aDz\ni4uLpQcPHpxgj/cGAPbgaUoAaLOePXs2NDQ09LT3ua2ZNWtW2nPPPfeVSqXac/jw4YjFixcnFRcX\nS9t6PXvU9HvXjY6O1gQEBJS+9dZba1s7X6PRROt0uhHr169faO9aAMDx4c4YANiNwWDweOaZZ3JH\njBihk0gkJVlZWVNannP16tXHx4wZc0wmkxUFBASUfvfdd08TER06dOjZ0NDQEyNGjNC9/PLLOw0G\ng8f93oP790eNhIWFHa+oqBATEX3yySdvBgQElAYEBJRaPsPPYDB4TJo0aX9gYODZgICA0l27dv2J\niCg8PPyoTqcbsXTp0jWNjY3uMpms6NVXX00n+s/du2nTpn154MCBiZb3jI6O1uzZs0fV3NzssmTJ\nko9HjRqVL5VKizdu3Pj67/1MFArFyYsXLw4guvcB0aGhoSfkcnnh6NGj83788ceBTU1N3d599934\nHTt2vCKTyYp27dr1J4PB4DF79uzNwcHBp+VyeeH9fo4A0IXwvZMtFhYWu8vV1dUUGBhYFBgYWKRS\nqXabTCbX+vr6nhzH0bVr1zzFYnG55dwePXo0cBxHSUlJbyUkJMRyHEdms9mloaGhx7Vr1zzHjBnz\n7e3bt905jqM1a9a8Ex8fv7Ll+0VHR6dlZGRM5TiOdu7c+aeQkJCTOp1OHhAQUHL79m33W7dueQwb\nNuz7oqKiwIyMjKkxMTEbLa+9efNmL47jKDw8XKvT6eTWNbWsce/evS/MnDlTw3Ec3b17t5uvr++V\nO3fuPLJhw4bXV69evZzjOLpz584jQUFBZyorK/1a1mm5jslkclWpVLs/++yzv3AcR/X19T1NJpMr\nx3F0+PDhZ6ZOnZrBcRxpNJqZCxcuXGd5/bJlyxK3bdum5jiO6urq+gwcOPCCwWB4lO+8sbCwOmbx\nugM/ALDN3d29saioSGY5NhqNbsuWLfvg+PHjYS4uLs0//fST988//9y/f//+P1vOGTVqVP7s2bM3\nG41GtxdeeGGfVCotPnr0aHhZWdnQ0NDQE0RETU1N3Sz/bI3jOMGSJUs+Xr169Yr+/fv/nJqaOufw\n4cMRKpVqj7u7eyMRkUql2nP8+PGwyMjI7MWLFyctXbp0zeTJk79++umnv7P1+4qMjMxetGjRp01N\nTd0OHjw4YezYsd8+8sgjdw8dOvRsaWlpQEZGxktERPX19b0qKirEfn5+Vdavt9xxq62t9fHz86v6\n85///L9ERDdu3Ojz2muvba2oqBALBALOZDIJLd8XZ/XhwocOHXr2q6++ei4pKWkxEdHdu3cfqa6u\n9h00aNAFW78HAGAHmjEAsJvPP/9cff36dc/CwkK5q6ur+cknn6y8c+dOd+tzwsLCjh8/fjzs66+/\nnhwdHa158803P+nbt29dRETE4e3bt8940PUFAgGXlJS0WKVS7bH8u9zc3GesGxmO4wQCgYDz9/cv\nLyoqku3fv3/SihUrVo8fP/7IypUrV9nyfXTv3v1OeHj40ZycHOXOnTtfnj59+heWryUnJy+IiIg4\n/KDXW5rUxsZGd6VSmZOZmfn8iy++uHflypWrxo8ff2Tv3r0vXr58+Y/h4eFHW7vGnj17VPhQbwDn\ngJkxALCb+vr6Xv379//Z1dXVrNVqx12+fPmPLc+5cuXKE15eXtfmzp37z7lz5/6zqKhIFhISciov\nL2+0ZbbKYDB4lJeX+9/vPawbL6J7zd2+ffteaGxsdDcYDB779u17ISws7PjVq1cf7969+x21+5dt\nuQAAAaxJREFUWv354sWLk6zv4Fm4ubkZLXenWnrllVd2bN68ebblLhsRkVKpzPnHP/7xF8trfvzx\nx4G3b99+tLWfh7u7e+O6deveWL58eQLHcYL6+vpe3t7ePxERWX9mXa9eveqtHyRQKpU569ate8Ny\nfL/aAaDrQDMGAG0mEAh+8zi2Wq3+vKCgIEgikZSkp6e/OmTIkPMtz9VqteMCAwPPyuXywp07d768\naNGiTz09Pa9rNJro6dOnfyGVSotDQ0NPXLhwYZAt7ymTyYqio6M1o0aNyg8JCTkVExOzSSqVFpeW\nlgYEBweflslkRfHx8e+uWLFidctrvf766xslEkmJZYDf+trPPvvsoWPHjo2JiIg4LBQKTUREc+fO\n/efQoUPL5HJ5YUBAQOn8+fNT7tfMWV8nMDDwrFgsrti5c+fLb7/99kfLli37QC6XF5rNZlfLeePG\njdOWlZUNtQzwr1y5cpXRaHSTSCQlw4cP/z4uLu592xIBABZhawsAAAAAHuHOGAAAAACP0IwBAAAA\n8AjNGAAAAACP0IwBAAAA8AjNGAAAAACP0IwBAAAA8Oj/ALC2ck/V2iiDAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 192 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/random.forest.roc.npz\",rfroc)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 193 }, { "cell_type": "code", "collapsed": false, "input": [ "rfprec,rfrecall = drawprecisionrecall(X,y,test,rfmodel)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAmMAAAHYCAYAAAABLe9WAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlclPX6//FrWBQQEBA1BRQU3AU0csk0FA2y1FI7aWlu\nx8hSq3O+ldpmm+np22nRFvWnZlouqYVbWKlki0Iu4IYKJApkmguCgLL+/pgz34gDMsDM3POZeT0f\nj3nAh7m572t8l1ze9zU3uoqKCgEAAIA2HLQuAAAAwJ7RjAEAAGiIZgwAAEBDNGMAAAAaohkDAADQ\nEM0YAACAhmjGABvz2WefPRwdHb2jtu2mTZv20euvv/6CJWqyhMDAwMxdu3YNEhGZO3fu3PHjx6/S\nuiYAMAbNGGBBgYGBmW5uboUeHh75t9xyy++TJk1aUVBQ0MSUx3j44Yc/27FjR3Rt23300UfTXnjh\nhddNeWwDBweHcnd392seHh75fn5+OTNnzny/tLTUyRzHMtDpdBXVfa6yiooKXbt27X7t2rXrsarP\nBQYGZu7cuTOq8tc++eSTif379//BsC4uLm40d+7cuR06dDjl7u5+LSgo6PSUKVOWnTlzpq0xx798\n+bLP/fff/6W7u/u1wMDAzDVr1oytadsbN240fvrpp9/x8/PL8fHxufzEE098UF3maWlpIS4uLtdp\nloE/0YwBFqTT6Sq2bt16b35+vsfBgwd77t+/P6K6s1Pmblws4fDhw6H5+fkee/bsGbBp06aRS5Ys\nedRSx66oqNCZ+xiWyGjPnj0Dbty40fiPP/5ovn///ojKz+l0uorams7Ro0dv2Lp1671r1qwZm5eX\n55mSkhIWERGxv2oTV5MnnnjiAxcXl+sXLlxo8dlnnz08bdq0j44fP96lum3nz58/6+DBgz2PHTvW\n9dSpUx0OHjzYs7r/tp944okPevXqlWQrDTNgCjRjgEZat279W0xMTPyxY8e6iujPJn344YePh4SE\npHXs2PGkiMjWrVvvDQ8PT/b29r7Sr1+/n44cOdLd8P1ZWVkBI0eO3NSiRYsLvr6+F2fMmLFQ5K9n\nRyoqKnRPP/30Oy1btjzftGnTq6GhoYcNP0wnTpz4yYsvvviaYX9Lly6dGhISktasWbNLI0aMiDt3\n7lwrw3MODg7lixcvju3QocMpb2/vK9OnT19k7Ots3759Rr9+/X6q/EO8Pq8rIyOj/aBBg3b5+vpe\nbN68+R/jxo1bffXq1aZ1/5MXiYuLGxEeHp7ctGnTq8HBwenffPPNXSL/fbap8uXOzMzMQAcHh/Ll\ny5dPbtu27ZmoqKidQ4cO3f7BBx88UXnfYWFhKV999dV9IiInTpzoNGTIkG+bNWt2qVOnTie++OKL\nB+pS58qVKyeMGjVq44gRI+JWrlw5oS7f+9133w3+7rvvBsfFxY249dZbDzg4OJR7enrmTZs27aPJ\nkycvr+37CwoKmmzatGnka6+99qKbm1thv379fhoxYkTcqlWrxle3/datW++dMWPGQi8vr1xfX9+L\nM2fOfH/58uWTK2+zdu3aMd7e3leioqJ2WqJhBlRBMwZYmOGHUFZWVsDXX399d48ePQ4ZnouLixvx\nyy+/3Hb8+PEuhw4d6jFlypRlS5cunXr58mWf2NjYxcOHD99cUlLiXFZW5njvvfduDQoKOn3mzJm2\nOTk5fmPHjl1T9VjffPPNXT/88EP/tLS0kKtXrzb94osvHvDx8bks8tczK7t27Ro0Z86ceV988cUD\n586da9W2bdszY8aMWVt5X9u2bbtn//79EYcPHw5dv37932q7FGp4nSdOnOj0ww8/9O/Vq1eSiEhd\nX1flOp5//vk3zp071yo1NbVzVlZWwNy5c+fW9c8/KSmp14QJE1a+/fbb/7x69WrTPXv2DGjbtu2Z\nqn8mhnXV79+zZ8+AEydOdNqxY0f02LFj11S+dHf8+PEuZ8+ebXPPPfdsKygoaDJkyJBvx40bt/qP\nP/5ovnbt2jGPP/74h6mpqZ2NqbOwsNBt48aNox588MF1f/vb39avXbt2TElJibOxr/O7774b3Lt3\n70Q/P7+cmraZP3/+rGHDhm2p7rlTp051cHJyKg0ODk43fC0sLCzF8I+H6lRusMrLyx2ys7P98/Pz\nPURE8vLyPF9++eVX3nnnnadpxIC/ohkDLKiiokJ33333feXt7X2lf//+P0RGRibMmTNnnuH52bNn\nv+nl5ZXbuHHjG0uWLHk0NjZ28W233faLTqereOSRRz5t3Ljxjb179/ZNSkrqde7cuVZvvfXWM66u\nrkWNGze+cfvtt/9c9XjOzs4l+fn5HqmpqZ3Ly8sdOnbsePKWW275vep2n3322cNTpkxZFh4entyo\nUaPiN998c/bevXv7nj17to1hm1mzZs339PTMCwgIyBo4cODu5OTk8Ju91p49ex50d3e/1qVLl+Oj\nR4/e8Mgjj3wqIlLX19WvX7+fRPRn2KKionY6OzuX+Pr6Xnz66aff+f777++sawbLli2bMmXKlGVR\nUVE7RfRnKA1nIquqrmmYO3fuXFdX1yIXF5fr991331fJycnhWVlZAYY/x1GjRm10dnYu2bp1671B\nQUGnJ0yYsNLBwaE8PDw8eeTIkZuMPTu2adOmkZ6ennn9+vX7adCgQbtE9A2xsa/z0qVLzarLurJZ\ns2bN37Jly7Dqnrt27Zq7p6dnXuWveXh45Buaq6piYmLi33vvvScvXrzo+/vvv9/y/vvvz9TpdBWF\nhYVuIiIvvvjia3//+9//X+vWrX/jEiXwVzRjgAXpdLqKuLi4EVeuXPHOzMwMXLRo0fTGjRvfMDwf\nEBCQZfj8zJkzbd9+++1/ent7XzE8srOz/c+dO9cqKysroG3btmccHBzKb3a8QYMG7Zo+ffqiJ554\n4oOWLVuej42NXVzdD1PD2TDDukmTJgXNmjW7lJOT42f4WuUf7G5uboWGNx507dr1mIeHR76Hh0f+\nTz/91M+wzaFDh3pcu3bNfd26dQ9++umnjxiGxuv7us6fP99yzJgxa/39/bObNm16dfz48asuXbrU\nzJg/98qys7P927dvn1HX7zOonJGHh0f+Pffcs81wdmzt2rVjHn744c8MrzMxMbF35df5+eefP3T+\n/PmWxhxn5cqVE0aOHLlJRMTR0bHsvvvu+6rypUonJ6fSqmfKSkpKnJ2dnUtERJo1a3ap8qXmunJ3\nd7+Wl5fnWflrV69eberh4ZFf3fbPP//8Gz169DgUHh6efMcdd/x4//33f+nk5FTasmXL88nJyeE7\nd+6Meuqpp94VscxMH6ASmjHAilQ+Y9CmTZuzzz///BtXrlzxNjyuXbvm/uCDD64LCAjIOnv2bJuy\nsjLH2vY5Y8aMhfv37484fvx4l1OnTnV46623nqm6TevWrX/LzMwMNKwLCgqaXLp0qdnNLnEZfqAe\nO3asa35+vkd+fr6H4SxWZQ888MAX995771bDJcX6vq45c+bMc3R0LDt69Gi3q1evNl21atX48vLy\nOv8dFhAQkJWenh5c3XNNmjQpqPzu1t9///2WqttUPatjuFS5d+/evtevX3cZOHDgbsPrvPPOO7+v\n/Drz8/M9qs6YVSc7O9t/165dg1auXDmhVatW51q1anVu/fr1f9u+ffvQy5cv+xj2f/r06aDK33f6\n9OmgwMDATBGRwYMHf5eUlNSrckNdFx06dDhVWlrqVPnPKiUlJaxbt25Hq9vexcXl+sKFC2dkZ2f7\np6enB/v4+FyOiIjYLyKSkJAQmZmZGdimTZuzrVq1Ovf222//c+PGjaMMzwP2jmYMsFJTp05d+vHH\nHz+WlJTUq6KiQldQUNBk27Zt91y7ds29d+/eia1atTo3a9as+YWFhW7Xr193+fnnn2+vuo/9+/dH\nJCYm9i4pKXF2c3MrdHFxue7o6Fgmom+mDA3V2LFj16xYsWJSSkpK2I0bNxrPmTNnXp8+ffa1adPm\nbHW11fXMxqxZs+avWbNmbHZ2tn99X9e1a9fcmzRpUuDp6ZmXk5PjV11TaYwpU6YsW7FixaRdu3YN\nKi8vd8jJyfE7efJkRxGR8PDw5LVr144pLS112r9/f8TGjRtH1XZJbejQodvPnDnT9uWXX36l8nzb\nvffeu/XUqVMdVq9ePa6kpMS5pKTE+ZdffrntxIkTnUT0b7QICgo6Xd0+V61aNb5Tp04nTp061SEl\nJSUsJSUl7NSpUx38/f2zP//884dERB588MF177777lMnT57sWFFRodu/f3/EihUrJhlqGDx48HdD\nhgz59v777//y4MGDPUtLS53y8/M9Pv7448dWrFgxqbY/pyZNmhSMHDly00svvfRqYWGh248//njH\nli1bhtV0S4rffvut9W+//da6oqJCt2/fvj6vv/76C6+88srLIiKxsbGLf/3113YpKSlhycnJ4Y89\n9tjH99xzzzZjbsEC2AOaMcBKVP2hf+uttx5YunTp1OnTpy/y8fG5HBISkvbpp58+IqJ/d+OWLVuG\npaenB7dp0+ZsQEBA1vr16/9m2I9hX3l5eZ6PPvroEh8fn8uBgYGZvr6+F5955pm3qm4XFRW187XX\nXntx1KhRG1u3bv3b6dOng9auXTumptpqu61C1ee6det2dNCgQbv+/e9//6O+r+vll19+5eDBgz2b\nNm16ddiwYVtGjRq1saYablbfbbfd9suKFSsmPf300+94eXnlRkZGJhhm41577bUXMzIy2nt7e1+Z\nO3fuXMMlx5pel4hIo0aNikeOHLlp586dUQ899NDnhq+7u7tf++abb+5au3btGD8/v5xWrVqdmz17\n9pvFxcWNRPRv4Ljjjjt+rK7GTz/99JHHH3/8wxYtWlwwPFq2bHn+scce+9jwZzV16tSlkyZNWjFs\n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\ngg==\n", "text": [ "" ] } ], "prompt_number": 198 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/random.forest.precisionrecall.npz\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 199 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can compare accuracy to the dummy case:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "rftrain,rftest = next(iter(sklearn.cross_validation.StratifiedShuffleSplit(y,\n", " test_size=20000,train_size=100000)))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 244 }, { "cell_type": "code", "collapsed": false, "input": [ "dummycompare(X,y,rftrain,rftest,rfsearch.find_bests()[0][0])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 245, "text": [ "(0.8801639861242494, 1.9939839808158752)" ] } ], "prompt_number": 245 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Extremely Randomized Trees\n", "\n", "In Scikit-learn an alternative random forest in which the thresholds chosen for candidate features are randomly selected.\n", "This reduces the variance of the model at the cost of an increase in bias.\n", "These are called [Extremely Randomized Trees][etsklearn].\n", "\n", "[etsklearn]: http://scikit-learn.org/stable/modules/ensemble.html#extremely-randomized-trees" ] }, { "cell_type": "code", "collapsed": false, "input": [ "imputer = sklearn.preprocessing.Imputer(strategy='mean',missing_values=\"NaN\")\n", "scaler = sklearn.preprocessing.StandardScaler()\n", "classifier = sklearn.ensemble.ExtraTreesClassifier()\n", "erfmodel = sklearn.pipeline.Pipeline([('imp',imputer),('scl',scaler),('cls',classifier)])" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 201 }, { "cell_type": "code", "collapsed": false, "input": [ "extrasearch = ocbio.model_selection.RandomizedGridSearch(lb_view)\n", "extrasearch.launch_for_splits(erfmodel,rf_params,split_filenames)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 203, "text": [ "Progress: 00% (000/075)" ] } ], "prompt_number": 203 }, { "cell_type": "code", "collapsed": false, "input": [ "print extrasearch" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Progress: 100% (075/075)\n", "\n", "Rank 1: validation: 0.99350 (+/-0.00029) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 199, 'cls__max_features': 25, 'cls__bootstrap': False}\n", "Rank 2: validation: 0.99350 (+/-0.00029) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 44, 'cls__max_features': 20, 'cls__bootstrap': False}\n", "Rank 3: validation: 0.99350 (+/-0.00029) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 44, 'cls__max_features': 15, 'cls__bootstrap': False}\n", "Rank 4: validation: 0.99333 (+/-0.00033) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 94, 'cls__max_features': 15, 'cls__bootstrap': False}\n", "Rank 5: validation: 0.99317 (+/-0.00017) train: 0.99732 (+/-0.00034):\n", " {'cls__n_estimators': 44, 'cls__max_features': 25, 'cls__bootstrap': False}\n" ] } ], "prompt_number": 205 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Feature Importances\n", "\n", "We can find the feature importances for a random forest model simply by querying the model:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "importances = rfmodel.named_steps['cls'].feature_importances_" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 206 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(importances)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 207, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 207 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../../plots/hippie/random.forest.importances.npz\",importances)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 208 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Training pulldown classifier\n", "\n", "As the pulldown results are particularly suited to our classification problem, and have been gathered specifically for us we have to include them in our algorithm.\n", "Unfortunately, as described in the the notebook on [extracting pulldown features][affinitynotes], we were not able to impute the features using regression.\n", "The solution is to train the model on a subset of the training data which the pulldown data covers.\n", "The indexes of these training examples have been saved in the [training and test set generation notebook][traintest].\n", "\n", "[affinitynotes]: http://nbviewer.ipython.org/github/ggray1729/opencast-bio/blob/master/notebooks/Pulldown%20affinity%20feature%20extraction.ipynb\n", "[traintest]: http://nbviewer.ipython.org/github/ggray1729/opencast-bio/blob/master/notebooks/Training%20and%20test%20featureset%20generation.ipynb" ] }, { "cell_type": "code", "collapsed": false, "input": [ "posindexes = loadtxt(\"../hippie.positive.pulldownindexes.txt\",dtype=int)\n", "negindexes = loadtxt(\"../hippie.negative.pulldownindexes.txt\",dtype=int)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "After removing conflicting entries above the indexes in the negative training set will no longer be correct.\n", "For each index we must ensure that it still points to the correct feature vector.\n", "We can do this by subtracting the number of conflict indexes that are smaller than each of the these indexes." ] }, { "cell_type": "code", "collapsed": false, "input": [ "conflictindexes = array(conflicts.keys())\n", "def fixoffset(negindex):\n", " Nlower = where(conflictindexes" ] } ], "prompt_number": 281 }, { "cell_type": "code", "collapsed": false, "input": [ "savez(\"../plots/hippie/pulldown.roc.rf.npz\",fpr,tpr)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 280 }, { "cell_type": "code", "collapsed": false, "input": [ "import pickle" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 282 }, { "cell_type": "code", "collapsed": false, "input": [ "f = open(\"random.forest.pulldown.classifier.pickle\",\"wb\")\n", "pickle.dump(rfmodel,f)\n", "f.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 283 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Classifying Pulldown interactions\n", "\n", "The reason we train this classifier is to then attempt estimate probabilities that an interaction exists between proteins in the pulldown experiments, specifically those in the bait and prey lists.\n", "Therefore, we will apply this classifier to feature vectors corresponding to combinations of these proteins.\n", "\n", "Unfortunately, the file containing these feature vectors is extremely long, it contains many more lines than used for training as there are so many combinations of the proteins involved:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "!~/qwc.sh pulldown.nolabel.Entrez.vectors.txt" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "1797054 pulldown.nolabel.Entrez.vectors.txt\r\n" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we would like to do is iterate over this entire file and produce a file containing two Entrez Gene IDs corresponding to each protein pair with a likelihood estimate in that interaction from the classifier. To limit the number of edges we have to deal with we place a limit on the probability an interaction must have before it is written to the file." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import csv" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 271 }, { "cell_type": "code", "collapsed": false, "input": [ "f,fl,fw = (open(\"pulldown.nolabel.Entrez.vectors.txt\"),\n", " open(\"../forGAVIN/pulldown_data/pulldown.interactions.Entrez.tsv\"),\n", " open(\"../forGAVIN/pulldown_data/pulldown.interactions.Entrez.weighted.tsv\",\"w\"))\n", "c,cl,fw = \n", "_ = f.close(),fl.close(),fw.close()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 278 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Classifying pre-computed pulldown network\n", "\n", "A prepared network that is currently used at Edinburgh is available.\n", "To make the task of processing weighted edges easier we can apply our classifier to only these feature vectors and write the resulting feature vectors." ] }, { "cell_type": "code", "collapsed": false, "input": [ "edgelist = loadtxt(\"pulldown.edgelist.vectors.txt\",dtype=str)\n", "NAinds = where(edgelist==\"NA\")\n", "edgelist[NAinds] = 0.0\n", "edgelist[edgelist==\"missing\"] = np.nan\n", "edgelist = edgelist.astype(np.float)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 270 }, { "cell_type": "code", "collapsed": false, "input": [ "estimates = rfmodel.predict_proba(edgelist)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 272 }, { "cell_type": "code", "collapsed": false, "input": [ "print estimates[5,1]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "0.0\n" ] } ], "prompt_number": 274 }, { "cell_type": "code", "collapsed": false, "input": [ "f,fw = open(\"../forGAVIN/mergecode/edgelist_new.txt\"), open(\"../forGAVIN/mergecode/edgelist_weighted.txt\",\"w\")\n", "c,cw = csv.reader(f, delimiter=\"\\t\"), csv.writer(fw, delimiter=\"\\t\")\n", "c.next()\n", "for i,l in enumerate(c):\n", " cw.writerow(l + [estimates[i,1]])\n", "f.close(),fw.close()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 275, "text": [ "(None, None)" ] } ], "prompt_number": 275 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Classifying human genome interactions\n", "\n", "We would like to be able to return a likelihood of interaction for any given pair of proteins.\n", "Using the model we have trained we can create a short script which is able to calculate this for any given pair of Entrez IDs:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "cd ../.." ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "/data/opencast/MRes\n" ] } ], "prompt_number": 218 }, { "cell_type": "code", "collapsed": false, "input": [ "assembler = ocbio.extract.FeatureVectorAssembler(\"datasource.tab\")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 220 }, { "cell_type": "code", "collapsed": false, "input": [ "baits,preys = loadtxt(\"forGAVIN/pulldown_data/BAITS/baits_entrez_ids.csv\",dtype=str),loadtxt(\"forGAVIN/pulldown_data/PREYS/prey_entrez_ids.csv\",dtype=str)\n", "pulldownids = set(list(baits)+list(preys))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 222 }, { "cell_type": "code", "collapsed": false, "input": [ "assembler.getfeaturevector()" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "featuresizes = assembler." ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }