Newer
Older
abgabensammlungSS15 / is / UB4 / Ex4.ipynb
@Jan-Peter Hohloch Jan-Peter Hohloch on 19 May 2015 114 KB IS: session
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "preamble": true
   },
   "source": [
    "(Defining latex commands: not to be shown...)\n",
    "$$\n",
    "\\newcommand{\\norm}[1]{\\left \\| #1 \\right \\|}\n",
    "\\DeclareMathOperator{\\minimize}{minimize}\n",
    "\\DeclareMathOperator{\\maximize}{maximize}\n",
    "\\newcommand{\\real}{\\mathbb{R}}\n",
    "\\newcommand{\\blasso}{\\beta^{\\mathrm{LASSO}}}\n",
    "\\newcommand{\\bzero}{\\beta^0}\n",
    "\\newcommand{\\bLS}{\\hat{\\beta}^{\\mathrm{LS}}}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# LASSO and $\\ell_0$ estimator for orthonormal data (30 points)\n",
    "\n",
    "Let $X \\in \\real^{n \\times p}$ be your training input set, and $Y \\in \\real^n$ your training output.\n",
    "In a linear model we predict $\\hat{y}(x) = x^T \\hat{\\beta}$ for some input $x \\in \\real^p$ and some constant $\\hat{\\beta} \\in \\real^p$.\n",
    "The so-called $\\ell_0$-penalized estimator $\\bzero(\\lambda)$ tries to find a good $\\beta$ with reslatively few non-zero entries. It is defined as:\n",
    "\\begin{equation}\n",
    "    \\bzero(\\lambda) := \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_0 ,\n",
    "\\end{equation}\n",
    "where $\\norm{\\beta}_0 := \\sharp \\{j:\\beta_j \\neq 0\\}$ and $\\lambda > 0$.\n",
    "Alternatively, the LASSO estimator $\\blasso(\\lambda)$ is defined as:\n",
    "\\begin{equation}\n",
    "    \\blasso(\\lambda) := \\mathrm{arg \\, min}_{\\beta} \\frac{1}{n} \\norm{Y - X \\beta}_2^2 + \\lambda \\norm{\\beta}_1 ,\n",
    "\\end{equation}\n",
    "where $\\norm{\\beta}^2_2 := \\sum_{i=1}^p \\beta_i^2$, $\\norm{\\beta}_1 := \\sum_{i=1}^p |\\beta_i|$ and $\\lambda > 0$.  \n",
    "\n",
    "There are in general no analytic formulae for $\\bzero(\\lambda)$ and $\\blasso(\\lambda)$. In practice, they are computed by numerical optimization.\n",
    "However, we can compute an analytic expression in the special case of _orthogonal design_, where\n",
    "\\begin{equation}\n",
    "    p=n \\quad \\mathrm{and} \\quad \\frac{1}{n} X^T X = I_{p \\times p} .\n",
    "\\end{equation}\n",
    "The goal of this exercise is to compute these formulae."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## $\\ell_0$-regularized estimator  in the orthonormal design\n",
    "\n",
    "Let $g_{\\mathrm{hard}, \\lambda}$ be the function:\n",
    "\\begin{equation}\n",
    "    g_{\\mathrm{hard}, \\lambda} : \\real \\rightarrow \\real , \\quad z \\rightarrow z \\, 1_{ \\{|z| > \\lambda\\} } ,\n",
    "\\end{equation}\n",
    "where $1_{ \\{|z| > \\lambda\\} } = 1$ if $|z| > \\lambda$ and $0$ otherwise.\n",
    "Suppose we are in the orthonormal design.\n",
    "\n",
    "1. Plot $g_{\\mathrm{hard}, \\lambda}$ for $\\lambda = 1$.\n",
    "2. Write down the analytical formulae for the least square estimator $\\bLS$. (Not needed for the subsequent calculations)\n",
    "3. Prove that $\\bzero_j(\\lambda) = g_{\\mathrm{hard}, \\sqrt{\\lambda}}(z_j)$ where, again, $z_j := \\frac{1}{n}(X^T Y)_j$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "from numpy import *\n",
    "from scipy import *\n",
    "from matplotlib import pyplot as plt\n",
    "from sklearn import linear_model\n",
    "from pandas import * # for easy import of data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "rkJggg==\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad25e080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def ghard (l, z):\n",
    "    if(np.abs(z) > l):\n",
    "        return z\n",
    "    return 0\n",
    "\n",
    "vg = np.vectorize(ghard)\n",
    "\n",
    "x = np.linspace(-10, 10, 1000)    \n",
    "y = vg(1, x)\n",
    "\n",
    "plt.plot(x, y, '-')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 1.1.2\n",
    "\\begin{align*}%not sure whether this is meant...\n",
    "    \\hat{\\beta}^{LS}&=\\left(X^TX\\right)^{-1}X^T\\mathbf{y}\\\\\n",
    "    &=\\left(nI_{n\\times n} \\right)^{-1}X^T\\mathbf{y}\\\\\n",
    "    &=\\frac{1}{n}\\cdot I_{n\\times n}X^T\\mathbf{y}\n",
    "\\end{align*}"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## LASSO estimator in the orthonormal design\n",
    "\n",
    "Let $g_{\\mathrm{soft}, \\lambda}$ be the function:\n",
    "\\begin{equation}\n",
    "    g_{\\mathrm{soft}, \\lambda} : \\real \\rightarrow \\real , \\quad z \\rightarrow \\mathrm{sign}(z) \\, (|z| - \\lambda)_+ .\n",
    "\\end{equation}\n",
    "Suppose we are in the orthonormal design.\n",
    "\n",
    "1. Plot $g_{\\mathrm{soft}, \\lambda}$ for $\\lambda = 1$.\n",
    "2. Prove that $\\blasso_j(\\lambda) = g_{\\mathrm{soft}, \\frac{\\lambda}{2}}(z_j)$, where $z_j := \\frac{1}{n}(X^T Y)_j$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "75KOw5IfkYTzaOodmr13B7ykbVnyI9DW+xXAeVjvkhZgyW+4Tr3/H9a7pAVZ8hsq4b40e+/nAb9U\n",
       "xcGBlyRphHop+SQHktye5JPtn319HGeqEp7O3evdAS9pKX2VfAFXVtWVPX3/SWrr/QrgqcAvVvGR\n",
       "gZckaeT63JNPj997cjr1fifNee8OeEm71ueQf1WSTye5KskpPR5n1BLum/A24C9p6v3lVXx96HVJ\n",
       "moZU1XIPTA4Cpx3lU68BPg58pb39OuD0qnrJlscX8NrOXYeq6tBSixmphH3AW4EPAL9exTcGXpKk\n",
       "DZNkL7C3c9elVbXjnZKlh/yOD5CcCVxbVWdvub8WWeiUtHvvVwJPoTlzxq0ZSTuy6Ozs6+ya0zs3\n",
       "9/O9qzRnL+EZNM/H/9KcOeOAl9Sbvs6uuTzJI2nOsvkC8LKejjMaCafQnDnzFODFVXx04CVJmoHe\n",
       "t2uOeeAZbde09f5W4H3Ab7j3LmlZi85Or3jtUVvvVwJPAn7Bepe0br53TU86e+/fojnv3QEvae0s\n",
       "+RXbUu+XVPG3Ay9J0oxZ8iuU8EzuXu8OeEmDsuRXoK33P6G5YMF6l7QxLPld6tT7/9Cc9+6Al7Qx\n",
       "LPklWe+SxsCSX0LCs7DeJY2AJb+AhPvR1PsTgJ+v4u8GXpIkbcuS36FOvX+T5swZB7ykjWfJH8eW\n",
       "en+Rw13SmFjy27DeJY2dJX8Ubb2/EXgc8HNVHBp2RZK0HEt+i4Rn09T714Efd8BLGjNLvtWp98dj\n",
       "vUuaCEseSDif79X7IxzwkqZi1iXf1vufAucCP1vF3w+8JElaqdmWfFvv/wp8jabeHfCSJmd2JZ9w\n",
       "Kk29/zTwMw53SVM2q5Lv7L1/Fetd0gzMouQ79f5TWO+SZmTyJZ/wHJp6/2+a894d8JJmY7Ilv6Xe\n",
       "L67iYwMvSZLWbpIlf5R6d8BLmqVJlXxb728CHov1LknTKfmEC2jq/T+x3iUJmEDJJ9yfpt4fA7yw\n",
       "iusHXpIkbYxRl3yn3r9Cc967A16SOkZZ8p16Pwd4gcNdko5udCWfcCFNvX+ZZu/dAS9JxzCakm/r\n",
       "/c3AT2K9S9KOjKLkE/bT1PthrHdJ2rGNLvkt9f78Kv5h4CVJ0qhsbMl36v1LNPXugJekBW1cySc8\n",
       "gKbefwLrXZJ2ZaNKPuG5NPV+B/BIB7wk7c5GlPyWen9eFf848JIkaRIGL/lOvf8HTb074CVpRQYt\n",
       "+YR3AY/GepekXgxd8l/Eepek3qSqhjlwUlWVQQ4uSSO16OwcuuQlST1yyEvShDnkJWnCHPKSNGEO\n",
       "eUmasKWHfJKLkvxbku8kefSWz/1Wks8luTnJebtfpiRpGbsp+ZuA/cDHuncmOQt4AXAWsA/48yT+\n",
       "xNCzJHuHXsOU+Hyuls/ncJYevlV1c1XdcpRPXQC8s6q+XVW3Ap+n+bdY1a+9Qy9gYvYOvYCJ2Tv0\n",
       "Auaqj8L+QeD2zu3bgQf3cBxJ0nFs+941SQ4Cpx3lU79dVdcucJxhLquVpJnbdshX1dOW+J5fBM7o\n",
       "3P6h9r4jJHH4r1CSS4dew5T4fK6Wz+cwVvUulN33UbgG+OskV9Js0zwE+JetD/B9aySpf7s5hXJ/\n",
       "ktuAxwLvT/JBgKr6DPBu4DPAB4FX1FDvgiZJMzfYu1BKkvq39vPXvYiqP0kOJLk9ySfbP/uGXtPY\n",
       "JNnXvv4+l+Q3h17P2CW5NcmN7evxiG1bbS/J25McTnJT575TkxxMckuS65Kcst33GOIiJS+i6k8B\n",
       "V1bVo9o/Hxp6QWOS5ATgLTSvv7OAi5M8bNhVjV4Be9vXo9fLLO4dNK/HrlcDB6vqocBH29vHtPYh\n",
       "6kVUvfMX2ss7B/h8Vd1aVd8G3kXzutTu+JpcUlVdD3x1y93PAa5uP74auHC777FJpexFVKvxqiSf\n",
       "TnLV8X6M0xEeDNzWue1rcPcK+EiSG5K8dOjFTMSeqjrcfnwY2LPdF/fyD3l7EVV/tnluXwP8BfB7\n",
       "7e3XAVcAL1nT0qbA19vqnVtVdyR5IHAwyc1tnWoFqqqOd71RL0O+74uo5mynz22StwGL/A9VR74G\n",
       "z+DuP11qQVV1R/v3V5K8h2ZLzCG/O4eTnFZVX0pyOvDl7b546O2arRdRvTDJiUl+hGNcRKVja/+D\n",
       "32U/zS+5tXM3AA9JcmaSE2lOBLhm4DWNVpKTkty7/fhk4Dx8Ta7CNcAl7ceXAO/d7ot7KfntJNkP\n",
       "vAl4AM1FVJ+sqmdU1WeS3HUR1Z14EdUyLk/ySJpthy8ALxt4PaNSVXcmeSXwYeAE4Kqq+uzAyxqz\n",
       "PcB7kkAza/6qqq4bdknjkuSdwBOBB7QXn/4ucBnw7iQvAW4Fnr/t93COStJ0Db1dI0nqkUNekibM\n",
       "IS9JE+aQl6QJc8hL0oQ55CVpwhzykjRhDnlJmrD/B3ksmr9zVxpPAAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04acfea3c8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def gsoft (l, z):\n",
    "    return np.sign(z)*np.maximum(0,np.abs(z)-l) \n",
    "#assuming (x)_+ means max(0,x), the only definition (of many) I found that made sense...\n",
    "\n",
    "vg = np.vectorize(gsoft)\n",
    "\n",
    "x = np.linspace(-10, 10, 1000)    \n",
    "y = vg(1, x)\n",
    "\n",
    "plt.plot(x, y, '-')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Application of LASSO on a gene data set (70 points)\n",
    "\n",
    "(This exercise is independent of the first one.)\n",
    "\n",
    "The goal of this exercise is to apply both ridge regression and LASSO on real data.\n",
    "The data can be found on the homepage of the course, files _xtrain_xxxx.csv_ and _xtest_xxxx.csv_ , and comes from the paper <cite data-cite=\"Kemmeren2014\"> Kemmeren et al.</cite>.\n",
    "It consists of the logarithm of the gene expression levels of yeast cells.\n",
    "\n",
    "More specifically, we consider two datasets corresponding to two different targets: say gene 4710 for the first and gene 3290 for the second.\n",
    "In both cases, we would like to predict the gene expression levels of the target gene, given the gene expression levels of the other 6170 genes.\n",
    "For each dataset, we are given a training set $X_\\mathrm{train} \\in \\real^{140 \\, \\times \\, 6170}$, $y_\\mathrm{train} \\in \\real^{140}$ consisting of 140 yeast cells, and a test set $X_\\mathrm{test} \\in \\real^{20 \\, \\times \\, 6170}$ with 20 cells. To evaluate the performance of our model, we also provide the target values $y_\\mathrm{test} \\in \\real^{20}$ of the test set.\n",
    "\n",
    "You are asked, to hand in:\n",
    "\n",
    "1. A printout of the code of the function _printOutput_, that you will have appropriately modified (see section [_The printOutput function_](#The-printOutput-function)).\n",
    "2. Answer questions a. and b. of the section [_Linear regression with no regularizer_](#Linear-regression-with-no-regularizer).\n",
    "3. A printout of all the lines marked _### CHANGE THIS LINE ###_. On the printout, all regressions should be done using a regularizing parameter $\\lambda$ that you will have optimized using 10-fold cross-validation on the training set. However, you do not need to hand in the printout of the lines corresponding to these cross-validations.\n",
    "4. A printout of the output of all lines marked _### PROVIDE THE OUTPUT ###_.\n",
    "5. The same printouts as for questions 3. and 4., but with target gene 3290 instead of 4710 (i.e. with the second dataset).\n",
    "\n",
    "_Hint_: For all the regression tasks, we recommend to use python functions of the type _linear_model.xxx(xxx)_, of the pacakge _sklearn_. The code asked to hand in should look pretty similar to the code of the section [_Linear regression with no regularizer_](#Linear-regression-with-no-regularizer). Cross-validation can be easily done using ipython functions of the type _linear_model.xxxCV(xxx)_. Do not hesitate to consult the documentation of these functions. Finally, note that, what we call $\\lambda$ corresponds to the parameter _alpha_ of the python functions."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##Loading the required packages."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target: gene 4710"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Loading the data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "### CHANGE THE PATHS ###\n",
    "a=3\n",
    "if a==4:\n",
    "    Xtrain = read_csv(\"./GeneDataSet/Xtrain_4710.csv\", header = False)\n",
    "    Xtest = read_csv(\"./GeneDataSet/Xtest_4710.csv\", header = False)\n",
    "    ytrain = read_csv(\"./GeneDataSet/ytrain_4710.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "    ytest = read_csv(\"./GeneDataSet/ytest_4710.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "else :\n",
    "    Xtrain = read_csv(\"./GeneDataSet/Xtrain_3290.csv\", header = False)\n",
    "    Xtest = read_csv(\"./GeneDataSet/Xtest_3290.csv\", header = False)\n",
    "    ytrain = read_csv(\"./GeneDataSet/ytrain_3290.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "    ytest = read_csv(\"./GeneDataSet/ytest_3290.csv\", header = False, names = [\"gene\",\"y\"])\n",
    "\n",
    "Xtrain = Xtrain.drop(Xtrain.columns[[0]],axis = 1)\n",
    "ytrain = squeeze(ytrain.drop(ytrain.columns[[0]],axis = 1))\n",
    "Xtest = Xtest.drop(Xtest.columns[[0]],axis = 1)\n",
    "ytest = squeeze(ytest.drop(ytest.columns[[0]],axis = 1))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### The printOutput function\n",
    "\n",
    "The purpose of this function is to plot the regression weights, the predicted values yhat of y against ytest, the (number of the) gene with the strongest coefficient and the so-called _coefficient of determination_ $R^2$, defined as:\n",
    "\\begin{equation}\n",
    "    R^2 := 1 - \\frac{\\sum_{(x_i,y_i) \\, \\in \\mathrm{\\, test \\ set}} (\\hat{y}(x_i) - y_i)^2}{\\sum_i (y_i - \\overline{y})^2},\n",
    "\\end{equation}\n",
    "where $\\overline{y}$ is the emperical mean of the $y_i$'s in the test set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "def printOutput(lm_, Xtest_, ytest_):   # lm_ = instance of linear_model.xxx(xxx)\n",
    "    yhat = lm_.predict(Xtest_)  ### CHANGE THIS LINE ###\n",
    "    plt.figure(1)\n",
    "    plt.title(\"Regression Weights\")\n",
    "    plt.plot(lm_.coef_.T)\n",
    "    plt.figure(2)\n",
    "    plt.title('yhat vs ytest')\n",
    "    plt.plot(ytest_, yhat, 'ro')\n",
    "    plt.show()\n",
    "    print('R2 :', lm_.score(Xtest_,ytest_)) ### CHANGE THIS LINE ### \n",
    "    print('Gene with Strongest Coefficient :' , abs(lm_.coef_).argmax()) ### CHANGE THIS LINE ###\n",
    "    if hasattr(lm_, 'alpha'): print('Used Lambda :', lm.alpha) # if using linear_model.xxx\n",
    "    if hasattr(lm_, 'alpha_'): print('Lambda_ResultOfCV :', lm.alpha_ )# if using linear_model.xxxCV\n",
    "    #print('Regression Coefs :', lm_.coef_) # Can be printed out, if wanted\n",
    "    #print('Regression Intercept :', lm_.intercept_) # Can be printed out, if wanted\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Linear regression with no regularizer\n",
    "\n",
    "a. What should happen if you tried to apply linear regression without any regularizer on this data set?  \n",
    "    - many non-zero weights\n",
    "    - possible large weights\n",
    "b. Does this happen with the function _linear_model.LinearReagression()_ ?\n",
    "    - yes (only 1 zero for 4710, 3290)\n",
    "    - no (largest weight for 4710 ~0.0227, for 3290 ~0.0477)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEKCAYAAADn+anLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
       "AAALEgAACxIB0t1+/AAAIABJREFUeJztnXm4HEW5/z/fBCI7ERcgJBqUoAkqINwIl8WAWwirC5vi\n",
       "gl7FBfW6IJtL7vVeFZerIopcRYmogFeBX9hkESK4EI2yJxEiRMMWVFZBJJD390dXn1PTp3umZ7rn\n",
       "zMw57+d55unu6uqqt3u66616q+otmRmO4ziOk8eEXgvgOI7j9C+uJBzHcZxCXEk4juM4hbiScBzH\n",
       "cQpxJeE4juMU4krCcRzHKcSVhONkkLSHpOW9lqMZkk6V9PGScc+Q9Oluy+SMTVxJOF1B0kpJj0l6\n",
       "RNK9ks6UtEmv5SqDmV1jZi+sO11Jl0r6WHS8laS1BWHPbiHje8zsv0pmbeFXJNdaSc8rmZYzznAl\n",
       "4XQLA/Yzs42B7YEXA6Vqvu0gaZ260+wiPwf2jI73BJbnhN1qZveNpmCARjk/Z0BwJeF0HTNbDVwG\n",
       "bJeGSdpF0q8kPSDpekkvj85tLelqSQ9LulzS1yWdGc5NDzXft0v6E3BFCH+7pKWS7pf0U0nPidL7\n",
       "sqTVkh6SdKOk7UL4PEm3hHzulPSRED5H0qro+pmSFgVZb5a0f3TujCDfhSGda5vUyq8BdouOdwe+\n",
       "Auwche0BXB3SfmG4/79JWi7p4Ey+n46OPybp7nAf/5bTOtgsT0ZJV4fzN4RW38GSnhniPhDyvlqS\n",
       "K5Hxipn5z3+1/4A7gFeE/anAjcAnw/FWwF+BueH4leH4GeH418DngXVICtWHgO+Fc9OBtcAZwPrA\n",
       "esCBwG3AC0gqPicCvwzxXwMsATYJxy8Atgj79wC7hf1NgR3D/hxgVdhfF1gBHBfk2Qt4GNg2nD8j\n",
       "yL4zMBH4PnBWwTN5GvAYsH04vgnYGvgFsEMIuxk4AtgQWAW8NdzTDsBfgJkh3neB/wz7c8O9zAzP\n",
       "5PvhGT2vjIxx3HD8WeDUEHdi+oz8Nz5/3pJwuoWA8yU9DPwZ+COQ2tCPAC42s58CmNkVJAX5vqEF\n",
       "sDOJQnnSzH4JLGSkOWS+mf3DzB4H3g181sz+YGZrSQq5HUJaTwAbAzMlTQhx7g1pPAFsJ2kTM3vI\n",
       "zK7LuY9dgA3N7HNBnquAC4HDozjnmtkSM3sK+AFJgT4CM/snsBh4uaTNgE3N7A6SFsaeIWwmiVlq\n",
       "P+AOM1tgZmvN7HrgXODgnKQPAb5jZsvM7B/Ap7JZl5Uxei5bAtPN7KnwHzjjFFcSTrcw4EAz24Sk\n",
       "Zr43w2aV5wIHB3PGA5IeIGkxbAFMAe4PhX/KKkYShz0X+GqU1t9C+JRQqJ8CfB1YLek0SRuH868H\n",
       "5gErgzlpl5x8puTk/6cQnt7n6ujcP4CNctJJuZqk32F3IC18fxGFrTKzVeGeXpZ5Rm8ENs9Jc8uM\n",
       "jHfmxGlHxi+QtJ4uk/RHScc2ieuMcVxJOF3HzK4GvgacFIL+DJxpZk+Pfhub2edJzCabSVo/SuI5\n",
       "jCQerfNn4F2Z9DY0s2tD/l8zs52BWcC2wDEhfImZHQQ8Czgf+FFOPncD0zI2+ecCd7X3FIa4mqTf\n",
       "Yc+wD/ArEiW5J0krIr2nn+c8o/flpHkPMC06npYTpzRm9ncz+6iZPR84APiwpL2rpOkMLq4knNHi\n",
       "K8BsSS8jsYnvL+nVkiZKWi90Fm9lZn8iMT3Nl7SupF1JTC/NfNp/EzhB0iwASZumnbySdpb0Mknr\n",
       "kvQHPA48FdJ+k6RNgwnmEeCpnLQXh+s+Fq6ZE+Q5O5xvt0P318DTSUxu1wCY2QMkfQZHMKw4LgS2\n",
       "lXREyHddSf8iKR2aqyjvHwFHho7uDYBPZPJsJeNq4PlDkaV9JW0TFOPDJM8l79k44wBXEs6oYGZ/\n",
       "BRYAx5rZnSSdzScA95HUmj/C8Pv4JmBXErPRp4FzSOzkQ8ll0j6fpJVytqSHSDqEXxNObwL8L3A/\n",
       "sJKkMP5COHcEcEe45l0h34Y8zOwJYH9gH5KO41OAN5vZrVG8rAIrVGhm9hiJElzXzG6OTl1N0qK5\n",
       "OsT7O/Bq4DCSVss9JH0tk7L5hr6dk4GrgFtJFBHAP0vKOB9YEMxaBwMzgMtJFOevgK+b2c9xxiUy\n",
       "q7bokKS5JLXEicC3zeyknDgnk3xkjwFvSzsIJa1kuKayxsxmVxLGGZNIOgdYamb/0WtZBgFJM0kU\n",
       "5aTQke84HVOpJSFpIknNai6Jvffw8ILGceYB25jZDJLa2qnRaQPmmNmOriCclGAier6kCZL2IbGL\n",
       "n99rufoZSa+V9DRJTydpVS10BeHUQVVz02xghZmtNLM1JHbaAzNxDiAxM2Bmi4HJkuIRGj5Jx8my\n",
       "BYnp5BHgy8C7zeyG3orU97yLpG9hBbAGeE9vxXHGClVdGmzFyKF3LysRZyuSF9qAKyQ9BZxmZt+q\n",
       "KI8zBjCzC0k6bp2SmNk+vZbBGZtUVRJlOzSKWgu7m9ndkp4FXC5puZldU1Emx3EcpyaqKom7GDk+\n",
       "OzuRJxtnagjDzO4O279IOo/EfNWgJCRV61l3HMcZp5hZdXN+FZ8eJErmjyT+dCYB1xN8y0Rx5pG4\n",
       "YIDExcG1YX8DYOOwvyHJ7NNX5+RhVWTs9Y/EfUTP5RiP8g+y7C5/739jQH6rI51KLQkze1LS0cCl\n",
       "JENgTzezZZKOCudPM7OLlXjbXAE8ChwZLt8CODdMZF0H+IGZXVZFHsdxHKdeKvviN7NLgEsyYadl\n",
       "jo/Oue52mjsZcxzHcXqMz7juPot6LUBFFvVagAos6rUAFVnUawEqsqjXAlRkUa8F6Acqz7juNpLM\n",
       "6uh8cRzHGUfUVXZ6S8IZl0h8SGLj1jEdZ3zjSsIZr/wPyYp4juM0wZWE4ziOU4grCcdxHKcQVxKO\n",
       "4zhOIa4kHMdxnEJcSTiO4ziFuJJwHMdxCnEl4TiO4xTiSsJxHMcpxJWE4ziOU4grCcdxHKcQVxKO\n",
       "4zhOIa4knPFMf7tAdpw+wJWEM55xF/SO0wJXEo7jOE4hriQcx3GcQlxJOI7jOIW4knAcx3EKcSXh\n",
       "OI7jFOJKwnEcxymkspKQNFfSckm3STq2IM7J4fwNknbMnJso6TpJF1SVxXEcx6mXSkpC0kTgFGAu\n",
       "MAs4XNLMTJx5wDZmNgN4F3BqJpkPAkvxiU2O4zh9R9WWxGxghZmtNLM1wNnAgZk4BwALAMxsMTBZ\n",
       "0uYAkqYC84Bv4xObHMdx+o6qSmIrYFV0fGcIKxvny8AxwNqKcjiO4zhdYJ2K15c1EWVbCZK0H3Cf\n",
       "mV0naU7Ti6X50eEiM1tUWkLHKcZNnM6YIZSjc+pOt6qSuAuYFh1PI2kpNIszNYS9Hjgg9FmsB2wi\n",
       "6Xtm9pZsJmY2v6KcjuM4Y5pQeV6UHkv6VB3pVjU3LQFmSJouaRJwKLAwE2ch8BYASbsAD5rZvWZ2\n",
       "gplNM7OtgcOAK/MUhON0Ee8Hc5wWVGpJmNmTko4GLgUmAqeb2TJJR4Xzp5nZxZLmSVoBPAocWZRc\n",
       "FVkcx3Gc+pFZf5fNkszMvMbn1IqEAa8z47xey+I43aCustNnXDuO4ziFuJJwHMdxCnEl4TiO4xTi\n",
       "SsJxHMcpxJWE4ziOU4grCcdxHKcQVxKO4zhOIa4knPFMf08Scpw+wJWE4ziOU4grCcdxHKcQVxLO\n",
       "eMbdvThOC1xJOI7jOIW4knAcx3EKcSXhOI7jFOJKwnEcxynElYTjOI5TiCsJx3EcpxBXEo7jOE4h\n",
       "riSc8Yy75XCcFriScBzHcQpxJeE4juMU4krCcRzHKcSVhOM4jlNIZSUhaa6k5ZJuk3RsQZyTw/kb\n",
       "JO0YwtaTtFjS9ZKWSvpsVVkcp03cwZ/jtKCSkpA0ETgFmAvMAg6XNDMTZx6wjZnNAN4FnApgZo8D\n",
       "e5nZDsBLgL0k7V5FHsdxHKdeqrYkZgMrzGylma0BzgYOzMQ5AFgAYGaLgcmSNg/Hj4U4k4CJwP0V\n",
       "5XEcx3FqpKqS2ApYFR3fGcJaxZkKSUtE0vXAauAqM1taUR7HcRynRtapeH3ZyUhZ268BmNlTwA6S\n",
       "NgUulTTHzBaNuFiaHx0uyovjOI4znpE0B5hTd7pVlcRdwLToeBpJS6FZnKkhbAgze0jSRcDOwKJs\n",
       "JmY2v6KcjuM4Y5pQeV6UHkv6VB3pVjU3LQFmSJouaRJwKLAwE2ch8BYASbsAD5rZaknPlDQ5hK8P\n",
       "vAq4rqI8juM4To1UakmY2ZOSjgYuJel4Pt3Mlkk6Kpw/zcwuljRP0grgUeDIcPmWwAJJE0iU1Zlm\n",
       "9rMq8jhOm7jvJsdpgcz6+zuRZGbm49mdWpEw4LVmnN9rWRynG9RVdvqMa8dxHKcQVxKO4zhOIa4k\n",
       "HMdxnEJcSTiO4ziFuJJwHMdxCnEl4YxnfNSc47TAlYTjOI5TiCsJx3EcpxBXEo7jOE4hriScSkhs\n",
       "JnFcr+VwHKc7uJJwqrI/MKhLz/a3TxrH6QNcSTiO4ziFuJJwHMdxCnEl4TiO4xTiSsJxHMcpxJWE\n",
       "4ziOU4grCcdxHKcQVxKO4zhOIa4knPGMO/hznBa4knAcx3EKcSXhOI7jFOJKwnEcxynElYQznnHf\n",
       "TY7TgspKQtJcScsl3Sbp2II4J4fzN0jaMYRNk3SVpFsk3SzpA1VlcRzHceqlkpKQNBE4BZgLzAIO\n",
       "lzQzE2cesI2ZzQDeBZwaTq0BPmRm2wG7AO/LXus4juP0lqotidnACjNbaWZrgLOBAzNxDgAWAJjZ\n",
       "YmCypM3N7F4zuz6E/x1YBkypKI/jOI5TI1WVxFbAquj4zhDWKs7UOIKk6cCOwOKK8jiO4zg1sk7F\n",
       "68t2/GUnLQ1dJ2kj4MfAB0OLYuTF0vzocJGZLWpDRsdxnDGPpDnAnLrTraok7gKmRcfTSFoKzeJM\n",
       "DWFIWhf4CfB9Mzu/KBMzm19RTsdxnDFNqDwvSo8lfaqOdKuam5YAMyRNlzQJOBRYmImzEHgLgKRd\n",
       "gAfNbLUkAacDS83sKxXlcBzHcbpAJSVhZk8CRwOXAkuBc8xsmaSjJB0V4lwM3C5pBXAa8N5w+W7A\n",
       "EcBekq4Lv7lV5HFA4j2Sj/93HKceqpqbMLNLgEsyYadljo/Oue4X+GS+brBzrwUYINzBn+O0wAtp\n",
       "x3EcpxBXEo7jOE4hriSc8Yz33ThOC1xJOI7jOIW4knAcx3EKcSUxwEhs1GsZHMcZ27iSGGwekXwY\n",
       "p+M43cOVxNjDO2OdcY/ENhL/2ms5xgKVJ9M5fYe3LBwHzgNehH8PlfGWhOM4jlOIK4kakdhUYr1R\n",
       "yiutIY1KTUniRInTWsd0HGcs4UqiXh4Evt9jGbrVJ3E0yfKzjjMIeN9cTbiSqJ/n91qAUcY/Rqcf\n",
       "8b6ImnAl4VTFP0bHGcO4khhcRrVPwnEGDG/h1oQrCcdxHKcQVxKO4zhOIa4kHMdxnEJcSQwu3hfh\n",
       "dIzEBRKH9loOp/9xJTH49FpZeAfhYLIfcFivhXD6H1cSg8urei1AoNdKyhlAJHbqtQxOOVxJDC6z\n",
       "y0aU2E7q3xq/xP4Sv+y1HL1E4hiJdXstR7tIvK3Dd2uJxJa1C+TUjiuJsUfeB/ucUZeiPQ6A8evW\n",
       "WeJ44PPA8/pAlvUlNmnjkn+pkJ2XPwNA5T9J0lxJyyXdJunYgjgnh/M3SNoxCv+OpNWSbqoqRx8x\n",
       "2jX2rLnHzT+Dx2d6LUDEQmBVr4Wogb5tOQ8alZSEpInAKcBcYBZwuKSZmTjzgG3MbAaJg7hTo9Pf\n",
       "Ddf2PRKzS64CN1qFtCuDMY7ENj3IdltoqyXRr4Wxfx81UbUlMRtYYWYrzWwNcDZwYCbOAcACADNb\n",
       "DEyWtEU4vgZ4oKIMo8Vixp/zvrFOvxVwW6SrqUk8A7itG5nU3PfhhfEYp6qS2IrGpumdIazdOIPC\n",
       "xF4LUILRLvj6raBth34r4L4JQx343Vw18oddTLtfGOT3sq+o+iKW/SOyH2Nbf6Ck+dHhIjNb1M71\n",
       "o0zHL6fEdOA+Mx5r57IWx92m3wradngTcH6vhYhQwX7dbF9jHl4Y9wmS5gBz6k63qpK4C5gWHU8j\n",
       "aSk0izM1hJXGzOZ3IlyPqPLh3QGcBry7y/k4CW+AIdPOnmac12N5Yvz/ddoiVJ4XpceSPlVHulXN\n",
       "TUuAGZKmS5oEHEoyOiJmIfAWAEm7AA+a2eqK+Y5lnt5rAQrYqNcC1EXOEM9/B84tcd0h0qiZaiop\n",
       "CYkJEv/RIlpeK8CVk9NAJSVhZk+SLGt5KbAUOMfMlkk6StJRIc7FwO2SVpDUkt+bXi/pLOBXwLaS\n",
       "Vkk6slNZJI6SOKrC7XSMxL0SG/Yi7xwqNf8lZhRMcuq6kmj2DCUk8dKasnoom3zJ644EDq9Jhjxe\n",
       "UGNa6wOfLDjX12uRSLxZGq4R15TmllUnlEq8VGL/umQaFCp3jpnZJcAlmbDTMsdHF1xb5wf3zbA9\n",
       "rWksQOJpZvyzyfl1gA3MeDh7quCSzYFnhv1Bt9HeCtzIsN26q0h8h6TwBfgi8J6CqLOBaxmlgk3i\n",
       "08ApZvSq1Vv1Pjt9D9u9bkT8MELrk2YdD29/HfDyDq9NycpVx4TSM0mG+velcu0W427Go8TuwOMt\n",
       "os1nZG2zSp4b15VWnGxmmw2PuTg3AfFWictzTnWtVRRafPdFQa+J9puNz5/UJZGK+Dj0ptYYKimt\n",
       "4kxvMTN6bYmsLKQVz8doWgBKmNQwyzov/kE0/q/tUkdFqxsF+aBXADtizCkJqeUw1TLDb7fuJOvM\n",
       "NpVnZxjRIukXDgFeWTGNdj+cPYFndZBPL2pvvfo+DikR5w6SyahIzMwxpTT7X4be1VDgtzsfY3qb\n",
       "8dtlXNXU+50xpyRI+kiaUeYFrLPG8Owa04opknEoXOJ2iV07SLudj7RXZpE6KbqHXn0fEyn3XCeH\n",
       "baEppYSXgGyrsfD/kFg/3S0TvywSG0tsUDWdDP3wXo0JxqKS2GI0MpHYuqDVMlovZ5lCZGtg99IJ\n",
       "ihs6F6decgqNXnz0/f59pM+k2bvQ7j00S6vuCX4fCtuVwIVReL8W8P0qV1fp94+gGzSrKc2TWK9k\n",
       "OrdDw2iqXjWRc/OVSpnMUpv0YokfAy+pU7CQtknMioLeWPLSR6UGd+i9eL7ZSkCViZLWRt/U94Ap\n",
       "neaVzbqmdKD+QvIjYbsZ5PupknhGh6OSujbwogutnr5mPCqJZlxEe0McN80Jq/pR1vVR395G3NnA\n",
       "3mVlCOaBE3LCPyjxg5xLbmlDlphO+i6aIvHCvOC68ylgqAIisYnUtNWbW8hJ7CHx9nBYpvCs8xvP\n",
       "y69h2HqYmHhMB2k/JfHeMA8lzqcuZVknj7b478YUA6EkJN7a4/zLeMVMC5odpPIFbom8p7WONers\n",
       "Bfx3HCCxH/BOyrcUynChVLtTxWXNTkq8Uuqa08m48DsXuKeZKEGeHSQ+GoV/BTg9L25BWLNz7ZJn\n",
       "3sr2aezQKpGCfpKngLczspKWHQiyt5RbOWtF260RiW2khvlBcRr9Mi+q6wyEkgDOiA8kXizxuqLI\n",
       "UtMRO0XmmadFh9kX6rOtBMyQu65GlNcUiYMkNmsRbyPgz0Wn25SpHTpJ+6XxdRI7taptSbyb1qPN\n",
       "ZrU4XwqJnUMtNxv+tEzQrgx3CMfxphHZ5MPkvsLCSuIwacT3Fb9XrVZlS+f7HAN8IQqPlWaZgq/V\n",
       "f9nOf92gJKTcUVidymTZawsmV/4M+FiJPOrgNhKlnMeRNU7u7GsGRUlk+Qbwk/Qg04H8bODy8BGf\n",
       "kXNt0cf5+bD9Ts659XPCAEzi1S1kzeM7wHnAlS3ilXHpHBfMGwN7tCFHpzbmvNEt2U7NJZD7/GNO\n",
       "bXE+pqGGKrF5m7bh3wInF4QXMTnk9W0SZR2vK74v8GAkz3PCO7eOxFTgLLrjWr6piTPIEJvUJoTw\n",
       "Vgr7Y1LplfHS/F6Rcy5b0M+UeFmJNPPexTfQ3toWbSOxi8TncsLTZzGiwhA4EUZeNxYZVCUBDNk/\n",
       "obHTK7XXTgDempn4A/A/Bcl16r48T0m0KnzT5755i3hlannPijr2jqUe1w7t1D7T/WfkXFfHaJht\n",
       "w/armfB7gW+VSUDD6yfkyfNiaFA28T1MD9t35FyXrWz8iWSW8KkUr+xWd8fvpjmtlf1pNKkpTM6L\n",
       "TVt5/+9JJObCdloCeYone/3lwLUSd0tD31iplgTJcq7XABRM+uwYJcu0vo5kyHxey/+PYRs/36x8\n",
       "42I+x0ArCeCvJeL8poZ8mr0MT+XFkThZ4qA0PHRU7hkK9LRGup7EjEx6B5fMNyX+UOtcTCYRQGwY\n",
       "JgTmnfsnwzK+NydKg78nqZxrBIkTo8MvZs7FrcaynZpPhO0+RVlG+2XdN+T9N/sD/9bkmrqVxGzg\n",
       "EzRWNtJnnso3gfa+82aj5R7LxDmgRHrpPW8JQy2cVkoilTduRbSc9ClxpTQ0YqoVh5BYI96Uk078\n",
       "jsX72f9v0MvPUgzqTXZbg8cT0jaAxmGxGnYkuD355hYD3g98mmHXDp8Afp7JZzKJr6Qi2r3PlrZa\n",
       "iXWl5n0mUVyRuCjJmmRSuSZBbqsiJWtmaOkkMCik/2oS5clov91Ct8wQ1LxWQx55pqQPt7imG+Ps\n",
       "59NoIs1+03VNjJzeLF5k4sreY+wepNW8jvT8jrnCie8VhCu0FvcCXl+QdlFeaRqPaHjiaexSZFDL\n",
       "yNoY1AewW+a4k5EL62dGWRSlcStwWCYsdSZ4GMMfwdKca19Esq430DBCpbSYHVzTiucxbEuN7zmv\n",
       "sH89+XLHcScUhDdeIJ4OPLeEfFlF2hS1dsPSTlpLSsbbkqCQJX4klapR9wrR/D0qajk0MxVKI720\n",
       "jhg1FkYFxu+YhWeX54UgbkkUvSdvDtsTMqP+DmG4tZht0U+WuDBNW+IUiTMZ+b1vBEOm6bJm0uyg\n",
       "hzHJwCiJ8GdvXGT6yKHVvT1GsWlgerTf0FchsW8mbqokOn6WUmHnWGqqyjOBpB/D4hDn+II0srbz\n",
       "7UP8p1FceKT5TS84H/PtrExSrvfPWRQ4GmyFxPyCUxOBJ6WkUzvUKN8Y9qeo/CSsNN5OmfCi0Wfb\n",
       "RfsHk2OySAlmxqHWplQ4CKKI9N6atTjTvNZh5Hs4ITo/S2IZxf973J+1pklW+5HjpVXi2TR2rD9E\n",
       "o2PGK0lGDC3OSXM9YJdMWLP/76BoP27VZe9tO5JBBmn4kcARwLycNPeWmvYTZvstu7nEbN8wSDf5\n",
       "AIlTs2Zjy2OyH3we8WiO+IXcA0DibTnXFCmJmHZdJD+QN8KC4Rf7PGAnieeb5XaoAXymIO3spKy0\n",
       "D6Rpp3mwQY+II/EZKFRIKZfkhJ2SSSdvUltRAVq0wtaeYXtd6BR9DPgByRrOzw35/HsLWaH4WRxU\n",
       "EH5p5jjbso2JKwB/Cdt4NFKrMf/pEOAZTSoCKWsYXhnya2E7IcpvV5J+gZUF1x9EptNd4r0kfV03\n",
       "RsFFDgjz3KpnKykbku/Rd3pOWNmWdFGLOCbbeslaBwAOJBmx1rAAlcTHSYbePjMTfxDWvK/MICkJ\n",
       "SHwRlVUSQy+ixESzoQ7mmDx7acx3M8d5Nf5PlJSnFcflhKUv/BSJmcBSiV3NuJb84Yd57J05fiqz\n",
       "Tcl+uEUztrPpxTT7qLOTrLbNiTOZEh+exItygncEfp0T/uVW6ZFfYDQjq6CbjYwb8d5lRiT9JHu+\n",
       "CUUVgZipYZv2rcQ19DKFbjwXZCLw9XDY7H9vl7h100ymZgr++eH67Wl8LrPzoze0/lqRLQs+Dblz\n",
       "IsaFkhgYc1NEXmH+h5ywuFZ6ZsHLmNopN6Hcymt5hVDtRLXLeKhh2ueRTjBqeyRTeAbp88s+x7Jz\n",
       "DpqNec+O1GpG3v+4F+XsvHlmqwsJLRiJZ9F6jkYppEqL3zydYpNJqpS75SU45QiGneflzcLOfhdx\n",
       "zX9Fl2SKC9dcn00l+GD4n6/PnigwGXVaoO8Xtnll5bhQEoPWkoDyndTxRK3DSUwKI2rfEs9k2AxQ\n",
       "hoNbR6nMg0o+3WZuvjvp1J7AcKf1RHrr1bIbnX5pLfK+prHaY1GFa39C8bDbtHB8cYX0yxCbMf8j\n",
       "bMsMIIBGE1BdLeYsVQracwrC743200EmqR+wVpWhTchXXAfmhA1i+dk2g9iSaLDhSg0uC2KyXlDz\n",
       "mssvoXwNOiVrl+wmR+SEfbdJR3cr4nkFP6J4Nulo0K6rk0FkKoktO0uZGcjdINs/cCD5M7jz2Ktm\n",
       "WVKqjODLdnTnkZomy/RNAbyW4gm3Wb5fMt5AI7P+dpEuyTIV3rvofHb0LEYOVZ1OcUee05+sgr50\n",
       "fOi0z1oGs7IK8A6zXDc+fYEkM7PKw+gH8c/pVEFA/gI8VRdcd0YfVxBjh0Esg1LcLccY5H9zwhaM\n",
       "uhSO44wFXEk4juM445vKSkLSXEnLJd0mKdcnkKSTw/kbJO3YzrWO4zh9irckWiFpIslM2rkkncKH\n",
       "S5qZiTMP2MbMZpD4MTq17LWO4zh9jCuJEswGVpjZSjNbA5zNyPHEBxDs/ma2GJgsaYuS1zqO4/Qr\n",
       "riRKsBWNvl7uZOToo6I4U0pc6ziO4/SQqjMGy06yqKhx50f7c8LPcRynp/RVS0LSHLpQOFZVEnfR\n",
       "OGZ9GsNeKIviTA1x1i1xbWB+NSkdx3Hqp6+UhJktInIjI6nIe3JbVDU3LQFmSJouaRJwKLAwE2ch\n",
       "8BYASbsAD5rZ6pLXOo7jOD2kUkvCzJ6UdDSJf/2JwOlmtkzSUeH8aWZ2saR5klYAj5Is+lF4bRV5\n",
       "HMdxRpG+akl0i0H03eQ4jtMPHG02tN5G3zGefTc5juP0A+OiJeFKwnEcxynElcQwf++1AI7jDBTe\n",
       "khhnPNZrATrktb0WYBzyjtZRnHGAK4lxwO+i/UH9w9fWnN5tJeP9tuZ8i3hqlPJph+zCVU7/0s3V\n",
       "4wa1zGiL8a4k4mFTE4Dba0r3bx1eV3bt4Vgx1FmITqH8ULI43mY15H13QXhVM+CT0X5da4dkn/mM\n",
       "nDjLa8qrHequMPSS79WUzu+B/6sprSw/7FK6fcW4VRJmCHgwCpoA/GdB9MVNkvprTlhHH6sZfy4Z\n",
       "Na7BZAv1Kp50LSe9It4P/AT4iBkPVMgzpeiZdVrw/QZ4gsY1psvU/L4BbJET/pVo/3fAj9MDM1aE\n",
       "3cejONei8QwmAAATGklEQVSVyOuKEnHK8m7g4Zzwo4CP1pgPwB/Ctsw9FvF4i/OPVkg7xoAv1ZRW\n",
       "zI1m/KUL6fYd41ZJBA6N9pc0ibeyybm4UH1/TljMHSVkKkOcflyIzjarVINtZ0LKb814g1npReM7\n",
       "zbsdJfGHaH8vYENgvyis5ftuxvvMWJ0T/qFofy3w3ZzL/1mwX8Rnmpy7r8W1XyJyY2PGaeQ/w+XA\n",
       "D4CLSsizXkH4BzPHqcKsMhm33clP9xaE/xG4IRP25kw+RZWDVcB/tSlHnO64YCwqiXvKRjTj/rB7\n",
       "ObBvs6gkNfSrcs7FhXJak1tTkN/zwm4d7kf+GLZxLb5MTfmhzPEZ0X6zDyrms2aFH0kzT74Fvrlq\n",
       "443R/hoznjQbMjedQnUb8jnRfjatGcCO0XGZ2qsx/C5kleEj0f6GmXNXASdQ0tRoxr1mDcoyyyNN\n",
       "zmHGyZmgtMBuVX48o1myLa5N+XuQYUvyTZIPkaxd/0wSy8CzgKuj880qGd+ksWIR831g+7CfVULj\n",
       "irGkJNKa3p+ITAEFLMocP2mWX7CnmLHcjL2joLQJ/+koLP3Y0rT+lJPUj2mvM22vPHFI1uPY26zB\n",
       "FFamEMwWLLFSjZXEPjnXvhN4lRknFCVu1vAh35o5XWRCOIN6RgylBc/Kgv+za++7GSvMuAN4Wwj6\n",
       "R3T6v4suA4pc0QwVbmYjRt791ownSop2f+soQ3mtobX9/lXA/wv7scloUjZiVAnL41st8kn/y7iQ\n",
       "3z43ovF3M/5mxtPNGsy/H6ax3yCrZETSyro4J9kzzLjRDJmxQzBPj0sGUUmcBXwtE/ZP4Nqwb8Bl\n",
       "Ode9JmznMbLV0O4LcD/DH1/8Ev80bNMPeER/hRkHm+V+iHcV5BX3m6Q1ODPjfrMRLZtW97E/8OIW\n",
       "cdI0RjxDM75tVsqOfkHY/p7EVJGnLFP2A0404/KC861qnCsYHpGVyp5XeyzbSsrjF2F7fs65nRoy\n",
       "sdzO8U5s18eRKJdZOedKmzrMuLmNuGvNOCQcvh44PCfOFVErMjU7/Q/tmQV/Zsa/t4iTKsb3kPS3\n",
       "EBRAVlHk/aepfN8waxhEMqLPL9zLF1tKPI4ZRCXxi2yAGeuZNSiJEZhxGTDZjEtyambKbLNkw3dr\n",
       "cg6SGtk0klX5UvbIxEk/3rRW/rawXYdGW2/6H32S/AKjmZw/iQ/MuDDU9G8gf16IkdhoPxPs7jGv\n",
       "aJF3nE963/8IpopdC+T7thkXZVofdVBUiLarJNI+pNSkFw/7FYAZvy+4tlmfRFrQFcn5QTPONePj\n",
       "Zrktjawi2j2WqSZuI6lhf67g/J4kq0kCnESxkjidkfIWpRlXJuYDLzHjh6G/BQAzbsxcU2bQRPa5\n",
       "fCRzXNeoxjHJoCmJpWZ8o0S83I/FbIQ9vmn8iOwHkBf/ZyQtiL2Ag824k+EXeKrZCOWWmqnSuRp3\n",
       "BxmforHwSPN6MBpFlDXjpKyM9j9gxhui4x9F+3OA6dHxTemOGQvMODGbsBlXFuRZxK7AMW1eE/u/\n",
       "/zoM9eHEpB2wqc3fSFqHMXkjZyyk/9Y2ZUqvbYfnhP8/Jfu+pCa/vIJ1Vk4fQMpvgK2zisOMX5aU\n",
       "618YOQLqP2nsl4rTfdiM48PhuZlz10T9PWmNPC+NfyPx/LwxzTvqIfEInV73qNnwe9mEvHwts21o\n",
       "QWQHW5g1KKf0nlrNA/KO6wHmEx1ck37EeX/8HQybkbLxh64x45VmPGXGougjbvYiPRSuuyzYPeMJ\n",
       "WnlKIibP3v41s4b+hex1Q30XZjyYGb737rDNs3OXNlfEmHFtpqnfSRp3MPIZXhDtfww4IRqCmpJb\n",
       "qzXjD2a1jb8vxKxhWd6UbO0VkntrZ6jnD82ajrT7Ik1GMZmxhMwIOzM+BSOeXx5lPBLMJGnpN3QG\n",
       "m2Gh3yCtfJRtsTejWWdywztjxl2hT+ETNFZc8oavPwvYxCx3OHFMq37PMUPVlelGkwMpnnCVspMZ\n",
       "v5dyJzc1o9DcFI1IyrKY4RFGRWRrNDGX0Vibj/M0DUuS9+FkwzZjZGFzS9juSlJoFn5UZvxKYnLB\n",
       "h1F2DsSXGKlMs/ySZO2Q5xecP52kpvvlgvMPEyl0M75QEK/TWl7c0fpOkn6iuFPzTwybB8sUaN8K\n",
       "6YjEfr8b8LpMnC+Q9HVcXyK9pvdlNtxBLrVlcitzL806ytOK0nJgD4m9aZyf0i7blIz3CpoPK88q\n",
       "iysYnpsyBRqGOu8U4sR9gMUJW+FghDHHwLQkzFgYakJQbE5K7cPN5jzk0bYt14ylZmzTybXhess0\n",
       "c4vIS7/hfzPjgXi0S2iZ/CzsX2vGb8wKbeSpbb3IFHcjzQuINM+PNunU/gtJ5+Y7yJ+dnKZxl1nD\n",
       "pLUscc2vLvv7uXmBoZP+kkzYk2Z8Nhy2rFmb8a6wq9DH849MlLVmPF7SrALdM3Hk3Uu2FfgRMp30\n",
       "FWjakjBrWfkixLsytDZHnCpx7T1xv5sZv2/Sv5Rlt9ZRxg4DoyQK+GReoFmDT6ZW3E9i622HMhOl\n",
       "oHlLohXbkwyPLPXBdJFbzHhalQRC4fqRoBjbdfuRbmcAL6e5cmhXcSxheMBAu1wJvLDNa7LfWy/s\n",
       "2ukz+ngUtoBo1FuoZDS02oOJsqgQ7Td3IFW+u1asMuNXXUi3bxkkc1PM0BA3il1plEvImk74yeO5\n",
       "Vt59RseEURyzAILpKf4Qx8qY7dKjStJ+B6mpTX4oeskwFYSXkcconoiVl0+8TYlbFjvR2s1FHYVe\n",
       "KsOQI8fQAd1R3xOwXad9T2YoYxb7KuUrRb3qOC47P2XMMKhKIn3RH6GNGdZtpFtIjoJo9rLWVaPZ\n",
       "i+F5IGOFL5EMnWwLMy5RvSpyNAqbNI+smfCGaP/6mu+rFbXklhlwMRTcYVo3U05ZnUfOUPic/Ov+\n",
       "b2dSn0+pgWFQlQQAwQ4/pddydBuzETPEx0JL4jEbORcjJv0Yiz70dguAvAltsUPDo2g9MKITXgn8\n",
       "OuxX9dhbZ0uil1SSwWxE5/+IKFXSb5JvLzz79pxBVRLdqv11km6zFz5Nr84m6tVQelx8HXTjWb+a\n",
       "5v1A29HcqWK7TKXYYV56fz80q391wnQAQeD9UJtDxE5pNXF0NGWImdOFfMbNXIZuMqhKop0X/EoY\n",
       "cjVQZ7plSF/Spn6h2krQeHldaQVauYyovTCxYhcc6fnYhNFJ/iPGybd7TTcItvu/SWzX7bwCI7zZ\n",
       "9gEHkO8ivc6KlCuHGhlUJVGWt5hxZpfzKPNC1qYkamYKnfkVGk3amXhVWaH0AU82OZeVtUrLt5st\n",
       "iWUUeAUwa5gM2S26Obpp3NHxEFhJm0m6XNKtki6TNLkg3lxJyyXdJunYKPxgSbdIekrSSzuVo2aa\n",
       "ukyuQF8qiTBWvFmhBL3/0LptFun1/cW81Kxw+djzGOl0scqz6dpztcQ1+QvavKwf+kqcHKrMkzgO\n",
       "uNzMtiWZXXlcNoKkiSR+/OeSDOc8XFK6ctpNwGtp9P1eN61Wv8pyLsNj34tcOLfDWhJbdz+u0zzo\n",
       "lBlVVjWdUcWseAisGa/LcT/SjAfJd7cxHgrjdAZ43/y3g0wVc9MBMGQfX0CyRkNWUcwGVpjZSgBJ\n",
       "Z5O411hmZstDWAURmvIShl1TlMKMtVJhTa6IwhsIL+mb2kzPaSTv+V5DuZXWyjBWTRPTyTddpRXD\n",
       "flMW/SaPE6iiJDY3s7RjbDWweU6craDB2dmdwMs6yKvdGdG04erAGTDM2LPXMvQ7Tdys9CtV1st2\n",
       "ukhTJSHpcvIXhW9wJW1mJqnsLNcO2P9v0oXzw8GiLlf62k18rNVA+41Oapit3Kacw/D65q3+v2up\n",
       "Z7nZmKL1mkeD9HleROJFtx+40Eau8VKFcflNSppDF4YSN1USZvaqonOSVkvawszulbQl+ePQ7yJZ\n",
       "fCdlGh2tc3zBTy3ysS/x+vbTcMYBAl5EiyU7zThM4lCSPqtWnlV3bXa+E8JQ2F6ZV1Ineg9CoRdd\n",
       "ZwAxs0VESzNL+lRh5DaoYm5aSLKAy0lhm7e04xJghqTpJLNZDyVnSUTcHtnP9LpWdhLw7LKRzUr3\n",
       "Q80iUSaD3CfRicxXMA5dSzidU2V00+eAV0m6Fdg7HCNpiqSLAMzsSeBokhWnlgLnmNmyEO+1klYB\n",
       "uwAXSbokJ4+U7MfwK6h/dqyTS08VuBmfN+OjZaO3ke4yM1a3c81YwIz3mLFDr+VwBoeOWxJmdj+J\n",
       "X5ps+N3AvtHxJcAIBWBm55GM/e4gb84Czurk2hJp2yg7WnPqw/85x6mZQVlPwlsNvaPVMo4DjY+l\n",
       "d5zmDIpbjq6vS+zkMoM21nwYcAaxFfI1YNteC+GMbQZCSfiM5d7Q5gzfQWfglIRZzz3KOuOAQTE3\n",
       "OU4rzqX8SnHO2MZNiDUyEC0Jx2mFmc+dcZxu4C2JYgbO/OBUwv9vx8nBlUQ+F0PTpTWdsYcrCcfJ\n",
       "wZVEDmbsi9s1xxv+fztODq4kHCdZ7Mfn4jhODq4kinHzwzih2WI/zkDSlytBDiquJBzHGVOY8QjJ\n",
       "+u1ODfgQ2GJ+Bzyj10I4jtM+ZtzTaxnGCq4kijmSci0tb9o6jjNmcSVRQHAFUsYdyDUka3k7jtM+\n",
       "ezB+/IMNJDLr75F/kszMvBPZcRynDeoqO73j2nEcxynElYTjOI5TiCsJx3EcpxBXEo7jOE4hriQc\n",
       "x3GcQlxJOI7jOIW4knAcx3EK6VhJSNpM0uWSbpV0maTJBfHmSlou6TZJx0bhX5C0TNINks6VtGmn\n",
       "sjiO4zjdoUpL4jjgcjPbFvhZOG5A0kTgFGAuMAs4XNLMcPoyYDsz2x64FTi+gix9i6Q5vZahCoMs\n",
       "/yDLDi5/rxl0+euiipI4AFgQ9hcAB+XEmQ2sMLOVZrYGOBs4EMDMLjezdPW3xcDUCrL0M3N6LUBF\n",
       "5vRagArM6bUAFZnTawEqMqfXAlRkTq8F6AeqKInNzWx12F8NbJ4TZytgVXR8ZwjL8naSJUMdx3Gc\n",
       "PqKpgz9JlwNb5Jw6MT4wM5OU5wSqpWMoSScCT5jZD1vFdRzHcUaXjh38SVoOzDGzeyVtCVxlZi/M\n",
       "xNkFmG9mc8Px8cBaMzspHL8NeCfwCjN7vCCf/vZA6DiO06fU4eCviqvwhcBbgZPC9vycOEuAGZKm\n",
       "A3cDhwKHQzLqCTgGeHmRgoB6btJxHMfpjCotic2AHwHPAVYCh5jZg5KmAN8ys31DvH2ArwATgdPN\n",
       "7LMh/DZgEnB/SPLXZvbeCvfiOI7j1EzfryfhOI7j9I6+nXFdNAmv10j6jqTVkm6KwgonFko6PtzD\n",
       "ckmvjsJ3knRTOPfVUZR/mqSrJN0i6WZJHxiUe5C0nqTFkq6XtFRS2irte9kz9zFR0nWSLhg0+SWt\n",
       "lHRjkP83Ayj/ZEk/DhN5l0p62aDIL+kF4bmnv4ckfaDr8ptZ3/1ITFMrgOnAusD1wMxeyxVk2wPY\n",
       "EbgpCvs88LGwfyzwubA/K8i+briXFQy33n4DzA77FwNzR0n+LYAdwv5GwB+AmYNyD8AGYbsOcC2w\n",
       "+6DIHt3Dh4EfAAsH8P25A9gsEzZI8i8A3h69Q5sOkvzRfUwA7gGmdVv+UbupNh/ArsBPo+PjgON6\n",
       "LVckz3QalcRyknkjkBTCy8P+8cCxUbyfArsAWwLLovDDgG/26F7OB145aPcAbAD8FthukGQnmTR6\n",
       "BbAXcMGgvT8kSuIZmbCBkJ9EIdyeEz4Q8mdkfjVwzWjI36/mprKT8PqFoomFU0hkT0nvIxt+Fz24\n",
       "PyWjznYkmfE+EPcgaYKk64OMV5nZLQyI7IEvk4zqWxuFDZL8BlwhaYmkd4awQZF/a+Avkr4r6feS\n",
       "viVpQwZH/pjDgLPCflfl71clMbC96Zao5r6XX9JGwE+AD5rZI/G5fr4HM1trZjuQ1Mj3lLRX5nzf\n",
       "yi5pP+A+M7sOyB3a3c/yB3Yzsx2BfYD3SdojPtnn8q8DvBT4hpm9FHiUjM+5PpcfAEmTgP2B/8ue\n",
       "64b8/aok7iKxtaVMo1Hz9RurJW0BoGRi4X0hPHsfU0nu4y4afVVNDWGjgqR1SRTEmWaWzm8ZqHsw\n",
       "s4eAi4CdGBzZ/xU4QNIdJLXAvSWdyeDIj5ndE7Z/Ac4j8c82KPLfCdxpZr8Nxz8mURr3Doj8KfsA\n",
       "vwv/AXT5+ferkhiahBe05qEkk/f6lXRiITROLFwIHCZpkqStgRnAb8zsXuDhMLJCwJvJn4xYOyG/\n",
       "04GlZvaVQboHSc9MR25IWh94FXDdIMgOYGYnmNk0M9uaxFxwpZm9eVDkl7SBpI3D/oYkdvGbBkX+\n",
       "kO8qSduGoFcCtwAXDIL8EYczbGpK5eye/KPZ2dJmx8w+JCNvVgDH91qeSK6zSGaPP0HSb3IksBlJ\n",
       "Z+StJC7QJ0fxTwj3sBx4TRS+E8kHtgI4eRTl353EHn49SQF7HYkr976/B+DFwO+D7DcCx4Twvpc9\n",
       "515ezvDopoGQn8Smf3343Zx+l4Mif8h3e5IBDzcA55J0Zg+S/BsCfwU2jsK6Kr9PpnMcx3EK6Vdz\n",
       "k+M4jtMHuJJwHMdxCnEl4TiO4xTiSsJxHMcpxJWE4ziOU4grCcdxHKcQVxKO4zhOIa4kHMdxnEL+\n",
       "P6y9WsRWNNGFAAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04acfeadd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad0784a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.568841483776\n",
      "Gene with Strongest Coefficient : 3152\n"
     ]
    }
   ],
   "source": [
    "lmlinear = linear_model.LinearRegression()\n",
    "lmlinear.fit(Xtrain,ytrain)\n",
    "\n",
    "printOutput(lmlinear,Xtest,ytest)   ### PROVIDE THE OUTPUT ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.00978251,  0.00190322, -0.00326635, ...,  0.00600652,\n",
       "        0.004281  ,  0.00292544])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lmlinear.coef_\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "0.0192863272126\n"
     ]
    }
   ],
   "source": [
    "zeros=(lm.coef_==0)\n",
    "print(zeros.sum())\n",
    "\n",
    "print(np.abs(lm.coef_).max())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Ridge regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "8rxsxiKVbmgAAAAASUVORK5CYII=\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad3575f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad05a518>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.561309344989\n",
      "Gene with Strongest Coefficient : 3152\n",
      "Lambda_ResultOfCV : 0.1\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.RidgeCV(cv=10)  ### CHANGE THIS LINE ###\n",
    "lm.n_jobs=-1\n",
    "lm.fit(Xtrain, ytrain);\n",
    "\n",
    "printOutput(lm, Xtest, ytest)   ### PROVIDE THE OUTPUT ###"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### LASSO regression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "TkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad19a550>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f04ad2b4c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.569743223905\n",
      "Gene with Strongest Coefficient : 3152\n",
      "Lambda_ResultOfCV : 0.000337915144632\n",
      "Regression Coefficient of Gene 5954 :  0.0\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.LassoCV(cv=10) ### CHANGE THIS LINE ###\n",
    "lm.n_jobs=-1\n",
    "lm.max_iter=10000\n",
    "lm.fit(Xtrain, ytrain)\n",
    "\n",
    "printOutput(lm, Xtest, ytest)   ### PROVIDE THE OUTPUT ###\n",
    "\n",
    "print('Regression Coefficient of Gene 5954 : ', lm.coef_[5954]) ### CHANGE THIS LINE ### ### PROVIDE THE OUTPUT ###"
   ]
  }
 ],
 "metadata": {
  "annotations": {
   "author": "",
   "categories": [
    "intelligent-systems-1-2015"
   ],
   "date": "2015-05-07",
   "location": "Beginning of next lecture",
   "parent": "IS_SS2015",
   "submission_date": "2015-05-21",
   "subtitle": "Exercise Sheet 4, Regularized Linear Regression",
   "tags": [
    "IntelligenSystems",
    "Course"
   ],
   "title": "Intelligent Systems 1 - Summer Semester 2015"
  },
  "celltoolbar": "Edit Metadata",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.4.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}