diff --git a/is/UB2/correction.pdf b/is/UB2/correction.pdf new file mode 100644 index 0000000..33e646d --- /dev/null +++ b/is/UB2/correction.pdf Binary files differ diff --git a/is/UB3/ExerciseSheet3corrected.ipynb b/is/UB3/ExerciseSheet3corrected.ipynb new file mode 100644 index 0000000..ac0eece --- /dev/null +++ b/is/UB3/ExerciseSheet3corrected.ipynb @@ -0,0 +1,1337 @@ +{ + "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", + "\\newcommand{\\real}{\\mathbb{R}}\n", + "\\newcommand{\\normal}{\\mathcal{N}}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#Exercise Sheet 3\n", + "Maximus Mutschler & Jan-Peter Hohloch" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Gaussian Algebra (25 Points)\n", + "\n", + "Prove that the product of two univariate (scalar) Gaussian distributions is a Gaussian again, i.e. show, by explicitly performing the required arithmetic transformations, that\n", + "\n", + "\\begin{equation}\n", + " \\normal(x;\\mu,\\sigma^2)\\normal(x;m,s^2) = \\normal[x; (\\frac 1{\\sigma^2}+\\frac 1{s^2})^{-1}(\\frac \\mu{\\sigma^2}+\\frac m{s^2}),(\\frac 1{\\sigma^2}+\\frac 1{s^2})^{-1}]\\normal[m,\\mu,\\sigma^2+s^2].\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Proof\n", + "\\begin{align*}\n", + " f(x) &= \\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\cdot e^{\\frac{-(x-\\mu)^2}{2\\sigma^2}}\\cdot \\frac{1}{\\sqrt{2\\pi s^2}}\\cdot e^{\\frac{-(x-m)^2}{2s^2}}\\\\\n", + " &=\\frac{1}{2\\pi s\\sigma}\\cdot e^{-\\alpha}\\\\\n", + " \\text{where }\\alpha &= \\frac{s^2(x-\\mu)^2+\\sigma^2(x-m)^2}{2\\sigma^2 s^2}\\\\\n", + " &=\\frac{(s^2+\\sigma^2)x^2-2(s^2\\mu+\\sigma^2 m)x+s^2\\mu^2+\\sigma^2m^2}{2\\sigma^2s^2}\\\\\n", + " &=\\frac{x^2-2\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}x+\\frac{s^2\\mu^2+\\sigma^2m^2}{s^2+\\sigma^2}}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}\\\\\n", + " &=\\frac{\\left(x-\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}\\right)^2-\\left(\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}\\right)^2+\\frac{s^2\\mu^2+\\sigma^2m^2}{s^2+\\sigma^2}}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}\\\\\n", + " &=\\frac{\\left(x-\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}\\right)^2}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}+\\underbrace{\\frac{\\frac{s^2\\mu^2+\\sigma^2m^2}{s^2+\\sigma^2}-\\left(\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}\\right)^2}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}}_\\beta\\\\\n", + " \\beta&= \\frac{\\frac{s^4\\mu^2+s^2\\sigma^2\\mu^2+s^2\\sigma^2m^2+\\sigma^4m^2-\\left(s^4\\mu^2+2s^2\\sigma^2\\mu m+\\sigma^4m^2\\right)}{\\left(s^2+\\sigma^2\\right)^2}}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}\\\\\n", + " &=\\frac{s^2\\sigma^2\\left(\\mu^2-2\\mu m+m^2\\right)}{2\\sigma^2s^2\\left(s^2+\\sigma^2\\right)}\\\\\n", + " &=\\frac{(\\mu-m)^2}{2(s^2+\\sigma^2)}\\\\\n", + " \\Rightarrow f(x)&=\\frac{1}{2\\pi s\\sigma}\\cdot e^{-(\\alpha-\\beta)-\\beta}\\\\\n", + " &=\\frac{1}{2\\pi s\\sigma}\\cdot e^{-\\frac{\\left(x-\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2}\\right)^2}{\\frac{2\\sigma^2s^2}{s^2+\\sigma^2}}}\\cdot e^{-\\frac{(\\mu-m)^2}{2(s^2+\\sigma^2)}}\\\\\n", + " &=\\frac{\\sqrt{2\\pi(s^2+\\sigma^2)}\\sqrt{2\\pi\\frac{\\sigma^2s^2}{s^2+\\sigma^2}}}{2\\pi s\\sigma}\\normal\\left[x;\\frac{s^2\\mu+\\sigma^2 m}{s^2+\\sigma^2},\\frac{\\sigma^2s^2}{s^2+\\sigma^2}\\right]\\normal\\left[\\mu;m,\\sigma^2+s^2\\right]\\\\\n", + " &=\\frac{\\sqrt{2\\pi\\cdot 2\\pi\\sigma^2s^2}}{2\\pi s\\sigma}\\normal\\left[x; \\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\left(\\frac \\mu{\\sigma^2}+\\frac m{s^2}\\right),\\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\right]\\normal\\left[\\mu;m,\\sigma^2+s^2\\right]\\\\\n", + " &=\\normal\\left[x; \\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\left(\\frac \\mu{\\sigma^2}+\\frac m{s^2}\\right),\\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\right]\\normal\\left[\\mu;m,\\sigma^2+s^2\\right]\\hspace{2cm}\\\\\n", + " &=\\normal\\left[x; \\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\left(\\frac \\mu{\\sigma^2}+\\frac m{s^2}\\right),\\left(\\frac 1{\\sigma^2}+\\frac 1{s^2}\\right)^{-1}\\right]\\normal\\left[m,\\mu,\\sigma^2+s^2\\right]\\hspace{2cm} q.e.d.\n", + "\\end{align*}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maximum Likelihood Estimator of Simple Linear Regression (25 Points)\n", + "\n", + "Derive the formula $\\mathbf{w}_{MLE} = (X^TX)^{-1}X^T\\mathbf{y}$ from the lecture, by calculating the derivative of $p(\\mathbf{y}\\,|X,\\mathbf{w}) = \\normal(\\mathbf{y}\\,|X\\mathbf{w}, \\sigma^2I)$ with respect to $\\mathbf{w}$, setting it to zero and solving it for $\\mathbf{w}$.\n", + "\n", + "\n", + "Note: _To refresh your linear algebra you might find it useful to have a look in [here](http://webdav.tuebingen.mpg.de/lectures/ei-SS2015/pdfs/Murray_cribsheet.pdf)._" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$\\left(2\\pi\\right)^{-\\frac{k}{2}}\\left|\\Sigma\\right|^{-\\frac{1}{2}}\\cdot e^{-\\frac{1}{2}\\left(\\vec y-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec y-\\mu\\right)}\\text{, where: }k=n\\text{ number of measurments},\\ \\Sigma=\\sigma I,\\ \\mu=X\\vec w$\n", + "\\begin{align*}\n", + " &\\frac{d}{d\\vec w} \\left(2\\pi\\right)^{-\\frac{k}{2}}\\left|\\Sigma\\right|^{-\\frac{1}{2}}\\cdot e^{-\\frac{1}{2}\\left(\\vec y-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec y-\\mu\\right)}\\\\ &=\\underbrace{\\left(2\\pi\\right)^{-\\frac{k}{2}}\\left|\\Sigma\\right|^{-\\frac{1}{2}}\\cdot e^{-\\frac{1}{2}\\left(\\vec y-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec y-\\mu\\right)}}_{>0}\\frac{d}{d\\vec w}\\left(-\\frac{1}{2}\\left(\\vec y-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec y-\\mu\\right)\\right)&\\overset{!}{=}&0\\\\\n", + " \\Leftrightarrow &\\frac{d}{d\\vec w}-\\frac{1}{2}\\left(\\vec{y}-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec{y}-\\mu\\right) &=&0\\\\\n", + " \\Leftrightarrow & \\frac{d}{d\\vec w}\\left(\\vec{y}-\\mu\\right)^T\\Sigma^{-1}\\left(\\vec{y}-\\mu\\right) &=&0\\ (\\Sigma\\not=\\mathcal{O})\\\\\n", + " \\Leftrightarrow & \\frac{d}{d\\vec w}\\left(\\vec{y}-\\mu\\right)^T\\left(\\vec{y}-\\mu\\right) &=&0\\\\\n", + " \\Leftrightarrow & \\frac{d}{d\\vec w}\\left(\\left(\\vec{y}-X\\vec{w}\\right)^T\\right)\\left(\\vec{y}-X\\vec{w}\\right) + \\left(\\vec{y}-X\\vec{w}\\right)^T\\frac{d}{d\\vec w}\\left(\\vec{y}-X\\vec{w}\\right)&=&0\\\\\n", + " \\Leftrightarrow & -X^T\\left(\\vec{y}-X\\vec{w}\\right)-\\left(\\vec{y}-X\\vec{w}\\right)^TX &=&0\\\\\n", + " \\Leftrightarrow & -X^T\\left(\\vec{y}-X\\vec{w}\\right)-X^T\\left(\\vec{y}-X\\vec{w}\\right)&=&0\\\\\n", + " \\Leftrightarrow & X^T\\left(\\vec{y}-X\\vec{w}\\right) &=&0\\\\\n", + " \\Leftrightarrow & \\vec{y}-X\\vec{w} &=&0\\\\\n", + " \\Leftrightarrow & \\vec{y}&=& X\\vec{w}\\\\\n", + " \\Leftrightarrow & X^T\\vec{y} &=& X^TX\\vec{w}\\\\\n", + " \\Leftrightarrow & \\vec{w} &=& \\left(X^TX\\right)^{-1}X^T\\vec{y}\\hspace{1cm} q.e.d.\n", + "\\end{align*}\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Linear regression (50 Points)\n", + "\n", + "In this exercise you will perform a regression analysis on a toy dataset. You will implement ridge regression and learn how to find a good model through a comparative performance analysis.\n", + "\n", + "1) Download the [training set](http://webdav.tuebingen.mpg.de/lectures/ei-SS2015/data/ex1_train.csv)!
\n", + "2) Implement $\\mathbf{w}_{RIDGE}$ as a function of a given $X, \\mathbf{y}$ array and a regularization parameter $\\lambda$!" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Loading the required packages\n", + "%matplotlib inline\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from IPython.html.widgets import interact\n", + "import csv" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [], + "source": [ + "def wRidge(X,y,lamb):\n", + " # Change the following line and implement the ridge regression estimator wRidge\n", + " return np.dot(np.dot(np.linalg.pinv((np.dot(X.T,X)+lamb*np.identity(X.shape[1]))),X.T),y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "3) Load \"ex1_train.csv\" into a numpy array! The first column in the csv file is $X$ and the second column is $\\mathbf{y}$, assign them to each variable!" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Read ex1_train.csv and assign the first column and \n", + "# second column to variables x and y respectively.\n", + "\n", + "a = np.genfromtxt('ex1_train.csv', delimiter=' ')\n", + "x= a[:,0]\n", + "y= a[:,1]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "4) Plot the training data with appropriate labels on each axes!" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "collapsed": false, + "scrolled": false + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": [ + "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\n", + "oJt+CXUlyycAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Plot the input data here\n", + "plt.plot(x,y,'o')\n", + "plt.title('Input data')\n", + "plt.ylabel('Output y')\n", + "plt.xlabel('Input x') " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "5) Implement a function which constructs features upto a input polynomial degree $d$!
\n", + "Note: _Constructing higher polynomial features is similar to what you implemented in Exercise 3 (SVM) of the previous exercise sheet._" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def construct_poly(x,d):\n", + " ## Implement a method which given an array of size N, \n", + " ## returns an array of dimension (N,d)\n", + " poly=np.zeros((len(x),1), float)\n", + " xr = np.reshape(x,(len(x),1))\n", + "\n", + " for i in range(0,d):\n", + " poly = np.append(poly, (xr**i), axis=1)\n", + " \n", + " a= np.zeros((x.shape[0],d+1))\n", + " for i in range (0,d):\n", + " a[:,i]=np.power(x,i)\n", + " \n", + " #print (a)\n", + " #print (poly)\n", + " return poly" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "6) Implement the Mean Squared Error Loss (MSE) as a function of the predicted and true values of the target variable!
" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def MSE(y_predict,y_true):\n", + " ## Implement mean squared error for a given input y and its predictions.\n", + " return (np.linalg.norm(y_predict-y_true)**2)/y_predict.shape[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "7) By comparing the MSE find the degree $d$ for the polynomial that fits the training data best! You might find it useful to use the code below to interactively change the variable $d$, set $\\lambda = 1$ and keep it fixed. Plot the error as a function of different values of $d$!
" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": { + "collapsed": false, + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimal MSE for n=7\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "RU5ErkJggg==\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "##This function provides an interactive mode to change polynomial degree. \n", + "@interact(n=[1,16])\n", + "def plot(n):\n", + " X = construct_poly(x,n) #n=d\n", + " w = wRidge(X,y,1.0)\n", + " plt.plot(x,X.dot(w))\n", + " plt.title(\"MSE %f\" % MSE(X.dot(w),y))\n", + " plt.plot(x,y,'yo')\n", + " print(\"minimal MSE for n=7\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "8) Apply models with different values of $d$ after being trained on the training dataset, to the test data available [here](http://webdav.tuebingen.mpg.de/lectures/ei-SS2015/data/ex1_test.csv). Compare the errors on the test data to the ones from the training by plotting the error curves as functions of the polynomial degree in a single plot! What do you conclude?
" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import scipy\n", + "from scipy import linalg\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "minimal MSE for n=6\n" + ] + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "## Read test data here\n", + "a = np.genfromtxt('ex1_test.csv', delimiter=' ')\n", + "xt= a[:,0]\n", + "yt= a[:,1]\n", + "X = construct_poly(x,8)\n", + "w = wRidge(X,y,1.0)\n", + "@interact(n=[1,16])\n", + "def plot(n):\n", + " X = construct_poly(x,n) \n", + " Xt = construct_poly(xt,n) #n=d\n", + " w = wRidge(X,y,1.0)\n", + " plt.plot(x,X.dot(w),'g',label='regression training')\n", + " plt.plot(xt,Xt.dot(w),'b',label='regression test')\n", + " plt.title(\"MSE train: %f MSE test: %f\" % (MSE(X.dot(w),y),MSE(Xt.dot(w),yt)))\n", + " plt.plot(xt,yt,'b*',label='data test')\n", + " plt.plot(x,y,'go',label='data trainig')\n", + " plt.ylabel('Output y') \n", + " plt.xlabel('Input x') \n", + " plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)\n", + " print \"minimal MSE for n=6\"\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#####Conclusion:\n", + "We get suitable solutions for n from 5 to 7 for the test regression. For higher values we get overfitting. For lower ones underfitting. The MSE of the test regression is always higher than the one of the training regression. That's evident because the regression function is fitted to the values of the training data and so doesn't provide an optimal fitting for the test data.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "9) With a fixed optimal $d$, change the value of $\\lambda$ to one of the following values $[0.1, 1.0, 10.0]$ and find the minimum MSE!
" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Minimum MSE for lambda = 0.1\n" + ] + }, + { + "data": { + "image/png": [ + "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\n", + "ijHHSmwAAAAASUVORK5CYII=\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# optimal d = 6\n", + "def plot():\n", + " X = construct_poly(x,6) \n", + " Xt = construct_poly(xt,6) #n=d\n", + " w = wRidge(X,y,1.0)\n", + " plt.plot(xt,Xt.dot(w),label='$\\lambda$ = 1.0'+ \" MSE: %f\" % MSE(X.dot(w),y))\n", + " \n", + " w = wRidge(X,y,0.1)\n", + " plt.plot(xt,Xt.dot(w),label='$\\lambda$ = 0.1'+ \" MSE: %f\" % MSE(X.dot(w),y))\n", + " \n", + " w = wRidge(X,y,10.0)\n", + " plt.plot(xt,Xt.dot(w),label='$\\lambda$ = 10.0'+\" MSE: %f\" % MSE(X.dot(w),y))\n", + " \n", + " plt.plot(xt,yt,'b*',label='data test')\n", + " plt.plot(x,y,'go',label='data trainig')\n", + " plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)\n", + "plot()\n", + "print('Minimum MSE for lambda = 0.1')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Hand in printed copy of completed notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "annotations": { + "author": "", + "categories": [ + "intelligent-systems-1-2015" + ], + "date": "2015-04-30", + "location": "Beginning of next lecture", + "parent": "IS_SS2015", + "submission_date": "2015-05-07", + "subtitle": "Exercise Sheet 3, 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 +} diff --git a/is/UB4/Ex4.ipynb b/is/UB4/Ex4.ipynb index 6c5a825..d273c2a 100644 --- a/is/UB4/Ex4.ipynb +++ b/is/UB4/Ex4.ipynb @@ -65,7 +65,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 13, "metadata": { "collapsed": true }, @@ -82,7 +82,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -156,7 +156,7 @@ "rkJggg==\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -208,7 +208,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 31, "metadata": { "collapsed": false }, @@ -292,7 +292,7 @@ "IS9JE+aQl6QJc8hL0oQ55CVpwhzykjRhDnlJmrD/B3ksmr9zVxpPAAAAAElFTkSuQmCC\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -363,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -403,7 +403,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -419,7 +419,7 @@ " 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", + " 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", @@ -442,7 +442,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 18, "metadata": { "collapsed": false }, @@ -703,7 +703,7 @@ "cZxKuAJxHMdxKuEKxHEcx6nE/wd+Uyvv38Z+lQAAAABJRU5ErkJggg==\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -842,7 +842,7 @@ "AElFTkSuQmCC\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -858,19 +858,51 @@ } ], "source": [ - "lm = linear_model.LinearRegression()\n", - "lm.fit(Xtrain,ytrain)\n", + "lmlinear = linear_model.LinearRegression()\n", + "lmlinear.fit(Xtrain,ytrain)\n", "\n", - "printOutput(lm,Xtest,ytest) ### PROVIDE THE OUTPUT ###" + "printOutput(lmlinear,Xtest,ytest) ### PROVIDE THE OUTPUT ###" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 19, "metadata": { "collapsed": false }, - "outputs": [], + "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", @@ -887,7 +919,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -1149,7 +1181,7 @@ "4ziOUwtXII7jOE4tXIE4juM4tXAF4jiO49TCFYjjOI5Ti/8Pp7UyPy6qLgcAAAAASUVORK5CYII=\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1286,7 +1318,7 @@ "E4SZmRVygjAzs0JOEGZmVsgJwszMCv1/gjVnCTU6RPwAAAAASUVORK5CYII=\n" ], "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -1303,7 +1335,7 @@ } ], "source": [ - "lm = linear_model.RidgeCV(alphas=[0]) ### CHANGE THIS LINE ###\n", + "lm = linear_model.RidgeCV(cv=10) ### CHANGE THIS LINE ###\n", "lm.n_jobs=-1\n", "lm.fit(Xtrain, ytrain);\n", "\n", @@ -1319,13 +1351,310 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 26, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": [ + "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\n", + "TkSuQmCC\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": [ + "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\n" + ], + "text/plain": [ + "" + ] + }, + "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() ### CHANGE THIS LINE ###\n", + "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", diff --git a/is/UB4/GeneDataSet/Xtest_3290.csv b/is/UB4/GeneDataSet/Xtest_3290.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/Xtest_4710.csv b/is/UB4/GeneDataSet/Xtest_4710.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/Xtrain_3290.csv b/is/UB4/GeneDataSet/Xtrain_3290.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/Xtrain_4710.csv b/is/UB4/GeneDataSet/Xtrain_4710.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/ytest_3290.csv b/is/UB4/GeneDataSet/ytest_3290.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/ytest_4710.csv b/is/UB4/GeneDataSet/ytest_4710.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/ytrain_3290.csv b/is/UB4/GeneDataSet/ytrain_3290.csv old mode 100755 new mode 100644 diff --git a/is/UB4/GeneDataSet/ytrain_4710.csv b/is/UB4/GeneDataSet/ytrain_4710.csv old mode 100755 new mode 100644