{
"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": [
"iVBORw0KGgoAAAANSUhEUgAAAXkAAAEACAYAAABWLgY0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
"AAALEgAACxIB0t1+/AAAEBZJREFUeJzt3WusZXddh/HnS0nVlkspl2nFmvoClIYiYCxouQy3MlxK\n",
"O4QCVbEiIojgOxUl2kEUW7QVATUSCukLhfAGbLl2QEeqBqUJ0Co0hUiTFsuACgFiiBR/vlirsHpm\n",
"5szZ++y1115rPZ9kMmfvc/ZZ/+zu/Pqc/1lrT6oKSdI03WPoBUiS+uOQl6QJc8hL0oQ55CVpwhzy\n",
"kjRhDnlJmrBdD/kkb09yOMlNnftOTXIwyS1Jrktyym6PI0la3CpK/h3Avi33vRo4WFUPBT7a3pYk\n",
"rVlWcTFUkjOBa6vq7Pb2zcATq+pwktOAQ1X1Y7s+kCRpIX3tye+pqsPtx4eBPT0dR5K0jd5/8VrN\n",
"jwq+d4IkDeCePX3fw0lOq6ovJTkd+PLWL0ji4JekJVRVdvq1fQ35a4BLgMvbv997tC9aZKHaXpID\n",
"VXVg6HVMhc/navl8rs6igbyKUyjfCfwT8KNJbkvyYuAy4GlJbgGe3N6WJK3Zrku+qi4+xqeeutvv\n",
"LUnaHa94nY5DQy9gYg4NvYCJOTT0AuZqJefJL3XgpNyTl6TFLDo7LXlJmjCHvCRNmENekibMIS9J\n",
"E+aQl6SRSLho0cf0dcWrJGlFEh4E/Bnw8EUfa8lL0gZr6/1G4N+BRy36eEtekjbQlnq/sIqPt/cv\n",
"xJKXpA2ztd7vGvDLsOQlaUMcq953w5KXpA2wynrvsuQlaUB91HuXJS9JA+mr3rsseUlas77rvcuS\n",
"l6Q1Wke9d1nykrQG66z3Lkteknq27nrvsuQlqSdD1XuXJS9JPRiy3rsseUlaoU2o9y5LXpJWZFPq\n",
"vcuSl6Rd2rR677LkJWkXNrHeuyx5SVrCJtd7lyUvSQva9HrvsuQlaYfGUu9dlrwk7cCY6r3Lkpek\n",
"bYyx3rsseUk6hrHWe5clL0lbjL3euyx5SeqYQr13WfKSxLTqvcuSlzR7U6v3Lkte0mxNtd67LHlJ\n",
"szTleu+y5CXNyhzqvcuSlzQbc6n3Lkte0uTNrd67LHlJkzbHeu+y5CVN0pzrvcuSlzQ5c6/3Lkte\n",
"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\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": [
"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\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": [
"iVBORw0KGgoAAAANSUhEUgAAAX4AAAEKCAYAAAAVaT4rAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\n",
"AAALEgAACxIB0t1+/AAAF91JREFUeJzt3X+QZWV95/H3xwFFHQSRLRCYCRsQf40/NyIaNePvmXYD\n",
"lPFHNMb4m9paGWN2FYzlOsbaRciWIrHWtUaikCiU0aiYDKOs2qtZAaEKVATUIWEdQEZEMaCwgfDd\n",
"P+5pvbZ9e+7cc7tv3z7vV1VXnx9Pn/M89PDpc5/nnPOkqpAkdcd9Jl0BSdLyMvglqWMMfknqGINf\n",
"kjrG4JekjjH4JaljDH5NhSSzSV476XpIq4HBr2lRzddeS/LRJO8ec332tg5bk/zVmI51b5LfHMex\n",
"1E0GvzSdMukKaHoZ/FoRkrwlySfnbTsryZl9m45M8g9J/jnJ55M8pK/s3yT5QZLbkvzvJI9qtr8B\n",
"eDnw1iS3J/nsAuf+YJI/n7fts0n+uFk+JckNzXmvTfKsBY7xpCQ3J0nfthcmuTLJ84G3AS9t6nBF\n",
"s/+AJGcnuak5/ruT3KfZd3TTjtuS3JLkvGb7V5rDf6M51ouH/68sNarKL78m/gUcCtwBHNCs7wPs\n",
"Bp7QrM8CO4Gjgf2ALwOn9f38q4AHAvsC7wOu6Nv3EeDPFjn304Hv960/GPh5U6eHA98HDm32rQd+\n",
"c8Bxvg1s6lv/NPDmZvmdwLnzyn8a+CBwf+DfAJcCb2j2nQe8rVm+L/DUvp+7d1Ad/PJrmC+v+LUi\n",
"VNXNwFeBuSvYTcCPquqKuSLAX1bVzqq6C/gE8Pi+n/9oVf2squ4G3gU8Lsn+fadYrGvkH4BK8vRm\n",
"/UXA15o6/StwP+DRSfatqu9X1T8OOM65wCsAkhwEPA/4eN/5+z8NHAJspveH4c6qugU4E/j9psi/\n",
"0PuEc3hV/UtVfW2R+kt7xeDXSnIOTXA238+dt//mvuU7gbUASdYkeU+SnUl+CvxTU+bgYU5aVQWc\n",
"D7ys2fRy4GPNvp3AHwNbgd1Jzkvy0AGH+hjwu0keALwE+EpV7R5Q9jfofTr5QZKfJPkJ8D/pXfkD\n",
"vJXeH4qvJ7kqyauHaYs0DINfK8lngccm2QC8gCZ8h/By4Hjg2VV1APBvm+1zV9jD3A10HvCiJL8B\n",
"HAt8am5HVZ1XVU+nF9YFnL7QAarqBuAS4IX0/nD138Vz77ziu4D/Bzykqh7cfB1QVY9pjrW7qt5Q\n",
"VYcDJwH/wzt5NC4Gv1aMqrqTXuB+HLi0CdJ+g7pr1tIL0R8neSDw3+bt3w0sGppVdSXwI+DDwI6q\n",
"+meAJMckeVaS+zXnuIte988g5wKnABuAv51XhyPnBn+r6gfAF4D3Jtk/yX2SHJXkGc15X5zkiOZn\n",
"b6P3B+fevmMdtVh7pMUY/FppzqEXmgvd817zlufWzwX+L3AjcBVw8byyZwOParpU+sN4vo8Dz+KX\n",
"/fLQ698/DbgF+AG97qO3LXKMv6U3APzpZixizt80329Ncnmz/Ep6A7dXAz9uyhza7Pst4JIkt9P7\n",
"JLSlqq5v9m0Fzmna86JF6iItKL3uzRYHSDbRG5RaA3y4qk6ft/8E4M/oXa3cC7ylqr7U6qRatZKs\n",
"A64FDqmqOyZdn1Ek+R5wkv/OtVK1Cv4ka4DvAM+hd7V1GfCyqrqmr8wDq+pnzfJj6F0JHd2q1lqV\n",
"mnvY3wusrarXTbo+o0jyQuA9VXXMpOsiDbJPy58/Ftg59xE0yfnACcAvgn8u9Btr6fWjSr+i6Zvf\n",
"Te+OnE0Trs5IkswCjwD+cMJVkRbVNvgPp3d3wpwbgCfPL5TkRHr9pA+ld2+z9CuaC4S1k65HG1W1\n",
"cdJ1kIbRdnB3qH6iqvpMVT0S+F0WHrSTJC2Ttlf8NwLr+tbX0bvqX1BVfTXJPkkeUlW39u9L0m6U\n",
"WZI6qKr2+oV9bYP/cuBhSY4EbgJeyi+ffgQgyVHAP1ZVJXliU9FbWcAoDZgGSbZW1dZJ12Op2L7p\n",
"Zvum16gXzK2Cv6ruSfJG4PP0buc8u6quSXJSs/9DwO8Br0xyN72XcP3+wANKkpZc2yt+qupC4MJ5\n",
"2z7Ut3wGcEbb80iSxsMnd5fH7KQrsMRmJ12BJTY76QossdlJV2CJzU66AitN6yd3xyVJrdY+fkla\n",
"CqPmplf8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS1DEGvyR1jMEvSR1j\n",
"8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHbPPpCsgSRrOhmRmHWzZH/a7He4a\n",
"9TgGvyRNgQ3JzFPg/dvg6Lltez3LesOuHkmaAutgS3/ot2HwS9IU2B/2G9exDH5JmgJt+vTnM/gl\n",
"aQrsgrNeDzvHcaxU1TiO01qSqqpRxyokadXbkMysh5PXwv3vgDsvhE2j5Gbr4E+yCTgTWAN8uKpO\n",
"n7f/D4C30huAvh34D1X1zQWOY/BL0l4YNTdbBX+SNcB3gOcANwKXAS+rqmv6yjwFuLqqftr8kdha\n",
"VceNqwGS1FWj5mbbPv5jgZ1VdX1V3Q2cD5zQX6CqLq6qnzarlwJHtDynJKmFtsF/OLCrb/2GZtsg\n",
"rwW2tzynJKmFtk/uDt1PlOSZwGuA3255TklSC22D/0ZgXd/6OnpX/b8iyWOBbfRGoH8y6GBJtvat\n",
"zlbVbMv6SdKqkWQjsLH1cVoO7u5Db3D32cBNwNf59cHd9cCXgFdU1SWLHMvBXUnaC6PmZqsr/qq6\n",
"J8kbgc/Tu53z7Kq6JslJzf4PAf8FeDDwwSQAd1fVsW3OK0kanQ9wSdKUmtTtnJKkKWPwS1LHGPyS\n",
"1DEGvyR1jMEvSR1j8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS\n",
"1DEGvyR1jMEvSR1j8EtSxxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHbPPpCsgLZUN\n",
"ycw62LI/7Hc73LULzrqqavue9kmrncGvVWlDMvMUeP82OHpu2+vhqA0JAIP2Gf7qglTVpOsAQJKq\n",
"qky6HlodNic7LoTnz98+AzsKMmjf9qrNy1NDqb1Rc9Mrfq1K+8N+C21fC/cf9DOL7ZNWk9aDu0k2\n",
"Jbk2yfeSnLLA/kckuTjJXUn+U9vzScO4He5aaPsdcOdi+5a2VtLK0OqKP8ka4APAc4AbgcuSXFBV\n",
"1/QVuxU4GTixzbmkhQwapN0FZ70ejurvx38dXPd9+Avo9ekP2ietdm27eo4FdlbV9QBJzgdOAH4R\n",
"/FV1C3BLkhe0PJf0KxYbwL2qavuGhBk4eS3c/w648/vwF3139QzcJ612bYP/cGBX3/oNwJNbHlMa\n",
"yjrY0h/6ANvg6JneJ8ztTZAvGOaL7ZNWu7bBP9ZbgpJs7VudrarZcR5fq8soA7jSNEuyEdjY9jht\n",
"g/9GYF3f+jp6V/0jqaqtLeujDnGQVl3TXAzPzq0neecox2l7V8/lwMOSHJnkvsBLgQsGlPUefY1V\n",
"M4C7s3+bg7TSnrV+gCvJZuBMYA1wdlWdluQkgKr6UJJDgcuABwH3ArcDj6qqO+Ydxwe4tNc2JDPr\n",
"HaRVR42amz65K0lTatTc9O2cktQxBr8kdYzBL0kdY/BLUscY/JLUMQa/JHWMwS9JHWPwS1LHGPyS\n",
"1DEGvyR1jMEvSR1j8EtSxxj8ktQxbSdikVobNGH6oO2Trq807Qx+TdQiE6Y/6SnwikETqU+mttLq\n",
"4Pv4NRFzV/Nr4Ni/gwfP378ZfnQhHDx/+wzs2F61eXlqKa1svo9fU2PuKv9CeP5vLRD6AGth3wHb\n",
"nUhdasng17JbB1vmunDuGVDmDrh7wHYnUpdaMvg1FhuSmc3Jjpcks5uTHRuSmUFl94f95pafB7x9\n",
"3v7XwXW74ANOpC4tDQd3tahh7qxZZIB2wYHY2+GuueVnNN/fAVwNP74Tvj43YfqG5LIZJ1KXxs7B\n",
"XQ00INB3Xgxv6g/gzcmOC+H5839+0EDsQsd9HVx3CWwx2KXhjZqbXvFroP6++Dnb4OgZOBn4RUD3\n",
"d930GzQQ21zN8wx414PgqPtB3Q4/HWvlJQ1k8GugYQO9v+um354GYh8OB2775V09B70e3u99+tLS\n",
"c3BXAw0b6LvgrEEDsYMGfQd9mljf+zQhaQl5xa+BmkA/an5f/Pw7a+a6buYPxAIMGvR91F52D0ka\n",
"Hwd3tagNycz6Ee+sWWzQtyB7MyAs6dc5uKsl0YT8SH3ui40RXA1nDPNpQtL4GfxaMouNEQzqHnJg\n",
"V1p6rbt6kmwCzgTWAB+uqtMXKHMWsBn4OfCqqrpigTJ29awy3q8vLa1Rc7NV8CdZA3wHeA5wI3AZ\n",
"8LKquqavzAzwxqqaSfJk4P1Vddy4GqCVrc0YgaTFTaqP/1hgZ1Vd31TifOAE4Jq+MscD5wBU1aVJ\n",
"DkxySFXtbnluTYE2YwSSlkbb+/gPB3b1rd/QbNtTmSNanleSNKK2V/zD9hPN/yiy4M8l2dq3OltV\n",
"syPUScvI6RGl5ZNkI7Cx7XHaBv+NwLq+9XX0rugXK3NEs+3XVNXWlvXRMtrbt3JKaqe5GJ6dW0/y\n",
"zlGO07ar53LgYUmOTHJf4KXABfPKXAC8EiDJccBt9u+vDr52QZpOra74q+qeJG8EPk/vds6zq+qa\n",
"JCc1+z9UVduTzCTZCfwMeHXrWmtFGPSA1n6/Ps4jaQXxlQ0a2aBXMpwIP98JL7a7R1paTrauke3N\n",
"tIn9dsFZr+k9lPcLfwr8CTzA7h5p5fKVDR3XZoD2qqrtz0uuewc8Zg3wr8AmetMpfsC3bEorlsHf\n",
"ccPOsjXIGrjp3fCY+dv3NAmLpMmxq6fj9nbaxPkWm4RlHPWTNH5e8XfcqNMmzvEtm9L08a6ejvMN\n",
"mtL0msjbOcfJ4J8c36ApTSeDX5I6xvv4JUlDcXC3w3yzptRNBn9H+WZNqbvs6uko36wpdZfB31Ft\n",
"H9ySNL0M/o5q++CWpOll8E+JUd+gOYivWpC6y8HdKbAUA7G+akHqLh/gmgKDJjyZgR3bqzZPok6S\n",
"Js8HuFYxB2IljZPBPwUciJU0Tgb/FHAgVtI42cc/JXyDpqT5fDunJHWMg7uSpKEY/JLUMQa/JHWM\n",
"wS9JHWPwS1LHGPyS1DEjB3+Sg5JclOS7Sb6Q5MAB5f4yye4k3xq9mpKkcWlzxX8qcFFVHQN8sVlf\n",
"yEeATS3OI0kaozbBfzxwTrN8DnDiQoWq6qvAT1qcR5I0Rm2C/5Cq2t0s7wYOGUN9JElLbNGJWJJc\n",
"BBy6wK63969UVSVp/e6HJFv7VmerarbtMSVptUiyEdjY+jijvqsnybXAxqq6OclDgS9X1SMGlD0S\n",
"+FxVPWaR4/muniWyIZlZB1v2h/1uh7t2wVm+4E2afqPmZpupFy8A/gg4vfn+mRbH0hJZimkbJU23\n",
"Nn387wGem+S7wLOadZIcluTv5wolOQ/4GnBMkl1JXt2mwto762BLf+gDbIOj18PJk6qTpMka+Yq/\n",
"qn4MPGeB7TcBL+hbf9mo51B7TtsoaT6f3F3lnLZR0nwG/yrntI2S5nMGrg5w2kZpdXLqRUnqGKde\n",
"lCQNxeCXpI4x+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjqmzfv4NUWcjEXSHIO/A5yM\n",
"RVI/u3o6wMlYJPUz+DvAyVgk9bOrZ5lMso/dyVgk9TP4l8Gk+9ibyViO6j+/k7FI3eX7+JfB5mTH\n",
"hfD8+dtnYMf2qs3LUQcnY5FWn1Fz0yv+ZbAS+tibkDfoJTm4uxzsY5e0khj8y8AJzyWtJPbxLxP7\n",
"2CWNm5OtS1LHONm6JGkoBr8kdYzBL0kdM3LwJzkoyUVJvpvkC0kOXKDMuiRfTvLtJFcl2dKuupKk\n",
"ttpc8Z8KXFRVxwBfbNbnuxt4c1U9GjgO+I9JHtninJKkltoE//HAOc3yOcCJ8wtU1c1VdWWzfAdw\n",
"DXBYi3NKklpqE/yHVNXuZnk3cMhihZMcCTwBuLTFOSVJLS36rp4kFwGHLrDr7f0rVVVJBj4QkGQt\n",
"8EngTc2VvyRpQhYN/qp67qB9SXYnObSqbk7yUOCHA8rtC3wK+Ouq+sxi50uytW91tqpmFysvSV2S\n",
"ZCOwsfVxRn1yN8kZwK1VdXqSU4EDq+rUeWVCr///1qp68x6O55O7krQXlv2VDUkOAj4BrAeuB15S\n",
"VbclOQzYVlUvSPI04CvAN4G5E72tqnaMqwGS1FW+q2dCJjmloqRucyKWCZj0lIqSNApf2dDCOtjS\n",
"H/oA2+Do9XDypOokSXti8LewEqZUlKS9ZfC34JSKkqaRwd+CUypKmkbe1dOSUypKmhRv55SkjnHq\n",
"RUnSUAx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljDH5J6hiDX5I6xuCXpI4x\n",
"+CWpYwx+SeoYg1+SOsbgl6SOMfglqWMMfknqGINfkjrG4JekjjH4JaljRg7+JAcluSjJd5N8IcmB\n",
"C5TZL8mlSa5McnWS09pVV5LUVpsr/lOBi6rqGOCLzfqvqKq7gGdW1eOBxwLPTPK0FuecSkk2TroO\n",
"S8n2TTfb1z1tgv944Jxm+RzgxIUKVdXPm8X7AmuAH7c457TaOOkKLLGNk67AEts46QossY2TrsAS\n",
"2zjpCqw0bYL/kKra3SzvBg5ZqFCS+yS5sinz5aq6usU5JUkt7bPYziQXAYcusOvt/StVVUlqoWNU\n",
"1b3A45McAHw+ycaqmh2xvpKkllK1YF7v+QeTa4GNVXVzkofSu5p/xB5+5h3AnVX13xfYN1pFJKnD\n",
"qip7+zOLXvHvwQXAHwGnN98/M79AkoOBe6rqtiT3B54LvGuhg41SeUnS3mtzxX8Q8AlgPXA98JIm\n",
"4A8DtlXVC5I8FvgovbGE+wB/VVV/Po6KS5JGM3LwS5Km00Se3B3m4a++smuSXJHkc8tZxzaGfLht\n",
"XZIvJ/l2kquSbJlEXfdGkk1Jrk3yvSSnDChzVrP/G0mesNx1bGNP7UvyB027vpnk/zSfaKfCML+7\n",
"ptyTktyT5IXLWb+2hvy3ubHJkquSzC5zFVsZ4t/mwUl2NA/LXpXkVYsesKqW/Qs4A3hrs3wK8J5F\n",
"yv4J8DHggknUdanaR+9uqcc3y2uB7wCPnHTdF2nTGmAncCSwL3Dl/PoCM8D2ZvnJwCWTrveY2/cU\n",
"4IBmedO0tG+YtvWV+xLwd8DvTbreY/7dHQh8GziiWT940vUec/u2AqfNtQ24Fdhn0DEn9a6eoR7+\n",
"SnIEvTD5MDBNg797bF9V3VxVVzbLdwDXAIctWw333rHAzqq6vqruBs4HTphX5hftrqpLgQOTLPh8\n",
"xwq0x/ZV1cVV9dNm9VLgiGWu46iG+d0BnAx8ErhlOSs3BsO07+XAp6rqBoCq+tEy17GNYdr3A+BB\n",
"zfKDgFur6p5BB5xU8A/18BfwPuAtwL3LUqvxGbZ9ACQ5EngCvTBZqQ4HdvWt39Bs21OZaQnHYdrX\n",
"77XA9iWt0fjssW1JDqcXJh9sNk3T4N8wv7uHAQc13auXJ/nDZatde8O0bxvw6CQ3Ad8A3rTYAdvc\n",
"zrmotg9/Jfn3wA+r6oqV+K6NcTzc1hxnLb2rrDc1V/4r1bBBMP+T2bQEyND1TPJM4DXAby9ddcZq\n",
"mLadCZza/HsN0/UJe5j27Qs8EXg28ADg4iSXVNX3lrRm4zFM+/4UuLKqNiY5CrgoyeOq6vaFCi9Z\n",
"8FfVcwftS7I7yaH1y4e/frhAsacCxyeZAfYDHpTk3Kp65RJVea+MoX0k2Rf4FPDXVfVrz0GsMDcC\n",
"6/rW19G78liszBHNtmkwTPtoBnS3AZuq6ifLVLe2hmnbvwPO72U+BwObk9xdVRcsTxVbGaZ9u4Af\n",
"VdWdwJ1JvgI8DpiG4B+mfU8F/itAVV2X5J+AhwOXL3jECQ1WnAGc0iyfyiKDu02Z3wE+N+lBlnG2\n",
"j94V1bnA+yZd3yHbtA9wHb0Bpvuy58Hd45iSwc+9aN96eoNsx026vuNu27zyHwFeOOl6j/l39wjg\n",
"f9EbKH0A8C3gUZOu+xjb917gnc3yIc0fhoMGHnNCDTmo+SV8F/gCcGCz/TDg7xco/ztM1109e2wf\n",
"8DR6YxdXAlc0X5smXfc9tGszvbuPdgJva7adBJzUV+YDzf5vAE+cdJ3H2T56Nxnc2vf7+vqk6zzO\n",
"311f2akK/mHbB/xnenf2fAvYMuk6j7N99D6lfa75/+5bwMsXO54PcElSxzj1oiR1jMEvSR1j8EtS\n",
"xxj8ktQxBr8kdYzBL0kdY/BLUscY/JLUMf8fhSQtUJsf0TcAAAAASUVORK5CYII=\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
}