learning.ipynb 182 ko
Newer Older
jeff3456's avatar
jeff3456 a validé
  {
   "cell_type": "markdown",
jeff3456's avatar
jeff3456 a validé
   "metadata": {
    "collapsed": false
   },
   "source": [
    "# Learning\n",
    "\n",
    "This notebook serves as supporting material for topics covered in **Chapter 18 - Learning from Examples** , **Chapter 19 - Knowledge in Learning**, **Chapter 20 - Learning Probabilistic Models** from the book *Artificial Intelligence: A Modern Approach*. This notebook uses implementations from [learning.py](https://github.com/aimacode/aima-python/blob/master/learning.py). Let's start by importing everything from learning module."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
   "outputs": [],
jeff3456's avatar
jeff3456 a validé
   "source": [
    "from learning import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Contents\n",
    "\n",
    "* Review\n",
    "* Explanations of learning module\n",
    "* Practical Machine Learning Task\n",
    "    * MNIST handwritten digits classification\n",
    "        * Loading and Visualising digits data\n",
    "        * kNN classifier\n",
    "            * Review\n",
    "            * Native implementation from Learning module\n",
    "            * Faster implementation using NumPy\n",
    "        * Overfitting and how to avoid it\n",
    "            * Train-Test split\n",
    "            * Crossvalidation\n",
    "            * Regularisation\n",
    "        * Sub-sampling\n",
    "        * Fine tuning parameters to get better results\n",
    "        * Introduction to Scikit-Learn\n",
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Review\n",
    "\n",
    "In this notebook, we learn about agents that can improve their behavior through diligent study of their own experiences.\n",
    "\n",
    "An agent is **learning** if it improves its performance on future tasks after making observations about the world.\n",
    "\n",
    "There are three types of feedback that determine the three main types of learning:\n",
    "\n",
    "* **Supervised Learning**:\n",
    "\n",
    "In Supervised Learning the agent observeses some example input-output pairs and learns a function that maps from input to output.\n",
    "\n",
    "**Example**: Let's think of an agent to classify images containing cats or dogs. If we provide an image containing a cat or a dog, this agent should output a string \"cat\" or \"dog\" for that particular image. To teach this agent, we will give a lot of input-output pairs like {cat image-\"cat\"}, {dog image-\"dog\"} to the agent. The agent then learns a function that maps from an input image to one of those strings.\n",
    "\n",
    "* **Unsupervised Learning**:\n",
    "\n",
    "In Unsupervised Learning the agent learns patterns in the input even though no explicit feedback is supplied. The most common type is **clustering**: detecting potential useful clusters of input examples.\n",
    "\n",
    "**Example**: A taxi agent would develop a concept of *good traffic days* and *bad traffic days* without ever being given labeled examples.\n",
    "\n",
    "* **Reinforcement Learning**:\n",
    "\n",
    "In Reinforcement Learning the agent learns from a series of reinforcements—rewards or punishments.\n",
    "**Example**: Let's talk about an agent to play the popular Atari game—[Pong](http://www.ponggame.org). We will reward a point for every correct move and deduct a point for every wrong move from the agent. Eventually, the agent will figure out its actions prior to reinforcement were most responsible for it."
jeff3456's avatar
jeff3456 a validé
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## Explanations of learning module goes here"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Practical Machine Learning Task\n",
    "## MNIST handwritten digits calssification\n",
    "\n",
    "The MNIST database, available from [this page](http://yann.lecun.com/exdb/mnist/) is a large database of handwritten digits that is commonly used for training & testing/validating in Machine learning.\n",
    "\n",
    "The dataset has **60,000 training images** each of size 28x28 pixels with labels and **10,000 testing images** of size 28x28 pixels with labels.\n",
    "\n",
    "In this section, we will use this database to compare performances of these different learning algorithms:\n",
    "* kNN (k-Nearest Neighbour) classifier\n",
    "* Single-hidden-layer Neural Network classifier\n",
    "* SVMs (Support Vector Machines)\n",
    "\n",
    "It is estimates that humans have an error rate of about **0.2%** on this problem. Let's see how our algorithms perform!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Loading MNIST digits data\n",
    "\n",
    "Let's start by loading MNIST data into numpy arrays."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import os, struct\n",
    "import array\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from collections import Counter\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0)\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "def load_MNIST(path=\"aima-data/MNIST\"):\n",
    "    \"helper function to load MNIST data\"\n",
    "    train_img_file = open(os.path.join(path, \"train-images-idx3-ubyte\"), \"rb\")\n",
    "    train_lbl_file = open(os.path.join(path, \"train-labels-idx1-ubyte\"), \"rb\")\n",
    "    test_img_file = open(os.path.join(path, \"t10k-images-idx3-ubyte\"), \"rb\")\n",
    "    test_lbl_file = open(os.path.join(path, 't10k-labels-idx1-ubyte'), \"rb\")\n",
    "    \n",
    "    magic_nr, tr_size, tr_rows, tr_cols = struct.unpack(\">IIII\", train_img_file.read(16))\n",
    "    tr_img = array.array(\"B\", train_img_file.read())\n",
    "    train_img_file.close()    \n",
    "    magic_nr, tr_size = struct.unpack(\">II\", train_lbl_file.read(8))\n",
    "    tr_lbl = array.array(\"b\", train_lbl_file.read())\n",
    "    train_lbl_file.close()\n",
    "    \n",
    "    magic_nr, te_size, te_rows, te_cols = struct.unpack(\">IIII\", test_img_file.read(16))\n",
    "    te_img = array.array(\"B\", test_img_file.read())\n",
    "    test_img_file.close()\n",
    "    magic_nr, te_size = struct.unpack(\">II\", test_lbl_file.read(8))\n",
    "    te_lbl = array.array(\"b\", test_lbl_file.read())\n",
    "    test_lbl_file.close()\n",
    "\n",
    "#     print(len(tr_img), len(tr_lbl), tr_size)\n",
    "#     print(len(te_img), len(te_lbl), te_size)\n",
    "    \n",
    "    train_img = np.zeros((tr_size, tr_rows*tr_cols), dtype=np.int16)\n",
    "    train_lbl = np.zeros((tr_size,), dtype=np.int8)\n",
    "    for i in range(tr_size):\n",
    "        train_img[i] = np.array(tr_img[i*tr_rows*tr_cols : (i+1)*tr_rows*tr_cols]).reshape((tr_rows*te_cols))\n",
    "        train_lbl[i] = tr_lbl[i]\n",
    "        \n",
    "    test_img = np.zeros((te_size, te_rows*te_cols), dtype=np.int16)\n",
    "    test_lbl = np.zeros((te_size,), dtype=np.int8)\n",
    "    for i in range(te_size):\n",
    "        test_img[i] = np.array(te_img[i*te_rows*te_cols : (i+1)*te_rows*te_cols]).reshape((te_rows*te_cols))\n",
    "        test_lbl[i] = te_lbl[i]\n",
    "        \n",
    "    return(train_img, train_lbl, test_img, test_lbl)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function `load_MNIST()` loads MNIST data from files saved in `aima-data/MNIST`. It returns four numpy arrays that we are gonna use to train & classify hand-written digits in various learning approaches."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "train_img, train_lbl, test_img, test_lbl = load_MNIST()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check the shape of these NumPy arrays to make sure we have loaded the database correctly.\n",
    "\n",
    "Each 28x28 pixel image is flattened to 784x1 array and we should have 60,000 of them in training data. Similarly we should have 10,000 of those 784x1 arrays in testing data. "
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training images size: (60000, 784)\n",
      "Training labels size: (60000,)\n",
      "Testing images size: (10000, 784)\n",
      "Training labels size: (10000,)\n"
     ]
    }
   ],
   "source": [
    "print(\"Training images size:\", train_img.shape)\n",
    "print(\"Training labels size:\", train_lbl.shape)\n",
    "print(\"Testing images size:\", test_img.shape)\n",
    "print(\"Training labels size:\", test_lbl.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualizing MNIST digits data\n",
    "\n",
    "To get a better understanding of the dataset, let's visualize some random images for each class from training & testing datasets."
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "classes = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n",
    "num_classes = len(classes)\n",
    "\n",
    "def show_MNIST(dataset, samples=8):\n",
    "    if dataset == \"training\":\n",
    "        labels = train_lbl\n",
    "        images = train_img\n",
    "    elif dataset == \"testing\":\n",
    "        labels = test_lbl\n",
    "        images = test_img\n",
    "    else:\n",
    "        raise ValueError(\"dataset must be 'testing' or 'training'!\")\n",
    "        \n",
    "    for y, cls in enumerate(classes):\n",
    "        idxs = np.nonzero([i == y for i in labels])\n",
    "        idxs = np.random.choice(idxs[0], samples, replace=False)\n",
    "        for i , idx in enumerate(idxs):\n",
    "            plt_idx = i * num_classes + y + 1\n",
    "            plt.subplot(samples, num_classes, plt_idx)\n",
    "            plt.imshow(images[idx].reshape((28, 28)))\n",
    "            plt.axis(\"off\")\n",
    "            if i == 0:\n",
    "                plt.title(cls)\n",
    "\n",
    "\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nHDBgAOvXrwdg5cqVUf1N9erVAVdJFcVRxgn418caNWrw22+/AbBnzx4AihcvzhlnnJHpfRdffDEA\nxYoV47LLLgNg//79AJx11ll89dVXuX5WvMfprbfeyr333gvAoUOHAPfa+MEHH+Tn0FGj52Ji+1im\nTBkAPvroo0zPN2nShJ07d+bpmEHrYzzIrY9JEbY76aSTAOjbty/gXJzT0tIAzM21RYsW5udIN+PX\nXnsNwAyWrl278vnnn8e34XFAToShQ4dmev7AgQNmYrh58+aEtysn6tevz4gRIwDo0qVL1H+3ceNG\natSokek5Ce01aNDA0+QpXqSnpzNs2DAAevXqBUCFChUAJ7QaHnYEeP311wH3Zrtv375ENDVuSJj1\n0ksvBeDkk09mxowZQPSTp2nTpgHQsmVLAG688cZYNzNqrr32WgBzjbnuuus4ePAg4E44ChUqRJUq\nVQB3gvTnn38CsHjxYnOMxYsXA7Bly5YEtT5n2rRpY36WtiVq0qT4w3PPPQdgrqU7duwAoHDhwr61\nySty37vpppu44447AFi2bBkAW7du5aWXXgLg7bffBmDv3r1xb5OG7RRFURRFUTyQFMrToEGDAGcF\nmFdKlCgBOHI7OApGsilPRx11lAljhCsyd9xxB4888ogfzcqWq666CoDx48eb/3skpGR63LhxgLsi\nLlGiBN9++22Of+M3S5cuzfJdiPKZkZERUQU977zzMj3KqimZKFeuHACjRo0yIfTDhw8D8Pjjj3Pn\nnXfmeoyiRYsC0KdPH8466ywAXn75ZQAmT54c8zZHS8eOHQE4//zzs7wm6u4333zDq6++Crgr+WjD\n5H5QpEgRwE0SB3jwwQf9ak5gEAVfzlP5/4wYMYL3338fgAsvvBCAf/75x4cWZuWYY44B4JprrgHc\n64hlWcycOROAp556yrxflHDhl19+AVzFNBno3bs3ALfffrv5rlq3bg04/RbVW1T9Sy65BHDD7PFA\nlSdFURRFURQPBDZhvGDBggwcOBBwk6JzamtocrHkNUmcVF4PPcaHH35IixYtcm1HkBLjSpYsmSXB\n74cffgAcg7s//vgjT8eNVwLnK6+8Ajgrt/DcH1GXFi5cyJQpUyL+fXp6Oj///HOm52QlEakoICdi\n3UdZ2cyaNcuMqXfffReABx54wLRVVomyEqxYsaL5nurWrQu4ykV+SNQ4PeWUUwA3l6lUqVJs374d\n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\n+vXrA/DII48AUL58eaNUffXVV6FrfBLIPWPSpEk8+OCDPu/Ls7906dIAjBgxAoBnn302aG1S5UlR\nFEVRFMUGEaU8SX5T3759TVKxkFjOT/r06c3M1ROZlcqstW/fvoFqalCoXr06Q4YM8XrtwoULgDun\nwmlIInDNmjV93hMFrVatWo7O10oOstp96623kjx29+7dzJ49G7By8qZOnQrgN19DttVwCqISitqy\nbds2/vjjD1ufIatCz8/44osvAtfIEFC5cmXGjRsHYPItbrrpJsA97hOO6ffff5933303tI30Q65c\nucLdhIBw8eJFkwgt469jx47kzp0bgP379wMwb948AK+8vIsXLwJw5coVY5ERDcyZM8dYwAgzZsww\n9yd/95dPPvkEgLJlywJw55132r6eg4nkbomqLecXvPN95XqTZHgZG2PHjk1xTmZSRMTk6c477wRg\nxYoVgDsBOSFffPGFzw3r559/BtyDSpCbf5s2bcibNy8AvXr1Apw/eapZs6ZPuE4evMeOHQtHk5LF\nnj17fC5qYeXKlSbM+tprrwHWxKpw4cKmvzJJdCI7d+4E4L///gMgS5Ys5j2RviWk54lU3klYLk2a\nNOaG4DSk+m/w4MGAexII7omjnZtT8eLFKV++PGBNrteuXRu0G1wgKFy4sElAfeGFFwCMf5c/4uLi\nzFiWaian0KFDByZOnBjuZgQEqShs164d4A7pNG7cGMD87S8lY8eOHYB70pWwIEXG9ccffxxxyeel\nSpUy/xa/uO7duyfajylTpgDWM/aXX365oQ9dKLn11lsBK/zoOWmSZ8GECRMAd8j/77//BqxisY4d\nOwLuxXmw7i0atlMURVEURbGBo5Wnu+++G4APPvgA8K84ifIiJcFJISvBnDlzGhXK6Yj3z9NPP+3z\n3ueffx7q5iQbUQKnTZvGN9984/cYz/aLnC40a9aMfPnyAfDbb78FqZWpR9QlSbrs1KkT4E6q3rRp\nE2CV1ZYvX964rQ8fPhyw7Ani4+MdGcIsV66csV+4+eabAejXrx8AP/30k63Pql+/PpUrVwas8SGK\nslMQ5bNNmzaAOwRwyy23AJZa5nmeRDmVpHdJyFVCg3jebdiwwaQvyH2jS5cu5jiJNBQoUADwVjPk\nNQn7bNq0ib179wa55YFBFCfPQhW5316+fNnneOnj+PHjfdJfRo8e7QjladSoUQA89NBDXq+PHDnS\n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\n",
       "<matplotlib.figure.Figure at 0x108cd3828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# takes 5-10 secs. to execute the cell\n",
    "show_MNIST(\"training\")"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n2ZYtWzjzzDNzsvuwULddzsZYrVo1wD0/5T4SyNdffw04yQmzZ89O89mpp54KwPz58817L774IuCE\nSTz33HMAbN26NUMb1G2nypOiKIqiKEpE+DrmqXHjxgD06dMnrO3vuusuANauXQvA448/HhvD4oTE\ny4h6AYkxpk2bNgFO0T2ASpUqmUD3cJDg6tTUVO6++27AjScSKleubOKIMlpJe01geYX33nsPgG3b\ntplYhcsuuwyAOXPmxN227CKxEU899RQAn376qVF4A5G4t0QkfXB4uEgJgg8++CAslckL6tSpk+Fn\ncq0lClJq4dprrwWgQ4cOQbE+U6ZMyfD7jRs3pnr16iG3Gzt2LBs3boy6zTmlWrVq5l5StmxZwB3r\njBkzGDFiBODcZwATBxyIxAIHInFTlmXxxRdfAGTbWxNNJF5W7pVz587lzz//BDCK2uHDh41ytmXL\nFsBRxGONrydPCxcuBNyA8awoXLgwAK+88grgZDtB5JlZfmXnzp388MMPXpuRJZIhl9mNKxw2btzo\nyxvYf5FatWoBMHXqVABKly4NwMyZM8P6vgSpJkLF6nCyIVesWMEHH3wA4NuJEmCyPQcMGADAHXfc\nEbTNypUrAaeuWiIh7v0LLrgASHtuyb+lhpVt20ETK8uyQm4HziSzXr16sR5CxPz5559Bi2px0d13\n331s3749y33IojMw2/PgwYMATJ8+3ReTpqpVqwLuMb7hhhvMZ+J27Nu3r3lP6gief/75AKxbty7m\nNqrbTlEURVEUJQJ8qzy1bt3aKEnp+y2Bm7IuFCxYMOjfkoqbLMrTDz/88J+q+HvppZea+k6JTqVK\nlQBHwRG3pigXfid//vzMmDEDcBUnCQQXN0F6JEBeEDUnnOB+rwhHQZIyA+Ki8ztnn302AMOHD89w\nm+effx6APXv2xMWmaCHlFJ555hmAHKnU8vcpVapUzg2LIfPnzzcB4nItiZKUleokLncJCLdt2xzz\njh07Am6Sj5ekpqYa12RGCUMZceONNwKuCzqWSrcqT4qiKIqiKBHgO+WpRIkSALz00ksZxkns27fP\nBAtKsUwpUxDI7bffDsCiRYuSQn0aN26c1ybEBekLds8995iYjfRs3LjRxLb5mdNPPx2Ar776CoCi\nRYsycOBAgITp8ZaammpinoS33noLCN1zsHDhwkEFGMOJxUgEEkVxCgcpATNr1iyPLckeonp+9NFH\n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\n",
       "<matplotlib.figure.Figure at 0x105b1d710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# takes 5-10 secs. to execute the cell\n",
    "show_MNIST(\"testing\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's have a look at average of all the images of training and testing data."
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "classes = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]\n",
    "num_classes = len(classes)\n",
    "\n",
    "def show_ave_MNIST(dataset):\n",
    "    if dataset == \"training\":\n",
    "        print(\"Average of all images in training dataset.\")\n",
    "        labels = train_lbl\n",
    "        images = train_img\n",
    "    elif dataset == \"testing\":\n",
    "        print(\"Average of all images in testing dataset.\")\n",
    "        labels = test_lbl\n",
    "        images = test_img\n",
    "    else:\n",
    "        raise ValueError(\"dataset must be 'testing' or 'training'!\")\n",
    "        \n",
    "    for y, cls in enumerate(classes):\n",
    "        idxs = np.nonzero([i == y for i in labels])\n",
    "        print(\"Digit\", y, \":\", len(idxs[0]), \"images.\")\n",
    "        \n",
    "        ave_img = np.mean(np.vstack([images[i] for i in idxs[0]]), axis = 0)\n",
    "#         print(ave_img.shape)\n",
    "        \n",
    "        plt.subplot(1, num_classes, y+1)\n",
    "        plt.imshow(ave_img.reshape((28, 28)))\n",
    "        plt.axis(\"off\")\n",
    "        plt.title(cls)\n",
    "\n",
    "\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average of all images in training dataset.\n",
      "Digit 0 : 5923 images.\n",
      "Digit 1 : 6742 images.\n",
      "Digit 2 : 5958 images.\n",
      "Digit 3 : 6131 images.\n",
      "Digit 4 : 5842 images.\n",
      "Digit 5 : 5421 images.\n",
      "Digit 6 : 5918 images.\n",
      "Digit 7 : 6265 images.\n",
      "Digit 8 : 5851 images.\n",
      "Digit 9 : 5949 images.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1199f49b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Average of all images in testing dataset.\n",
      "Digit 0 : 980 images.\n",
      "Digit 1 : 1135 images.\n",
      "Digit 2 : 1032 images.\n",
      "Digit 3 : 1010 images.\n",
      "Digit 4 : 982 images.\n",
      "Digit 5 : 892 images.\n",
      "Digit 6 : 958 images.\n",
      "Digit 7 : 1028 images.\n",
      "Digit 8 : 974 images.\n",
      "Digit 9 : 1009 images.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ae08b38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "show_ave_MNIST(\"training\")\n",
    "show_ave_MNIST(\"testing\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## k-Nearest Neighbours (kNN) classifier\n",
    "\n",
    "### Review\n",
    "k-Nearest Neighbors algorithm is a non-parametric method used for classification and regression. We are gonna use this to classify MNIST handwritten digits. More about kNN on [Scholarpedia](http://www.scholarpedia.org/article/K-nearest_neighbor).\n",
    "\n",
    "![kNN plot](images/knn_plot.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see how kNN works with a simple plot shown in the above picture. There are two classes named **Class A** yellow color dots and **Class B** violet color dots. Every point in this plot has two **features** i.e. (X<sub>2</sub>, X<sub>1</sub>) values of that particular point which we used to plot. Now, let's say we have a new point, a red star and we want to know which class this red star belongs. Solving this problem by predicting the class of this new red star is out current classification problem.\n",
    "\n",
    "We have co-ordinates (we call them **features** in ML) of this red star and we need to predict its class using kNN algorithm. In this algorithm, the value of **k** is arbitary. **k** is one of the **hyper parameters** for kNN algorithm. We choose this number based on our dataset and choosing a particular number is known as **hyper parameter tuning/optimising**. We learn more about this in coming topics.\n",
    "\n",
    "Let's put **k = 3**. It means you need to find 3-Nearest Neighbors of this red star and classify this new point into majority class. Observe that smaller circle which containg 3 points other that **test point** (red star). As there are two violet points, which is majority, we predict the class of red star as **violet- Class B**.\n",
    "\n",
    "Similarly if we put **k = 5**, you can observe that there are 4 yellow points, which is majority. So, we classify our test point as **yellow- Class A**.\n",
    "\n",
    "In practical tasks, we iterate through a bunch of values for k (like [1, 2, 5, 10, 20, 50, 100]) and see how it performs and select the best one. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Native implementations from Learning module\n",
    "\n",
    "Let's classify MNIST data in this method. Similar to these points, our images in MNIST data also have **features**. These points have two features as (2, 3) which represents co-ordinates of the point in 2-dimentional plane. Our images have 28x28 pixel values and we treat them as **features** for this particular task. \n",
    "\n",
    "Next couple of cells help you understand some useful definitions from learning module."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%psource DataSet"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "class DataSet explanation goes here"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "%psource NearestNeighborLearner"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Nearest NeighborLearner explanation goes here"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, let us convert this raw data into `Dataset.examples` to run our `NearestNeighborLearner(dataset, k=1)` defined in `learning.py`. Every image is represented by 784 numbers (28x28 pixels) and we append them with its label or class to make them work with our implementations in learning module."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 784) (60000,)\n",
      "(60000, 785)\n"
     ]
    }
   ],
   "source": [
    "print(train_img.shape, train_lbl.shape)\n",
    "temp_train_lbl = train_lbl.reshape((60000,1))\n",
    "training_examples = np.hstack((train_img, temp_train_lbl))\n",
    "print(training_examples.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we will initialize DataSet with our training examples. Call NearestNeighbor Learner on this dataset. Predict the class of a test image."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# takes ~8 Secs. to execute this cell\n",
    "MNIST_DataSet = DataSet(examples=training_examples, distance=manhattan_distance)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "kNN_Learner = NearestNeighborLearner(MNIST_DataSet)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Choose a number from 0 to 9999 for `test_img_choice` and we are going to predict the class of that test image."
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Predicted class of test image: 2\n"
     ]
    }
   ],
   "source": [
    "# takes ~20 Secs. to execute this cell\n",
    "test_img_choice = 2311\n",
    "predicted_class = kNN_Learner(test_img[test_img_choice])\n",
    "print(\"Predicted class of test image:\", predicted_class)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To make sure that the output we got is correct, let's plot that image along with its label."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Actual class of test image: 2\n"
       "<matplotlib.image.AxesImage at 0x119835518>"
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\niXsj88QAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x11ae1a2e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "print(\"Actual class of test image:\", test_lbl[test_img_choice])\n",
    "plt.imshow(test_img[test_img_choice].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "Hurray! We've got it correct. Don't worry if our algorithm predicted a wrong class. With this techinique we have only ~97% accuracy on this dataset. Let's try with a different test image and hope we get it this time.\n",
    "\n",
    "You might have recognized that our algorithm took ~20 seconds to predict a single image. How would we even predict all 10,000 test images? Yeah, the implementations we have in our learning module are not optimized to run on this particular dataset. We will have an optimised version below in NumPy which is nearly ~50-100 times faster than our native implementation."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Faster implementation using NumPy\n",
    "\n",
    "Here we calculate manhattan distance between two images faster than our native implementation. Which in turn make predicting labels for test images far efficient."
   "execution_count": 18,
   },
   "outputs": [],
   "source": [
    "class kNN_learner:\n",
    "    \"Simple kNN learner with manhattan distance\"\n",
    "    def __init__(self):\n",
    "    \n",
    "    def train(self, train_img, train_lbl):\n",
    "        self.train_img = train_img\n",
    "        self.train_lbl = train_lbl\n",
    "\n",
    "    def predict_labels(self, test_img, k=1, distance=\"manhattan\"):\n",
    "        if distance == \"manhattan\":    \n",
    "            distances = self.compute_manhattan_distances(test_img)\n",
    "        num_test = distances.shape[0]\n",
    "        predictions = np.zeros(num_test, dtype=np.uint8)\n",
    "        \n",
    "        for i in range(num_test):\n",
    "            k_best_labels = self.train_lbl[np.argsort(distances[i])].flatten()[:k]\n",
    "            predictions[i] = mode(k_best_labels)\n",
    "            \n",
    "        return predictions\n",
    "    \n",
    "    def compute_manhattan_distances(self, test_img):\n",
    "        num_test = test_img.shape[0]\n",
    "        num_train = self.train_img.shape[0]\n",
    "#         print(num_test, num_train)\n",
    "        \n",
    "        dists = np.zeros((num_test, num_train))\n",
    "        \n",
    "        for i in range(num_test):\n",
    "            dists[i] = np.sum(abs(self.train_img - test_img[i]), axis = 1)\n",
    "            \n",
    "        return(dists)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's print the shapes of data to make sure everything's on track."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Training images size: (60000, 784)\n",
      "Training labels size: (60000,)\n",
      "Testing images size: (10000, 784)\n",
      "Training labels size: (10000,)\n"
     ]
    }
   ],
   "source": [
    "print(\"Training images size:\", train_img.shape)\n",
    "print(\"Training labels size:\", train_lbl.shape)\n",
    "print(\"Testing images size:\", test_img.shape)\n",
    "print(\"Training labels size:\", test_lbl.shape)"
   ]
  },
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "learner = kNN_learner()\n",
    "learner.train(train_img, train_lbl)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let us predict the classes of first 100 test images."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# takes ~17 Secs. to execute this cell\n",
    "num_test = 100\n",
    "predictions = learner.predict_labels(test_img[:num_test], k=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's compare the performances of both implementations. It took 20 Secs. to predict one image using our native implementations and 17 Secs. to predict 100 images in faster implementations. That's 110 times faster.\n",
    "\n",
    "Now, test the accuracy of our predictions:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy of predictions: 98.0 %\n"
     ]
    }
   ],
   "source": [
    "# print(predictions)\n",
    "# print(test_lbl[:num_test])\n",
    "\n",
    "num_correct = np.sum([predictions == test_lbl[:num_test]])\n",
    "num_accuracy = (float(num_correct) / num_test) * 100\n",
    "print(\"Accuracy of predictions:\", num_accuracy, \"%\")"
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction to Scikit-Learn\n",
    "\n",
    "In this section we will solve this MNIST problem using Scikit-Learn. Learn more about Scikit-Learn [here](http://scikit-learn.org/stable/index.html). As we are using this library, we don't need to define our own functions (kNN or Support Vector Machines aka SVMs) to classify digits.\n",
    "\n",
    "Let's start by importing necessary modules for kNN and SVM."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.neighbors import NearestNeighbors\n",
    "from sklearn import svm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearSVC(C=1.0, class_weight=None, dual=True, fit_intercept=True,\n",
       "     intercept_scaling=1, loss='squared_hinge', max_iter=1000,\n",
       "     multi_class='ovr', penalty='l2', random_state=None, tol=0.0001,\n",
       "     verbose=0)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# takes ~3 mins to execute the cell\n",
    "SVMclf = svm.LinearSVC()\n",
    "SVMclf.fit(train_img, train_lbl)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "predictions = SVMclf.predict(test_img)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy of predictions: 88.25 %\n"
     ]
    }
   ],
   "source": [
    "num_correct = np.sum(predictions == test_lbl)\n",
    "num_accuracy = (float(num_correct)/len(test_lbl)) * 100\n",
    "print(\"Accuracy of predictions:\", num_accuracy, \"%\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You might observe that this accuracy is far less than what we got using native kNN implementation. But we can tweak the parameters to get higher accuracy on this problem which we are going to explain in coming sections."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "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.5.1"
  },
  "widgets": {
   "state": {},
   "version": "1.1.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}