Newer
Older
abgabensammlungSS15 / is / UB4 / Ex4.ipynb
@Jan-Peter Hohloch Jan-Peter Hohloch on 16 May 2015 114 KB IS: UB4A2 done, A1 partly
{
 "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": 23,
   "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": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "rkJggg==\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe39491128>"
      ]
     },
     "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": 14,
   "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 0x7f2a86a67a20>"
      ]
     },
     "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": 71,
   "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": 72,
   "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 :' , 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": 76,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "P6y9WsRWNNGFAAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe3e2641d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe39385ba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.568841483776\n",
      "Gene with Strongest Coefficient : 3152\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.LinearRegression()\n",
    "lm.fit(Xtrain,ytrain)\n",
    "\n",
    "printOutput(lm,Xtest,ytest)   ### PROVIDE THE OUTPUT ###"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "0.0477049767412\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": 78,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "8rxsxiKVbmgAAAAASUVORK5CYII=\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe39007240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe392a8a58>"
      ]
     },
     "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()  ### 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": 80,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": [
       "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\n",
       "G7f1AAAAAElFTkSuQmCC\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe385bf630>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": [
       "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\n",
       "SUVORK5CYII=\n"
      ],
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fbe38eccf98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "R2 : 0.578837234346\n",
      "Gene with Strongest Coefficient : 3152\n",
      "Lambda_ResultOfCV : 0.000207341599375\n",
      "Regression Coefficient of Gene 5954 :  0.0\n"
     ]
    }
   ],
   "source": [
    "lm = linear_model.LassoCV() ### 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
}