Skip to content
Snippets Groups Projects
neural_nets_intro.ipynb 597 KiB
Newer Older
  • Learn to ignore specific revisions
  • chadhat's avatar
    chadhat committed
    {
     "cells": [
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Introduction to Neural Networks\n",
        "\n",
        "## TO DO: Almost all the figues and schematics will be replaced or improved slowly\n",
        "\n",
    
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/neural_net_ex.svg\" width=\"700\"/>\n",
        "<figcaption>A 3 layer Neural Network (By convention the input layer is not counted).</figcaption>\n",
        "</figure>\n",
        "</center>"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## History of Neural networks\n",
        "\n",
        "**TODO: Make it more complete and format properly**\n",
        "\n",
        "1943 - Threshold Logic\n",
        "\n",
        "1940s - Hebbian Learning\n",
        "\n",
        "1958 - Perceptron\n",
        "\n",
        "1975 - Backpropagation\n",
        "\n",
        "1980s - Neocognitron\n",
        "\n",
        "1982: Hopfield Network\n",
        "\n",
        "1986: Convolutional Neural Networks\n",
        "\n",
        "1997: Long-short term memory (LSTM) model\n",
        "\n",
    
        "2014: Gated Recurrent Units, Generative Adversarial Networks(Check)?"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Why the boom now?\n",
        "* Data\n",
        "* Data\n",
        "* Data\n",
        "* Availability of GPUs\n",
        "* Algorithmic developments which allow for efficient training and training for deeper networks\n",
        "* Much easier access than a decade ago"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Building blocks\n",
        "### Perceptron\n",
        "\n",
    
        "The smallest unit of a neural network is a **perceptron** like node.\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "**What is a Perceptron?**\n",
        "\n",
    
        "It is a simple function which can have multiple inputs and has a single output.\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/perceptron_ex.svg\" width=\"400\"/>\n",
        "<figcaption>A simple perceptron with 3 inputs and 1 output.</figcaption>\n",
        "</figure>\n",
        "</center>\n",
        "\n",
        "\n",
        "It works as follows: \n",
        "\n",
        "Step 1: A **weighted sum** of the inputs is calculated\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "\\begin{equation*}\n",
        "weighted\\_sum = \\sum_{k=1}^{num\\_inputs} w_{i} x_{i}\n",
        "\\end{equation*}\n",
        "\n",
    
        "Step 2: A **step** activation function is applied\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "$$\n",
        "f(weighted\\_sum) = \\left\\{\n",
        "        \\begin{array}{ll}\n",
    
        "            0 & \\quad weighted\\_sum < threshold \\\\\n",
        "            1 & \\quad weighted\\_sum \\geq threshold\n",
    
    chadhat's avatar
    chadhat committed
        "        \\end{array}\n",
        "    \\right.\n",
        "$$\n",
    
        "\n",
        "You can see that this is also a linear classifier as we introduced in script 02."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 28,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
        "%matplotlib inline\n",
    
        "%config IPCompleter.greedy=True\n",
    
    chadhat's avatar
    chadhat committed
        "import matplotlib as mpl\n",
    
        "mpl.rcParams['lines.linewidth'] = 3\n",
        "#mpl.rcParams['font.size'] = 16"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 30,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "data": {
          "text/plain": [
           "1"
          ]
         },
    
         "execution_count": 30,
    
    chadhat's avatar
    chadhat committed
         "metadata": {},
         "output_type": "execute_result"
        }
       ],
       "source": [
        "import numpy as np\n",
    
        "import matplotlib.pyplot as plt\n",
        "\n",
        "\n",
    
    chadhat's avatar
    chadhat committed
        "def perceptron(X, w, threshold=1):\n",
    
        "    # This function computes sum(w_i*x_i) and\n",
    
    chadhat's avatar
    chadhat committed
        "    # applies a perceptron activation\n",
    
        "    linear_sum = np.dot(X, w)\n",
        "    output = 0\n",
    
    chadhat's avatar
    chadhat committed
        "    if linear_sum >= threshold:\n",
        "        output = 1\n",
        "    return output\n",
    
        "\n",
        "\n",
        "X = [1, 0]\n",
        "w = [1, 1]\n",
        "perceptron(X, w)"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "#### Boolean AND\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 0 |\n",
        "| 1 | 0 | 0 |\n",
        "| 0 | 1 | 0 |\n",
        "| 1 | 1 | 1 |"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 33,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "Perceptron output for x1, x2 =  [0, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [0, 1]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 1]  is  1\n"
    
    chadhat's avatar
    chadhat committed
         ]
        }
       ],
       "source": [
        "# Calculating Boolean AND using a perceptron\n",
    
        "threshold = 1.5\n",
    
        "w = [1, 1]\n",
        "X = [[0, 0], [1, 0], [0, 1], [1, 1]]\n",
    
    chadhat's avatar
    chadhat committed
        "for i in X:\n",
    
        "    print(\"Perceptron output for x1, x2 = \", i,\n",
        "          \" is \", perceptron(i, w, threshold))"
    
    chadhat's avatar
    chadhat committed
       ]
      },
    
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "In this simple case we can rewrite our equation to $x_2 = ...... $ which describes a line in 2D:"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 35,
       "metadata": {},
       "outputs": [],
       "source": [
        "def perceptron_DB(X, w):\n",
        "    # Plotting the decision boundary\n",
        "    for i in X:\n",
        "        plt.plot(i, \"o\", color=\"b\")\n",
        "    plt.xlim(-1, 2)\n",
        "    plt.ylim(-1, 2)\n",
        "    # The decision boundary is a line given by\n",
        "    # w_1*x_1+w_2*x_2-threshold=0\n",
        "    x1 = np.arange(-3, 4)\n",
        "    x2 = (threshold - x1*w[0])/w[1]\n",
        "    plt.plot(x1, x2, \"--\", color=\"black\")\n",
        "    plt.xlabel(\"x$_1$\", fontsize=16)\n",
        "    plt.ylabel(\"x$_2$\", fontsize=16)"
       ]
      },
      {
       "cell_type": "code",
       "execution_count": 36,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "data": {
    
          "image/png": "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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
           "<matplotlib.figure.Figure at 0x7f4e04b13ac8>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
    
        "perceptron_DB(X, w)"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**Exercise 1 : Compute a Boolean \"OR\" using a perceptron?**\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "Hint: copy the code from the \"AND\" example and edit the weights and/or threshold"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "#### Boolean OR\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 0 |\n",
        "| 1 | 0 | 1 |\n",
        "| 0 | 1 | 1 |\n",
        "| 1 | 1 | 1 |"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 21,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
        "# Calculating Boolean OR using a perceptron\n",
        "# Edit the code below"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 37,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "Perceptron output for x1, x2 =  [0, 0]  is  0\n",
          "Perceptron output for x1, x2 =  [1, 0]  is  1\n",
          "Perceptron output for x1, x2 =  [0, 1]  is  1\n",
          "Perceptron output for x1, x2 =  [1, 1]  is  1\n"
    
    chadhat's avatar
    chadhat committed
         ]
        },
        {
         "data": {
    
          "image/png": "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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
           "<matplotlib.figure.Figure at 0x7f4e04d79e10>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "# Solution\n",
        "# Calculating Boolean OR using a perceptron\n",
        "import matplotlib.pyplot as plt\n",
        "threshold=0.6\n",
        "w=[1,1]\n",
        "X=[[0,0],[1,0],[0,1],[1,1]]\n",
        "for i in X:\n",
    
        "    print(\"Perceptron output for x1, x2 = \" , i , \" is \" , perceptron(i,w,threshold))\n",
    
    chadhat's avatar
    chadhat committed
        "# Plotting the decision boundary\n",
    
        "perceptron_DB(X,w)"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**Exercise 2 : Create a NAND gate using a perceptron**\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "#### Boolean NAND\n",
        "\n",
        "| x$_1$ | x$_2$ | output |\n",
        "| --- | --- | --- |\n",
        "| 0 | 0 | 1 |\n",
        "| 1 | 0 | 1 |\n",
        "| 0 | 1 | 1 |\n",
        "| 1 | 1 | 0 |"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 38,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
    
        "# Calculating Boolean NAND using a perceptron"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "In fact, a single perceptron can compute \"AND\", \"OR\" and \"NOT\" boolean functions.\n",
    
    chadhat's avatar
    chadhat committed
        "However, it cannot compute some other boolean functions such as \"XOR\"\n",
        "\n",
    
        "**WHAT CAN WE DO?**\n",
        "\n",
        "\n",
        "Hint: Think about what is the significance of the NAND gate we created above?\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "We said a single perceptron can't compute these functions. We didn't say that about **multiple Perceptrons**."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "**XOR function using multiple perceptrons**\n",
        "\n",
        "<center>\n",
        "<figure>\n",
        "<img src=\"./images/neuralnets/perceptron_XOR.svg\" width=\"400\"/>\n",
        "<figcaption>Multiple perceptrons put together to output a XOR function.</figcaption>\n",
        "</figure>\n",
        "</center>"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### Google Playground\n",
        "\n",
        "https://playground.tensorflow.org/\n",
        "\n",
        "<img src=\"./images/neuralnets/google_playground.png\"/>"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "## Learning\n",
        "\n",
        "Now we know that we can compute complex functions if we stack together a number of perceptrons.\n",
        "\n",
        "However, we can DO NOT want to set the weights and thresholds by hand as we did in the examples above.\n",
        "\n",
        "We want some algorithm to do this for us!\n",
        "\n",
        "In order to achieve this we first need to choose a loss function for the problem at hand\n",
        "\n",
        "\n",
        "### Loss function\n",
        "As in the case of other machine learning algorithms we need to define a so-called \"Loss function\". In simple words this function measures how close are the predictions of our network to the supplied labels. Once we have this function we need an algorithm to update the weights of the network such that this loss decreases. As one can already imagine the choice of an appropriate loss function is very important to the success of the trained model. Fortunately, for classification and regression (which comprise of a large range of probelms) these loss functions are well known. Generally **crossentropy** and **mean squared error** loss functions are chosen for classification and regression problems, respectively.\n",
        "\n",
        "### Gradient based learning\n",
        "Once we have a loss function we want to solve an **optimization problem** which minimizes this loss by updating the weights of the network and this is how the learning actually happens.\n",
        "\n",
        "One of the most popular optimization method used in machine learning is **Gradient-descent**\n",
        "\n",
        "INSERT MORE EXPLAINATIONS HERE\n",
        "\n",
    
    chadhat's avatar
    chadhat committed
        "### Activation Functions\n",
        "\n",
    
        "In order to train the network we need to change Perceptron's **step** activation function as it does not allow training using the back-propagation algorithm among other drawbacks.\n",
        "\n",
        "Non-Linear functions such as:\n",
        "\n",
        "* ReLU (Rectified linear unit)\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\mathrm{max}(0,z)\n",
        "\\end{equation*}\n",
        "\n",
        "* Sigmoid\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\frac{1}{1+e^{-z}}\n",
        "\\end{equation*}\n",
        "\n",
        "* tanh\n",
        "\n",
        "\\begin{equation*}\n",
        "f(z) = \\frac{e^{z} - e^{-z}}{e^{z} + e^{-z}}\n",
        "\\end{equation*}\n",
        "\n",
        "\n",
        "are some of the most popular choices used as activation functions.\n",
        "\n",
        "Linear activations are **NOT** used because it can be mathematically shown that if linear activations are used then output is just a linear function of the input. So adding any number of hidden layers does not help to learn interesting functions.\n",
        "\n",
        "Non-linear activation functions allow the network to learn more complex representations."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
    chadhat's avatar
    chadhat committed
       "execution_count": 172,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
         "data": {
    
    chadhat's avatar
    chadhat committed
          "image/png": "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\n",
    
    chadhat's avatar
    chadhat committed
          "text/plain": [
    
    chadhat's avatar
    chadhat committed
           "<matplotlib.figure.Figure at 0x7ff6cef06fd0>"
    
    chadhat's avatar
    chadhat committed
          ]
         },
         "metadata": {
    
          "image/png": {
           "height": 250,
           "width": 597
          },
    
    chadhat's avatar
    chadhat committed
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
        "import matplotlib.pyplot as plt\n",
        "import numpy as np\n",
        "\n",
    
        "plt.figure(figsize=(10, 4))\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "pts=np.arange(-20,20, 0.1)\n",
        "\n",
    
        "plt.subplot(1, 3, 1)\n",
    
    chadhat's avatar
    chadhat committed
        "# Sigmoid\n",
    
        "plt.plot(pts, 1/(1+np.exp(-pts))) ;\n",
        "\n",
        "plt.subplot(1, 3, 2)\n",
    
    chadhat's avatar
    chadhat committed
        "# tanh\n",
    
        "plt.plot(pts, np.tanh(pts*np.pi)) ;\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "# Rectified linear unit (ReLu)\n",
    
        "plt.subplot(1, 3, 3)\n",
    
    chadhat's avatar
    chadhat committed
        "pts_relu=[max(0,i) for i in pts];\n",
    
        "plt.plot(pts, pts_relu) ;"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### Multi-layer preceptron neural network\n",
        "Universal function theorem\n",
    
        "epochs\n",
    
        "Suggestion Uwe:\n",
    
        "\n",
        "3. way around: look at nature how neuron works and introduce non linear activation functions.\n",
        "\n",
    
        "4. theoretical background: universal approximation theorem."
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
        "# Introduction to Keras"
       ]
      },
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "### What is Keras?\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
        "* It is a high level API to create and work with neural networks\n",
    
        "* Supports multiple backends such as TensorFlow from Google, Theano (Although Theano is dead now) and CNTK (Microsoft Cognitive Toolkit)\n",
        "* Very good for creating neural nets very quickly and hides away a lot of tedious work\n",
        "* Has been incorporated into official TensorFlow (which obviously only works with tensforflow) and as of TensorFlow 2.0 this will the main api to use TensorFlow (check reference)\n"
    
    chadhat's avatar
    chadhat committed
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 35,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [
        {
    
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "_________________________________________________________________\n",
          "Layer (type)                 Output Shape              Param #   \n",
          "=================================================================\n",
          "dense_9 (Dense)              (None, 4)                 36        \n",
          "_________________________________________________________________\n",
          "activation_7 (Activation)    (None, 4)                 0         \n",
          "_________________________________________________________________\n",
          "dense_10 (Dense)             (None, 4)                 20        \n",
          "_________________________________________________________________\n",
          "dense_11 (Dense)             (None, 1)                 5         \n",
          "_________________________________________________________________\n",
          "activation_8 (Activation)    (None, 1)                 0         \n",
          "=================================================================\n",
          "Total params: 61\n",
          "Trainable params: 61\n",
          "Non-trainable params: 0\n",
          "_________________________________________________________________\n"
    
    chadhat's avatar
    chadhat committed
         ]
        }
       ],
       "source": [
        "# Say hello to keras\n",
        "\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense, Activation\n",
        "\n",
        "# Creating a model\n",
        "model = Sequential()\n",
        "\n",
        "# Adding layers to this model\n",
        "# 1st Hidden layer\n",
    
        "# A Dense/fully-connected layer which takes as input a \n",
        "# feature array of shape (samples, num_features)\n",
        "# Here input_shape = (8,) means that the layer expects an input with num_features = 8 \n",
        "# and the sample size could be anything\n",
        "# Then we specify an activation function\n",
        "model.add(Dense(units=4, input_shape=(8,)))\n",
    
    chadhat's avatar
    chadhat committed
        "model.add(Activation(\"relu\"))\n",
        "\n",
    
        "# 2nd Hidden layer\n",
        "# This is also a fully-connected layer and we do not need to specify the\n",
        "# shape of the input anymore (We need to do that only for the first layer)\n",
    
        "# NOTE: Now\n",
        " we didn't add the activation seperately. Instead we just added it\n",
    
        "# while calling Dense(). This and the way used for the first layer are Equivalent!\n",
        "model.add(Dense(units=4, activation=\"relu\"))\n",
        "\n",
        "          \n",
    
    chadhat's avatar
    chadhat committed
        "# The output layer\n",
        "model.add(Dense(units=1))\n",
        "model.add(Activation(\"sigmoid\"))\n",
        "\n",
        "model.summary()"
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 5,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
       "outputs": [],
       "source": [
    
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.model_selection import train_test_split\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense\n",
        "import numpy as np"
    
       "cell_type": "code",
       "execution_count": 41,
    
    chadhat's avatar
    chadhat committed
       "metadata": {},
    
       "outputs": [
        {
         "data": {
          "image/png": "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\n",
          "text/plain": [
           "<matplotlib.figure.Figure at 0x7f4e04ab1320>"
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
    
    chadhat's avatar
    chadhat committed
       "source": [
    
        "# Creating a network to solve the XOR problem\n",
        "# Loading and plotting the data\n",
        "xor = pd.read_csv(\"xor.csv\")\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "# Using x and y coordinates as featues\n",
        "features = xor.iloc[:, :-1]\n",
        "# Convert boolean to integer values (True->1 and False->0)\n",
        "labels = xor.iloc[:, -1].astype(int)\n",
    
    chadhat's avatar
    chadhat committed
        "\n",
    
        "colors = [[\"steelblue\", \"chocolate\"][i] for i in xor[\"label\"]]\n",
        "plt.figure(figsize=(5, 5))\n",
        "plt.xlim([-2, 2])\n",
        "plt.ylim([-2, 2])\n",
        "plt.title(\"Blue points are False\")\n",
    
        "\n",
        "\n",
    
        "plt.scatter(features[\"x\"], features[\"y\"], color=colors, marker=\"o\");"
    
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 49,
    
       "metadata": {},
       "outputs": [],
       "source": [
    
        "# Building a Keras model\n",
    
        "def a_simple_NN():\n",
        "    \n",
        "    model = Sequential()\n",
    
        "    model.add(Dense(4, input_shape = (2,), activation = \"relu\"))\n",
        "\n",
        "    model.add(Dense(4, activation = \"relu\"))\n",
        "\n",
        "    model.add(Dense(1, activation = \"sigmoid\"))\n",
        "\n",
        "    model.compile(loss=\"binary_crossentropy\", optimizer=\"rmsprop\", metrics=[\"accuracy\"])\n",
        "    \n",
        "    return model"
    
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 58,
    
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "Train on 210 samples, validate on 90 samples\n",
          "Epoch 1/100\n",
          "210/210 [==============================] - 0s 2ms/step - loss: 1.0174 - acc: 0.3333 - val_loss: 0.9333 - val_acc: 0.3667\n",
          "Epoch 2/100\n",
          "210/210 [==============================] - 0s 134us/step - loss: 0.9745 - acc: 0.3429 - val_loss: 0.9086 - val_acc: 0.3667\n",
          "Epoch 3/100\n",
          "210/210 [==============================] - 0s 115us/step - loss: 0.9442 - acc: 0.3381 - val_loss: 0.8877 - val_acc: 0.3556\n",
          "Epoch 4/100\n",
          "210/210 [==============================] - 0s 145us/step - loss: 0.9182 - acc: 0.3429 - val_loss: 0.8708 - val_acc: 0.3667\n",
          "Epoch 5/100\n",
          "210/210 [==============================] - 0s 72us/step - loss: 0.8967 - acc: 0.3381 - val_loss: 0.8546 - val_acc: 0.3667\n",
          "Epoch 6/100\n",
          "210/210 [==============================] - 0s 104us/step - loss: 0.8763 - acc: 0.3476 - val_loss: 0.8392 - val_acc: 0.3667\n",
          "Epoch 7/100\n",
          "210/210 [==============================] - 0s 130us/step - loss: 0.8572 - acc: 0.3429 - val_loss: 0.8256 - val_acc: 0.3556\n",
          "Epoch 8/100\n",
          "210/210 [==============================] - 0s 113us/step - loss: 0.8399 - acc: 0.3286 - val_loss: 0.8133 - val_acc: 0.3556\n",
          "Epoch 9/100\n",
          "210/210 [==============================] - 0s 115us/step - loss: 0.8239 - acc: 0.3286 - val_loss: 0.8018 - val_acc: 0.3444\n",
          "Epoch 10/100\n",
          "210/210 [==============================] - 0s 107us/step - loss: 0.8096 - acc: 0.3286 - val_loss: 0.7911 - val_acc: 0.3222\n",
          "Epoch 11/100\n",
          "210/210 [==============================] - 0s 108us/step - loss: 0.7964 - acc: 0.3286 - val_loss: 0.7811 - val_acc: 0.3333\n",
          "Epoch 12/100\n",
          "210/210 [==============================] - 0s 110us/step - loss: 0.7841 - acc: 0.3190 - val_loss: 0.7717 - val_acc: 0.3444\n",
          "Epoch 13/100\n",
          "210/210 [==============================] - 0s 99us/step - loss: 0.7728 - acc: 0.3381 - val_loss: 0.7631 - val_acc: 0.3444\n",
          "Epoch 14/100\n",
          "210/210 [==============================] - 0s 105us/step - loss: 0.7624 - acc: 0.3429 - val_loss: 0.7549 - val_acc: 0.3556\n",
          "Epoch 15/100\n",
          "210/210 [==============================] - 0s 112us/step - loss: 0.7528 - acc: 0.3619 - val_loss: 0.7473 - val_acc: 0.3667\n",
          "Epoch 16/100\n",
          "210/210 [==============================] - 0s 93us/step - loss: 0.7437 - acc: 0.3952 - val_loss: 0.7400 - val_acc: 0.3778\n",
          "Epoch 17/100\n",
          "210/210 [==============================] - 0s 108us/step - loss: 0.7351 - acc: 0.4190 - val_loss: 0.7334 - val_acc: 0.3889\n",
          "Epoch 18/100\n",
          "210/210 [==============================] - 0s 104us/step - loss: 0.7270 - acc: 0.4000 - val_loss: 0.7271 - val_acc: 0.3889\n",
          "Epoch 19/100\n",
          "210/210 [==============================] - 0s 122us/step - loss: 0.7191 - acc: 0.4048 - val_loss: 0.7215 - val_acc: 0.3778\n",
          "Epoch 20/100\n",
          "210/210 [==============================] - 0s 103us/step - loss: 0.7120 - acc: 0.4286 - val_loss: 0.7167 - val_acc: 0.3333\n",
          "Epoch 21/100\n",
          "210/210 [==============================] - 0s 93us/step - loss: 0.7059 - acc: 0.4524 - val_loss: 0.7124 - val_acc: 0.3556\n",
          "Epoch 22/100\n",
          "210/210 [==============================] - 0s 84us/step - loss: 0.7002 - acc: 0.4667 - val_loss: 0.7083 - val_acc: 0.4000\n",
          "Epoch 23/100\n",
          "210/210 [==============================] - 0s 151us/step - loss: 0.6947 - acc: 0.5286 - val_loss: 0.7042 - val_acc: 0.4444\n",
          "Epoch 24/100\n",
          "210/210 [==============================] - 0s 132us/step - loss: 0.6894 - acc: 0.5476 - val_loss: 0.7002 - val_acc: 0.4444\n",
          "Epoch 25/100\n",
          "210/210 [==============================] - 0s 104us/step - loss: 0.6842 - acc: 0.5810 - val_loss: 0.6963 - val_acc: 0.5000\n",
          "Epoch 26/100\n",
          "210/210 [==============================] - 0s 86us/step - loss: 0.6792 - acc: 0.6095 - val_loss: 0.6930 - val_acc: 0.5111\n",
          "Epoch 27/100\n",
          "210/210 [==============================] - 0s 93us/step - loss: 0.6746 - acc: 0.6476 - val_loss: 0.6897 - val_acc: 0.5444\n",
          "Epoch 28/100\n",
          "210/210 [==============================] - 0s 78us/step - loss: 0.6702 - acc: 0.6952 - val_loss: 0.6865 - val_acc: 0.5667\n",
          "Epoch 29/100\n",
          "210/210 [==============================] - 0s 128us/step - loss: 0.6659 - acc: 0.7095 - val_loss: 0.6835 - val_acc: 0.6000\n",
          "Epoch 30/100\n",
          "210/210 [==============================] - 0s 100us/step - loss: 0.6617 - acc: 0.7190 - val_loss: 0.6808 - val_acc: 0.6222\n",
          "Epoch 31/100\n",
          "210/210 [==============================] - 0s 109us/step - loss: 0.6579 - acc: 0.7429 - val_loss: 0.6782 - val_acc: 0.6556\n",
          "Epoch 32/100\n",
          "210/210 [==============================] - 0s 128us/step - loss: 0.6542 - acc: 0.7619 - val_loss: 0.6757 - val_acc: 0.6778\n",
          "Epoch 33/100\n",
          "210/210 [==============================] - 0s 89us/step - loss: 0.6507 - acc: 0.7810 - val_loss: 0.6733 - val_acc: 0.6778\n",
          "Epoch 34/100\n",
          "210/210 [==============================] - 0s 128us/step - loss: 0.6473 - acc: 0.7905 - val_loss: 0.6711 - val_acc: 0.6778\n",
          "Epoch 35/100\n",
          "210/210 [==============================] - 0s 134us/step - loss: 0.6441 - acc: 0.7905 - val_loss: 0.6691 - val_acc: 0.6778\n",
          "Epoch 36/100\n",
          "210/210 [==============================] - 0s 150us/step - loss: 0.6412 - acc: 0.7905 - val_loss: 0.6671 - val_acc: 0.6778\n",
          "Epoch 37/100\n",
          "210/210 [==============================] - 0s 129us/step - loss: 0.6383 - acc: 0.7905 - val_loss: 0.6652 - val_acc: 0.6778\n",
          "Epoch 38/100\n",
          "210/210 [==============================] - 0s 98us/step - loss: 0.6355 - acc: 0.7905 - val_loss: 0.6634 - val_acc: 0.6778\n",
          "Epoch 39/100\n",
          "210/210 [==============================] - 0s 113us/step - loss: 0.6329 - acc: 0.7905 - val_loss: 0.6616 - val_acc: 0.6778\n",
          "Epoch 40/100\n",
          "210/210 [==============================] - 0s 155us/step - loss: 0.6304 - acc: 0.7905 - val_loss: 0.6601 - val_acc: 0.6778\n",
          "Epoch 41/100\n",
          "210/210 [==============================] - 0s 84us/step - loss: 0.6281 - acc: 0.7905 - val_loss: 0.6586 - val_acc: 0.6778\n",
          "Epoch 42/100\n",
          "210/210 [==============================] - 0s 117us/step - loss: 0.6259 - acc: 0.7905 - val_loss: 0.6571 - val_acc: 0.6778\n",
          "Epoch 43/100\n",
          "210/210 [==============================] - 0s 114us/step - loss: 0.6236 - acc: 0.7905 - val_loss: 0.6557 - val_acc: 0.6778\n",
          "Epoch 44/100\n",
          "210/210 [==============================] - 0s 93us/step - loss: 0.6215 - acc: 0.7905 - val_loss: 0.6544 - val_acc: 0.6778\n",
          "Epoch 45/100\n",
          "210/210 [==============================] - 0s 100us/step - loss: 0.6195 - acc: 0.7905 - val_loss: 0.6533 - val_acc: 0.6778\n",
          "Epoch 46/100\n",
          "210/210 [==============================] - 0s 144us/step - loss: 0.6176 - acc: 0.7905 - val_loss: 0.6522 - val_acc: 0.6778\n",
          "Epoch 47/100\n",
          "210/210 [==============================] - 0s 122us/step - loss: 0.6158 - acc: 0.7905 - val_loss: 0.6511 - val_acc: 0.6778\n",
          "Epoch 48/100\n",
          "210/210 [==============================] - 0s 142us/step - loss: 0.6140 - acc: 0.7905 - val_loss: 0.6502 - val_acc: 0.6778\n",
          "Epoch 49/100\n",
          "210/210 [==============================] - 0s 129us/step - loss: 0.6123 - acc: 0.7905 - val_loss: 0.6492 - val_acc: 0.6778\n",
          "Epoch 50/100\n",
          "210/210 [==============================] - 0s 105us/step - loss: 0.6106 - acc: 0.7905 - val_loss: 0.6483 - val_acc: 0.6778\n",
          "Epoch 51/100\n",
          "210/210 [==============================] - 0s 81us/step - loss: 0.6090 - acc: 0.7905 - val_loss: 0.6475 - val_acc: 0.6778\n",
          "Epoch 52/100\n",
          "210/210 [==============================] - 0s 154us/step - loss: 0.6075 - acc: 0.7905 - val_loss: 0.6467 - val_acc: 0.6778\n",
          "Epoch 53/100\n",
          "210/210 [==============================] - 0s 174us/step - loss: 0.6060 - acc: 0.7905 - val_loss: 0.6459 - val_acc: 0.6778\n",
          "Epoch 54/100\n",
          "210/210 [==============================] - 0s 84us/step - loss: 0.6044 - acc: 0.7905 - val_loss: 0.6451 - val_acc: 0.6778\n",
          "Epoch 55/100\n",
          "210/210 [==============================] - 0s 124us/step - loss: 0.6030 - acc: 0.7905 - val_loss: 0.6444 - val_acc: 0.6778\n",
          "Epoch 56/100\n",
          "210/210 [==============================] - 0s 131us/step - loss: 0.6015 - acc: 0.7905 - val_loss: 0.6437 - val_acc: 0.6778\n",
          "Epoch 57/100\n",
          "210/210 [==============================] - 0s 126us/step - loss: 0.6001 - acc: 0.7905 - val_loss: 0.6431 - val_acc: 0.6778\n",
          "Epoch 58/100\n",
          "210/210 [==============================] - 0s 123us/step - loss: 0.5988 - acc: 0.7905 - val_loss: 0.6425 - val_acc: 0.6778\n",
          "Epoch 59/100\n",
          "210/210 [==============================] - 0s 106us/step - loss: 0.5975 - acc: 0.7905 - val_loss: 0.6419 - val_acc: 0.6778\n",
          "Epoch 60/100\n",
          "210/210 [==============================] - 0s 123us/step - loss: 0.5962 - acc: 0.7905 - val_loss: 0.6414 - val_acc: 0.6778\n",
          "Epoch 61/100\n"
         ]
        },
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
          "210/210 [==============================] - 0s 113us/step - loss: 0.5950 - acc: 0.7905 - val_loss: 0.6409 - val_acc: 0.6778\n",
          "Epoch 62/100\n",
          "210/210 [==============================] - 0s 163us/step - loss: 0.5938 - acc: 0.7905 - val_loss: 0.6404 - val_acc: 0.6778\n",
          "Epoch 63/100\n",
          "210/210 [==============================] - 0s 132us/step - loss: 0.5926 - acc: 0.7905 - val_loss: 0.6399 - val_acc: 0.6778\n",
          "Epoch 64/100\n",
          "210/210 [==============================] - 0s 57us/step - loss: 0.5914 - acc: 0.7905 - val_loss: 0.6395 - val_acc: 0.6778\n",
          "Epoch 65/100\n",
          "210/210 [==============================] - 0s 90us/step - loss: 0.5902 - acc: 0.7905 - val_loss: 0.6390 - val_acc: 0.6778\n",
          "Epoch 66/100\n",
          "210/210 [==============================] - 0s 115us/step - loss: 0.5890 - acc: 0.7905 - val_loss: 0.6385 - val_acc: 0.6778\n",
          "Epoch 67/100\n",
          "210/210 [==============================] - 0s 99us/step - loss: 0.5877 - acc: 0.7905 - val_loss: 0.6380 - val_acc: 0.6778\n",
          "Epoch 68/100\n",
          "210/210 [==============================] - 0s 137us/step - loss: 0.5864 - acc: 0.7905 - val_loss: 0.6375 - val_acc: 0.6778\n",
          "Epoch 69/100\n",
          "210/210 [==============================] - 0s 85us/step - loss: 0.5852 - acc: 0.7905 - val_loss: 0.6368 - val_acc: 0.6778\n",
          "Epoch 70/100\n",
          "210/210 [==============================] - 0s 140us/step - loss: 0.5838 - acc: 0.7905 - val_loss: 0.6362 - val_acc: 0.6778\n",
          "Epoch 71/100\n",
          "210/210 [==============================] - 0s 79us/step - loss: 0.5824 - acc: 0.7905 - val_loss: 0.6356 - val_acc: 0.6778\n",
          "Epoch 72/100\n",
          "210/210 [==============================] - 0s 101us/step - loss: 0.5810 - acc: 0.7905 - val_loss: 0.6348 - val_acc: 0.6778\n",
          "Epoch 73/100\n",
          "210/210 [==============================] - 0s 136us/step - loss: 0.5793 - acc: 0.7905 - val_loss: 0.6339 - val_acc: 0.6778\n",
          "Epoch 74/100\n",
          "210/210 [==============================] - 0s 95us/step - loss: 0.5777 - acc: 0.7905 - val_loss: 0.6330 - val_acc: 0.6778\n",
          "Epoch 75/100\n",
          "210/210 [==============================] - 0s 113us/step - loss: 0.5759 - acc: 0.7905 - val_loss: 0.6320 - val_acc: 0.6778\n",
          "Epoch 76/100\n",
          "210/210 [==============================] - 0s 129us/step - loss: 0.5741 - acc: 0.7905 - val_loss: 0.6309 - val_acc: 0.6778\n",
          "Epoch 77/100\n",
          "210/210 [==============================] - 0s 113us/step - loss: 0.5721 - acc: 0.7905 - val_loss: 0.6297 - val_acc: 0.6778\n",
          "Epoch 78/100\n",
          "210/210 [==============================] - 0s 88us/step - loss: 0.5699 - acc: 0.7905 - val_loss: 0.6286 - val_acc: 0.6778\n",
          "Epoch 79/100\n",
          "210/210 [==============================] - 0s 109us/step - loss: 0.5677 - acc: 0.7905 - val_loss: 0.6274 - val_acc: 0.6778\n",
          "Epoch 80/100\n",
          "210/210 [==============================] - 0s 85us/step - loss: 0.5654 - acc: 0.7905 - val_loss: 0.6263 - val_acc: 0.6778\n",
          "Epoch 81/100\n",
          "210/210 [==============================] - 0s 109us/step - loss: 0.5632 - acc: 0.7905 - val_loss: 0.6251 - val_acc: 0.6778\n",
          "Epoch 82/100\n",
          "210/210 [==============================] - 0s 76us/step - loss: 0.5610 - acc: 0.7905 - val_loss: 0.6239 - val_acc: 0.6778\n",
          "Epoch 83/100\n",
          "210/210 [==============================] - 0s 88us/step - loss: 0.5586 - acc: 0.7905 - val_loss: 0.6227 - val_acc: 0.6778\n",
          "Epoch 84/100\n",
          "210/210 [==============================] - 0s 120us/step - loss: 0.5563 - acc: 0.7905 - val_loss: 0.6214 - val_acc: 0.6778\n",
          "Epoch 85/100\n",
          "210/210 [==============================] - 0s 94us/step - loss: 0.5538 - acc: 0.7905 - val_loss: 0.6202 - val_acc: 0.6778\n",
          "Epoch 86/100\n",
          "210/210 [==============================] - 0s 73us/step - loss: 0.5514 - acc: 0.7905 - val_loss: 0.6189 - val_acc: 0.6778\n",
          "Epoch 87/100\n",
          "210/210 [==============================] - 0s 80us/step - loss: 0.5489 - acc: 0.7905 - val_loss: 0.6177 - val_acc: 0.6778\n",
          "Epoch 88/100\n",
          "210/210 [==============================] - 0s 111us/step - loss: 0.5465 - acc: 0.7905 - val_loss: 0.6165 - val_acc: 0.6778\n",
          "Epoch 89/100\n",
          "210/210 [==============================] - 0s 126us/step - loss: 0.5440 - acc: 0.7905 - val_loss: 0.6153 - val_acc: 0.6778\n",
          "Epoch 90/100\n",
          "210/210 [==============================] - 0s 102us/step - loss: 0.5415 - acc: 0.7905 - val_loss: 0.6142 - val_acc: 0.6778\n",
          "Epoch 91/100\n",
          "210/210 [==============================] - 0s 119us/step - loss: 0.5391 - acc: 0.7905 - val_loss: 0.6131 - val_acc: 0.6778\n",
          "Epoch 92/100\n",
          "210/210 [==============================] - 0s 125us/step - loss: 0.5366 - acc: 0.7905 - val_loss: 0.6119 - val_acc: 0.6778\n",
          "Epoch 93/100\n",
          "210/210 [==============================] - 0s 97us/step - loss: 0.5341 - acc: 0.7905 - val_loss: 0.6109 - val_acc: 0.6778\n",
          "Epoch 94/100\n",
          "210/210 [==============================] - 0s 84us/step - loss: 0.5316 - acc: 0.7905 - val_loss: 0.6097 - val_acc: 0.6778\n",
          "Epoch 95/100\n",
          "210/210 [==============================] - 0s 96us/step - loss: 0.5291 - acc: 0.7905 - val_loss: 0.6088 - val_acc: 0.6778\n",
          "Epoch 96/100\n",
          "210/210 [==============================] - 0s 106us/step - loss: 0.5268 - acc: 0.7905 - val_loss: 0.6077 - val_acc: 0.6778\n",
          "Epoch 97/100\n",
          "210/210 [==============================] - 0s 109us/step - loss: 0.5243 - acc: 0.7905 - val_loss: 0.6067 - val_acc: 0.6778\n",
          "Epoch 98/100\n",
          "210/210 [==============================] - 0s 88us/step - loss: 0.5218 - acc: 0.7905 - val_loss: 0.6058 - val_acc: 0.6778\n",
          "Epoch 99/100\n",
          "210/210 [==============================] - 0s 98us/step - loss: 0.5196 - acc: 0.7905 - val_loss: 0.6050 - val_acc: 0.6778\n",
          "Epoch 100/100\n",
          "210/210 [==============================] - 0s 93us/step - loss: 0.5173 - acc: 0.7905 - val_loss: 0.6042 - val_acc: 0.6778\n"
    
        "model = a_simple_NN()\n",
        "\n",
        "# Here we split the dataset into training (80%) and validation sets (20%)\n",
        "X_train, X_test, y_train, y_test = train_test_split(\n",
        "    features, labels, test_size=0.3)\n",
        "\n",
        "num_epochs = 100\n",
        "\n",
        "# We can pass validation data while training\n",
        "\n",
        "model_run = model.fit(X_train, y_train, epochs=num_epochs,\n",
        "                      validation_data=(X_test, y_test))"
    
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 57,
    
       "metadata": {},
       "outputs": [
        {
         "data": {
    
          "image/png": "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\n",
    
          "text/plain": [
    
           "<matplotlib.figure.Figure at 0x7f4dff647390>"
    
          ]
         },
         "metadata": {
          "needs_background": "light"
         },
         "output_type": "display_data"
        }
       ],
       "source": [
    
        "history_model = model_run.history\n",
        "\n",
        "plt.plot(np.arange(1,num_epochs+1), history_model[\"acc\"], \"blue\") ;\n",
        "\n",
        "plt.plot(np.arange(1,num_epochs+1), history_model[\"val_acc\"], \"red\") ;"
    
       "cell_type": "markdown",
    
       "metadata": {},
       "source": [
    
        "We know from previous chapters that to more robustly calculate accuracy we can use **K-fold crossvalidation**.\n",
        "This is even more important when we have small datasets and cannot afford to reserve a validation set!\n",
        "This is also the case in the example above.\n",
        "\n",
        "One way to do the cross validation here would be to write our own function to do this. However, we know that **SciKit learn** provides such a function. So the question is:\n",
        "\n",
        "Can we somehow use the handy functions which **SciKit learn** provides to evaluate and tune our Keras models?\n",
        "\n",
        "The Answer is **YES !**\n",
        "\n",
        "We show how to do this in the following section."
    
    chadhat's avatar
    chadhat committed
       ]
      },
    
      {
       "cell_type": "markdown",
       "metadata": {},
       "source": [
    
        "## Using SciKit learn functions on Keras models\n",
        "\n",
        "Keras offers wrappers which allow its Sequential models to be used with SciKit learn. \n",
        "\n",
        "There 2 such wrappers: **KerasClassifier** and **KerasRegressor**.\n",
        "\n",
        "For more information:\n",
        "https://keras.io/scikit-learn-api/\n",
        "\n",
        "**Now lets see how this works!**"
    
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 148,
    
       "metadata": {},
       "outputs": [
        {
         "name": "stdout",
         "output_type": "stream",
         "text": [
    
          "[0.61428571 0.6        0.88571429 0.7        0.67142857]\n",
          "0.6942857147966113\n"
    
        "# We wrap the Keras model we created above with KerasClassifier\n",
        "from keras.wrappers.scikit_learn import KerasClassifier \n",
        "from sklearn.model_selection import cross_val_score\n",
        "model_scikit = KerasClassifier(build_fn=a_simple_NN, **{\"epochs\":num_epochs, \"verbose\":0})\n",
        "cross_validation = cross_val_score(model_scikit, X_train, y_train, cv=5, verbose=0)\n",
        "print(cross_validation)\n",
        "print(np.mean(cross_validation))"
    
       ]
      },
      {
       "cell_type": "code",
    
       "execution_count": 7,
    
       "metadata": {},
    
       "outputs": [
        {
         "name": "stderr",
         "output_type": "stream",
         "text": [
          "Using TensorFlow backend.\n"
         ]
        }
       ],
    
       "source": [
    
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "from sklearn.model_selection import train_test_split\n",
        "from keras.models import Sequential\n",
        "from keras.layers import Dense\n",
        "import numpy as np\n",
        "# We wrap the Keras model we created above with KerasClassifier\n",
        "from keras.wrappers.scikit_learn import KerasClassifier "
    
       "cell_type": "code",
       "execution_count": 14,
    
       "metadata": {},
    
       "outputs": [],