{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# ToDo-List / Bemerkungen:\n",
    "\n",
    "- Task 1.0: (c) Die vektorweise Funktion muss noch geschrieben werden. Sie ist schon als def subseq_v2(a) in einer Zelle angelegt.\n",
    "\n",
    "- Task 1.2: I. Wer Spaß und Zeit hat kann das gerne mit der QR-Zerlegung implementieren.\n",
    "II. Es sollte ein countorplot benutzt werden -> matplotlib.pyplot.contour verstehen\n",
    "\n",
    "- Task 1.5: ACHTUNG: Bei DataFrame.loc[a:b] wird im Gegensatz zu numpy die obere Schranke miteinbezogen. Kann man matplotlib beibringen die Spalten [0:49],[100:149] zusammen zu berarbeiten? \n",
    "\n",
    "Generell: Ist es sinnvoll plt.plot zu benutzen oder doch besser plt.scatterplot?\n",
    "\n",
    "Bisher unbearbeitet: Task 1.6, 1.7 (apply gradient missing), 1.8, 1.9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.0"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(c) Create a jupyter-notebook in which you create an array z consisting of 10000 random numbers drawn from {0, 1, 2}."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "z = np.array(np.random.randint(0, 3, 100))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implement two versions of a function which counts the number of appearances of the subsequence (2, 0, 1) in z. The first version should work with a loop that accesses the array z elementwise and makes elementwise comparisons."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def subseq_v1(a):\n",
    "    k = 0\n",
    "    for i in range(a.size-2):\n",
    "        if (a[i]==2 and a[i+1]==0 and a[i+2]==1):\n",
    "            k=k+1\n",
    "            i=i+3\n",
    "    return k        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "40.3 µs ± 937 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit subseq_v1(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The second version should be a vectorized one (Hint: The numpy function logical_and might help you), which operates on (almost) the whole array z. Compare the runtime of the two versions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true,
    "tags": [
     "todo"
    ]
   },
   "outputs": [],
   "source": [
    "def subseq_v2(a):\n",
    "    x = np.logical_and(a == 2, np.logical_and(np.append(a[1:] == 0, [False]), np.append(a[2:] == 1, [False, False])))\n",
    "    return np.count_nonzero(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "14.7 µs ± 512 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)\n"
     ]
    }
   ],
   "source": [
    "%timeit subseq_v2(z)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create n = 200 data points in the following way:\n",
    "\n",
    "(a) Draw ten random i.i.d. samples from the two-variate normal distribution $\\mathcal{N} ((\\frac{3}{2} \\, 0)^⊤,\\mathbf{I})$ and store them in a $\\mathtt{numpy}$ array $a$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = np.random.multivariate_normal([3/2, 0], np.eye(2), 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Draw another ten samples according to $\\mathcal{N} ((0 \\, \\frac{3}{2} )^⊤, \\mathbf{I})$  and store them in another $\\mathtt{numpy}$ array $b$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "b = np.random.multivariate_normal([0, 3/2], np.eye(2), 10)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Use MatPlotLib to make a scatter plot (i.e. plot the points in a 2D coordinate system) of the elements in $a$ and the elements in $b$ using different colors for the two arrays."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x116e60ef0>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX8AAAD8CAYAAACfF6SlAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAFJ9JREFUeJzt3X2MZXd93/H3x2BAK2gA7yZ2bM8O\nqFZbo1bBvXJ4qCqrUAlWkZc0IJmOgolAK9LQELX/WFmJSEiriv5BG2RadxKjGGnEQ4GETbvI4rEk\nau16bPl55bJYO/Z2V3hiVwZraVJnv/3jno3HM3d2Hu6Z+3TeL+nq3nPub+/5+sz4c8/8zjm/X6oK\nSVK3XDbuAiRJo2f4S1IHGf6S1EGGvyR1kOEvSR1k+EtSBxn+ktRBhr8kdZDhL0kd9MpxF7CZ/fv3\n1/z8/LjLkKSpcv/99/9FVR3Yqt3Ehv/8/DzLy8vjLkOSpkqSle20s9tHkjrI8JekDjL8JamDDH9J\n6iDDX5I6yPCXpA4y/CWpgwz/YSwtwfw8XHZZ/3lpadwVSdK2TOxNXhNvaQmOHIHz5/vLKyv9ZYCF\nhfHVJUnb4JH/bh09+lLwX3T+fH+9JE04w3+3nnpqZ+slaYIY/rs1N7ez9ZI0QQz/3Tp2DPbte/m6\nffv66yVNhw5ftGH479bCAiwuwsGDkPSfFxc92StNi4sXbaysQNVLF2105AsgVTXuGgbq9XrlkM6S\n9sz8fD/w1zt4EE6fHnU1rUlyf1X1tmo39JF/kmuTfC/JySSPJfnEgDY3JXk+yYPN45PDbleShtLx\nizbauM7/ReBfV9UDSV4H3J/kW1X1+Lp2f1ZVv9LC9iRpeHNzg4/8O3LRxtBH/lV1rqoeaF7/FDgJ\nXD3s50rSnur4RRutnvBNMg+8Fbh3wNtvT/JQkm8meUub25WkHev4RRutnfBN8lrgvwHHqurr6977\nW8CFqnohySHg96vqugGfcQQ4AjA3N/cPVwb9SSZJ2tTITvg2G7sc+BqwtD74AarqJ1X1QvP6BHB5\nkv0D2i1WVa+qegcObDn5vCRpl9q42ifAncDJqvrMJm2ubNqR5MZmu88Ou21J0u60cbXPO4FfBx5J\n8mCz7neBOYCqugN4P/CbSV4EfgbcUpN6g4EkdcDQ4V9Vfw5kiza3A7cPuy1JUjsc3kGSOsjwl6QO\n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\nGf6S1EH/H47daKvCveONAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10b15d048>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(a[:,0], a[:,1], c='blue')\n",
    "plt.scatter(b[:,0], b[:,1], c='red')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(b) Pick 100 equidistributed indices $i_1, . . . , i_{100}$ from ${1, 2, . . . , 10}$ and set the j-th data point $\\mathbf{x}_j$ to\n",
    "\n",
    "$\\mathbf{x}_j := a[i_j]+\\epsilon_j$ for all $j=1,...,100$ with $\\epsilon_j \\sim \\mathcal{N}((0 \\, 0)^⊤,\\frac{1}{4}\\mathbf{I}).$\n",
    "\n",
    "Proceed analogously for $j = 101, . . . , 200$ by substituting $a$ by $b$. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def random_data(a,b,n):\n",
    "    i = np.random.randint(1, 11, n)\n",
    "    j = np.random.randint(1, 11, n)\n",
    "    epsilon_1 = np.random.multivariate_normal([0,0], np.eye(2)*(1/4), n)\n",
    "    epsilon_2 = np.random.multivariate_normal([0,0], np.eye(2)*(1/4), n)\n",
    "    x_1 = np.array(a[i-1]+epsilon_1)\n",
    "    x_2 = np.array(b[j-1]+epsilon_2)\n",
    "    return np.concatenate((x_1,x_2),axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "x = random_data(a,b,100)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Make a scatter plot for the data points $\\mathbf{x}_j$ with $j = 1, . . . , 200$ with different colors for the first 100 points and the second 100 points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x116f7b470>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116ee0240>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x[0:100, 0], x[0:100, 1], c='blue')\n",
    "plt.scatter(x[100:200, 0], x[100:200, 1], c='red')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(c) The first $j = 1,...,100$ data points get the label $y_j = 0$, the next\n",
    "$j = 101,...,200$ ones get $y_j = 1.$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y = np.concatenate((np.zeros(100),np.ones(100)),axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implement a linear least squares algorithm. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# computes the alpha-vector in the LLS for input data x and labels y\n",
    "def lls_solve(x,y):\n",
    "    X = np.c_[np.ones(x.shape[0]), x] #create modified input data\n",
    "    A = (X.T)@X\n",
    "    b = (X.T).dot(y)\n",
    "    alpha = np.linalg.solve(A,b)\n",
    "    return alpha"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Apply it to the data from task 1.1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.56098065 -0.15655837  0.20604369]\n"
     ]
    }
   ],
   "source": [
    "alpha = lls_solve(x,y)\n",
    "print(alpha)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the scattered input data as in step (b) of task 1.1 together with the separating hyperplane, i.e. the contour line given by\n",
    "\n",
    "$\\alpha_0 + \\alpha_1x_1 + \\alpha_2x_2 = \\frac{1}{2},$\n",
    "\n",
    "where $x_1$ and $x_2$ denote the coordinates in $\\mathbb{R}^2$ (not to be confused with the data $\\mathbf{x}_i$)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def PlotContourLine(func, minx, maxx, miny, maxy, value=0):\n",
    "    #This plots the contourline func(x) = value\n",
    "    \n",
    "    samplenum = 100\n",
    "    #minx = -4\n",
    "    #maxx = 5\n",
    "    #miny = -3\n",
    "    #maxy = 4\n",
    "    xrange = np.arange(minx, maxx, (maxx-minx)/samplenum)\n",
    "    yrange = np.arange(miny, maxy, (maxy-miny)/samplenum)\n",
    "    \n",
    "    #This generates a two-dimensional mesh\n",
    "    X, Y = np.meshgrid(xrange,yrange)\n",
    "    \n",
    "    argsForf = np.array([X.flatten(),Y.flatten()]).T\n",
    "    Z = func(argsForf)\n",
    "    Z = np.reshape(Z,X.shape)\n",
    "    \n",
    "    plt.xlim(minx, maxx)\n",
    "    plt.ylim(miny, maxy)\n",
    "    plt.xlabel(r'$x_1$')\n",
    "    plt.ylabel(r'$x_2$')\n",
    "    #plt.contour(X, Y, Z, alpha=0.5,levels=[value],linestyles='dashed',linewidths=3)\n",
    "    Z = np.where(Z > value, 1, -1)\n",
    "    plt.contourf(X, Y, Z, alpha=0.2,colors=('red', 'blue'))\n",
    "    \n",
    "def LLS_classifier_alpha(x):\n",
    "    x_mod = np.c_[np.ones(x.shape[0]), x]\n",
    "    return x_mod@alpha    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x117451be0>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116ea2f98>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x[0:100, 0], x[0:100, 1], c='blue', label='Class 0')\n",
    "plt.scatter(x[100:200, 0], x[100:200, 1], c='red', label='Class 1')\n",
    "PlotContourLine(LLS_classifier_alpha,-4, 5, -3, 4, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 = 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "# Task 1.3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Build the so-called confusion matrix for the data and the hyperplane from task 1.2,\n",
    "i.e. a matrix $C$, with entries\n",
    "\n",
    "$C_{ij}$ = # {Points classified as i, where the real label is j}.\n",
    "\n",
    "In our case this is a 2×2 matrix with $i,j \\in \\{0,1\\}$ since $|\\, \\Gamma\\, | = 2$."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Classifier of the input data x depending on alpha\n",
    "def LLS_classifier(alpha, x):\n",
    "    x_mod = np.c_[np.ones(x.shape[0]), x]\n",
    "    return x_mod@alpha"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Confusion matrix of the input data x,\n",
    "# the classification depending on alpha\n",
    "# and the bounds of the class 0 (labeled entries)\n",
    "def confusion_matrix(alpha,x,a,b):\n",
    "    H = np.array(LLS_classifier(alpha,x))\n",
    "    C_11 = H[a:b] < 0.5 #entries of class 0, classified as class 0\n",
    "    C_12 = H[a:b] > 0.5 #entries of class 0, classified as class 1\n",
    "    C_21 = H[b:] < 0.5 #entries of class 1, classified as class 0\n",
    "    C_22 = H[b:] > 0.5 #entries of class 1, classified as class 1\n",
    "    C_31 = H[:a] < 0.5 #entries of class 1, classified as class 0\n",
    "    C_32 = H[:a] > 0.5 #entries of class 1, classified as class 1\n",
    "    return np.matrix([[np.sum(C_11),np.sum(C_12)],[np.sum(C_21)+np.sum(C_31), np.sum(C_22)+np.sum(C_32)]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[85 15]\n",
      " [ 9 91]]\n"
     ]
    }
   ],
   "source": [
    "C = confusion_matrix(alpha,x,0,100)\n",
    "print(C)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Calculate the accuracy $\\frac{\\text{trace(C)}}{n}$ ."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def acc(C,x): return np.trace(C)/(x.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.88"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc(C,x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.4"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Create 10 000 test points for each of the two classes in the same way as you created the training data in step (b) of task 1.1. Evaluate the LLS classifier, which was built on the training, on the test data and compute the confusion matrix and the accuracy of the test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.84225000000000005"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a_new = np.random.multivariate_normal([3/2, 0], np.eye(2), 10)\n",
    "b_new = np.random.multivariate_normal([0, 3/2], np.eye(2), 10)\n",
    "x_new = random_data(a_new,b_new,10000)\n",
    "y_new = np.concatenate((np.zeros(10000),np.ones(10000)),axis=0)\n",
    "C = confusion_matrix(alpha,x_new,0,10000)\n",
    "acc(C,x_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Compare your results to the ones from task 1.3."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The accuracy is lower as in the training data set (what could have been expectetd). Anyway is the accurancy quiet high."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.5"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(a) Read in the Iris data set and use the data label $\\textbf{y}_i=0$ for the Iris-setosa instances and $\\mathbf{y}_i=1$ for the Iris-versicolor and Iris-virginica classes:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data'\n",
    "irisDataFrame = pd.read_csv(url, header=None)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y = np.concatenate((np.zeros(50),np.ones(100)),axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "a.1. Run the LLS algorithm by using only the first two dimensions of $\\Omega$ in the input data, i.e. we only look at the first two features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "alpha = lls_solve(irisDataFrame.loc[:,0:1],y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the scattered data and the separating hyperplane as in task 1.2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x117611f28>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\niKSIgr6ISIoo6IuIpEjFg76ZfcfMtpvZ+kq3JSIiweK40v8ucEYM7YiISBEVD/rOud8Af6x0OyIi\nUpxy+iIiKZKIoG9mi8xsjZmt6eraUe3uiIgMWYkI+s65m51zrc651qam5mp3R0RkyEpE0BcRkXjE\nMWXzTuAR4O1mttnM/rLSbYqISGENlW7AOXdBpdsQEZHSKL0jIpIiCvoiIimioC8ikiIK+iIiKaKg\nLyKSIgr6IiIpoqAvIpIiCvoiIimioC8ikiIK+iIiKaKgLyKSIgr6IiIpoqAvIpIiCvoiIimioC8i\nkiIK+iIiKaKgLyKSIgr6IiIpoqAvIpIiCvoiIimioC8ikiIK+iIiKaKgLyKSIgr6IiIpoqAvIpIi\nCvoiIimioC8ikiIK+iIiKaKgLyKSIgr6IiIpoqAvIpIiCvoiIimioC8ikiIK+iIiKaKgLyKSIrEE\nfTM7w8z+x8yeN7Mr42hTREQOVfGgb2b1wI3AAuCdwAVm9s5KtysiIoeK40p/LvC8c+5F59wbwA+A\nP42hXRERydMQQxuTgJdzHm8G5uW+wMwWAYsyD7tbW219DP2qBUcAr1a7Ewmh96Kf3ot+ei/6vb2U\nF8UR9K3ANjfggXM3AzcDmNka51xrDP1KPL0X/fRe9NN70U/vRT8zW1PK6+JI72wGpuQ8ngxsiaFd\nERHJE0fQfwJ4m5lNN7PDgD8HfhpDuyIikqfi6R3nXI+ZXQb8AqgHvuOcezpgl5sr3acaovein96L\nfnov+um96FfSe2HOueKvEhGRIUErckVEUkRBX0QkRRIT9M2s0cweN7N1Zva0mf1DtftUbWZWb2a/\nM7N7q92XajKzjWb2lJmtLXVa2lBlZuPM7C4ze9bMOszsxGr3qRrM7O2Zz0P2a5eZ/VW1+1UtZvbX\nmbi53szuNLNG39cmJadvZgaMcs69bmbDgIeAzzvnHq1y16rGzL4AtAJjnHNnVbs/1WJmG4FW51zq\nF+GY2W3AaufcLZnZcCOdc69Vu1/VlCn18gowzzm3qdr9iZuZTcKLl+90zu0zsx8CK51z3y30+sRc\n6TvP65mHwzJfyfgXqQrMbDLwIeCWavdFksHMxgCnAN8GcM69kfaAn3Eq8EIaA36OBmCEmTUAIwlY\nC5WYoA996Yy1wHbgPufcY9XuUxV9HbgCOFjtjiSAA35pZu2Zkh1pdRSwA7g1k/a7xcxGVbtTCfDn\nwJ3V7kS1OOdeAf4FeAnYCux0zv3S7/WJCvrOuV7n3Cy8VbtzzWxmtftUDWZ2FrDdOdde7b4kRJtz\n7gS8Sq1LzOyUaneoShqAE4CbnHPvBvYAqS5VnklxnQ38qNp9qRYza8IrYjkdmAiMMrNP+L0+UUE/\nK/Mn6wPAGVXuSrW0AWdnctk/AN5vZt+vbpeqxzm3JfN9O7ACr3JrGm0GNuf8BXwX3j8CabYA+K1z\n7vfV7kgVnQZscM7tcM4dAO4G3uv34sQEfTNrNrNxmZ9H4J3Is9XtVXU4565yzk12zh2J96frr5xz\nvv9yD2VmNsrMRmd/Bk4HUlmF1Tm3DXjZzLLVFE8Fnqlil5LgAlKc2sl4CXiPmY3MTIg5Fejwe3Ec\nVTZLNQG4LTMSXwf80DmX6qmKAsBbgBXeZ5kG4A7n3M+r26Wq+hxweyat8SKwsMr9qRozGwl8ALik\n2n2pJufcY2Z2F/BboAf4HQElGRIzZVNERCovMekdERGpPAV9EZEUUdAXEUkRBX0RkRRR0BcRSREF\nfRGRFFHQFwlgZr82sw9kfv6imf2/avdJZDCStDhLJIn+HvhHM2sB3o1X50WkZmlxlkgRZvYg8CZg\nvnNut5kdBSwFxjrnPlrd3omUR+kdkQBmdixeiZBu59xuAOfci865v6xuz0TCUdAX8WFmE4Db8crW\n7jGzD1a5SyKDpqAvUkCmmNfdwOXOuQ7gn4BlVe2USASU0xcpk5m9GbgWr8LjLc6566rcJZGSKeiL\niKSI0jsiIimioC8ikiIK+iIiKaKgLyKSIgr6IiIpoqAvIpIiCvoiIimioC8ikiIK+iIiKfL/ARaY\nYWq6Qn/zAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x117525c50>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(irisDataFrame.loc[0:49, 0], irisDataFrame.loc[0:49, 1], c='blue', label='Class 0')\n",
    "plt.scatter(irisDataFrame.loc[50:149, 0], irisDataFrame.loc[50:149, 1], c='red', label='Class 1')\n",
    "PlotContourLine(LLS_classifier_alpha,3,8,0,5, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 = 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "a.2. Now run the LLS algorithm by using all four features/dimensions of the input data. Compute the confusion matrix and the accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "alpha = lls_solve(irisDataFrame.loc[:,0:3],y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 50   0]\n",
      " [  0 100]]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1.0"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C = confusion_matrix(alpha,irisDataFrame.loc[:,0:3],0,50)\n",
    "print(C)\n",
    "acc(C,irisDataFrame)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "(b) Finally, run the same two steps as in (a), but now try to classify Iris-versicolor instances (label $\\mathbf{y}_i = 0$) against both Iris-setosa and Iris-virginica (label $\\mathbf{y}_i=1$)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y = np.concatenate((np.ones(50),np.zeros(50),np.ones(50)),axis=0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "b.1. Run the LLS algorithm by using only the first two dimensions of $\\Omega$ in the input data, i.e. we only look at the first two features."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "alpha = lls_solve(irisDataFrame.loc[:,0:1],y)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot the scattered data and the separating hyperplane as in task 1.2."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x1188275f8>"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n11NfH7JSSq51L3Qz9VilfF9kTTHpnTeB+8xsHwAzO93MynATVcms1lZ21/XOc+6uC89zJpkabW2F\nutrey+pq4dzpIW1IQe42zCsBNyt/ZXqZdmCK90XWFEzvOOeuNbNPAw+b2bvAW8CssrdMMqONFh4H\nZvS4sffNtHI8LQR9CY77WvzzYuceAAAJRUlEQVQw7Sthd95Mw13Pg67ThwQbGMHkWS08iZfb77pZ\n+SvTW5k8qwztS/LDkoIKXqdvZqcC15LrcwLOds79oVwN0nX62TNtmv8UA6OTvntSgKYm//x9bY03\n26RIxZTpOv3ZwHXOuZOB84CFuUs2RWKR9n6+oA7boOUiaVYw6DvnTnHOLcn9/jTe99a55W6YpEBC\nA2qiDH5KUlCHbdDyapGGfSvJK/mwdc5tBE4tQ1skTRIcUBPUz9c8NbkBWGF63ny6mOXVIMnBbZIu\nkc5VnHM+d7WUASXBATVBg5UeXZKOMT3r1pW2vBpovFR2pW6WTUmJhBPtfuNVrrsu0SYESnufQxQD\ncZukOFWelZSyScGAmhQ0IVXtiDpBml/uPi3bJMlT0Bd/KRhQk4ImpKYdUSdIC8rdN0+t/DZJZSjo\ni78UTAwV+8RkVdyOqBOkFboBTKX3rSRPN1ERqQKdjY2+Z2idQE3IzTei3ABGqkg5b6IiIpUTdYI0\n5e4ln4K+SBWIOkFaGvojJF10yaZIFYg6QZrmOpN8yumLiFQr5fRFRCRM2YO+mY0zs/82s1Vm9qyZ\nfbncdcrAoUnBROKVRE5/N3CVc+4JMxsGrDCzB51zzyVQt1SxroFFXdeZdw0sAuWkRaIq+5m+c26j\nc+6J3O/bgVXAweWuV6qfJgUTiV+iOX0zmwBMBh7PWz7DzJab2fItW7cm2SRJMU0KJhK/xIK+me0L\n3A38jXPuzz1fc87d7JxrdM41jhwxIqkmScppYJFI/BIJ+mY2CC/g3+6cuyeJOqX6aWCRSPzK3pFr\nZgb8EFjlnPteueuTgUMDi0Til8TVO83AxcDTZtaeW/b3zrkHEqhbqpzfzVVEJLqyB/3cTdWt3PWI\niEhhGpErIpIhCvoiIhmioC8ikiEK+iIiGaKgLyKSIQr6IiIZoqAvIpIhCvoiIhmioC8ikiEK+iIi\nGaKgLyKSIQr6IiIZoqAvIpIhCvoiIhmioC8ikiEK+iIiGaKgLyKSIQr6IiIZoqAvIpIhCvoiIhmi\n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\nMuT/AL2PydojQCLoAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1176baf28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(irisDataFrame.loc[50:99, 0], irisDataFrame.loc[50:99, 1], c='blue', label='Class 0')\n",
    "plt.scatter(irisDataFrame.loc[0:49, 0], irisDataFrame.loc[0:49, 1], c='red', label='Class 1')\n",
    "plt.scatter(irisDataFrame.loc[100:149, 0], irisDataFrame.loc[100:149, 1], c='red', label='_nolegend_')\n",
    "PlotContourLine(LLS_classifier_alpha,3,8,0,5, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 + \\alpha_3 \\cdot x_3 +\\alpha_4 \\cdot x_4= 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "b.2. Now run the LLS algorithm by using all four features/dimensions of the input data. Compute the confusion matrix and the accuracy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "alpha = lls_solve(irisDataFrame.loc[:,0:3],y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.73333333333333328"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "C = confusion_matrix(alpha,irisDataFrame.loc[:,0:3],50,100)\n",
    "acc(C,irisDataFrame)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " What do you observe?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We observe that in part b.1, the hyperplane is not seperating the two classes at all. In part b.2 is the accuracy, considering our result in b.1, quiet high. This means that only the data in the last two columns (features three and four) allow us to distinguish between Iris-versicolor and the other species. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Converting our IrisdataFrame.loc wich is of type DataFrame to an numpy array\n",
    "def DFtA(x): #DFtA=DataFrametoArray\n",
    "    xy = x.reset_index().values\n",
    "    return xy[:,1:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "data1 = DFtA(irisDataFrame.loc[:,0:1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#defining J\n",
    "def J(alpha,data,y):\n",
    "    return (1/y.size)*(((data@alpha)-y).T)@((data@alpha)-y)\n",
    "\n",
    "#defining gradient for this specific function\n",
    "def gradJ2(alpha,data,y):\n",
    "    z = data@alpha - y\n",
    "    return (2/data[:,0].size)*(data.T@z)\n",
    "\n",
    "#defining the gradient method\n",
    "def Learning_2(n,data,y,nu,stepMax,epsilon,color,legende):\n",
    "        alpha = np.random.random(n) #initialize alpha_0 as 0\n",
    "        step_2 = 0\n",
    "        pl=np.array([step_2,J(alpha,data,y)])\n",
    "        pl.shape=(1,2)\n",
    "        while (np.linalg.norm(gradJ2(alpha,data,y))>epsilon and step_2<stepMax):\n",
    "            alpha = alpha - nu*gradJ2(alpha,data,y)\n",
    "            step_2 += 1\n",
    "            pl_hilf=np.array([step_2,J(alpha,data,y)])\n",
    "            pl_hilf.shape=(1,2)\n",
    "            pl = np.append(pl,pl_hilf,axis=0)\n",
    "        print(np.linalg.norm(gradJ2(alpha,data,y)))\n",
    "        plt.figure()\n",
    "        plt.plot(pl[:, 0], pl[:, 1], color, label=legende)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "inf\n",
      "7.01431211178e+91\n",
      "0.30496858235\n",
      "0.849628130641\n",
      "2.50702135437\n",
      "92.2248396906\n",
      "51.4669302717\n",
      "81.5866246116\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118cd3a20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEDCAYAAADOc0QpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAEBZJREFUeJzt3X+MZWV9x/H3Z9kBq9SC7lTpsrhY\niQUNCI4I0ii1bQLUuG2KCcaIGtpNDCpWm0Ztgj8S/9A02iIUuxUKGIsGJHY1a1GUBk2EOlB+Lat1\nFYQtWxlFWClWvc63f9xDMxlndobdO3Pvffb9Sm72nnOfe89zcpY3Z87MzklVIUlqy5phT0CSNHjG\nXZIaZNwlqUHGXZIaZNwlqUHGXZIaNNS4J7k8yUNJ7l7G2JcnuS1JL8nZ8177cJLtSXYkuShJuvUf\nTPJAksdWah8kaRQN+8z9CuCMZY69H3gj8M9zVyZ5GXAacDzwQuAlwCu6lz8PnDyAeUrSWFk7zI1X\n1U1JNs5dl+S3gUuASeBx4M+r6ltVdV/3+uz8jwGeAhwMBJgAftB9/s3de1ZsHyRpFA37zH0hW4C3\nVtWLgb8E/n5vg6vqG8CNwO7ucX1V7VjxWUrSCBvqmft8SQ4FXgZcM+ds+5Al3vM84FjgyG7Vl5O8\nvKpuWrGJStKIG6m40/9K4pGqetGTeM+fADdX1WMASb4InAIYd0kHrJG6LFNVe4B7k7wGIH0nLPG2\n+4FXJFmbZIL+N1O9LCPpgDbsH4W8GvgG8Pwku5KcB7wOOC/JHcB2YFM39iVJdgGvAf4hyfbuY64F\nvgvcBdwB3FFVn+/e8+HuPU/tPv99q7h7kjQ08Vf+SlJ7RuqyjCRpMIb2DdV169bVxo0bh7V5SRpL\nt9566w+ranKpcUOL+8aNG5menh7W5iVpLCX5/nLGeVlGkhpk3CWpQcZdkhpk3CWpQcZdkhpk3CWp\nQcZdkhpk3CVpFb3/397Pl777pRXfjnGXpFX0wa99kBvvvXHFt2PcJWkV9WZ7rF2z8r8cwLhL0iqZ\nrVmKMu6S1JLebA/AuEtSS4y7JDXoibhPHDSx4tsy7pK0Sjxzl6QGGXdJapBxl6QGGXdJapBxl6QG\nGXdJapBxl6QGjVTck2xIcmOSHUm2J7lggTGnJ3k0ye3d48KVma4kja/VjPtyttAD3llVtyX5deDW\nJF+uqnvmjftaVb1q8FOUpDaM1Jl7Ve2uqtu65z8BdgDrV3piktSakYr7XEk2AicCtyzw8qlJ7kjy\nxSQvWOT9m5NMJ5memZl50pOVpHE2knFPcijwWeDtVbVn3su3Ac+pqhOAjwGfW+gzqmpLVU1V1dTk\n5OS+zlmSxtLIxT3JBP2wf6qqrpv/elXtqarHuufbgIkk6wY6U0kacyMV9yQBLgN2VNVHFhnz7G4c\nSU7uPvdHg5yoJI27UftpmdOA1wN3Jbm9W/ce4CiAqvo4cDbw5iQ94KfAOVVVKzBfSRpbIxX3qvo6\nkCXGXAxcPKhJSVKLRuqyjCRpMIy7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7JDXIuEtSg4y7\nJDXIuEtSg4y7JDWoN9sjhDVZ+fQad0laJb3Z3qqctYNxl6RVY9wlqUHGXZIaZNwlqUHGXZIaZNwl\nqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUHGXZIaZNwlqUEjFfckG5LcmGRHku1JLlhgTJJc\nlGRnkjuTnLQy05Wk8TVScQd6wDur6ljgFOD8JMfNG3MmcEz32AxcOtBZSlIDRiruVbW7qm7rnv8E\n2AGsnzdsE3BV9d0MHJbkiIHPVpLG2EjFfa4kG4ETgVvmvbQeeGDO8i5+9X8AJNmcZDrJ9MzMzJOb\nqSSNuZGMe5JDgc8Cb6+qPfNfXuAt9SsrqrZU1VRVTU1OTj65mUrSmBu5uCeZoB/2T1XVdQsM2QVs\nmLN8JPDg/k9PktoxUnFPEuAyYEdVfWSRYVuBc7ufmjkFeLSqdg9wnpI09lYz7svZymnA64G7ktze\nrXsPcBRAVX0c2AacBewEHgfeNPipStJ4G6m4V9XXWfia+twxBZw/qElJUotG6rKMJGkwjLskNci4\nS1KDjLskNci4S1KDjLskNci4S1KDjLskNWa2ZinKuEtSS3qzPQDjLkktMe6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1KCRi3uSy5M8lOTuRV4/PcmjSW7vHhcOfpqSNN5WO+7L2coVwMXAVXsZ87WqetVAZiRJDRq5\nM/equgl4eBXmIknNGrm4L9OpSe5I8sUkL1hsUJLNSaaTTM/MzAxo05I0+sYx7rcBz6mqE4CPAZ9b\nbGBVbamqqaqampycHMCmJWk8jF3cq2pPVT3WPd8GTCRZt98zk6SGjF3ckzw7SbrnJ3ef+aP9/VxJ\nasnI/bRMkquB04F1SXYB7wUmAKrq48DZwJuT9ICfAudUVa3YjCVpDI1c3KvqtUu8fjH9H5WUJC1i\n7C7LSJKWZtwlqUHGXZIaZNwlqUG92R4hrMnqZNe4S9Iq6M32Vu2sHYy7JK0K4y5JDTLuktQg4y5J\nDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLu\nktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDRq5uCe5PMlDSe5e5PUkuSjJziR3Jjlp8NOUpPE2cnEH\nrgDO2MvrZwLHdI/NwKX7Py1JasvIxb2qbgIe3suQTcBV1XczcFiSIwY1QUlqwcjFfRnWAw/MWd7V\nrZMkdcYx7llgXS04MNmcZDrJ9MzMzAA2LUnjYRzjvgvYMGf5SODBhQZW1ZaqmqqqqcnJyQFsWpLG\nwzjGfStwbvdTM6cAj1bV7gF8riQ1Y7XjvuSWklwNnA6sS7ILeC8wAVBVHwe2AWcBO4HHgTet1GQl\naVyNXNyr6rVLvF7A+QObkSQ1ZrZmKWrsLstIkvaiN9sDMO6S1BLjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1KCRjXuSM5J8O8nOJO9a4PU3\nJplJcnv3+LPBT1WSxtMw4r7klpIcBFwC/CGwC/hmkq1Vdc+8oZ+pqreswBwlaayN6pn7ycDOqvpe\nVf0c+DSwaWWnJUntGNW4rwcemLO8q1s3358muTPJtUk2LPRBSTYnmU4yPTMzsw/TlaTx05vtEcKa\nrN63OZezpSywruYtfx7YWFXHAzcAVy70QVW1paqmqmpqcnLyyc1UksZUb7a3qmftsLy47wLmnokf\nCTw4d0BV/aiqftYt/iPw4sFMT5LG36jG/ZvAMUmOTnIwcA6wde6AJEfMWXw1sGNwU5Sk8TaMuC+5\ntarqJXkLcD1wEHB5VW1P8gFguqq2Am9L8mqgBzwMvHEF5yxJY2Uk4w5QVduAbfPWXTjn+buBdw92\n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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11755b1d0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11751d4a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118e1c080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nrkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118d75a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n4hMqdBERn/gfM/rQ1DtwlykAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118d25470>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n8agQREQEgP8PDGfNyY/9jV0AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11777f358>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x118e81198>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#running the algorithm\n",
    "nu = np.array([10**(-n) for n in range(8)]) #10^-n\n",
    "color = ['b-','g-','r-','c-','m-','y-','k-','b-']\n",
    "legende = ['nu=1','nu=10^-1','nu=10^-2','nu=10^-3','nu=10^-4','nu=10^-5','nu=10^-6','nu=10^-7']\n",
    "y=np.append(np.zeros(50), np.ones(100))\n",
    "stepMax = 100\n",
    "epsilon = 10**(-5)\n",
    "data=data1[:,:2] #getting the Data\n",
    "n = data[1,:].size+1\n",
    "data= np.c_[np.ones(150), data]\n",
    "for i in range(nu.size):\n",
    "    Learning_2(n,data,y,nu[i],stepMax,epsilon,color[i],legende[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.7"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Normalize the data from task 1.5 (a.1.). To this end, calculate the mean $\\mu_j$ and the standard deviation $\\sigma_j$ for each feature $j$ (i.e. each coordinate direction $j$ of the data set) and set the $j$-th component of the $i$-th data point to\n",
    "\n",
    "$[\\mathbf{x}_i]_j := \\frac{[\\mathbf{x}_i]_j-\\mu_j}{\\sigma_j}.$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.   5.1  3.5]\n",
      " [ 1.   4.9  3. ]\n",
      " [ 1.   4.7  3.2]\n",
      " [ 1.   4.6  3.1]\n",
      " [ 1.   5.   3.6]\n",
      " [ 1.   5.4  3.9]\n",
      " [ 1.   4.6  3.4]\n",
      " [ 1.   5.   3.4]\n",
      " [ 1.   4.4  2.9]\n",
      " [ 1.   4.9  3.1]\n",
      " [ 1.   5.4  3.7]\n",
      " [ 1.   4.8  3.4]\n",
      " [ 1.   4.8  3. ]\n",
      " [ 1.   4.3  3. ]\n",
      " [ 1.   5.8  4. ]\n",
      " [ 1.   5.7  4.4]\n",
      " [ 1.   5.4  3.9]\n",
      " [ 1.   5.1  3.5]\n",
      " [ 1.   5.7  3.8]\n",
      " [ 1.   5.1  3.8]\n",
      " [ 1.   5.4  3.4]\n",
      " [ 1.   5.1  3.7]\n",
      " [ 1.   4.6  3.6]\n",
      " [ 1.   5.1  3.3]\n",
      " [ 1.   4.8  3.4]\n",
      " [ 1.   5.   3. ]\n",
      " [ 1.   5.   3.4]\n",
      " [ 1.   5.2  3.5]\n",
      " [ 1.   5.2  3.4]\n",
      " [ 1.   4.7  3.2]\n",
      " [ 1.   4.8  3.1]\n",
      " [ 1.   5.4  3.4]\n",
      " [ 1.   5.2  4.1]\n",
      " [ 1.   5.5  4.2]\n",
      " [ 1.   4.9  3.1]\n",
      " [ 1.   5.   3.2]\n",
      " [ 1.   5.5  3.5]\n",
      " [ 1.   4.9  3.1]\n",
      " [ 1.   4.4  3. ]\n",
      " [ 1.   5.1  3.4]\n",
      " [ 1.   5.   3.5]\n",
      " [ 1.   4.5  2.3]\n",
      " [ 1.   4.4  3.2]\n",
      " [ 1.   5.   3.5]\n",
      " [ 1.   5.1  3.8]\n",
      " [ 1.   4.8  3. ]\n",
      " [ 1.   5.1  3.8]\n",
      " [ 1.   4.6  3.2]\n",
      " [ 1.   5.3  3.7]\n",
      " [ 1.   5.   3.3]\n",
      " [ 1.   7.   3.2]\n",
      " [ 1.   6.4  3.2]\n",
      " [ 1.   6.9  3.1]\n",
      " [ 1.   5.5  2.3]\n",
      " [ 1.   6.5  2.8]\n",
      " [ 1.   5.7  2.8]\n",
      " [ 1.   6.3  3.3]\n",
      " [ 1.   4.9  2.4]\n",
      " [ 1.   6.6  2.9]\n",
      " [ 1.   5.2  2.7]\n",
      " [ 1.   5.   2. ]\n",
      " [ 1.   5.9  3. ]\n",
      " [ 1.   6.   2.2]\n",
      " [ 1.   6.1  2.9]\n",
      " [ 1.   5.6  2.9]\n",
      " [ 1.   6.7  3.1]\n",
      " [ 1.   5.6  3. ]\n",
      " [ 1.   5.8  2.7]\n",
      " [ 1.   6.2  2.2]\n",
      " [ 1.   5.6  2.5]\n",
      " [ 1.   5.9  3.2]\n",
      " [ 1.   6.1  2.8]\n",
      " [ 1.   6.3  2.5]\n",
      " [ 1.   6.1  2.8]\n",
      " [ 1.   6.4  2.9]\n",
      " [ 1.   6.6  3. ]\n",
      " [ 1.   6.8  2.8]\n",
      " [ 1.   6.7  3. ]\n",
      " [ 1.   6.   2.9]\n",
      " [ 1.   5.7  2.6]\n",
      " [ 1.   5.5  2.4]\n",
      " [ 1.   5.5  2.4]\n",
      " [ 1.   5.8  2.7]\n",
      " [ 1.   6.   2.7]\n",
      " [ 1.   5.4  3. ]\n",
      " [ 1.   6.   3.4]\n",
      " [ 1.   6.7  3.1]\n",
      " [ 1.   6.3  2.3]\n",
      " [ 1.   5.6  3. ]\n",
      " [ 1.   5.5  2.5]\n",
      " [ 1.   5.5  2.6]\n",
      " [ 1.   6.1  3. ]\n",
      " [ 1.   5.8  2.6]\n",
      " [ 1.   5.   2.3]\n",
      " [ 1.   5.6  2.7]\n",
      " [ 1.   5.7  3. ]\n",
      " [ 1.   5.7  2.9]\n",
      " [ 1.   6.2  2.9]\n",
      " [ 1.   5.1  2.5]\n",
      " [ 1.   5.7  2.8]\n",
      " [ 1.   6.3  3.3]\n",
      " [ 1.   5.8  2.7]\n",
      " [ 1.   7.1  3. ]\n",
      " [ 1.   6.3  2.9]\n",
      " [ 1.   6.5  3. ]\n",
      " [ 1.   7.6  3. ]\n",
      " [ 1.   4.9  2.5]\n",
      " [ 1.   7.3  2.9]\n",
      " [ 1.   6.7  2.5]\n",
      " [ 1.   7.2  3.6]\n",
      " [ 1.   6.5  3.2]\n",
      " [ 1.   6.4  2.7]\n",
      " [ 1.   6.8  3. ]\n",
      " [ 1.   5.7  2.5]\n",
      " [ 1.   5.8  2.8]\n",
      " [ 1.   6.4  3.2]\n",
      " [ 1.   6.5  3. ]\n",
      " [ 1.   7.7  3.8]\n",
      " [ 1.   7.7  2.6]\n",
      " [ 1.   6.   2.2]\n",
      " [ 1.   6.9  3.2]\n",
      " [ 1.   5.6  2.8]\n",
      " [ 1.   7.7  2.8]\n",
      " [ 1.   6.3  2.7]\n",
      " [ 1.   6.7  3.3]\n",
      " [ 1.   7.2  3.2]\n",
      " [ 1.   6.2  2.8]\n",
      " [ 1.   6.1  3. ]\n",
      " [ 1.   6.4  2.8]\n",
      " [ 1.   7.2  3. ]\n",
      " [ 1.   7.4  2.8]\n",
      " [ 1.   7.9  3.8]\n",
      " [ 1.   6.4  2.8]\n",
      " [ 1.   6.3  2.8]\n",
      " [ 1.   6.1  2.6]\n",
      " [ 1.   7.7  3. ]\n",
      " [ 1.   6.3  3.4]\n",
      " [ 1.   6.4  3.1]\n",
      " [ 1.   6.   3. ]\n",
      " [ 1.   6.9  3.1]\n",
      " [ 1.   6.7  3.1]\n",
      " [ 1.   6.9  3.1]\n",
      " [ 1.   5.8  2.7]\n",
      " [ 1.   6.8  3.2]\n",
      " [ 1.   6.7  3.3]\n",
      " [ 1.   6.7  3. ]\n",
      " [ 1.   6.3  2.5]\n",
      " [ 1.   6.5  3. ]\n",
      " [ 1.   6.2  3.4]\n",
      " [ 1.   5.9  3. ]]\n",
      "0.0\n"
     ]
    }
   ],
   "source": [
    "data = data1\n",
    "data= np.c_[np.ones(150), data]\n",
    "\n",
    "def mean(x): #defining the mean\n",
    "    return np.sum(x)/x.size\n",
    "\n",
    "def var(x): #defining variance\n",
    "    return (x-mean(x)).T@(x-mean(x))/x.size\n",
    "print(data)\n",
    "\n",
    "def normalize(dataUN):\n",
    "    dataN1 = dataUN\n",
    "    dataN2 = dataUN\n",
    "    for i in range(dataUN[0,:].size):\n",
    "   \n",
    "        if(var(dataUN[:,i])==0):\n",
    "            print(var(dataUN[:,i]))\n",
    "            dataN1[:,i]=np.zeros(dataUN[:,i].size)\n",
    "        else : dataN1[:,i] = (dataUN[:,i]-mean(dataUN[:,i]))/var(dataUN[:,i])\n",
    "    return dataN1\n",
    "\n",
    "data2 = normalize(data)\n",
    "\n",
    "#Anmerkung: Mit \n",
    "# irisDataNorm = (irisDataFrame.loc[:,0:3]-irisDataFrame.mean(axis=0))/irisDataFrame.std(axis=0)\n",
    "# geht das bestimmt besser ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now run the gradient descent LLS algorithm on the normalized data. Again, choose  ν\n",
    "  as the largest value such that convergence is achieved. Compare the first 100 iteration steps by plotting the value of  J\n",
    "  vs. the iteration number for both the normalized and the unnormalized case. What do you observe?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "3.37954692062e+99\n",
      "8.84369081972e-06\n",
      "0.0553349249904\n",
      "3.44630677466\n",
      "3.48820081141\n",
      "9.29712050692\n",
      "9.12278370487\n",
      "6.47803592405\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nsZ4AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1193096d8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAFHtJREFUeJzt3X+Q3HV9x/HX6+52k8sdJE1yJRgC\nQTC2aiWBE7EwyFh1gsNAHWEGnCo4OqmMjj87Vh0EZXSmtFNtlRljBAo4FmHU2kCxLRUc8A+CR5qE\nH5GQKpYYhlwuBZJczP1694/9Htlsdm/3kr3sfj/3fMzs3Pf73c/tvubL5XUfvvfd79cRIQBAWjpa\nHQAA0HyUOwAkiHIHgARR7gCQIModABJEuQNAgih3AEgQ5Q4ACaLcASBBXa1648WLF8fy5ctb9fYA\nkEuPP/747ojoqzeuZeW+fPlyDQwMtOrtASCXbP+2kXEclgGABFHuAJAgyh0AEkS5A0CCKHcASBDl\nDgAJotwBIEF1y932XNuP2d5s+ynbX6ky5hrbg7Y3ZY+PzExc6cldT+pLD35Ju4d3z9RbAEDuNTJz\nPyjpHRFxlqSVklbbPq/KuLsjYmX2uKWpKcs8s/sZffWRr2rn3p0z9RYAkHt1P6EapTto78tWC9mj\nZXfV7i32SpL2jeyrMxIAZq+Gjrnb7rS9SdIuSQ9ExIYqw95ne4vtH9peVuN11tgesD0wODh4VIEp\ndwCor6Fyj4jxiFgp6RRJ59p+U8WQeyUtj4g3S/ovSXfUeJ11EdEfEf19fXWve1MV5Q4A9U3rbJmI\neEnSzyWtrtg+FBEHs9XvSjqnKemqoNwBoL5Gzpbps70gW+6W9E5Jv6oYc3LZ6qWStjYzZDnKHQDq\na+SSvydLusN2p0q/DO6JiPts3yhpICLWS/qE7UsljUnaI+mamQpMuQNAfY2cLbNF0qoq268vW/6C\npC80N1p13YVuWabcAWAKufuEaoc71FPs0f6R/a2OAgBtK3flLpUOzTBzB4DaclnuPYUe7Rul3AGg\nllyWOzN3AJga5Q4ACaLcASBBlDsAJIhyB4AEUe4AkCDKHQASlNtyHxkf0cj4SKujAEBbym25S+IS\nBABQQ67LnUMzAFAd5Q4ACaLcASBBlDsAJIhyB4AEUe4AkKBcl/v+UU6FBIBqclnuPYUeSczcAaCW\nfJZ7kXIHgKnkstyLnUUVO4uUOwDUkMtyl7h4GABMpW65255r+zHbm20/ZfsrVcbMsX237e22N9he\nPhNhy1HuAFBbIzP3g5LeERFnSVopabXt8yrGfFjS/0XEmZK+Iemm5sY8EuUOALXVLfcomWzRQvaI\nimGXSbojW/6hpD+z7aalrIJyB4DaGjrmbrvT9iZJuyQ9EBEbKoYslfS8JEXEmKSXJS1qZtBKlDsA\n1NZQuUfEeESslHSKpHNtv6liSLVZeuXsXrbX2B6wPTA4ODj9tGUodwCobVpny0TES5J+Lml1xVM7\nJC2TJNtdkuZL2lPl+9dFRH9E9Pf19R1V4EmUOwDU1sjZMn22F2TL3ZLeKelXFcPWS7o6W75c0oMR\nccTMvZl6C5Q7ANTS1cCYkyXdYbtTpV8G90TEfbZvlDQQEesl3Srpe7a3qzRjv3LGEmeYuQNAbXXL\nPSK2SFpVZfv1Zcu/l3RFc6NNrbfYq/2j+zURE+pwbj+LBQAzIretOHllyOHR4RYnAYD2k/ty59AM\nAByJcgeABFHuAJCg3Jb75DXd949wNyYAqJTbcmfmDgC1Ue4AkCDKHQASRLkDQIIodwBIUG7Lvbur\nW5YpdwCoIrflbpuLhwFADbktd4krQwJALfkv91HKHQAq5b/cmbkDwBEodwBIEOUOAAmi3AEgQZQ7\nACSIcgeABCVR7hHR6igA0FZyXe49hR6NTYxpZHyk1VEAoK3kutwnLx62f5S7MQFAuSTKnePuAHC4\nuuVue5nth2xvtf2U7U9WGXOR7Zdtb8oe189M3MNR7gBQXVcDY8YkfTYiNto+QdLjth+IiKcrxj0S\nEZc0P2JtlDsAVFd35h4RL0TExmx5r6StkpbOdLBGUO4AUN20jrnbXi5plaQNVZ5+m+3Ntn9q+401\nvn+N7QHbA4ODg9MOW4lyB4DqGi53272SfiTpUxHxSsXTGyWdFhFnSfqWpJ9Ue42IWBcR/RHR39fX\nd7SZX0W5A0B1DZW77YJKxf79iPhx5fMR8UpE7MuW75dUsL24qUmroNwBoLpGzpaxpFslbY2Ir9cY\nsyQbJ9vnZq871Myg1VDuAFBdI2fLnC/pA5KesL0p2/ZFSadKUkSslXS5pGttj0k6IOnKOA7XBOgp\n9kii3AGgUt1yj4hfSHKdMTdLurlZoRrV1dGluV1zKXcAqJDrT6hKXBkSAKqh3AEgQZQ7ACSIcgeA\nBFHuAJAgyh0AEpT7cu8p9FDuAFAh9+XeW+zlTkwAUCGJcmfmDgCHS6Lch0eHNT4x3uooANA2kih3\nSRoeHW5xEgBoH8mUO4dmAOAQyh0AEkS5A0CCKHcASBDlDgAJotwBIEGUOwAkiHIHgARR7gCQoNyX\n+5zOOep0J+UOAGVyX+62uXgYAFTIfblLXBkSACrVLXfby2w/ZHur7adsf7LKGNv+pu3ttrfYPntm\n4lbXU+zRvlHKHQAmdTUwZkzSZyNio+0TJD1u+4GIeLpszMWSXpc93irp29nX44KZOwAcru7MPSJe\niIiN2fJeSVslLa0YdpmkO6PkUUkLbJ/c9LQ19BZ7tX+EuzEBwKRpHXO3vVzSKkkbKp5aKun5svUd\nOvIXwIxh5g4Ah2u43G33SvqRpE9FxCuVT1f5lqjyGmtsD9geGBwcnF7SKVDuAHC4hsrddkGlYv9+\nRPy4ypAdkpaVrZ8iaWfloIhYFxH9EdHf19d3NHmr6i1Q7gBQrpGzZSzpVklbI+LrNYatl/TB7KyZ\n8yS9HBEvNDHnlJi5A8DhGjlb5nxJH5D0hO1N2bYvSjpVkiJiraT7Jb1H0nZJw5I+1PyotU2We0So\n9LsIAGa3uuUeEb9Q9WPq5WNC0seaFWq6eou9Go9xHRw/qLldc1sVAwDaRjKfUJW4eBgATKLcASBB\nlDsAJIhyB4AEUe4AkCDKHQASRLkDQIIodwBIUBLl3lPskUS5A8CkNMq9QLkDQLkkyr2zo1PdXd2U\nOwBkkih3ibsxAUC5pMqdm2QDQEla5c5hGQCQRLkDQJIodwBIEOUOAAmi3AEgQZQ7ACSIcgeABCVV\n7r8f+73GJsZaHQUAWi6pcpfEp1QBQAmWO4dmAIByB4Ak1S1327fZ3mX7yRrPX2T7Zdubssf1zY9Z\nH+UOAId0NTDmdkk3S7pzijGPRMQlTUl0lLimOwAcUnfmHhEPS9pzHLIcE2buAHBIs465v832Zts/\ntf3GWoNsr7E9YHtgcHCwSW9dQrkDwCHNKPeNkk6LiLMkfUvST2oNjIh1EdEfEf19fX1NeOtDKHcA\nOOSYyz0iXomIfdny/ZIKthcfc7JpevU891HOcweAYy5320tsO1s+N3vNoWN93eli5g4Ah9Q9W8b2\nXZIukrTY9g5JN0gqSFJErJV0uaRrbY9JOiDpyoiIGUtcQ7GzqK6OLsodANRAuUfEVXWev1mlUyVb\nyjYXDwOATDKfUJW4MiQATKLcASBBlDsAJIhyB4AEUe4AkCDKHQASlFa5Fyh3AJBSK3dm7gAgKdFy\nb8EHZAGgrSRV7j3FHoVCB8YOtDoKALRUUuXOxcMAoIRyB4AEUe4AkCDKHQASlGS57x/hbkwAZrck\ny52ZO4DZjnIHgARR7gCQIModABKUVLnPK8yTRLkDQFLl3uEO9RR6KHcAs15S5S5xZUgAkFIt91HK\nHcDsVrfcbd9me5ftJ2s8b9vftL3d9hbbZzc/ZuOYuQNAYzP32yWtnuL5iyW9LnuskfTtY4919Ch3\nAGig3CPiYUl7phhymaQ7o+RRSQtsn9ysgNNFuQNAc465L5X0fNn6jmxbS1DuANCccneVbVXvc2d7\nje0B2wODg4NNeOsj9RQ5FRIAmlHuOyQtK1s/RdLOagMjYl1E9EdEf19fXxPe+ki9BWbuANCMcl8v\n6YPZWTPnSXo5Il5owuseFQ7LAIDUVW+A7bskXSRpse0dkm6QVJCkiFgr6X5J75G0XdKwpA/NVNhG\n9BZ7NTI+opHxERU7i62MAgAtU7fcI+KqOs+HpI81LdExKr9hR7GbcgcwOyX5CVVJ2j/K3ZgAzF7J\nljvH3QHMZpQ7ACSIcgeABFHuAJAgyh0AEkS5A0CCKHcASFBy5d5T7JFEuQOY3ZIr92JnUcXOIuUO\nYFZLrtwlLh4GAJQ7ACQoyXLvKXDDDgCzW5LlzswdwGxHuQNAgih3AEhQkuW+sHuhtu/ZrnufubfV\nUQCgJZIs9+suvE5nLjxTl/7gUq25dw2zeACzTpLlfubCM7XhIxv0uT/9nG7ZeItWfWeVHt3xaKtj\nAcBxk2S5S9Kcrjm66V036aGrH9LI+IguuO0C3fDQDRodH211NACYccmW+6S3L3+7tnx0i97/J+/X\njQ/fqPNvO1/bhra1OhYAzKjky12S5s+drzvfe6fuufwebd+zXSvXrtTagbWKiFZHA4AZMSvKfdIV\nb7xCT1z7hC449QJd+2/XasXNK/Tpf/+0fvbrn2lkfKTV8QCgadyq2Wt/f38MDAy05L0nYkLf2/w9\n3f3U3XrwNw/q4PhBnVA8Qe8+4926ZMUluvjMi3VS70ktyQYAU7H9eET01x3XSLnbXi3pHyV1Srol\nIv6m4vlrJP2dpN9lm26OiFumes1Wlnu5/SP79eBvHtR92+7Tfc/ep517d8qy3rL0Lbr4zIt11kln\nacWiFTpj4Rma2zW31XEBzHJNK3fbnZK2SXqXpB2Sfinpqoh4umzMNZL6I+LjjQZsl3IvFxHa/OLm\nUtFvu0+P/e4xhUr7x7JOW3CaVixaoRULV+j1i1+vFYtW6PQFp2vxvMWaP3e+OjyrjnIBaIFGy72r\ngdc6V9L2iPh19sI/kHSZpKen/K4csq2VS1Zq5ZKVuu7C6/TKwVf07NCz2ja0rfTYs03P7H5Gdzx/\nh/aO7D3sezvcoYXdC7Woe5EWz1usRfMWvbp84pwTNa8wT91d3ZpXmHfYo7tQ2lboKKjQWZjyq+0W\n7RkAedNIuS+V9HzZ+g5Jb60y7n22L1Rplv/piHi+coDtNZLWSNKpp546/bTH2YlzTtQ5rzlH57zm\nnMO2R4Re3P+itg1t03MvPaeh4SENHRjS0PCQdh/YraHhIT330nMa2DmgoeEhHRw/2LRMne5UhzvU\n4Q51dpSWy7fZluXDlu1sPVuWVHXZytbLfolMbptqezWN/CKq9xrHE784cTx9eNWH9Zm3fWZG36OR\ncq/2U195LOdeSXdFxEHbH5V0h6R3HPFNEeskrZNKh2WmmbVt2NaS3iVa0rtEF552Yd3xo+OjGh4d\n1oGxAxoeHX71cWD00PrI+IjGJsY0OjGq0fHRql8nYuLVx/jEeOlrjB+2HgpFhEJRWs+WI0ITmpCk\nV7eVL08enouy/7Tlh+xqba8mjvjxqDKmjU5DbSQv0Ewn9cz8CRuNlPsOScvK1k+RtLN8QEQMla1+\nV9JNxx4tHYXOguZ3ztd8zW91FACzRCN/AfylpNfZPt12UdKVktaXD7B9ctnqpZK2Ni8iAGC66s7c\nI2LM9scl/YdKp0LeFhFP2b5R0kBErJf0CduXShqTtEfSNTOYGQBQx6z8EBMA5FWjp0JyYjYAJIhy\nB4AEUe4AkCDKHQASRLkDQIJadraM7UFJvz3Kb18saXcT48y0POXNU1YpX3nzlFXKV948ZZWOLe9p\nEdFXb1DLyv1Y2B5o5FSgdpGnvHnKKuUrb56ySvnKm6es0vHJy2EZAEgQ5Q4ACcprua9rdYBpylPe\nPGWV8pU3T1mlfOXNU1bpOOTN5TF3AMDU8jpzBwBMIXflbnu17Wdsb7f9+Vbnqcf2c7afsL3Jdltd\nKc32bbZ32X6ybNtC2w/Yfjb7+getzFiuRt4v2/5dtn832X5PKzNOsr3M9kO2t9p+yvYns+1tt3+n\nyNqu+3au7cdsb87yfiXbfrrtDdm+vTu7RHm7Zr3d9m/K9u3Kpr95ROTmodIlh/9H0mslFSVtlvSG\nVueqk/k5SYtbnaNGtgslnS3pybJtfyvp89ny5yXd1OqcdfJ+WdJftTpblawnSzo7Wz5BpdtPvqEd\n9+8UWdt131pSb7ZckLRB0nmS7pF0ZbZ9raRr2zjr7ZIun8n3ztvM/dWbdUfEiKTJm3XjKETEwypd\nf7/cZSrdJlHZ1z8/rqGmUCNvW4qIFyJiY7a8V6Ub2CxVG+7fKbK2pSjZl60WskeodGvPH2bb22Xf\n1so64/JW7tVu1t22P4SZkPSfth/PbhDe7k6KiBek0j96SX/Y4jyN+LjtLdlhm5Yf5qhke7mkVSrN\n2tp6/1Zkldp039rutL1J0i5JD6j0f/QvRcRYNqRtuqEya0RM7tuvZfv2G7bnNPt981bujdysu92c\nHxFnS7pY0sds17+jNqbj25LOkLRS0guS/r61cQ5nu1fSjyR9KiJeaXWeqVTJ2rb7NiLGI2KlSvd0\nPlfSH1cbdnxTVVeZ1fabJH1B0h9JeoukhZL+utnvm7dyr3uz7nYTETuzr7sk/YtKP4jt7MXJe+Jm\nX3e1OM+UIuLF7B/PhEo3Z2+b/Wu7oFJZfj8ifpxtbsv9Wy1rO+/bSRHxkqSfq3Qce4HtyVuHtl03\nlGVdnR0Ki4g4KOmfNAP7Nm/lXvdm3e3Edo/tEyaXJb1b0pNTf1fLrZd0dbZ8taR/bWGWuipuzv5e\ntcn+tW1Jt0raGhFfL3uq7fZvraxtvG/7bC/IlrslvVOlvxM8JOnybFi77NtqWX9V9gveKv1toOn7\nNncfYspOx/oHHbpZ99daHKkm269VabYulW5G/s/tlNf2XZIuUukKdS9KukHST1Q66+BUSf8r6YqI\naIs/YtbIe5FKhw1CpTOT/nLymHYr2b5A0iOSnpA0kW3+okrHsttq/06R9Sq15759s0p/MO1UaYJ6\nT0TcmP17+4FKhzn+W9JfZDPjlpki64OS+lQ61LxJ0kfL/vDanPfOW7kDAOrL22EZAEADKHcASBDl\nDgAJotwBIEGUOwAkiHIHgARR7gCQIModABL0/8kaxBUIynGbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11933bba8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n+v/IY7vsa+qgfQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11937ba90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nEFAKBwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11934c278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1193f22e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119429f28>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11946ae10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\nAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119407438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for i in range(nu.size):\n",
    "    Learning_2(n,data,y,nu[i],stepMax,epsilon,color[i],legende[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.8"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Implement the k-nearest neighbor algorithm."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.2360679774997898"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy.spatial import distance\n",
    "u = np.array([1,2])\n",
    "v = np.array([0,0])\n",
    "distance.euclidean(u,v) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([163, 158,  81,  80,  56,  58, 132,   0, 103, 148,  39, 176, 171,\n",
       "       184,  98])"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#Gives n x k array of the k nearest training data points for every test data point x1,...,xn\n",
    "def kNearest_array(k, x_training, x_test):\n",
    "    dist_mat = distance.cdist(x_test, x_training, metric = 'euclidean')\n",
    "    output = np.zeros((len(x_test), k))\n",
    "    for j in range(len(x_test)):\n",
    "        output[j] = (np.argpartition(dist_mat[j], k)[:k]) # Partitions array to take the k smallest entries without fully sorting\n",
    "    return output.astype(int)\n",
    "kNearest_array(15, x, x)[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "def kNearest_classify(k, x_training, y_training, x_test):\n",
    "    nearNeigh_y = y_training[kNearest_array(k, x_training, x_test)] #Takes the labels of the k nearest points\n",
    "    nearNeigh_val = (nearNeigh_y / k).sum(axis = 1) #Computes the sum for the algorithm\n",
    "    nearNeigh_class = (nearNeigh_val > 0.5) #Separates by labels\n",
    "    return nearNeigh_class.astype(int)\n",
    "print(kNearest_classify(5, x, y, x))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#This function is used later to generate the contour plots, it's functionally analogous to kNearest_classify, just different output\n",
    "def kN_for_contour(k, x_training, y_training, x_test):\n",
    "    nearNeigh_y = y_training[kNearest_array(k, x_training, x_test)]\n",
    "    nearNeigh_val = (nearNeigh_y / k).sum(axis = 1)\n",
    "    return nearNeigh_val"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# use the same data as test- and training data\n",
    "def confusionmatrix_nearest_neighbor(x_training, y_training, y_test):\n",
    "    class0_is = (y_training == 0)\n",
    "    class1_is = (y_training == 1)\n",
    "    class0_assigned = (y_test == 0)\n",
    "    class1_assigned = (y_test == 1)\n",
    "    c00 = np.count_nonzero(np.logical_and(class0_is, class0_assigned))\n",
    "    c01 = np.count_nonzero(np.logical_and(class1_is, class0_assigned))\n",
    "    c10 = np.count_nonzero(np.logical_and(class0_is, class1_assigned))\n",
    "    c11 = np.count_nonzero(np.logical_and(class1_is, class1_assigned))\n",
    "    return np.array([[c00, c01], [c10, c11]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# x and y are the data from task 1.1\n",
    "kNearest_classify(15,x,y,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Here, the confusion matrices are computed for k = 1, 15, 30 to give the accuracy of each\n",
    "\n",
    "y_test_1 = kNearest_classify(1, x, y, x)\n",
    "y_test_15 = kNearest_classify(15, x, y, x)\n",
    "y_test_30 = kNearest_classify(30, x, y, x)\n",
    "con_nn_1 = confusionmatrix_nearest_neighbor(x, y,y_test_1)\n",
    "con_nn_15 = confusionmatrix_nearest_neighbor(x, y,y_test_15)\n",
    "con_nn_30 = confusionmatrix_nearest_neighbor(x, y,y_test_30)\n",
    "acc_nn_1 = acc(con_nn_1,x)\n",
    "acc_nn_15 = acc(con_nn_15,x)\n",
    "acc_nn_30 = acc(con_nn_30,x)\n",
    "print(con_nn_1, con_nn_15, con_nn_30, acc_nn_1, acc_nn_15, acc_nn_30)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# x and y are from task 1.1\n",
    "def f_1(z):\n",
    "    return kN_for_contour(1, x, y, z)\n",
    "\n",
    "def f_15(z):\n",
    "    return kN_for_contour(15, x, y, z)\n",
    "\n",
    "def f_30(z):\n",
    "    return kN_for_contour(30, x, y, z)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#plot for k = 1\n",
    "plt.scatter(x[:99,0], x[:99,1],c='orange', label = 'class 0')\n",
    "plt.scatter(x[100:199,0], x[100:199,1],c='blue', label = 'class 1')\n",
    "PlotContourLine(f_1,-4,4,-4,4, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 = 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# plot for k = 15\n",
    "plt.scatter(x[:99,0], x[:99,1],c='orange', label = 'class 0')\n",
    "plt.scatter(x[100:199,0], x[100:199,1],c='blue', label = 'class 1')\n",
    "PlotContourLine(f_15,-4,4,-4,4, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 = 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# plot for k = 30\n",
    "plt.scatter(x[:99,0], x[:99,1],c='orange', label = 'class 0')\n",
    "plt.scatter(x[100:199,0], x[100:199,1],c='blue', label = 'class 1')\n",
    "PlotContourLine(f_30,-4,4,-4,4, value = 0.5)\n",
    "plt.title(r'Hyperplane H: $\\alpha_0 + \\alpha_1 \\cdot x_1 + \\alpha_2 \\cdot x_2 = 0.5 $')\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Task 1.9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "accuracies = np.zeros(200)\n",
    "for k in range(1, 200):\n",
    "    y_assigned = kNearest_classify(k, x, y, x) # gives assigned classes for the test data array x (from task 1.1)\n",
    "    con= confusionmatrix_nearest_neighbor(x, y,y_assigned)\n",
    "    accuracies[k - 1] = acc(con,x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "print(accuracies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# the data from task 1.4 were x_new and y_new:\n",
    "accuracies_new = np.zeros(200)\n",
    "for k in range(1, 200):\n",
    "    y_assigned_new = kNearest_classify(k, x_new, y_new, x_new) # gives assigned classes for the test data array x (from task 1.1)\n",
    "    con_new = confusionmatrix_nearest_neighbor(x_new, y_new,y_assigned_new)\n",
    "    accuracies_new[k-1] = acc(con_new,x_new)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "plt.plot(accuracies)\n",
    "plt.plot(accuracies_new)"
   ]
  }
 ],
 "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.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
