Skip to content
Snippets Groups Projects
02-DNN-Regression-Premium.ipynb 156 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",
       "\n",
       "</style>\n",
       "\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "FIDLE 2020 - Practical Work Module\n",
      "Version              : 0.57 DEV\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Run time             : Friday 11 September 2020, 08:51:26\n",
      "TensorFlow version   : 2.2.0\n",
      "Keras version        : 2.3.0-tf\n",
      "Current place        : Fidle at IDRIS\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Datasets dir         : /gpfswork/rech/mlh/commun/datasets\n",
      "Update keras cache   : Done\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 ooo\n",
    "\n",
    "place, datasets_dir = ooo.init()"
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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "</style><table id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63b\" ><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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63blevel0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col0\" class=\"data row0 col0\" >0.01</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col1\" class=\"data row0 col1\" >18.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col2\" class=\"data row0 col2\" >2.31</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col3\" class=\"data row0 col3\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col4\" class=\"data row0 col4\" >0.54</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col5\" class=\"data row0 col5\" >6.58</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col6\" class=\"data row0 col6\" >65.20</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col7\" class=\"data row0 col7\" >4.09</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col8\" class=\"data row0 col8\" >1.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col9\" class=\"data row0 col9\" >296.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col10\" class=\"data row0 col10\" >15.30</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col11\" class=\"data row0 col11\" >396.90</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col12\" class=\"data row0 col12\" >4.98</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow0_col13\" class=\"data row0 col13\" >24.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63blevel0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col0\" class=\"data row1 col0\" >0.03</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col1\" class=\"data row1 col1\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col2\" class=\"data row1 col2\" >7.07</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col3\" class=\"data row1 col3\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col4\" class=\"data row1 col4\" >0.47</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col5\" class=\"data row1 col5\" >6.42</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col6\" class=\"data row1 col6\" >78.90</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col7\" class=\"data row1 col7\" >4.97</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col8\" class=\"data row1 col8\" >2.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col9\" class=\"data row1 col9\" >242.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col10\" class=\"data row1 col10\" >17.80</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col11\" class=\"data row1 col11\" >396.90</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col12\" class=\"data row1 col12\" >9.14</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow1_col13\" class=\"data row1 col13\" >21.60</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63blevel0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col0\" class=\"data row2 col0\" >0.03</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col1\" class=\"data row2 col1\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col2\" class=\"data row2 col2\" >7.07</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col3\" class=\"data row2 col3\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col4\" class=\"data row2 col4\" >0.47</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col5\" class=\"data row2 col5\" >7.18</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col6\" class=\"data row2 col6\" >61.10</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col7\" class=\"data row2 col7\" >4.97</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col8\" class=\"data row2 col8\" >2.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col9\" class=\"data row2 col9\" >242.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col10\" class=\"data row2 col10\" >17.80</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col11\" class=\"data row2 col11\" >392.83</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col12\" class=\"data row2 col12\" >4.03</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow2_col13\" class=\"data row2 col13\" >34.70</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63blevel0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col0\" class=\"data row3 col0\" >0.03</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col1\" class=\"data row3 col1\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col2\" class=\"data row3 col2\" >2.18</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col3\" class=\"data row3 col3\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col4\" class=\"data row3 col4\" >0.46</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col5\" class=\"data row3 col5\" >7.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col6\" class=\"data row3 col6\" >45.80</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col7\" class=\"data row3 col7\" >6.06</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col8\" class=\"data row3 col8\" >3.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col9\" class=\"data row3 col9\" >222.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col10\" class=\"data row3 col10\" >18.70</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col11\" class=\"data row3 col11\" >394.63</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col12\" class=\"data row3 col12\" >2.94</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow3_col13\" class=\"data row3 col13\" >33.40</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63blevel0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col0\" class=\"data row4 col0\" >0.07</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col1\" class=\"data row4 col1\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col2\" class=\"data row4 col2\" >2.18</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col3\" class=\"data row4 col3\" >0.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col4\" class=\"data row4 col4\" >0.46</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col5\" class=\"data row4 col5\" >7.15</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col6\" class=\"data row4 col6\" >54.20</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col7\" class=\"data row4 col7\" >6.06</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col8\" class=\"data row4 col8\" >3.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col9\" class=\"data row4 col9\" >222.00</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col10\" class=\"data row4 col10\" >18.70</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col11\" class=\"data row4 col11\" >396.90</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col12\" class=\"data row4 col12\" >5.33</td>\n",
       "                        <td id=\"T_369eb1e8_f3fb_11ea_bf65_0cc47af5c63brow4_col13\" class=\"data row4 col13\" >36.20</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "<pandas.io.formats.style.Styler at 0x145717c33190>"
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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "</style><table id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63b\" ><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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col0\" class=\"data row0 col0\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col1\" class=\"data row0 col1\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col2\" class=\"data row0 col2\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col3\" class=\"data row0 col3\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col4\" class=\"data row0 col4\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col5\" class=\"data row0 col5\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col6\" class=\"data row0 col6\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col7\" class=\"data row0 col7\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col8\" class=\"data row0 col8\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col9\" class=\"data row0 col9\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col10\" class=\"data row0 col10\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col11\" class=\"data row0 col11\" >354.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow0_col12\" class=\"data row0 col12\" >354.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col0\" class=\"data row1 col0\" >3.74</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col1\" class=\"data row1 col1\" >10.92</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col2\" class=\"data row1 col2\" >11.27</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col3\" class=\"data row1 col3\" >0.06</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col4\" class=\"data row1 col4\" >0.56</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col5\" class=\"data row1 col5\" >6.28</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col6\" class=\"data row1 col6\" >70.19</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col7\" class=\"data row1 col7\" >3.73</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col8\" class=\"data row1 col8\" >9.73</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col9\" class=\"data row1 col9\" >412.53</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col10\" class=\"data row1 col10\" >18.44</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col11\" class=\"data row1 col11\" >355.09</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow1_col12\" class=\"data row1 col12\" >12.85</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col0\" class=\"data row2 col0\" >8.36</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col1\" class=\"data row2 col1\" >23.31</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col2\" class=\"data row2 col2\" >6.88</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col3\" class=\"data row2 col3\" >0.25</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col4\" class=\"data row2 col4\" >0.12</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col5\" class=\"data row2 col5\" >0.69</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col6\" class=\"data row2 col6\" >27.43</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col7\" class=\"data row2 col7\" >2.13</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col8\" class=\"data row2 col8\" >8.82</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col9\" class=\"data row2 col9\" >169.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col10\" class=\"data row2 col10\" >2.19</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col11\" class=\"data row2 col11\" >93.20</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow2_col12\" class=\"data row2 col12\" >7.21</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col0\" class=\"data row3 col0\" >0.01</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col1\" class=\"data row3 col1\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col2\" class=\"data row3 col2\" >0.74</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col3\" class=\"data row3 col3\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col4\" class=\"data row3 col4\" >0.39</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col5\" class=\"data row3 col5\" >3.56</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col6\" class=\"data row3 col6\" >6.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col7\" class=\"data row3 col7\" >1.13</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col8\" class=\"data row3 col8\" >1.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col9\" class=\"data row3 col9\" >187.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col10\" class=\"data row3 col10\" >12.60</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col11\" class=\"data row3 col11\" >0.32</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow3_col12\" class=\"data row3 col12\" >1.73</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col0\" class=\"data row4 col0\" >0.08</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col1\" class=\"data row4 col1\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col2\" class=\"data row4 col2\" >5.13</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col3\" class=\"data row4 col3\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col4\" class=\"data row4 col4\" >0.45</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col5\" class=\"data row4 col5\" >5.88</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col6\" class=\"data row4 col6\" >47.45</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col7\" class=\"data row4 col7\" >2.06</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col8\" class=\"data row4 col8\" >4.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col9\" class=\"data row4 col9\" >281.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col10\" class=\"data row4 col10\" >17.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col11\" class=\"data row4 col11\" >374.46</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow4_col12\" class=\"data row4 col12\" >7.14</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col0\" class=\"data row5 col0\" >0.27</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col1\" class=\"data row5 col1\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col2\" class=\"data row5 col2\" >9.79</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col3\" class=\"data row5 col3\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col4\" class=\"data row5 col4\" >0.54</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col5\" class=\"data row5 col5\" >6.21</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col6\" class=\"data row5 col6\" >79.45</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col7\" class=\"data row5 col7\" >3.10</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col8\" class=\"data row5 col8\" >5.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col9\" class=\"data row5 col9\" >345.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col10\" class=\"data row5 col10\" >19.05</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col11\" class=\"data row5 col11\" >391.18</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow5_col12\" class=\"data row5 col12\" >11.65</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col0\" class=\"data row6 col0\" >3.76</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col1\" class=\"data row6 col1\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col2\" class=\"data row6 col2\" >18.10</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col3\" class=\"data row6 col3\" >0.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col4\" class=\"data row6 col4\" >0.64</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col5\" class=\"data row6 col5\" >6.63</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col6\" class=\"data row6 col6\" >94.60</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col7\" class=\"data row6 col7\" >4.80</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col8\" class=\"data row6 col8\" >24.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col9\" class=\"data row6 col9\" >666.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col10\" class=\"data row6 col10\" >20.20</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col11\" class=\"data row6 col11\" >395.69</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow6_col12\" class=\"data row6 col12\" >17.12</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63blevel0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col0\" class=\"data row7 col0\" >73.53</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col1\" class=\"data row7 col1\" >100.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col2\" class=\"data row7 col2\" >27.74</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col3\" class=\"data row7 col3\" >1.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col4\" class=\"data row7 col4\" >0.87</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col5\" class=\"data row7 col5\" >8.78</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col6\" class=\"data row7 col6\" >100.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col7\" class=\"data row7 col7\" >12.13</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col8\" class=\"data row7 col8\" >24.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col9\" class=\"data row7 col9\" >711.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col10\" class=\"data row7 col10\" >22.00</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col11\" class=\"data row7 col11\" >396.90</td>\n",
       "                        <td id=\"T_36a7f8f2_f3fb_11ea_bf65_0cc47af5c63brow7_col12\" class=\"data row7 col12\" >34.77</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "<pandas.io.formats.style.Styler at 0x14578e541410>"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "<style  type=\"text/css\" >\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "</style><table id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63b\" ><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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col0\" class=\"data row0 col0\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col1\" class=\"data row0 col1\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col2\" class=\"data row0 col2\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col3\" class=\"data row0 col3\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col4\" class=\"data row0 col4\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col5\" class=\"data row0 col5\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col6\" class=\"data row0 col6\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col7\" class=\"data row0 col7\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col8\" class=\"data row0 col8\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col9\" class=\"data row0 col9\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col10\" class=\"data row0 col10\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col11\" class=\"data row0 col11\" >354.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow0_col12\" class=\"data row0 col12\" >354.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col0\" class=\"data row1 col0\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col1\" class=\"data row1 col1\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col2\" class=\"data row1 col2\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col3\" class=\"data row1 col3\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col4\" class=\"data row1 col4\" >-0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col5\" class=\"data row1 col5\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col6\" class=\"data row1 col6\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col7\" class=\"data row1 col7\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col8\" class=\"data row1 col8\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col9\" class=\"data row1 col9\" >-0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col10\" class=\"data row1 col10\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col11\" class=\"data row1 col11\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow1_col12\" class=\"data row1 col12\" >-0.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col0\" class=\"data row2 col0\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col1\" class=\"data row2 col1\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col2\" class=\"data row2 col2\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col3\" class=\"data row2 col3\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col4\" class=\"data row2 col4\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col5\" class=\"data row2 col5\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col6\" class=\"data row2 col6\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col7\" class=\"data row2 col7\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col8\" class=\"data row2 col8\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col9\" class=\"data row2 col9\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col10\" class=\"data row2 col10\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col11\" class=\"data row2 col11\" >1.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow2_col12\" class=\"data row2 col12\" >1.00</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col0\" class=\"data row3 col0\" >-0.45</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col1\" class=\"data row3 col1\" >-0.47</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col2\" class=\"data row3 col2\" >-1.53</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col3\" class=\"data row3 col3\" >-0.26</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col4\" class=\"data row3 col4\" >-1.47</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col5\" class=\"data row3 col5\" >-3.92</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col6\" class=\"data row3 col6\" >-2.34</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col7\" class=\"data row3 col7\" >-1.22</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col8\" class=\"data row3 col8\" >-0.99</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col9\" class=\"data row3 col9\" >-1.33</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col10\" class=\"data row3 col10\" >-2.66</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col11\" class=\"data row3 col11\" >-3.81</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow3_col12\" class=\"data row3 col12\" >-1.54</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col0\" class=\"data row4 col0\" >-0.44</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col1\" class=\"data row4 col1\" >-0.47</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col2\" class=\"data row4 col2\" >-0.89</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col3\" class=\"data row4 col3\" >-0.26</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col4\" class=\"data row4 col4\" >-0.90</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col5\" class=\"data row4 col5\" >-0.59</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col6\" class=\"data row4 col6\" >-0.83</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col7\" class=\"data row4 col7\" >-0.78</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col8\" class=\"data row4 col8\" >-0.65</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col9\" class=\"data row4 col9\" >-0.78</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col10\" class=\"data row4 col10\" >-0.66</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col11\" class=\"data row4 col11\" >0.21</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow4_col12\" class=\"data row4 col12\" >-0.79</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col0\" class=\"data row5 col0\" >-0.41</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col1\" class=\"data row5 col1\" >-0.47</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col2\" class=\"data row5 col2\" >-0.21</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col3\" class=\"data row5 col3\" >-0.26</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col4\" class=\"data row5 col4\" >-0.19</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col5\" class=\"data row5 col5\" >-0.10</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col6\" class=\"data row5 col6\" >0.34</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col7\" class=\"data row5 col7\" >-0.30</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col8\" class=\"data row5 col8\" >-0.54</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col9\" class=\"data row5 col9\" >-0.40</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col10\" class=\"data row5 col10\" >0.28</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col11\" class=\"data row5 col11\" >0.39</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow5_col12\" class=\"data row5 col12\" >-0.17</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col0\" class=\"data row6 col0\" >0.00</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col1\" class=\"data row6 col1\" >-0.47</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col2\" class=\"data row6 col2\" >0.99</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col3\" class=\"data row6 col3\" >-0.26</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col4\" class=\"data row6 col4\" >0.69</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col5\" class=\"data row6 col5\" >0.50</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col6\" class=\"data row6 col6\" >0.89</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col7\" class=\"data row6 col7\" >0.50</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col8\" class=\"data row6 col8\" >1.62</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col9\" class=\"data row6 col9\" >1.50</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col10\" class=\"data row6 col10\" >0.80</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col11\" class=\"data row6 col11\" >0.44</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow6_col12\" class=\"data row6 col12\" >0.59</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "            <tr>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "                        <th id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63blevel0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col0\" class=\"data row7 col0\" >8.35</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col1\" class=\"data row7 col1\" >3.82</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col2\" class=\"data row7 col2\" >2.39</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col3\" class=\"data row7 col3\" >3.79</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col4\" class=\"data row7 col4\" >2.59</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col5\" class=\"data row7 col5\" >3.60</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col6\" class=\"data row7 col6\" >1.09</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col7\" class=\"data row7 col7\" >3.94</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col8\" class=\"data row7 col8\" >1.62</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col9\" class=\"data row7 col9\" >1.77</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col10\" class=\"data row7 col10\" >1.62</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col11\" class=\"data row7 col11\" >0.45</td>\n",
       "                        <td id=\"T_36afadf4_f3fb_11ea_bf65_0cc47af5c63brow7_col12\" class=\"data row7 col12\" >3.04</td>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "            </tr>\n",
       "    </tbody></table>"
      ],
      "text/plain": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "<pandas.io.formats.style.Styler at 0x145717e78d50>"
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",
      "Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "text/plain": [
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      ]
     },
     "metadata": {},
     "output_type": "display_data"
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": [
      "Epoch 1/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 10ms/step - loss: 499.2093 - mae: 20.4430 - mse: 499.2093 - val_loss: 420.4774 - val_mae: 18.8304 - val_mse: 420.4775\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 2/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 292.3440 - mae: 15.0259 - mse: 292.3440 - val_loss: 169.6111 - val_mae: 11.3853 - val_mse: 169.6111\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 3/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 102.2642 - mae: 7.9369 - mse: 102.2642 - val_loss: 47.8630 - val_mae: 5.2687 - val_mse: 47.8630\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 4/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 39.8329 - mae: 4.7167 - mse: 39.8329 - val_loss: 27.7145 - val_mae: 3.9110 - val_mse: 27.7145\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 5/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 26.4996 - mae: 3.7357 - mse: 26.4996 - val_loss: 21.7246 - val_mae: 3.3270 - val_mse: 21.7246\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 6/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 21.9933 - mae: 3.3116 - mse: 21.9933 - val_loss: 19.8916 - val_mae: 3.1714 - val_mse: 19.8916\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 7/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 19.7898 - mae: 3.0751 - mse: 19.7898 - val_loss: 17.2688 - val_mae: 2.9405 - val_mse: 17.2688\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 8/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 17.9261 - mae: 2.9466 - mse: 17.9261 - val_loss: 16.5394 - val_mae: 2.8745 - val_mse: 16.5394\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 9/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 17.0427 - mae: 2.8894 - mse: 17.0427 - val_loss: 15.0774 - val_mae: 2.7670 - val_mse: 15.0774\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 10/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 16.1931 - mae: 2.8067 - mse: 16.1931 - val_loss: 14.6675 - val_mae: 2.7240 - val_mse: 14.6675\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 11/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 15.5665 - mae: 2.6927 - mse: 15.5665 - val_loss: 14.1492 - val_mae: 2.6652 - val_mse: 14.1492\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 12/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 15.1335 - mae: 2.6444 - mse: 15.1335 - val_loss: 13.8187 - val_mae: 2.7048 - val_mse: 13.8187\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 13/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 14.7162 - mae: 2.6326 - mse: 14.7162 - val_loss: 13.3821 - val_mae: 2.6124 - val_mse: 13.3821\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 14/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 14.5406 - mae: 2.5951 - mse: 14.5406 - val_loss: 13.1009 - val_mae: 2.6227 - val_mse: 13.1009\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 15/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 13.7831 - mae: 2.5532 - mse: 13.7831 - val_loss: 12.9629 - val_mae: 2.5355 - val_mse: 12.9629\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 16/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 13.7281 - mae: 2.4935 - mse: 13.7281 - val_loss: 12.6765 - val_mae: 2.6053 - val_mse: 12.6765\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 17/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 13.3781 - mae: 2.4750 - mse: 13.3781 - val_loss: 11.9486 - val_mae: 2.4801 - val_mse: 11.9486\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 18/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.9392 - mae: 2.3964 - mse: 12.9392 - val_loss: 13.0057 - val_mae: 2.6542 - val_mse: 13.0057\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 19/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.8964 - mae: 2.4341 - mse: 12.8964 - val_loss: 11.8803 - val_mae: 2.4624 - val_mse: 11.8803\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 20/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.6664 - mae: 2.3981 - mse: 12.6664 - val_loss: 11.9270 - val_mae: 2.4685 - val_mse: 11.9270\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 21/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.4017 - mae: 2.3463 - mse: 12.4017 - val_loss: 11.2440 - val_mae: 2.4397 - val_mse: 11.2440\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 22/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.1234 - mae: 2.3006 - mse: 12.1234 - val_loss: 11.1839 - val_mae: 2.4669 - val_mse: 11.1839\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 23/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 12.0749 - mae: 2.3447 - mse: 12.0749 - val_loss: 11.2207 - val_mae: 2.4656 - val_mse: 11.2207\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 24/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 11.8094 - mae: 2.3250 - mse: 11.8094 - val_loss: 11.0406 - val_mae: 2.4306 - val_mse: 11.0406\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 25/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 11.7316 - mae: 2.3286 - mse: 11.7316 - val_loss: 10.9188 - val_mae: 2.4019 - val_mse: 10.9188\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 26/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 11.5838 - mae: 2.2687 - mse: 11.5838 - val_loss: 10.5081 - val_mae: 2.3415 - val_mse: 10.5081\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 27/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 11.2892 - mae: 2.2301 - mse: 11.2892 - val_loss: 10.5226 - val_mae: 2.3555 - val_mse: 10.5226\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 28/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 11.1164 - mae: 2.2479 - mse: 11.1164 - val_loss: 10.4150 - val_mae: 2.3400 - val_mse: 10.4150\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 29/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.9612 - mae: 2.2179 - mse: 10.9612 - val_loss: 10.2046 - val_mae: 2.3435 - val_mse: 10.2046\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 30/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.9214 - mae: 2.2458 - mse: 10.9214 - val_loss: 10.8314 - val_mae: 2.4200 - val_mse: 10.8314\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 31/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.8019 - mae: 2.1876 - mse: 10.8019 - val_loss: 10.3296 - val_mae: 2.3254 - val_mse: 10.3296\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 32/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.6908 - mae: 2.1993 - mse: 10.6908 - val_loss: 9.9282 - val_mae: 2.2934 - val_mse: 9.9282\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 33/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.2687 - mae: 2.1525 - mse: 10.2687 - val_loss: 10.3924 - val_mae: 2.3241 - val_mse: 10.3924\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 34/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.3882 - mae: 2.1708 - mse: 10.3882 - val_loss: 9.8941 - val_mae: 2.2892 - val_mse: 9.8941\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 35/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.1249 - mae: 2.1561 - mse: 10.1249 - val_loss: 10.2400 - val_mae: 2.3040 - val_mse: 10.2400\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 36/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.1762 - mae: 2.1386 - mse: 10.1762 - val_loss: 10.3141 - val_mae: 2.3525 - val_mse: 10.3141\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 37/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.6215 - mae: 2.1006 - mse: 9.6215 - val_loss: 9.8773 - val_mae: 2.2859 - val_mse: 9.8773\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 38/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 10.0097 - mae: 2.1486 - mse: 10.0097 - val_loss: 9.7549 - val_mae: 2.2745 - val_mse: 9.7549\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 39/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.6103 - mae: 2.0716 - mse: 9.6103 - val_loss: 9.7774 - val_mae: 2.2508 - val_mse: 9.7774\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 40/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.7722 - mae: 2.1225 - mse: 9.7722 - val_loss: 9.6608 - val_mae: 2.2962 - val_mse: 9.6608\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 41/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.5963 - mae: 2.0797 - mse: 9.5963 - val_loss: 9.5160 - val_mae: 2.2512 - val_mse: 9.5160\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 42/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.5719 - mae: 2.0775 - mse: 9.5719 - val_loss: 9.3480 - val_mae: 2.2093 - val_mse: 9.3480\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 43/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.4643 - mae: 2.0375 - mse: 9.4643 - val_loss: 9.2934 - val_mae: 2.2373 - val_mse: 9.2934\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 44/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.2036 - mae: 2.0558 - mse: 9.2036 - val_loss: 9.4987 - val_mae: 2.2673 - val_mse: 9.4987\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 45/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.2458 - mae: 2.0325 - mse: 9.2458 - val_loss: 9.6669 - val_mae: 2.3039 - val_mse: 9.6669\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 46/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.1519 - mae: 2.0477 - mse: 9.1519 - val_loss: 9.6261 - val_mae: 2.2777 - val_mse: 9.6261\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 47/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.8660 - mae: 2.0486 - mse: 8.8660 - val_loss: 9.2118 - val_mae: 2.2124 - val_mse: 9.2118\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 48/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 9.0046 - mae: 2.0213 - mse: 9.0046 - val_loss: 8.9364 - val_mae: 2.1414 - val_mse: 8.9364\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 49/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.6198 - mae: 1.9905 - mse: 8.6198 - val_loss: 8.9992 - val_mae: 2.1603 - val_mse: 8.9992\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 50/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.6736 - mae: 1.9742 - mse: 8.6736 - val_loss: 9.3506 - val_mae: 2.2071 - val_mse: 9.3506\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 51/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.5662 - mae: 1.9625 - mse: 8.5662 - val_loss: 8.8453 - val_mae: 2.1646 - val_mse: 8.8453\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 52/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.6659 - mae: 1.9890 - mse: 8.6659 - val_loss: 8.9524 - val_mae: 2.1324 - val_mse: 8.9524\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 53/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.4001 - mae: 1.9698 - mse: 8.4001 - val_loss: 9.1100 - val_mae: 2.1893 - val_mse: 9.1100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 54/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.4276 - mae: 1.9754 - mse: 8.4276 - val_loss: 9.0500 - val_mae: 2.1473 - val_mse: 9.0500\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 55/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.3976 - mae: 1.9540 - mse: 8.3976 - val_loss: 9.2225 - val_mae: 2.2563 - val_mse: 9.2225\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 56/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.1493 - mae: 1.9598 - mse: 8.1493 - val_loss: 8.8117 - val_mae: 2.1391 - val_mse: 8.8117\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 57/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.0737 - mae: 1.9515 - mse: 8.0737 - val_loss: 8.7231 - val_mae: 2.1213 - val_mse: 8.7231\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 58/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 8.0246 - mae: 1.9310 - mse: 8.0246 - val_loss: 8.6850 - val_mae: 2.1204 - val_mse: 8.6850\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 59/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.9543 - mae: 1.9113 - mse: 7.9543 - val_loss: 8.4364 - val_mae: 2.1018 - val_mse: 8.4364\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 60/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.9279 - mae: 1.9548 - mse: 7.9279 - val_loss: 8.5545 - val_mae: 2.1434 - val_mse: 8.5545\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 61/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.7351 - mae: 1.9272 - mse: 7.7351 - val_loss: 8.8891 - val_mae: 2.2113 - val_mse: 8.8891\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 62/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.8114 - mae: 1.9405 - mse: 7.8114 - val_loss: 8.3726 - val_mae: 2.0777 - val_mse: 8.3726\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 63/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.5490 - mae: 1.9089 - mse: 7.5490 - val_loss: 9.2360 - val_mae: 2.2077 - val_mse: 9.2360\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 64/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.6260 - mae: 1.9067 - mse: 7.6260 - val_loss: 8.3816 - val_mae: 2.0638 - val_mse: 8.3816\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 65/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.4021 - mae: 1.8836 - mse: 7.4021 - val_loss: 9.2083 - val_mae: 2.2493 - val_mse: 9.2083\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 66/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.5104 - mae: 1.8849 - mse: 7.5104 - val_loss: 8.0362 - val_mae: 2.0381 - val_mse: 8.0362\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 67/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.3472 - mae: 1.8806 - mse: 7.3472 - val_loss: 8.5162 - val_mae: 2.1142 - val_mse: 8.5162\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 68/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.2918 - mae: 1.8475 - mse: 7.2918 - val_loss: 8.2594 - val_mae: 2.0755 - val_mse: 8.2594\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 69/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.8707 - mae: 1.8768 - mse: 6.8707 - val_loss: 8.6912 - val_mae: 2.1383 - val_mse: 8.6912\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 70/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 7.3130 - mae: 1.8596 - mse: 7.3130 - val_loss: 8.3363 - val_mae: 2.0389 - val_mse: 8.3363\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 71/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.7877 - mae: 1.8276 - mse: 6.7877 - val_loss: 8.5638 - val_mae: 2.0866 - val_mse: 8.5638\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 72/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.9769 - mae: 1.8271 - mse: 6.9769 - val_loss: 8.8546 - val_mae: 2.1616 - val_mse: 8.8546\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 73/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.8571 - mae: 1.8383 - mse: 6.8571 - val_loss: 8.1234 - val_mae: 2.0600 - val_mse: 8.1234\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 74/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.8301 - mae: 1.8219 - mse: 6.8301 - val_loss: 8.2102 - val_mae: 2.0354 - val_mse: 8.2102\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 75/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.7562 - mae: 1.8214 - mse: 6.7562 - val_loss: 8.4574 - val_mae: 2.1038 - val_mse: 8.4574\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 76/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.5747 - mae: 1.7726 - mse: 6.5747 - val_loss: 9.3396 - val_mae: 2.2729 - val_mse: 9.3396\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 77/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.6467 - mae: 1.7824 - mse: 6.6467 - val_loss: 8.9306 - val_mae: 2.1530 - val_mse: 8.9306\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 78/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.5600 - mae: 1.7864 - mse: 6.5600 - val_loss: 8.2530 - val_mae: 2.0533 - val_mse: 8.2530\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 79/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.3958 - mae: 1.7473 - mse: 6.3958 - val_loss: 7.8694 - val_mae: 2.0041 - val_mse: 7.8694\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 80/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.2345 - mae: 1.7558 - mse: 6.2345 - val_loss: 7.9594 - val_mae: 2.0160 - val_mse: 7.9594\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 81/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.1966 - mae: 1.7368 - mse: 6.1966 - val_loss: 7.9694 - val_mae: 2.0042 - val_mse: 7.9694\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 82/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.0636 - mae: 1.7692 - mse: 6.0636 - val_loss: 7.6473 - val_mae: 1.9737 - val_mse: 7.6473\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 83/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.0333 - mae: 1.7385 - mse: 6.0333 - val_loss: 9.3755 - val_mae: 2.2669 - val_mse: 9.3755\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 84/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 6.2546 - mae: 1.7511 - mse: 6.2546 - val_loss: 7.9122 - val_mae: 2.0064 - val_mse: 7.9122\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 85/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.7537 - mae: 1.7018 - mse: 5.7537 - val_loss: 7.6653 - val_mae: 1.9648 - val_mse: 7.6653\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 86/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.9497 - mae: 1.7138 - mse: 5.9497 - val_loss: 8.1256 - val_mae: 2.0543 - val_mse: 8.1256\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 87/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.8180 - mae: 1.6937 - mse: 5.8180 - val_loss: 8.2221 - val_mae: 2.0478 - val_mse: 8.2221\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 88/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.8592 - mae: 1.6974 - mse: 5.8592 - val_loss: 7.7128 - val_mae: 1.9818 - val_mse: 7.7128\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 89/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.7088 - mae: 1.6802 - mse: 5.7088 - val_loss: 7.9647 - val_mae: 1.9949 - val_mse: 7.9647\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 90/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.6122 - mae: 1.6606 - mse: 5.6122 - val_loss: 9.0089 - val_mae: 2.1664 - val_mse: 9.0089\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 91/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.7143 - mae: 1.6638 - mse: 5.7143 - val_loss: 7.9427 - val_mae: 1.9977 - val_mse: 7.9427\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 92/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.4997 - mae: 1.6691 - mse: 5.4997 - val_loss: 7.5745 - val_mae: 1.9386 - val_mse: 7.5745\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 93/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.2810 - mae: 1.6264 - mse: 5.2810 - val_loss: 8.3712 - val_mae: 2.0859 - val_mse: 8.3712\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 94/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.2594 - mae: 1.5943 - mse: 5.2594 - val_loss: 9.5673 - val_mae: 2.2581 - val_mse: 9.5673\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 95/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.4449 - mae: 1.6097 - mse: 5.4449 - val_loss: 7.9021 - val_mae: 1.9875 - val_mse: 7.9021\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 96/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.2279 - mae: 1.6336 - mse: 5.2279 - val_loss: 8.5401 - val_mae: 2.0221 - val_mse: 8.5401\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 97/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.4997 - mae: 1.6162 - mse: 5.4997 - val_loss: 7.8757 - val_mae: 2.0099 - val_mse: 7.8757\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 98/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.1612 - mae: 1.6110 - mse: 5.1612 - val_loss: 7.9834 - val_mae: 2.0433 - val_mse: 7.9834\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 99/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.2353 - mae: 1.6433 - mse: 5.2353 - val_loss: 8.1701 - val_mae: 2.0359 - val_mse: 8.1701\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "Epoch 100/100\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "36/36 [==============================] - 0s 3ms/step - loss: 5.1282 - mae: 1.6134 - mse: 5.1282 - val_loss: 7.8599 - val_mae: 1.9740 - val_mse: 7.8599\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."
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [