Skip to content
Snippets Groups Projects
02-DNN-Regression-Premium.ipynb 162 KiB
Newer Older
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "# <!-- TITLE --> [BHP2] - Regression with a Dense Network (DNN) - Advanced code\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "  <!-- DESC -->  More advanced example of DNN network code - BHPD dataset\n",
    "  <!-- AUTHOR : Jean-Luc Parouty (CNRS/SIMaP) -->\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "## Objectives :\n",
    " - Predicts **housing prices** from a set of house features. \n",
    " - Understanding the principle and the architecture of a regression with a dense neural network with backup and restore of the trained model. \n",
    "\n",
    "The **[Boston Housing Dataset](https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html)** consists of price of houses in various places in Boston.  \n",
    "Alongside with price, the dataset also provide these information :\n",
    "\n",
    " - CRIM: This is the per capita crime rate by town\n",
    " - ZN: This is the proportion of residential land zoned for lots larger than 25,000 sq.ft\n",
    " - INDUS: This is the proportion of non-retail business acres per town\n",
    " - CHAS: This is the Charles River dummy variable (this is equal to 1 if tract bounds river; 0 otherwise)\n",
    " - NOX: This is the nitric oxides concentration (parts per 10 million)\n",
    " - RM: This is the average number of rooms per dwelling\n",
    " - AGE: This is the proportion of owner-occupied units built prior to 1940\n",
    " - DIS: This is the weighted distances to five Boston employment centers\n",
    " - RAD: This is the index of accessibility to radial highways\n",
    " - TAX: This is the full-value property-tax rate per 10,000 dollars\n",
    " - PTRATIO: This is the pupil-teacher ratio by town\n",
    " - B: This is calculated as 1000(Bk — 0.63)^2, where Bk is the proportion of people of African American descent by town\n",
    " - LSTAT: This is the percentage lower status of the population\n",
    " - MEDV: This is the median value of owner-occupied homes in 1000 dollars\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "## What we're going to do :\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    " - (Retrieve data)\n",
    " - (Preparing the data)\n",
    " - (Build a model)\n",
    " - Train and save the model\n",
    " - Restore saved model\n",
    " - Evaluate the model\n",
    " - Make some predictions\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 1 - Import and init"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "\n",
       "div.warn {    \n",
       "    background-color: #fcf2f2;\n",
       "    border-color: #dFb5b4;\n",
       "    border-left: 5px solid #dfb5b4;\n",
       "    padding: 0.5em;\n",
       "    font-weight: bold;\n",
       "    font-size: 1.1em;;\n",
       "    }\n",
       "\n",
       "\n",
       "\n",
       "div.nota {    \n",
       "    background-color: #DAFFDE;\n",
       "    border-left: 5px solid #92CC99;\n",
       "    padding: 0.5em;\n",
       "    }\n",
       "\n",
       "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n",
       "    float:left;\n",
       "    margin-right:20px;\n",
       "    margin-top:-20px;\n",
       "    margin-bottom:20px;\n",
       "}\n",
       "div.todo{\n",
       "    font-weight: bold;\n",
       "    font-size: 1.1em;\n",
       "    margin-top:40px;\n",
       "}\n",
       "div.todo ul{\n",
       "    margin: 0.2em;\n",
       "}\n",
       "div.todo li{\n",
       "    margin-left:60px;\n",
       "    margin-top:0;\n",
       "    margin-bottom:0;\n",
       "}\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "\n",
       "div .comment{\n",
       "    font-size:0.8em;\n",
       "    color:#696969;\n",
       "}\n",
       "\n",
       "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "\n",
       "</style>\n",
       "\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/markdown": [
       "**FIDLE 2020 - Practical Work Module**"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Version              : 0.6.1 DEV\n",
      "Notebook id          : BHP2\n",
      "Run time             : Wednesday 16 December 2020, 21:13:48\n",
      "TensorFlow version   : 2.0.0\n",
      "Keras version        : 2.2.4-tf\n",
      "Datasets dir         : ~/datasets/fidle\n",
      "Update keras cache   : False\n",
      "Save figs            : True\n",
      "Path figs            : ./run/figs\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import os,sys\n",
    "\n",
    "from IPython.display import Markdown\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "from importlib import reload\n",
    "\n",
    "sys.path.append('..')\n",
    "import fidle.pwk as pwk\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "datasets_dir = pwk.init('BHP2')"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 2 - Retrieve data\n",
    "\n",
    "### 2.1 - Option 1  : From Keras\n",
    "Boston housing is a famous historic dataset, so we can get it directly from [Keras datasets](https://www.tensorflow.org/api_docs/python/tf/keras/datasets)  "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "source": [
    "# (x_train, y_train), (x_test, y_test) = keras.datasets.boston_housing.load_data(test_split=0.2, seed=113)"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 - Option 2 : From a csv file\n",
    "More fun !"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "</style><table id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018\" ><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >crim</th>        <th class=\"col_heading level0 col1\" >zn</th>        <th class=\"col_heading level0 col2\" >indus</th>        <th class=\"col_heading level0 col3\" >chas</th>        <th class=\"col_heading level0 col4\" >nox</th>        <th class=\"col_heading level0 col5\" >rm</th>        <th class=\"col_heading level0 col6\" >age</th>        <th class=\"col_heading level0 col7\" >dis</th>        <th class=\"col_heading level0 col8\" >rad</th>        <th class=\"col_heading level0 col9\" >tax</th>        <th class=\"col_heading level0 col10\" >ptratio</th>        <th class=\"col_heading level0 col11\" >b</th>        <th class=\"col_heading level0 col12\" >lstat</th>        <th class=\"col_heading level0 col13\" >medv</th>    </tr></thead><tbody>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                <tr>\n",
       "                        <th id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col0\" class=\"data row0 col0\" >0.01</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col1\" class=\"data row0 col1\" >18.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col2\" class=\"data row0 col2\" >2.31</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col3\" class=\"data row0 col3\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col4\" class=\"data row0 col4\" >0.54</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col5\" class=\"data row0 col5\" >6.58</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col6\" class=\"data row0 col6\" >65.20</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col7\" class=\"data row0 col7\" >4.09</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col8\" class=\"data row0 col8\" >1.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col9\" class=\"data row0 col9\" >296.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col10\" class=\"data row0 col10\" >15.30</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col11\" class=\"data row0 col11\" >396.90</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col12\" class=\"data row0 col12\" >4.98</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row0_col13\" class=\"data row0 col13\" >24.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col0\" class=\"data row1 col0\" >0.03</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col1\" class=\"data row1 col1\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col2\" class=\"data row1 col2\" >7.07</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col3\" class=\"data row1 col3\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col4\" class=\"data row1 col4\" >0.47</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col5\" class=\"data row1 col5\" >6.42</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col6\" class=\"data row1 col6\" >78.90</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col7\" class=\"data row1 col7\" >4.97</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col8\" class=\"data row1 col8\" >2.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col9\" class=\"data row1 col9\" >242.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col10\" class=\"data row1 col10\" >17.80</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col11\" class=\"data row1 col11\" >396.90</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col12\" class=\"data row1 col12\" >9.14</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row1_col13\" class=\"data row1 col13\" >21.60</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col0\" class=\"data row2 col0\" >0.03</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col1\" class=\"data row2 col1\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col2\" class=\"data row2 col2\" >7.07</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col3\" class=\"data row2 col3\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col4\" class=\"data row2 col4\" >0.47</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col5\" class=\"data row2 col5\" >7.18</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col6\" class=\"data row2 col6\" >61.10</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col7\" class=\"data row2 col7\" >4.97</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col8\" class=\"data row2 col8\" >2.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col9\" class=\"data row2 col9\" >242.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col10\" class=\"data row2 col10\" >17.80</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col11\" class=\"data row2 col11\" >392.83</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col12\" class=\"data row2 col12\" >4.03</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row2_col13\" class=\"data row2 col13\" >34.70</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col0\" class=\"data row3 col0\" >0.03</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col1\" class=\"data row3 col1\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col2\" class=\"data row3 col2\" >2.18</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col3\" class=\"data row3 col3\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col4\" class=\"data row3 col4\" >0.46</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col5\" class=\"data row3 col5\" >7.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col6\" class=\"data row3 col6\" >45.80</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col7\" class=\"data row3 col7\" >6.06</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col8\" class=\"data row3 col8\" >3.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col9\" class=\"data row3 col9\" >222.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col10\" class=\"data row3 col10\" >18.70</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col11\" class=\"data row3 col11\" >394.63</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col12\" class=\"data row3 col12\" >2.94</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row3_col13\" class=\"data row3 col13\" >33.40</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col0\" class=\"data row4 col0\" >0.07</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col1\" class=\"data row4 col1\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col2\" class=\"data row4 col2\" >2.18</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col3\" class=\"data row4 col3\" >0.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col4\" class=\"data row4 col4\" >0.46</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col5\" class=\"data row4 col5\" >7.15</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col6\" class=\"data row4 col6\" >54.20</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col7\" class=\"data row4 col7\" >6.06</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col8\" class=\"data row4 col8\" >3.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col9\" class=\"data row4 col9\" >222.00</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col10\" class=\"data row4 col10\" >18.70</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col11\" class=\"data row4 col11\" >396.90</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col12\" class=\"data row4 col12\" >5.33</td>\n",
       "                        <td id=\"T_3553ad76_3fdb_11eb_ab9b_cb8a5f6c0018row4_col13\" class=\"data row4 col13\" >36.20</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b888990>"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing Data :  0   Shape is :  (506, 14)\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "data = pd.read_csv(f'{datasets_dir}/BHPD/origine/BostonHousing.csv', header=0)\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "display(data.head(5).style.format(\"{0:.2f}\"))\n",
    "print('Missing Data : ',data.isna().sum().sum(), '  Shape is : ', data.shape)"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 3 - Preparing the data\n",
    "### 3.1 - Split data\n",
    "We will use 80% of the data for training and 20% for validation.  \n",
    "x will be input data and y the expected output"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Original data shape was :  (506, 14)\n",
      "x_train :  (354, 13) y_train :  (354,)\n",
      "x_test  :  (152, 13) y_test  :  (152,)\n"
     ]
    }
   ],
   "source": [
    "# ---- Split => train, test\n",
    "#\n",
    "data_train = data.sample(frac=0.7, axis=0)\n",
    "data_test  = data.drop(data_train.index)\n",
    "\n",
    "# ---- Split => x,y (medv is price)\n",
    "#\n",
    "x_train = data_train.drop('medv',  axis=1)\n",
    "y_train = data_train['medv']\n",
    "x_test  = data_test.drop('medv',   axis=1)\n",
    "y_test  = data_test['medv']\n",
    "\n",
    "print('Original data shape was : ',data.shape)\n",
    "print('x_train : ',x_train.shape, 'y_train : ',y_train.shape)\n",
    "print('x_test  : ',x_test.shape,  'y_test  : ',y_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 - Data normalization\n",
    "**Note :** \n",
    " - All input data must be normalized, train and test.  \n",
    " - To do this we will subtract the mean and divide by the standard deviation.  \n",
    " - But test data should not be used in any way, even for normalization.  \n",
    " - The mean and the standard deviation will therefore only be calculated with the train data."
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "</style><table id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018\" ><caption>Before normalization :</caption><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >crim</th>        <th class=\"col_heading level0 col1\" >zn</th>        <th class=\"col_heading level0 col2\" >indus</th>        <th class=\"col_heading level0 col3\" >chas</th>        <th class=\"col_heading level0 col4\" >nox</th>        <th class=\"col_heading level0 col5\" >rm</th>        <th class=\"col_heading level0 col6\" >age</th>        <th class=\"col_heading level0 col7\" >dis</th>        <th class=\"col_heading level0 col8\" >rad</th>        <th class=\"col_heading level0 col9\" >tax</th>        <th class=\"col_heading level0 col10\" >ptratio</th>        <th class=\"col_heading level0 col11\" >b</th>        <th class=\"col_heading level0 col12\" >lstat</th>    </tr></thead><tbody>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col0\" class=\"data row0 col0\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col1\" class=\"data row0 col1\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col2\" class=\"data row0 col2\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col3\" class=\"data row0 col3\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col4\" class=\"data row0 col4\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col5\" class=\"data row0 col5\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col6\" class=\"data row0 col6\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col7\" class=\"data row0 col7\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col8\" class=\"data row0 col8\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col9\" class=\"data row0 col9\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col10\" class=\"data row0 col10\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col11\" class=\"data row0 col11\" >354.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row0_col12\" class=\"data row0 col12\" >354.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col0\" class=\"data row1 col0\" >3.82</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col1\" class=\"data row1 col1\" >11.53</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col2\" class=\"data row1 col2\" >11.32</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col3\" class=\"data row1 col3\" >0.07</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col4\" class=\"data row1 col4\" >0.55</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col5\" class=\"data row1 col5\" >6.25</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col6\" class=\"data row1 col6\" >67.99</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col7\" class=\"data row1 col7\" >3.80</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col8\" class=\"data row1 col8\" >9.33</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col9\" class=\"data row1 col9\" >403.71</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col10\" class=\"data row1 col10\" >18.41</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col11\" class=\"data row1 col11\" >355.95</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row1_col12\" class=\"data row1 col12\" >12.81</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col0\" class=\"data row2 col0\" >9.14</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col1\" class=\"data row2 col1\" >23.50</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col2\" class=\"data row2 col2\" >6.89</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col3\" class=\"data row2 col3\" >0.26</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col4\" class=\"data row2 col4\" >0.12</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col5\" class=\"data row2 col5\" >0.67</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col6\" class=\"data row2 col6\" >29.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col7\" class=\"data row2 col7\" >2.06</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col8\" class=\"data row2 col8\" >8.62</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col9\" class=\"data row2 col9\" >168.39</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col10\" class=\"data row2 col10\" >2.22</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col11\" class=\"data row2 col11\" >92.01</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row2_col12\" class=\"data row2 col12\" >7.24</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col0\" class=\"data row3 col0\" >0.01</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col1\" class=\"data row3 col1\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col2\" class=\"data row3 col2\" >0.46</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col3\" class=\"data row3 col3\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col4\" class=\"data row3 col4\" >0.39</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col5\" class=\"data row3 col5\" >3.86</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col6\" class=\"data row3 col6\" >2.90</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col7\" class=\"data row3 col7\" >1.13</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col8\" class=\"data row3 col8\" >1.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col9\" class=\"data row3 col9\" >188.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col10\" class=\"data row3 col10\" >12.60</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col11\" class=\"data row3 col11\" >0.32</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row3_col12\" class=\"data row3 col12\" >1.73</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col0\" class=\"data row4 col0\" >0.08</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col1\" class=\"data row4 col1\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col2\" class=\"data row4 col2\" >5.40</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col3\" class=\"data row4 col3\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col4\" class=\"data row4 col4\" >0.45</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col5\" class=\"data row4 col5\" >5.88</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col6\" class=\"data row4 col6\" >42.15</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col7\" class=\"data row4 col7\" >2.11</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col8\" class=\"data row4 col8\" >4.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col9\" class=\"data row4 col9\" >277.50</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col10\" class=\"data row4 col10\" >16.90</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col11\" class=\"data row4 col11\" >374.69</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row4_col12\" class=\"data row4 col12\" >7.18</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col0\" class=\"data row5 col0\" >0.23</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col1\" class=\"data row5 col1\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col2\" class=\"data row5 col2\" >9.90</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col3\" class=\"data row5 col3\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col4\" class=\"data row5 col4\" >0.54</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col5\" class=\"data row5 col5\" >6.17</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col6\" class=\"data row5 col6\" >76.85</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col7\" class=\"data row5 col7\" >3.24</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col8\" class=\"data row5 col8\" >5.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col9\" class=\"data row5 col9\" >329.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col10\" class=\"data row5 col10\" >19.05</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col11\" class=\"data row5 col11\" >391.60</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row5_col12\" class=\"data row5 col12\" >11.66</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col0\" class=\"data row6 col0\" >3.28</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col1\" class=\"data row6 col1\" >12.50</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col2\" class=\"data row6 col2\" >18.10</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col3\" class=\"data row6 col3\" >0.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col4\" class=\"data row6 col4\" >0.62</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col5\" class=\"data row6 col5\" >6.56</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col6\" class=\"data row6 col6\" >94.47</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col7\" class=\"data row6 col7\" >5.23</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col8\" class=\"data row6 col8\" >20.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col9\" class=\"data row6 col9\" >666.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col10\" class=\"data row6 col10\" >20.20</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col11\" class=\"data row6 col11\" >396.27</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row6_col12\" class=\"data row6 col12\" >16.96</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018level0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col0\" class=\"data row7 col0\" >88.98</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col1\" class=\"data row7 col1\" >100.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col2\" class=\"data row7 col2\" >27.74</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col3\" class=\"data row7 col3\" >1.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col4\" class=\"data row7 col4\" >0.87</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col5\" class=\"data row7 col5\" >8.30</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col6\" class=\"data row7 col6\" >100.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col7\" class=\"data row7 col7\" >10.59</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col8\" class=\"data row7 col8\" >24.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col9\" class=\"data row7 col9\" >711.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col10\" class=\"data row7 col10\" >22.00</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col11\" class=\"data row7 col11\" >396.90</td>\n",
       "                        <td id=\"T_355b97de_3fdb_11eb_ab9b_cb8a5f6c0018row7_col12\" class=\"data row7 col12\" >37.97</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b904290>"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
       "</style><table id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018\" ><caption>After normalization :</caption><thead>    <tr>        <th class=\"blank level0\" ></th>        <th class=\"col_heading level0 col0\" >crim</th>        <th class=\"col_heading level0 col1\" >zn</th>        <th class=\"col_heading level0 col2\" >indus</th>        <th class=\"col_heading level0 col3\" >chas</th>        <th class=\"col_heading level0 col4\" >nox</th>        <th class=\"col_heading level0 col5\" >rm</th>        <th class=\"col_heading level0 col6\" >age</th>        <th class=\"col_heading level0 col7\" >dis</th>        <th class=\"col_heading level0 col8\" >rad</th>        <th class=\"col_heading level0 col9\" >tax</th>        <th class=\"col_heading level0 col10\" >ptratio</th>        <th class=\"col_heading level0 col11\" >b</th>        <th class=\"col_heading level0 col12\" >lstat</th>    </tr></thead><tbody>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col0\" class=\"data row0 col0\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col1\" class=\"data row0 col1\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col2\" class=\"data row0 col2\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col3\" class=\"data row0 col3\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col4\" class=\"data row0 col4\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col5\" class=\"data row0 col5\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col6\" class=\"data row0 col6\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col7\" class=\"data row0 col7\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col8\" class=\"data row0 col8\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col9\" class=\"data row0 col9\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col10\" class=\"data row0 col10\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col11\" class=\"data row0 col11\" >354.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row0_col12\" class=\"data row0 col12\" >354.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col0\" class=\"data row1 col0\" >-0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col1\" class=\"data row1 col1\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col2\" class=\"data row1 col2\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col3\" class=\"data row1 col3\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col4\" class=\"data row1 col4\" >-0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col5\" class=\"data row1 col5\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col6\" class=\"data row1 col6\" >-0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col7\" class=\"data row1 col7\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col8\" class=\"data row1 col8\" >-0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col9\" class=\"data row1 col9\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col10\" class=\"data row1 col10\" >0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col11\" class=\"data row1 col11\" >-0.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row1_col12\" class=\"data row1 col12\" >-0.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col0\" class=\"data row2 col0\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col1\" class=\"data row2 col1\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col2\" class=\"data row2 col2\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col3\" class=\"data row2 col3\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col4\" class=\"data row2 col4\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col5\" class=\"data row2 col5\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col6\" class=\"data row2 col6\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col7\" class=\"data row2 col7\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col8\" class=\"data row2 col8\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col9\" class=\"data row2 col9\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col10\" class=\"data row2 col10\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col11\" class=\"data row2 col11\" >1.00</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row2_col12\" class=\"data row2 col12\" >1.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col0\" class=\"data row3 col0\" >-0.42</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col1\" class=\"data row3 col1\" >-0.49</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col2\" class=\"data row3 col2\" >-1.58</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col3\" class=\"data row3 col3\" >-0.28</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col4\" class=\"data row3 col4\" >-1.47</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col5\" class=\"data row3 col5\" >-3.54</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col6\" class=\"data row3 col6\" >-2.24</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col7\" class=\"data row3 col7\" >-1.30</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col8\" class=\"data row3 col8\" >-0.97</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col9\" class=\"data row3 col9\" >-1.28</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col10\" class=\"data row3 col10\" >-2.62</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col11\" class=\"data row3 col11\" >-3.87</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row3_col12\" class=\"data row3 col12\" >-1.53</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col0\" class=\"data row4 col0\" >-0.41</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col1\" class=\"data row4 col1\" >-0.49</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col2\" class=\"data row4 col2\" >-0.86</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col3\" class=\"data row4 col3\" >-0.28</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col4\" class=\"data row4 col4\" >-0.92</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col5\" class=\"data row4 col5\" >-0.55</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col6\" class=\"data row4 col6\" >-0.89</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col7\" class=\"data row4 col7\" >-0.82</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col8\" class=\"data row4 col8\" >-0.62</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col9\" class=\"data row4 col9\" >-0.75</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col10\" class=\"data row4 col10\" >-0.68</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col11\" class=\"data row4 col11\" >0.20</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row4_col12\" class=\"data row4 col12\" >-0.78</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col0\" class=\"data row5 col0\" >-0.39</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col1\" class=\"data row5 col1\" >-0.49</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col2\" class=\"data row5 col2\" >-0.21</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col3\" class=\"data row5 col3\" >-0.28</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col4\" class=\"data row5 col4\" >-0.14</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col5\" class=\"data row5 col5\" >-0.12</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col6\" class=\"data row5 col6\" >0.31</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col7\" class=\"data row5 col7\" >-0.27</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col8\" class=\"data row5 col8\" >-0.50</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col9\" class=\"data row5 col9\" >-0.44</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col10\" class=\"data row5 col10\" >0.29</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col11\" class=\"data row5 col11\" >0.39</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row5_col12\" class=\"data row5 col12\" >-0.16</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col0\" class=\"data row6 col0\" >-0.06</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col1\" class=\"data row6 col1\" >0.04</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col2\" class=\"data row6 col2\" >0.98</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col3\" class=\"data row6 col3\" >-0.28</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col4\" class=\"data row6 col4\" >0.60</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col5\" class=\"data row6 col5\" >0.47</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col6\" class=\"data row6 col6\" >0.91</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col7\" class=\"data row6 col7\" >0.69</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col8\" class=\"data row6 col8\" >1.24</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col9\" class=\"data row6 col9\" >1.56</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col10\" class=\"data row6 col10\" >0.81</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col11\" class=\"data row6 col11\" >0.44</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row6_col12\" class=\"data row6 col12\" >0.57</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
       "                        <th id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018level0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col0\" class=\"data row7 col0\" >9.32</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col1\" class=\"data row7 col1\" >3.76</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col2\" class=\"data row7 col2\" >2.38</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col3\" class=\"data row7 col3\" >3.55</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col4\" class=\"data row7 col4\" >2.74</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col5\" class=\"data row7 col5\" >3.04</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col6\" class=\"data row7 col6\" >1.10</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col7\" class=\"data row7 col7\" >3.29</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col8\" class=\"data row7 col8\" >1.70</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col9\" class=\"data row7 col9\" >1.82</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col10\" class=\"data row7 col10\" >1.62</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col11\" class=\"data row7 col11\" >0.45</td>\n",
       "                        <td id=\"T_3564e172_3fdb_11eb_ab9b_cb8a5f6c0018row7_col12\" class=\"data row7 col12\" >3.47</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b6de2d0>"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(x_train.describe().style.format(\"{0:.2f}\").set_caption(\"Before normalization :\"))\n",
    "\n",
    "mean = x_train.mean()\n",
    "std  = x_train.std()\n",
    "x_train = (x_train - mean) / std\n",
    "x_test  = (x_test  - mean) / std\n",
    "\n",
    "display(x_train.describe().style.format(\"{0:.2f}\").set_caption(\"After normalization :\"))\n",
    "\n",
    "x_train, y_train = np.array(x_train), np.array(y_train)\n",
    "x_test,  y_test  = np.array(x_test),  np.array(y_test)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 4 - Build a model\n",
    "More informations about : \n",
    " - [Optimizer](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers)\n",
    " - [Activation](https://www.tensorflow.org/api_docs/python/tf/keras/activations)\n",
    " - [Loss](https://www.tensorflow.org/api_docs/python/tf/keras/losses)\n",
    " - [Metrics](https://www.tensorflow.org/api_docs/python/tf/keras/metrics)"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [],
   "source": [
    "  def get_model_v1(shape):\n",
    "    \n",
    "    model = keras.models.Sequential()\n",
    "    model.add(keras.layers.Input(shape, name=\"InputLayer\"))\n",
    "    model.add(keras.layers.Dense(64, activation='relu', name='Dense_n1'))\n",
    "    model.add(keras.layers.Dense(64, activation='relu', name='Dense_n2'))\n",
    "    model.add(keras.layers.Dense(1, name='Output'))\n",
    "    \n",
    "    model.compile(optimizer = 'rmsprop',\n",
    "                  loss      = 'mse',\n",
    "                  metrics   = ['mae', 'mse'] )\n",
    "    return model"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5 - Train the model\n",
    "### 5.1 - Get it"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"sequential\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "Dense_n1 (Dense)             (None, 64)                896       \n",
      "_________________________________________________________________\n",
      "Dense_n2 (Dense)             (None, 64)                4160      \n",
      "_________________________________________________________________\n",
      "Output (Dense)               (None, 1)                 65        \n",
      "=================================================================\n",
      "Total params: 5,121\n",
      "Trainable params: 5,121\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
    "model=get_model_v1( (13,) )\n",
    "\n",
    "model.summary()\n",
    "# img=keras.utils.plot_model( model, to_file='./run/model.png', show_shapes=True, show_layer_names=True, dpi=96)\n",
    "# display(img)"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2 - Add callback"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [],
   "source": [
    "os.makedirs('./run/models',   mode=0o750, exist_ok=True)\n",
    "save_dir = \"./run/models/best_model.h5\"\n",
    "\n",
    "savemodel_callback = tf.keras.callbacks.ModelCheckpoint(filepath=save_dir, verbose=0, save_best_only=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.3 - Train it"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 354 samples, validate on 152 samples\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 1/100\n",
      "354/354 [==============================] - 1s 2ms/sample - loss: 483.3541 - mae: 19.9419 - mse: 483.3542 - val_loss: 402.4295 - val_mae: 17.7721 - val_mse: 402.4295\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 2/100\n",
      "354/354 [==============================] - 0s 252us/sample - loss: 265.9092 - mae: 13.9827 - mse: 265.9091 - val_loss: 170.4736 - val_mae: 10.3814 - val_mse: 170.4736\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 3/100\n",
      "354/354 [==============================] - 0s 264us/sample - loss: 103.1428 - mae: 7.9022 - mse: 103.1428 - val_loss: 76.5217 - val_mae: 6.4929 - val_mse: 76.5217\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 4/100\n",
      "354/354 [==============================] - 0s 236us/sample - loss: 53.7278 - mae: 5.3582 - mse: 53.7278 - val_loss: 42.3464 - val_mae: 4.8395 - val_mse: 42.3464\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 5/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 34.1679 - mae: 4.1669 - mse: 34.1679 - val_loss: 28.7698 - val_mae: 3.9412 - val_mse: 28.7698\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 6/100\n",
      "354/354 [==============================] - 0s 238us/sample - loss: 25.6470 - mae: 3.4843 - mse: 25.6470 - val_loss: 23.4439 - val_mae: 3.5135 - val_mse: 23.4439\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 7/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 21.8655 - mae: 3.2492 - mse: 21.8655 - val_loss: 21.6451 - val_mae: 3.3260 - val_mse: 21.6451\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 8/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 19.6529 - mae: 2.9502 - mse: 19.6529 - val_loss: 21.1501 - val_mae: 3.3495 - val_mse: 21.1501\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 9/100\n",
      "354/354 [==============================] - 0s 231us/sample - loss: 17.8505 - mae: 2.8674 - mse: 17.8505 - val_loss: 20.3661 - val_mae: 3.2418 - val_mse: 20.3661\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 10/100\n",
      "354/354 [==============================] - 0s 241us/sample - loss: 16.6143 - mae: 2.7924 - mse: 16.6143 - val_loss: 18.6808 - val_mae: 2.9841 - val_mse: 18.6808\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 11/100\n",
      "354/354 [==============================] - 0s 224us/sample - loss: 15.2757 - mae: 2.6240 - mse: 15.2757 - val_loss: 19.3353 - val_mae: 3.1216 - val_mse: 19.3353\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 12/100\n",
      "354/354 [==============================] - 0s 240us/sample - loss: 14.6014 - mae: 2.5722 - mse: 14.6014 - val_loss: 18.6065 - val_mae: 3.0238 - val_mse: 18.6065\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 13/100\n",
      "354/354 [==============================] - 0s 253us/sample - loss: 13.9226 - mae: 2.5732 - mse: 13.9226 - val_loss: 17.2032 - val_mae: 2.8274 - val_mse: 17.2032\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 14/100\n",
      "354/354 [==============================] - 0s 245us/sample - loss: 13.1008 - mae: 2.4556 - mse: 13.1008 - val_loss: 17.0273 - val_mae: 2.8188 - val_mse: 17.0273\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 15/100\n",
      "354/354 [==============================] - 0s 241us/sample - loss: 12.5638 - mae: 2.3986 - mse: 12.5638 - val_loss: 18.1385 - val_mae: 2.9360 - val_mse: 18.1385\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 16/100\n",
      "354/354 [==============================] - 0s 227us/sample - loss: 12.0747 - mae: 2.3770 - mse: 12.0747 - val_loss: 19.0295 - val_mae: 3.1033 - val_mse: 19.0295\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 17/100\n",
      "354/354 [==============================] - 0s 232us/sample - loss: 11.7585 - mae: 2.3485 - mse: 11.7585 - val_loss: 16.8025 - val_mae: 2.7537 - val_mse: 16.8025\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 18/100\n",
      "354/354 [==============================] - 0s 238us/sample - loss: 11.1622 - mae: 2.3130 - mse: 11.1622 - val_loss: 16.1754 - val_mae: 2.6902 - val_mse: 16.1754\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 19/100\n",
      "354/354 [==============================] - 0s 238us/sample - loss: 11.0410 - mae: 2.2970 - mse: 11.0410 - val_loss: 16.0992 - val_mae: 2.6674 - val_mse: 16.0992\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 20/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 10.7863 - mae: 2.2871 - mse: 10.7863 - val_loss: 16.7388 - val_mae: 2.8191 - val_mse: 16.7388\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 21/100\n",
      "354/354 [==============================] - 0s 212us/sample - loss: 10.7021 - mae: 2.2414 - mse: 10.7021 - val_loss: 16.6998 - val_mae: 2.7544 - val_mse: 16.6998\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 22/100\n",
      "354/354 [==============================] - 0s 254us/sample - loss: 10.2228 - mae: 2.2079 - mse: 10.2228 - val_loss: 16.0634 - val_mae: 2.6520 - val_mse: 16.0634\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 23/100\n",
      "354/354 [==============================] - 0s 248us/sample - loss: 10.0609 - mae: 2.1896 - mse: 10.0609 - val_loss: 15.8375 - val_mae: 2.6662 - val_mse: 15.8375\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 24/100\n",
      "354/354 [==============================] - 0s 223us/sample - loss: 9.7379 - mae: 2.1534 - mse: 9.7379 - val_loss: 17.0298 - val_mae: 2.7464 - val_mse: 17.0298\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 25/100\n",
      "354/354 [==============================] - 0s 229us/sample - loss: 9.4700 - mae: 2.1768 - mse: 9.4700 - val_loss: 16.0757 - val_mae: 2.6375 - val_mse: 16.0757\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 26/100\n",
      "354/354 [==============================] - 0s 225us/sample - loss: 9.3435 - mae: 2.1333 - mse: 9.3435 - val_loss: 18.3934 - val_mae: 2.8681 - val_mse: 18.3934\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 27/100\n",
      "354/354 [==============================] - 0s 246us/sample - loss: 9.0069 - mae: 2.0935 - mse: 9.0069 - val_loss: 15.4444 - val_mae: 2.6123 - val_mse: 15.4444\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 28/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 8.9357 - mae: 2.0635 - mse: 8.9357 - val_loss: 15.7287 - val_mae: 2.5909 - val_mse: 15.7287\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 29/100\n",
      "354/354 [==============================] - 0s 218us/sample - loss: 8.8445 - mae: 2.0849 - mse: 8.8445 - val_loss: 16.8335 - val_mae: 2.7164 - val_mse: 16.8335\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 30/100\n",
      "354/354 [==============================] - 0s 243us/sample - loss: 8.7798 - mae: 2.0682 - mse: 8.7798 - val_loss: 14.9682 - val_mae: 2.5153 - val_mse: 14.9682\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 31/100\n",
      "354/354 [==============================] - 0s 216us/sample - loss: 8.6369 - mae: 2.0122 - mse: 8.6369 - val_loss: 17.8983 - val_mae: 2.9533 - val_mse: 17.8983\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 32/100\n",
      "354/354 [==============================] - 0s 211us/sample - loss: 8.3828 - mae: 2.0524 - mse: 8.3828 - val_loss: 16.0668 - val_mae: 2.7383 - val_mse: 16.0668\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 33/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 8.5447 - mae: 2.0082 - mse: 8.5447 - val_loss: 15.1219 - val_mae: 2.5224 - val_mse: 15.1219\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 34/100\n",
      "354/354 [==============================] - 0s 226us/sample - loss: 8.1540 - mae: 1.9673 - mse: 8.1540 - val_loss: 16.8374 - val_mae: 2.7148 - val_mse: 16.8374\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 35/100\n",
      "354/354 [==============================] - 0s 248us/sample - loss: 8.0155 - mae: 1.9871 - mse: 8.0155 - val_loss: 14.6871 - val_mae: 2.5105 - val_mse: 14.6871\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 36/100\n",
      "354/354 [==============================] - 0s 269us/sample - loss: 8.1472 - mae: 1.9709 - mse: 8.1472 - val_loss: 14.6178 - val_mae: 2.4975 - val_mse: 14.6178\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 37/100\n",
      "354/354 [==============================] - 0s 219us/sample - loss: 7.8367 - mae: 1.9733 - mse: 7.8367 - val_loss: 15.5460 - val_mae: 2.5704 - val_mse: 15.5460\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 38/100\n",
      "354/354 [==============================] - 0s 223us/sample - loss: 7.7893 - mae: 1.9585 - mse: 7.7893 - val_loss: 15.2375 - val_mae: 2.6453 - val_mse: 15.2375\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 39/100\n",
      "354/354 [==============================] - 0s 213us/sample - loss: 7.5407 - mae: 1.9485 - mse: 7.5407 - val_loss: 16.9275 - val_mae: 2.7329 - val_mse: 16.9275\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 40/100\n",
      "354/354 [==============================] - 0s 211us/sample - loss: 7.5565 - mae: 1.9030 - mse: 7.5565 - val_loss: 15.2341 - val_mae: 2.6018 - val_mse: 15.2341\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 41/100\n",
      "354/354 [==============================] - 0s 216us/sample - loss: 7.7118 - mae: 1.9763 - mse: 7.7118 - val_loss: 15.7800 - val_mae: 2.6320 - val_mse: 15.7800\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 42/100\n",
      "354/354 [==============================] - 0s 237us/sample - loss: 7.4267 - mae: 1.9107 - mse: 7.4267 - val_loss: 14.6142 - val_mae: 2.5046 - val_mse: 14.6142\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 43/100\n",
      "354/354 [==============================] - 0s 254us/sample - loss: 7.4060 - mae: 1.9014 - mse: 7.4060 - val_loss: 14.1551 - val_mae: 2.4665 - val_mse: 14.1551\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 44/100\n",
      "354/354 [==============================] - 0s 214us/sample - loss: 7.3371 - mae: 1.9142 - mse: 7.3371 - val_loss: 14.2481 - val_mae: 2.4548 - val_mse: 14.2481\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 45/100\n",
      "354/354 [==============================] - 0s 217us/sample - loss: 7.0906 - mae: 1.8327 - mse: 7.0906 - val_loss: 15.6930 - val_mae: 2.6193 - val_mse: 15.6930\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 46/100\n",
      "354/354 [==============================] - 0s 234us/sample - loss: 6.9100 - mae: 1.8281 - mse: 6.9100 - val_loss: 19.2019 - val_mae: 2.9945 - val_mse: 19.2019\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 47/100\n",
      "354/354 [==============================] - 0s 218us/sample - loss: 7.2151 - mae: 1.8930 - mse: 7.2151 - val_loss: 15.6496 - val_mae: 2.6456 - val_mse: 15.6496\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 48/100\n",
      "354/354 [==============================] - 0s 223us/sample - loss: 7.0622 - mae: 1.8432 - mse: 7.0622 - val_loss: 15.2120 - val_mae: 2.5867 - val_mse: 15.2120\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 49/100\n",
      "354/354 [==============================] - 0s 219us/sample - loss: 6.7430 - mae: 1.8479 - mse: 6.7430 - val_loss: 16.1004 - val_mae: 2.6940 - val_mse: 16.1004\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 50/100\n",
      "354/354 [==============================] - 0s 216us/sample - loss: 6.7931 - mae: 1.8296 - mse: 6.7931 - val_loss: 16.1302 - val_mae: 2.7490 - val_mse: 16.1302\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 51/100\n",
      "354/354 [==============================] - 0s 214us/sample - loss: 6.9212 - mae: 1.8488 - mse: 6.9212 - val_loss: 15.2317 - val_mae: 2.5733 - val_mse: 15.2317\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 52/100\n",
      "354/354 [==============================] - 0s 243us/sample - loss: 6.6125 - mae: 1.8240 - mse: 6.6125 - val_loss: 13.7314 - val_mae: 2.4453 - val_mse: 13.7314\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 53/100\n",
      "354/354 [==============================] - 0s 226us/sample - loss: 6.8553 - mae: 1.8228 - mse: 6.8553 - val_loss: 15.6613 - val_mae: 2.6350 - val_mse: 15.6613\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 54/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 6.4486 - mae: 1.8099 - mse: 6.4486 - val_loss: 16.3183 - val_mae: 2.7530 - val_mse: 16.3183\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 55/100\n",
      "354/354 [==============================] - 0s 213us/sample - loss: 6.5164 - mae: 1.8011 - mse: 6.5164 - val_loss: 15.5147 - val_mae: 2.6820 - val_mse: 15.5147\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 56/100\n",
      "354/354 [==============================] - 0s 243us/sample - loss: 6.5868 - mae: 1.8040 - mse: 6.5868 - val_loss: 13.6455 - val_mae: 2.4098 - val_mse: 13.6455\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 57/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 6.1876 - mae: 1.7420 - mse: 6.1876 - val_loss: 14.3190 - val_mae: 2.4943 - val_mse: 14.3190\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 58/100\n",
      "354/354 [==============================] - 0s 217us/sample - loss: 6.1500 - mae: 1.7502 - mse: 6.1500 - val_loss: 16.6569 - val_mae: 2.8489 - val_mse: 16.6569\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 59/100\n",
      "354/354 [==============================] - 0s 231us/sample - loss: 6.2243 - mae: 1.7922 - mse: 6.2243 - val_loss: 15.1053 - val_mae: 2.6139 - val_mse: 15.1053\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 60/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 5.9984 - mae: 1.7819 - mse: 5.9984 - val_loss: 13.0936 - val_mae: 2.4477 - val_mse: 13.0936\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 61/100\n",
      "354/354 [==============================] - 0s 227us/sample - loss: 6.2950 - mae: 1.8000 - mse: 6.2950 - val_loss: 13.9017 - val_mae: 2.4648 - val_mse: 13.9017\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 62/100\n",
      "354/354 [==============================] - 0s 220us/sample - loss: 6.0324 - mae: 1.7703 - mse: 6.0324 - val_loss: 15.0329 - val_mae: 2.5613 - val_mse: 15.0329\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 63/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 5.9684 - mae: 1.7423 - mse: 5.9684 - val_loss: 12.7976 - val_mae: 2.3946 - val_mse: 12.7976\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 64/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 5.7571 - mae: 1.6761 - mse: 5.7571 - val_loss: 15.2138 - val_mae: 2.6756 - val_mse: 15.2138\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 65/100\n",
      "354/354 [==============================] - 0s 230us/sample - loss: 5.9879 - mae: 1.7234 - mse: 5.9879 - val_loss: 13.5897 - val_mae: 2.4875 - val_mse: 13.5897\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 66/100\n",
      "354/354 [==============================] - 0s 217us/sample - loss: 5.8570 - mae: 1.7208 - mse: 5.8570 - val_loss: 13.1858 - val_mae: 2.3988 - val_mse: 13.1858\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 67/100\n",
      "354/354 [==============================] - 0s 212us/sample - loss: 5.7453 - mae: 1.7049 - mse: 5.7453 - val_loss: 13.7194 - val_mae: 2.4507 - val_mse: 13.7194\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 68/100\n",
      "354/354 [==============================] - 0s 210us/sample - loss: 5.6848 - mae: 1.6871 - mse: 5.6848 - val_loss: 14.4627 - val_mae: 2.5663 - val_mse: 14.4627\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 69/100\n",
      "354/354 [==============================] - 0s 207us/sample - loss: 5.8216 - mae: 1.6898 - mse: 5.8216 - val_loss: 13.4539 - val_mae: 2.4769 - val_mse: 13.4539\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 70/100\n",
      "354/354 [==============================] - 0s 220us/sample - loss: 5.5027 - mae: 1.6663 - mse: 5.5027 - val_loss: 13.4271 - val_mae: 2.4337 - val_mse: 13.4271\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 71/100\n",
      "354/354 [==============================] - 0s 218us/sample - loss: 5.4858 - mae: 1.6510 - mse: 5.4858 - val_loss: 13.6147 - val_mae: 2.4432 - val_mse: 13.6147\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 72/100\n",
      "354/354 [==============================] - 0s 208us/sample - loss: 5.4131 - mae: 1.6451 - mse: 5.4131 - val_loss: 13.2387 - val_mae: 2.4175 - val_mse: 13.2387\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 73/100\n",
      "354/354 [==============================] - 0s 236us/sample - loss: 5.3593 - mae: 1.6671 - mse: 5.3593 - val_loss: 12.5856 - val_mae: 2.4682 - val_mse: 12.5856\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 74/100\n",
      "354/354 [==============================] - 0s 221us/sample - loss: 5.3946 - mae: 1.6290 - mse: 5.3946 - val_loss: 13.6171 - val_mae: 2.4803 - val_mse: 13.6171\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 75/100\n",
      "354/354 [==============================] - 0s 224us/sample - loss: 5.2424 - mae: 1.6341 - mse: 5.2424 - val_loss: 14.7231 - val_mae: 2.6550 - val_mse: 14.7231\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 76/100\n",
      "354/354 [==============================] - 0s 221us/sample - loss: 5.1533 - mae: 1.5881 - mse: 5.1533 - val_loss: 13.4304 - val_mae: 2.5766 - val_mse: 13.4304\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 77/100\n",
      "354/354 [==============================] - 0s 216us/sample - loss: 5.2420 - mae: 1.6104 - mse: 5.2420 - val_loss: 12.8703 - val_mae: 2.3890 - val_mse: 12.8703\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 78/100\n",
      "354/354 [==============================] - 0s 214us/sample - loss: 4.9934 - mae: 1.5716 - mse: 4.9934 - val_loss: 13.8570 - val_mae: 2.5972 - val_mse: 13.8570\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 79/100\n",
      "354/354 [==============================] - 0s 222us/sample - loss: 5.0281 - mae: 1.5918 - mse: 5.0281 - val_loss: 12.6817 - val_mae: 2.3643 - val_mse: 12.6817\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 80/100\n",
      "354/354 [==============================] - 0s 220us/sample - loss: 5.2042 - mae: 1.6049 - mse: 5.2042 - val_loss: 12.6017 - val_mae: 2.3721 - val_mse: 12.6017\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 81/100\n",
      "354/354 [==============================] - 0s 227us/sample - loss: 4.9504 - mae: 1.5701 - mse: 4.9504 - val_loss: 12.4663 - val_mae: 2.3832 - val_mse: 12.4663\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 82/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 4.8695 - mae: 1.6113 - mse: 4.8695 - val_loss: 12.4286 - val_mae: 2.3672 - val_mse: 12.4286\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 83/100\n",
      "354/354 [==============================] - 0s 239us/sample - loss: 4.9597 - mae: 1.5901 - mse: 4.9597 - val_loss: 11.9593 - val_mae: 2.3090 - val_mse: 11.9593\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 84/100\n",
      "354/354 [==============================] - 0s 236us/sample - loss: 4.7727 - mae: 1.5529 - mse: 4.7727 - val_loss: 15.0728 - val_mae: 2.6187 - val_mse: 15.0728\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 85/100\n",
      "354/354 [==============================] - 0s 217us/sample - loss: 4.7613 - mae: 1.5471 - mse: 4.7613 - val_loss: 12.1164 - val_mae: 2.3669 - val_mse: 12.1164\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 86/100\n",
      "354/354 [==============================] - 0s 225us/sample - loss: 4.7107 - mae: 1.5415 - mse: 4.7107 - val_loss: 12.4001 - val_mae: 2.3728 - val_mse: 12.4001\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 87/100\n",
      "354/354 [==============================] - 0s 234us/sample - loss: 4.6553 - mae: 1.5038 - mse: 4.6553 - val_loss: 12.9030 - val_mae: 2.4729 - val_mse: 12.9030\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 88/100\n",
      "354/354 [==============================] - 0s 236us/sample - loss: 4.7791 - mae: 1.5290 - mse: 4.7791 - val_loss: 11.3780 - val_mae: 2.2924 - val_mse: 11.3780\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 89/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 4.6260 - mae: 1.4847 - mse: 4.6260 - val_loss: 12.4903 - val_mae: 2.3655 - val_mse: 12.4903\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 90/100\n",
      "354/354 [==============================] - 0s 220us/sample - loss: 4.6343 - mae: 1.4983 - mse: 4.6343 - val_loss: 11.9263 - val_mae: 2.3201 - val_mse: 11.9263\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 91/100\n",
      "354/354 [==============================] - 0s 219us/sample - loss: 4.4519 - mae: 1.4970 - mse: 4.4519 - val_loss: 11.5961 - val_mae: 2.3123 - val_mse: 11.5961\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 92/100\n",
      "354/354 [==============================] - 0s 209us/sample - loss: 4.6032 - mae: 1.4873 - mse: 4.6032 - val_loss: 12.5865 - val_mae: 2.3583 - val_mse: 12.5865\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 93/100\n",
      "354/354 [==============================] - 0s 215us/sample - loss: 4.5848 - mae: 1.5171 - mse: 4.5848 - val_loss: 11.5866 - val_mae: 2.2889 - val_mse: 11.5866\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 94/100\n",
      "354/354 [==============================] - 0s 213us/sample - loss: 4.4029 - mae: 1.4931 - mse: 4.4029 - val_loss: 12.1418 - val_mae: 2.3795 - val_mse: 12.1418\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 95/100\n",
      "354/354 [==============================] - 0s 225us/sample - loss: 4.3969 - mae: 1.4670 - mse: 4.3969 - val_loss: 14.1345 - val_mae: 2.5131 - val_mse: 14.1345\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 96/100\n",
      "354/354 [==============================] - 0s 236us/sample - loss: 4.2738 - mae: 1.4875 - mse: 4.2738 - val_loss: 12.2324 - val_mae: 2.3689 - val_mse: 12.2324\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 97/100\n",
      "354/354 [==============================] - 0s 238us/sample - loss: 4.3581 - mae: 1.4904 - mse: 4.3581 - val_loss: 12.9004 - val_mae: 2.4411 - val_mse: 12.9004\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 98/100\n",
      "354/354 [==============================] - 0s 269us/sample - loss: 4.2009 - mae: 1.4409 - mse: 4.2009 - val_loss: 11.3523 - val_mae: 2.2606 - val_mse: 11.3523\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 99/100\n",
      "354/354 [==============================] - 0s 228us/sample - loss: 4.1062 - mae: 1.3971 - mse: 4.1062 - val_loss: 11.6835 - val_mae: 2.2600 - val_mse: 11.6835\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 100/100\n",
      "354/354 [==============================] - 0s 213us/sample - loss: 4.2882 - mae: 1.4424 - mse: 4.2882 - val_loss: 11.6418 - val_mae: 2.2779 - val_mse: 11.6418\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
    "history = model.fit(x_train,\n",
    "                    y_train,\n",
    "                    epochs          = 100,\n",
    "                    batch_size      = 10,\n",
    "                    verbose         = 1,\n",
    "                    validation_data = (x_test, y_test),\n",
    "                    callbacks       = [savemodel_callback])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 6 - Evaluate\n",
    "### 6.1 - Model evaluation\n",
    "MAE =  Mean Absolute Error (between the labels and predictions)  \n",
    "A mae equal to 3 represents an average error in prediction of $3k."
   ]
  },