diff --git a/assignment4/Assignment4.ipynb b/assignment4/Assignment4.ipynb new file mode 100644 index 0000000..d292fea --- /dev/null +++ b/assignment4/Assignment4.ipynb @@ -0,0 +1,693 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Assignment4.ipynb", + "provenance": [], + "collapsed_sections": [], + "toc_visible": true, + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "wWKlAIeLj21v", + "colab_type": "text" + }, + "source": [ + "**Submission deadline:**\n", + "* **Regular problems: last lab session before or on Monday, 9.13.2020b**\n", + "* **Bonus problems: Last lab during semester**\n", + "\n", + "**Points: 5 + 9 bonus points**\n", + "\n", + "Please note: some of the assignments are tedious or boring if you are already a NumPy ninja. The bonus problems were designed to give you a more satisfying alternative.\n", + "\n", + "## Heads Up!\n", + "\n", + "This assignment comes with starter code, but you are not forced to use it, as long as you execute all analysis demanded in the problems.\n", + "\n", + "## A note about plots!\n", + "\n", + "Plots are a way of communication. Just lke text, they can be paraphrased. You do not have to exactly reproducy my plots, but you must try to make suer yourp plots tell a similar story:\n", + "- label axis\n", + "- add titles\n", + "- choose plot type properly\n", + "- choose a color scale, limits, ticks\n", + "\n", + "so that you can describe what is happening!\n", + "\n", + "## Bugs?!\n", + "\n", + "Please submit Github PRs or email us about any problems with the notebook - we will try to correct them quickly. " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "fdbcvRkik-qM", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Standard IPython notebook imports\n", + "%matplotlib inline\n", + "\n", + "import os\n", + "\n", + "from io import StringIO\n", + "import itertools\n", + "import httpimport\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "from tqdm import tqdm_notebook\n", + "\n", + "import scipy.stats as sstats\n", + "import scipy.optimize as sopt\n", + "\n", + "import seaborn as sns\n", + "\n", + "import sklearn.datasets\n", + "import sklearn.ensemble\n", + "import sklearn.svm\n", + "import sklearn.tree\n", + "\n", + "import cvxopt\n", + "\n", + "\n", + "# In this way we can import functions straight from github\n", + "with httpimport.github_repo('janchorowski', 'nn_assignments', \n", + " module='common', branch='nn18'):\n", + " from common.plotting import plot_mat\n", + "\n", + "sns.set_style('whitegrid')" + ], + "execution_count": 0, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tmhgKqnsIfx8", + "colab_type": "text" + }, + "source": [ + "\n", + "# SVM Theory\n", + "A linear SVM assigns points $x^{(i)}\\in\\mathbb{R}^n$ to one of two\n", + "classes, $y^{(i)}\\in\\{-1,1\\}$ using the decision rule:\n", + "\n", + "\\begin{equation}\n", + "y = \\text{signum}(w^T x + b).\n", + "\\end{equation}\n", + "\n", + "SVM training consists of finding weights $w\\in\\mathbb{R}^n$\n", + "and bias $b\\in\\mathbb{R}$ that maximize the separation margin. This\n", + "corresponds to solving the following quadratic optimization problem:\n", + "\n", + "\\begin{equation}\n", + "\\begin{split}\n", + " \\min_{w,b,\\xi} &\\frac{1}{2}w^Tw + C\\sum_{i=1}^m \\xi_i \\\\\n", + " \\text{s.t. } & y^{(i)}(w^T x^{(i)} + b) \\geq 1- \\xi_i\\;\\; \\forall_i \\\\\n", + " & \\xi_i \\geq 0 \\;\\; \\forall_i.\n", + "\\end{split}\n", + "\\end{equation}" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "lE81O301Ol-A", + "colab_type": "text" + }, + "source": [ + "# Problem 1 [2p]\n", + "\n", + "Load the iris dataset. \n", + "\n", + "1. [1p] Using the `sklearn.svm.SVC` library train a linear SVM that\n", + "separates the Virginica from the Versicolor class using the\n", + "petal length and petal width features. Plot the obtained decision boundary and\n", + "the support vectors (their locations and weights - coefficients $\\alpha$).\n", + "\n", + "2. [.5p] Now train a nonlinear SVM using the Gaussian kernel. Tune the parameetrs `C` and `gamma` (for the kernel) to reach maximum training accurracy. Plot the decision boundary and supprt vectors.\n", + "\n", + "3. [.5p] Answer the following questions:\n", + " - When the SVM is forced to maximally accurate on the train set, roughly how many support vectors do we get ?\n", + " - what is the relationship between the regularization constant `C` and the support vector weights `alpha`?\n", + " \n", + " " + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vM8N5kEdOq3c", + "colab_type": "code", + "outputId": "84ca3b92-fb16-427c-adaa-e6174e2e3318", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 331 + } + }, + "source": [ + "# load iris, extract petal_length and petal_width of versicolors and virginicas\n", + "\n", + "iris = sklearn.datasets.load_iris()\n", + "print('Features: ', iris.feature_names)\n", + "print('Targets: ', iris.target_names)\n", + "petal_length = iris.data[:,iris.feature_names.index('petal length (cm)')]\n", + "petal_width = iris.data[:, iris.feature_names.index('petal width (cm)')]\n", + "\n", + "IrisX = np.array(iris.data.T)\n", + "IrisX = IrisX[:, iris.target!=0]\n", + "\n", + "IrisX2F = np.vstack([petal_length, petal_width])\n", + "IrisX2F = IrisX2F[:, iris.target!=0]\n", + "\n", + "# Set versicolor=0 and virginia=1\n", + "IrisY = (iris.target[iris.target!=0]-1).reshape(1,-1).astype(np.float64)\n", + "\n", + "plt.scatter(IrisX2F[0,:], IrisX2F[1,:], c=IrisY.ravel(),\n", + " cmap='spring', edgecolors='k')\n", + "plt.xlabel('petal_length')\n", + "plt.ylabel('petal_width')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Features: ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n", + "Targets: ['setosa' 'versicolor' 'virginica']\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0, 0.5, 'petal_width')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 2 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\nKAgYjkAAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OOtqTRkkOxH5", + "colab_type": "code", + "outputId": "2d2475ba-a852-4cad-b63c-2be909dc42aa", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + } + }, + "source": [ + "#\n", + "# Fit a linear SVM using libsvm\n", + "#\n", + "\n", + "svm_model = TODO\n", + "svm_model.fit(TODO)\n", + "\n", + "print(\"libsvm error rate: %f\" % ((svm_model.predict(IrisX2F.T)!=IrisY).mean(),))" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "libsvm error rate: 0.050000\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "bLKwZXIPO3C1", + "colab_type": "code", + "outputId": "7b00578d-9433-4b3f-e943-a2f00f5a7553", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 313 + } + }, + "source": [ + "#\n", + "# Plot the decision boundary\n", + "#\n", + "\n", + "petal_lengths, petal_widths = np.meshgrid(np.linspace(IrisX2F[0,:].min(), IrisX2F[0,:].max(), 100),\n", + " np.linspace(IrisX2F[1,:].min(), IrisX2F[1,:].max(), 100))\n", + "\n", + "IrisXGrid = np.vstack([petal_lengths.ravel(), petal_widths.ravel()])\n", + "predictions_Grid = svm_model.predict(IrisXGrid.T)\n", + "\n", + "plt.contourf(petal_lengths, petal_widths, predictions_Grid.reshape(petal_lengths.shape), cmap='spring')\n", + "\n", + "plt.scatter(IrisX2F[0,:], IrisX2F[1,:], c=IrisY.ravel(),\n", + " cmap='spring', edgecolors='k')\n", + "\n", + "plt.xlabel('petal_length')\n", + "plt.ylabel('petal_width')\n", + "plt.title('Decision boundary found by libsvm')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Decision boundary found by libsvm')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 4 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\nH4zcpWeDTBS7AAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "OeSefL1jPP7h", + "colab_type": "code", + "outputId": "498d2fa9-2b99-4717-fec2-42081d0e882a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 313 + } + }, + "source": [ + "#\n", + "# Plot the decision boundary and the support vectors.\n", + "#\n", + "# You can extract the indices of support vectors and their weights from fielfs of the \n", + "# svm object. Display the loaction of support vectors and their weights (by changing the \n", + "# size in the scatterplot)\n", + "#\n", + "# TODO\n", + "#\n", + "\n", + "support_vector_indices = svm_model.support_\n", + "support_vector_coefficients = svm_model.dual_coef_\n", + "\n", + "plt.contourf(petal_lengths, petal_widths, predictions_Grid.reshape(petal_lengths.shape), cmap='spring')\n", + "plt.scatter(TODO,\n", + " cmap='spring',\n", + " edgecolors='k')\n", + "\n", + "plt.xlabel('petal_length')\n", + "plt.ylabel('petal_width')\n", + "plt.title('Decision boundary found by libsvm')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Decision boundary found by libsvm')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 5 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\nrkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "F-f1CDrmVlcy", + "colab_type": "code", + "outputId": "00546348-08f3-4482-8ba8-7bfe0b1050e7", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 330 + } + }, + "source": [ + "#\n", + "# Fit a nonlinear SVM with a Gaussian kernel using libsvm.\n", + "# Optimize the SVM to make \n", + "#\n", + "\n", + "svm_gauss_model = TODO\n", + "svm_gauss_model.fit(TODO)\n", + "\n", + "print(\"libsvm error rate: %f\" % ((svm_gauss_model.predict(IrisX2F.T)!=IrisY).mean(),))\n", + "\n", + "TODO: plot the decision boundary with support vectors\n", + "\n", + "plt.xlabel('petal_length')\n", + "plt.ylabel('petal_width')\n", + "plt.title('Decision boundary found by libsvm')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "libsvm error rate: 0.010000\n" + ], + "name": "stdout" + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'Decision boundary found by libsvm')" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 6 + }, + { + "output_type": "display_data", + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "talvZZDQP0YI", + "colab_type": "text" + }, + "source": [ + "# Problem 2 [1p]\n", + "\n", + "Reimplement the linear SVM using the use `cvxopt.solvers.qp`\n", + "Quadratic Programming (QP) solver. You will need to define the matrices\n", + "that define the problem. Compare the obtained solutions. Extract the\n", + "support vectors from the LIBSVM solution and plot the support vectors.\n", + "\n", + "The `cvxopt.solvers.qp` solves the following optimization problem: \n", + "\n", + "\\begin{align}\n", + "\\text{minimize over } x \\text{: }& \\frac{1}{2} x^T P x + q^T x \\\\\n", + "\\text{subject to: } & Gx \\leq h \\\\\n", + "& Ax = b\n", + "\\end{align}\n", + "\n", + "To solve the SVM problem you need to encode the weights $W$, biases $b$, and slack variables $\\xi$ as elements of the vector $x$, then properly fill the matrices and vectors $P$, $q$, $G$, $h$. We can ignore setting the $A$ and $b$ parametrs, since there are no linear constraints." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "V-iUFeJOP3Tb", + "colab_type": "code", + "outputId": "0f3250a4-957d-412a-8b3f-03f48053f93e", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 272 + } + }, + "source": [ + "#\n", + "# Now solve the SVM using the QP solver\n", + "#\n", + "\n", + "n, m = IrisX2F.shape\n", + "C=10.0\n", + "\n", + "P = np.zeros((n+1+m, n+1+m)) #w, bias, xi\n", + "q = np.zeros((n+1+m,1)) \n", + "G = np.zeros((2*m, n+1+m)) # we have two constrains for each data point: \n", + " # that the margin is equal to 1-xi\n", + " # and that xi is nonnegative\n", + "h = np.zeros((2*m,1))\n", + "#\n", + "# TODO: fill in P, q, G, h\n", + "#\n", + "\n", + "TODO\n", + "\n", + "#\n", + "# Now run the solver\n", + "#\n", + "ret = cvxopt.solvers.qp(cvxopt.matrix(P), cvxopt.matrix(q), \n", + " cvxopt.matrix(G), cvxopt.matrix(h), )\n", + "\n", + "ret = np.array(ret['x'])\n", + "\n", + "#\n", + "# extract the weights and biases\n", + "#\n", + "W = ret[:n].reshape(-1,1)\n", + "b = ret[n]\n", + "\n", + "#\n", + "# Extract the weight and bias from libsvm for comparison\n", + "#\n", + "Wlibsvm = TODO\n", + "blibsvm = TODO\n", + "\n", + "print('W', W.T, 'Wlibsvm', Wlibsvm)\n", + "print('b', b, 'blibsvm', blibsvm)" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + " pcost dcost gap pres dres\n", + " 0: -8.2045e+03 4.6654e+03 2e+04 2e+01 3e+00\n", + " 1: 5.3426e+01 -5.8951e+02 3e+03 2e+00 4e-01\n", + " 2: 1.7058e+02 -1.9137e+01 4e+02 3e-01 5e-02\n", + " 3: 1.4063e+02 7.5166e+01 1e+02 7e-02 1e-02\n", + " 4: 1.3820e+02 9.8722e+01 6e+01 3e-02 5e-03\n", + " 5: 1.4016e+02 1.1207e+02 3e+01 4e-03 8e-04\n", + " 6: 1.3507e+02 1.1797e+02 2e+01 1e-03 2e-04\n", + " 7: 1.2551e+02 1.2356e+02 2e+00 2e-04 3e-05\n", + " 8: 1.2445e+02 1.2440e+02 5e-02 4e-06 6e-07\n", + " 9: 1.2442e+02 1.2442e+02 1e-03 9e-08 2e-08\n", + "10: 1.2442e+02 1.2442e+02 2e-05 1e-09 1e-10\n", + "Optimal solution found.\n", + "W [[2.75844069 4.827271 ]] Wlibsvm [[2.75873306 4.82861713]]\n", + "b [-21.2054472] blibsvm [-21.20914737]\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ajNZZ9B2P657", + "colab_type": "text" + }, + "source": [ + "# Problem 3 [2p]\n", + "\n", + "Repeat 100 bootstrap experiments to establish the effect of constant $C$ on SVM.\n", + "\n", + "For each experiment do the following:\n", + "\n", + "1. Sample (with replacement) a bootstrap dataset equal in size to the\n", + " training dataset. This will be this experiment's training dataset.\n", + "2. Prepare the experiment's testing dataset by using samples not\n", + " inluded in the bootstrap dataset.\n", + "3. For all $C$ from the set $\\{10^{-4}, 10^{-3.5}, 10^{-3.}, \\ldots, 10^{6}\\}$\n", + " fit a nonlinear SVM (Gaussian kernel, called \\texttt{rbf} in\n", + " LIBSVM using the default $\\gamma$) and record the training and\n", + " testing errors.\n", + "\n", + "Analyze a box plot of errors as a function of $C$. Can you see its\n", + "influence on the training and testing error, as well as on the\n", + "testing error variability? \n", + "\n", + "**Indicate regions of overfitting and underfitting.**\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "_zztDr_6QHH9", + "colab_type": "code", + "outputId": "2db9acac-5377-4d07-821a-c62a69a8b00a", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 380 + } + }, + "source": [ + "res = []\n", + "for rep in range(100):\n", + " bootstrap_sel = TODO\n", + " test_sel = TODO\n", + "\n", + " bootstrap_IrisX = IrisX[:,bootstrap_sel]\n", + " bootstrap_IrisY = IrisY[:,bootstrap_sel]\n", + " \n", + " test_IrisX = IrisX[:,test_sel]\n", + " test_IrisY = IrisY[:,test_sel]\n", + " \n", + " #\n", + " # TODO: Loop over a list of exponents.\n", + " #\n", + " for Cexponent in TODO:\n", + " C = 10.0**Cexponent\n", + " svm_model = TODO\n", + " svm_model.fit(TODO)\n", + " train_acc = TODO\n", + " test_acc = TODO\n", + " \n", + " res.append(dict(Cexponent=Cexponent, err=1-test_acc, subset='test'))\n", + " res.append(dict(Cexponent=Cexponent, err=1-train_acc, subset='train'))\n", + "\n", + "res = pd.DataFrame(res)\n", + "chart = sns.catplot(kind='box', x='Cexponent', y='err', col='subset', \n", + " color='blue', data=res)\n", + "chart.set_xticklabels(rotation=45)\n", + "None" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "display_data", + "data": { + "image/png": "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\niIiIiMgBi2QiIiIiIgcskomIiIiIHLBIJiIiIiJywCKZiIiIiMgBi2QiIiIiIgdBVSQbjUYsXLgQ\nlZWVPo1Vc24iIiKiYBRURXJmZiYOHz6MzMxMn8aqOTcRERFRMAqaItloNCIvLw9CCOTm5ro1Mion\nVs25iYiIiIJV0BTJmZmZsFgsAACLxeLWyKicWDXnJiIiIgpWQVMkFxQUwGQyAQBMJhM2b97sk1g1\n5yYiIiIKVkFTJCckJECn0wEAdDodRowY4ZNYNecmIiIiClZBUyQbDAZotXU/jlarhcFg8EmsmnMT\nERERBaugKZKjo6ORlJQEjUaDkSNHIioqyiexas5NREREFKx0SjfAkwwGA06dOiVpRFROrJpzExER\nEQUjjRBCKN0IdxQVFSEuLk7pZhARBST2oURErgma6RZERERERJ7CIpmIiIiIyAGLZCIiIiIiB169\ncG/r1q145ZVXYLFYcN999+Hxxx+3e3zRokXYvXs3AKC6uhoXLlzA3r17vdkkIiIiIqJmea1INpvN\nSE9Px9q1a6HX6zF16lQkJiaiZ8+etmNeeOEF2//ff/99HD582FvNISIiIiJymdemWxQWFqJbt26I\niYlBaGgoxo8fj7y8vEaPz8rKwoQJE7zVHCIiIiIil3ltJLmiogIdO3a03dbr9SgsLHR67JkzZ3D6\n9GkMHjy42eetqalBUVGRx9pJRBSopCzlxj6UiKhOc32oX2wmkpWVhdGjRyMkJKTZY8PCwux+qPz8\nfOTk5AAALl68CACIjIwEACQnJyMxMbHR55ITq2Tu+rG+zk1Egc2xDyUiIue8Nt1Cr9ejvLzcdrui\nogJ6vd7psRs3bsT48eNl5zQajTAajT6PVXNuIiIiomDktR33TCYTRo8ejffee8924d5rr72GXr16\n2R1XXFyMmTNnIi8vDxqNptnnbWq3qNTUVADA4sWL3W6vnFg15yaiwMId94iIXOO16RY6nQ5paWmY\nMWMGzGYz7r33XvTq1QsZGRno06cPkpKSANSNIo8bN86lApmIiIiIyBe8Oic5Pj4e8fHxdvfNnTvX\n7vZTTz3lzSYQEREREbmNO+4RERERETlgkUxERERE5IBFMhERERGRAxbJREREREQOWCQTERERETlg\nkUxERERE5IBFMhERERGRAxbJREREREQOWCQTERERETlgkUxERERE5IBFMhERERGRAxbJREREREQO\n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\nIiIB/gfg2sAOgKWa/QAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "tags": [] + } + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "4sOvoxwbTOHG", + "colab_type": "text" + }, + "source": [ + "# Problem 4 [3p bonus]\n", + "\n", + "Implement a nonlinear SVM by solving the dual problem using the Quadratic Programming solver. Compare results with LIBSVM.\n", + "\n", + "Please see [page 20 if CS229 lecture notes](http://cs229.stanford.edu/notes/cs229-notes3.pdf) for problem formulation." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6xEBWiIEUHnw", + "colab_type": "text" + }, + "source": [ + "# Problem 5 [2p bonus]\n", + "Compare two ways to implement a multi-class\n", + "SVM: by training ``1-vs-1'' classifier for each class combination,\n", + "and by training a ``1-vs-rest'' classifier for each clas. See\n", + "http://www.csie.ntu.edu.tw/\\~cjlin/papers/multisvm.pdf for\n", + "details.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "ph9M-pJPUdrV", + "colab_type": "text" + }, + "source": [ + "# Problem 6 [4p bonus]\n", + "\n", + "Implement a Kernelized linear regression. Train it on Iris using a Gaussian kernel. Compare to the non-linear SVM." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "QXr38Y95UeVo", + "colab_type": "code", + "colab": {} + }, + "source": [ + "" + ], + "execution_count": 0, + "outputs": [] + } + ] +} \ No newline at end of file