{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\n",
    "\n",
    "# <!-- TITLE --> [BHP2] - Regression with a Dense Network (DNN) - Advanced code\n",
    "  <!-- DESC -->  More advanced example of DNN network code - BHPD dataset\n",
    "  <!-- AUTHOR : Jean-Luc Parouty (CNRS/SIMaP) -->\n",
    "\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",
    "\n",
    "## What we're going to do :\n",
    "\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",
       "\n",
       "div .comment{\n",
       "    font-size:0.8em;\n",
       "    color:#696969;\n",
       "}\n",
       "\n",
       "\n",
       "\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"
    },
    {
     "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"
     ]
    }
   ],
   "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",
    "from importlib import reload\n",
    "\n",
    "sys.path.append('..')\n",
    "import fidle.pwk as pwk\n",
    "\n",
    "datasets_dir = pwk.init('BHP2')"
   ]
  },
  {
   "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,
   "metadata": {},
   "outputs": [],
   "source": [
    "# (x_train, y_train), (x_test, y_test) = keras.datasets.boston_housing.load_data(test_split=0.2, seed=113)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.2 - Option 2 : From a csv file\n",
    "More fun !"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "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",
       "                <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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b888990>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing Data :  0   Shape is :  (506, 14)\n"
     ]
    }
   ],
   "source": [
    "data = pd.read_csv(f'{datasets_dir}/BHPD/origine/BostonHousing.csv', header=0)\n",
    "\n",
    "display(data.head(5).style.format(\"{0:.2f}\"))\n",
    "print('Missing Data : ',data.isna().sum().sum(), '  Shape is : ', data.shape)"
   ]
  },
  {
   "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",
   "execution_count": 4,
   "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",
   "execution_count": 5,
   "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",
       "                <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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b904290>"
      ]
     },
     "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",
       "                <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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </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",
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
       "<pandas.io.formats.style.Styler at 0x7fa28b6de2d0>"
      ]
     },
     "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",
   "execution_count": 6,
   "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",
   "execution_count": 7,
   "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"
     ]
    }
   ],
   "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)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2 - Add callback"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "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",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 354 samples, validate on 152 samples\n",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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",
      "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"
     ]
    }
   ],
   "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."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_test / loss      : 11.6418\n",
      "x_test / mae       : 2.2779\n",
      "x_test / mse       : 11.6418\n"
     ]
    }
   ],
   "source": [
    "score = model.evaluate(x_test, y_test, verbose=0)\n",
    "\n",
    "print('x_test / loss      : {:5.4f}'.format(score[0]))\n",
    "print('x_test / mae       : {:5.4f}'.format(score[1]))\n",
    "print('x_test / mse       : {:5.4f}'.format(score[2]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 6.2 - Training history\n",
    "What was the best result during our training ?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "min( val_mae ) : 2.2600\n"
     ]
    }
   ],
   "source": [
    "print(\"min( val_mae ) : {:.4f}\".format( min(history.history[\"val_mae\"]) ) )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div class=\"comment\">Saved: ./run/figs/BHP2-01-history_0</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div class=\"comment\">Saved: ./run/figs/BHP2-01-history_1</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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Be9974CTZFi6dCmXXXYZU6dOZfny5XzgAx9g4cKF/OhHP6K1tZU777yT+fPnc/fdd3PFFVfQ0dHBxIkTuemmm5g6dSrNzc1cdNFFPPfccyQSCRYvXpzT+4qISHFShmIUOe200/jd737X/f3vf/97zjnnHO644w6eeuop7r//fr74xS/mnAl55pln+NGPfsRzzz3HjTfeyMsvv8yyZcs477zzWLJkCQDHHnssjz76KE8//TSnnXYa3/ve9wD49re/zQknnMDjjz/O/fffz8UXX0xzc3P+P7SIiISCMhSjyKGHHsqWLVvYsGEDW7duZfz48UyfPp0vfOELPPjgg0QiEdavX8/mzZuZNm3agMdbtGgR06dPB2D+/PndtzNfuHAh999/PwDr1q3jIx/5CBs3bqSjo4N58+YBcM8993DXXXfx/e9/H4C2tjbWrl2r+3aIiIxSCihGQj/DEpm6upK8trkBgEjE2Gfa2GG99Qc/+EFuu+02Nm3axGmnncZNN93E1q1befLJJ4lGo8ydO5e2tracjlVe3nOX90gk0v19JBLpvhPpRRddxH/9139x6qmnsnTpUhYvXgz4epDbb7+d/ffff1ifR0REioOGPArMIulFmcM/3mmnncZvf/tbbrvtNj74wQ9SX1/PlClTiEaj3H///axZs2b4b5Kmvr6emTP93eB//eueldPf+c53smTJku7hlaeffjqv7ysiIuGigKLA0tcGd84Ne6bHgQceSGNjIzNnzmT69OmcfvrpPPHEExxxxBHcdNNNLFiwYHgdzrB48WI+9KEP8Za3vIVJkyZ1b7/00kvp7Ozk4IMP5qCDDuLSSy/N6/uKiEi4mKYqDk4sFnMA8Xi81/YVK1YMuT7g1Y313YtazZ82hpLInhPnDee8iYjIbpX1/lgpe86VK8QiEd1xVEREipuKMkPACnjH0eeee44zzzyz17by8nIee+yx3doPEREpbgooQqDX8tu7OUWxcOFCli9fvlvfU0RERh8NeeTRULMLvZffzldvwk/1OyIio4cCijypqKhg+/btQ7pI7ol3HHXOsX37dioqKgrdFRERyQMNeeTJrFmzWLduHVu3bh30vnXN7bR3JgFo3lZGRbQk390LpYqKCmbNmlXoboiISB4ooMiTaDTavez0YH3njqe5//mNAFz83kN4xwG6yIqISHHRkEcIpGck2jq7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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<div class=\"comment\">Saved: ./run/figs/BHP2-01-history_2</div>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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8MEH+da3vsXSpUuZMWMG559/Ptu2beOZZ57h3e9+Nw0NDZx++unMmjWLc889d1DqICIiI4eCQ5WE1zQo00gwIO973/t49NFHOfTQQzEzrrrqKqZOncqPf/xjvvWtb5FOp2lpaeHmm29m+fLlfPSjH6VQ8ONCr7zyysGriIiIjAhWrqlboHitimw222v/iy++yOzZs/t1rE3bOlnT6ieIjB/dyJRxg9PiUO8Gcq5ERKSm+ly9T2McqiS8iGJBYU1ERGJKwaFKjKHpqhAREakmBYcqCbc4qHtIRETiSsGhSoZqcKSIiEg1KThUSa8WB5QcREQknhQcqkRjHEREZDhQcKiShMY4iIjIMKDgUCXhMQ6FKueGlpaWso8tWbKEgw46qIq1ERGROFNwqBKNcRARkeFAS07vqvNOqahYA7B/f4/9g3sid3/uc59jr732IpPJAHD55ZdjZjz44INs3LiR7u5uvva1r3HaaRVdfbxHR0cHn/zkJ3nqqadIpVJcc801nHDCCTz//PN89KMfpauri0KhwC9/+UumT5/OBz7wAZYtW0Y+n+dLX/oSH/zgB/v7CkVEJGYUHGLojDPO4OKLL+4JDrfffjv33HMPl1xyCWPHjmXdunUcc8wxvPe97+3VRbIzN9xwAwALFy7kpZde4uSTT+aVV17hxhtv5DOf+Qwf/vCH6erqIp/Pc/fddzN9+nTuuusuAFpbWwf/hYqISN1RV0UMHXbYYaxZs4YVK1awYMECJkyYwLRp0/jCF77AIYccwkknncTy5ctZvXp1v4778MMPc/bZZwNw4IEHstdee/HKK69w7LHH8vWvf51vfvObLF26lObmZg4++GDuu+8+Pve5z/HQQw8xbty4oXipIiJSZ9TisKvKdCeUKjjHqyv9t3Iz403Tdu2D9v3vfz+/+MUvWLVqFWeccQa33HILa9eu5emnnyadTrP33nvT0dHRr2OWm+3xoQ99iKOPPpq77rqLd77znfzgBz/gxBNP5Omnn+buu+/m0ksv5eSTT+ayyy7bpdckIiL1T8GhSsIdBs45nHP96kYodcYZZ3D++eezbt06HnjgAW6//XamTJlCOp3mL3/5C0uXLu33MY877jhuueUWTjzxRF555RVef/11DjjgABYvXsy+++7LRRddxOLFi3n22Wc58MADmThxImeddRYtLS386Ec/GvBrERGR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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pwk.plot_history(history, plot={'MSE' :['mse', 'val_mse'],\n",
    "                                'MAE' :['mae', 'val_mae'],\n",
    "                                'LOSS':['loss','val_loss']}, save_as='01-history')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 7 - Restore a model :"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.1 - Reload model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "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",
      "Loaded.\n"
     ]
    }
   ],
   "source": [
    "loaded_model = tf.keras.models.load_model('./run/models/best_model.h5')\n",
    "loaded_model.summary()\n",
    "print(\"Loaded.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.2 - Evaluate it :"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x_test / loss      : 11.3523\n",
      "x_test / mae       : 2.2606\n",
      "x_test / mse       : 11.3523\n"
     ]
    }
   ],
   "source": [
    "score = loaded_model.evaluate(x_test, y_test, verbose=0)\n",
    "\n",
    "print('x_test / loss      : {:5.4f}'.format(score[0]))\n",
    "print('x_test / mae       : {:5.4f}'.format(score[1]))\n",
    "print('x_test / mse       : {:5.4f}'.format(score[2]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 7.3 - Make a prediction"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "my_data = [ 1.26425925, -0.48522739,  1.0436489 , -0.23112788,  1.37120745,\n",
    "       -2.14308942,  1.13489104, -1.06802005,  1.71189006,  1.57042287,\n",
    "        0.77859951,  0.14769795,  2.7585581 ]\n",
    "real_price = 10.4\n",
    "\n",
    "my_data=np.array(my_data).reshape(1,13)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Prediction : 9.11 K$   Reality : 10.40 K$\n"
     ]
    }
   ],
   "source": [
    "predictions = loaded_model.predict( my_data )\n",
    "print(\"Prediction : {:.2f} K$   Reality : {:.2f} K$\".format(predictions[0][0], real_price))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End time is : Wednesday 16 December 2020, 21:13:59\n",
      "Duration is : 00:00:11 697ms\n",
      "This notebook ends here\n"
     ]
    }
   ],
   "source": [
    "pwk.end()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "<img width=\"80px\" src=\"../fidle/img/00-Fidle-logo-01.svg\"></img>"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}