{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\n", "\n", "# <!-- TITLE --> [BHP2] - Regression with a Dense Network (DNN) - Advanced code\n", " <!-- DESC --> More advanced example of DNN network code - BHPD dataset\n", " <!-- AUTHOR : Jean-Luc Parouty (CNRS/SIMaP) -->\n", "\n", "## Objectives :\n", " - Predicts **housing prices** from a set of house features. \n", " - Understanding the principle and the architecture of a regression with a dense neural network with backup and restore of the trained model. \n", "\n", "The **[Boston Housing Dataset](https://www.cs.toronto.edu/~delve/data/boston/bostonDetail.html)** consists of price of houses in various places in Boston. \n", "Alongside with price, the dataset also provide these information :\n", "\n", " - CRIM: This is the per capita crime rate by town\n", " - ZN: This is the proportion of residential land zoned for lots larger than 25,000 sq.ft\n", " - INDUS: This is the proportion of non-retail business acres per town\n", " - CHAS: This is the Charles River dummy variable (this is equal to 1 if tract bounds river; 0 otherwise)\n", " - NOX: This is the nitric oxides concentration (parts per 10 million)\n", " - RM: This is the average number of rooms per dwelling\n", " - AGE: This is the proportion of owner-occupied units built prior to 1940\n", " - DIS: This is the weighted distances to five Boston employment centers\n", " - RAD: This is the index of accessibility to radial highways\n", " - TAX: This is the full-value property-tax rate per 10,000 dollars\n", " - PTRATIO: This is the pupil-teacher ratio by town\n", " - B: This is calculated as 1000(Bk — 0.63)^2, where Bk is the proportion of people of African American descent by town\n", " - LSTAT: This is the percentage lower status of the population\n", " - MEDV: This is the median value of owner-occupied homes in 1000 dollars\n", "\n", "## What we're going to do :\n", "\n", " - (Retrieve data)\n", " - (Preparing the data)\n", " - (Build a model)\n", " - Train and save the model\n", " - Restore saved model\n", " - Evaluate the model\n", " - Make some predictions\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 1 - Import and init" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>\n", "\n", "div.warn { \n", " background-color: #fcf2f2;\n", " border-color: #dFb5b4;\n", " border-left: 5px solid #dfb5b4;\n", " padding: 0.5em;\n", " font-weight: bold;\n", " font-size: 1.1em;;\n", " }\n", "\n", "\n", "\n", "div.nota { \n", " background-color: #DAFFDE;\n", " border-left: 5px solid #92CC99;\n", " padding: 0.5em;\n", " }\n", "\n", "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n", " float:left;\n", " margin-right:20px;\n", " margin-top:-20px;\n", " margin-bottom:20px;\n", "}\n", "div.todo{\n", " font-weight: bold;\n", " font-size: 1.1em;\n", " margin-top:40px;\n", "}\n", "div.todo ul{\n", " margin: 0.2em;\n", "}\n", "div.todo li{\n", " margin-left:60px;\n", " margin-top:0;\n", " margin-bottom:0;\n", "}\n", "\n", "\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.5.4\n", "Run time : Tuesday 8 September 2020, 19:03:13\n", "TensorFlow version : 2.0.0\n", "Keras version : 2.2.4-tf\n", "Current place : Fidle at HOME\n", "Dataset dir : /home/pjluc/datasets\n", "Update keras cache : Yes\n" ] } ], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import os,sys\n", "\n", "from IPython.display import Markdown\n", "from importlib import reload\n", "\n", "sys.path.append('..')\n", "import fidle.pwk as ooo\n", "\n", "place, dataset_dir = ooo.init(places={'MyLaptop':'/path/to/datasets'})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 2 - Retrieve data\n", "\n", "### 2.1 - Option 1 : From Keras\n", "Boston housing is a famous historic dataset, so we can get it directly from [Keras datasets](https://www.tensorflow.org/api_docs/python/tf/keras/datasets) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# (x_train, y_train), (x_test, y_test) = keras.datasets.boston_housing.load_data(test_split=0.2, seed=113)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 - Option 2 : From a csv file\n", "More fun !" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08\" ><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> <th class=\"col_heading level0 col13\" >medv</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08level0_row0\" class=\"row_heading level0 row0\" >0</th>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col0\" class=\"data row0 col0\" >0.01</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col1\" class=\"data row0 col1\" >18.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col2\" class=\"data row0 col2\" >2.31</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col3\" class=\"data row0 col3\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col4\" class=\"data row0 col4\" >0.54</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col5\" class=\"data row0 col5\" >6.58</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col6\" class=\"data row0 col6\" >65.20</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col7\" class=\"data row0 col7\" >4.09</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col8\" class=\"data row0 col8\" >1.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col9\" class=\"data row0 col9\" >296.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col10\" class=\"data row0 col10\" >15.30</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col11\" class=\"data row0 col11\" >396.90</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col12\" class=\"data row0 col12\" >4.98</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row0_col13\" class=\"data row0 col13\" >24.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08level0_row1\" class=\"row_heading level0 row1\" >1</th>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col0\" class=\"data row1 col0\" >0.03</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col1\" class=\"data row1 col1\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col2\" class=\"data row1 col2\" >7.07</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col3\" class=\"data row1 col3\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col4\" class=\"data row1 col4\" >0.47</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col5\" class=\"data row1 col5\" >6.42</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col6\" class=\"data row1 col6\" >78.90</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col7\" class=\"data row1 col7\" >4.97</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col8\" class=\"data row1 col8\" >2.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col9\" class=\"data row1 col9\" >242.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col10\" class=\"data row1 col10\" >17.80</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col11\" class=\"data row1 col11\" >396.90</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col12\" class=\"data row1 col12\" >9.14</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row1_col13\" class=\"data row1 col13\" >21.60</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08level0_row2\" class=\"row_heading level0 row2\" >2</th>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col0\" class=\"data row2 col0\" >0.03</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col1\" class=\"data row2 col1\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col2\" class=\"data row2 col2\" >7.07</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col3\" class=\"data row2 col3\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col4\" class=\"data row2 col4\" >0.47</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col5\" class=\"data row2 col5\" >7.18</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col6\" class=\"data row2 col6\" >61.10</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col7\" class=\"data row2 col7\" >4.97</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col8\" class=\"data row2 col8\" >2.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col9\" class=\"data row2 col9\" >242.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col10\" class=\"data row2 col10\" >17.80</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col11\" class=\"data row2 col11\" >392.83</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col12\" class=\"data row2 col12\" >4.03</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row2_col13\" class=\"data row2 col13\" >34.70</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08level0_row3\" class=\"row_heading level0 row3\" >3</th>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col0\" class=\"data row3 col0\" >0.03</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col1\" class=\"data row3 col1\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col2\" class=\"data row3 col2\" >2.18</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col3\" class=\"data row3 col3\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col4\" class=\"data row3 col4\" >0.46</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col5\" class=\"data row3 col5\" >7.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col6\" class=\"data row3 col6\" >45.80</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col7\" class=\"data row3 col7\" >6.06</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col8\" class=\"data row3 col8\" >3.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col9\" class=\"data row3 col9\" >222.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col10\" class=\"data row3 col10\" >18.70</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col11\" class=\"data row3 col11\" >394.63</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col12\" class=\"data row3 col12\" >2.94</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row3_col13\" class=\"data row3 col13\" >33.40</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08level0_row4\" class=\"row_heading level0 row4\" >4</th>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col0\" class=\"data row4 col0\" >0.07</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col1\" class=\"data row4 col1\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col2\" class=\"data row4 col2\" >2.18</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col3\" class=\"data row4 col3\" >0.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col4\" class=\"data row4 col4\" >0.46</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col5\" class=\"data row4 col5\" >7.15</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col6\" class=\"data row4 col6\" >54.20</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col7\" class=\"data row4 col7\" >6.06</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col8\" class=\"data row4 col8\" >3.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col9\" class=\"data row4 col9\" >222.00</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col10\" class=\"data row4 col10\" >18.70</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col11\" class=\"data row4 col11\" >396.90</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col12\" class=\"data row4 col12\" >5.33</td>\n", " <td id=\"T_2e2c9e06_f1f5_11ea_9e87_677b8e0bcd08row4_col13\" class=\"data row4 col13\" >36.20</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x7ffe29c64d10>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Missing Data : 0 Shape is : (506, 14)\n" ] } ], "source": [ "data = pd.read_csv(f'{dataset_dir}/BHPD/BostonHousing.csv', header=0)\n", "\n", "display(data.head(5).style.format(\"{0:.2f}\"))\n", "print('Missing Data : ',data.isna().sum().sum(), ' Shape is : ', data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 3 - Preparing the data\n", "### 3.1 - Split data\n", "We will use 80% of the data for training and 20% for validation. \n", "x will be input data and y the expected output" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original data shape was : (506, 14)\n", "x_train : (354, 13) y_train : (354,)\n", "x_test : (152, 13) y_test : (152,)\n" ] } ], "source": [ "# ---- Split => train, test\n", "#\n", "data_train = data.sample(frac=0.7, axis=0)\n", "data_test = data.drop(data_train.index)\n", "\n", "# ---- Split => x,y (medv is price)\n", "#\n", "x_train = data_train.drop('medv', axis=1)\n", "y_train = data_train['medv']\n", "x_test = data_test.drop('medv', axis=1)\n", "y_test = data_test['medv']\n", "\n", "print('Original data shape was : ',data.shape)\n", "print('x_train : ',x_train.shape, 'y_train : ',y_train.shape)\n", "print('x_test : ',x_test.shape, 'y_test : ',y_test.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 - Data normalization\n", "**Note :** \n", " - All input data must be normalized, train and test. \n", " - To do this we will subtract the mean and divide by the standard deviation. \n", " - But test data should not be used in any way, even for normalization. \n", " - The mean and the standard deviation will therefore only be calculated with the train data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08\" ><caption>Before normalization :</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row0\" class=\"row_heading level0 row0\" >count</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col0\" class=\"data row0 col0\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col1\" class=\"data row0 col1\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col2\" class=\"data row0 col2\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col3\" class=\"data row0 col3\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col4\" class=\"data row0 col4\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col5\" class=\"data row0 col5\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col6\" class=\"data row0 col6\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col7\" class=\"data row0 col7\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col8\" class=\"data row0 col8\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col9\" class=\"data row0 col9\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col10\" class=\"data row0 col10\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col11\" class=\"data row0 col11\" >354.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row0_col12\" class=\"data row0 col12\" >354.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col0\" class=\"data row1 col0\" >3.32</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col1\" class=\"data row1 col1\" >12.33</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col2\" class=\"data row1 col2\" >11.39</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col3\" class=\"data row1 col3\" >0.07</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col4\" class=\"data row1 col4\" >0.55</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col5\" class=\"data row1 col5\" >6.27</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col6\" class=\"data row1 col6\" >67.04</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col7\" class=\"data row1 col7\" >3.83</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col8\" class=\"data row1 col8\" >9.43</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col9\" class=\"data row1 col9\" >408.21</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col10\" class=\"data row1 col10\" >18.45</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col11\" class=\"data row1 col11\" >356.12</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row1_col12\" class=\"data row1 col12\" >12.41</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row2\" class=\"row_heading level0 row2\" >std</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col0\" class=\"data row2 col0\" >7.78</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col1\" class=\"data row2 col1\" >24.49</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col2\" class=\"data row2 col2\" >7.06</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col3\" class=\"data row2 col3\" >0.26</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col4\" class=\"data row2 col4\" >0.12</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col5\" class=\"data row2 col5\" >0.67</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col6\" class=\"data row2 col6\" >29.01</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col7\" class=\"data row2 col7\" >2.10</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col8\" class=\"data row2 col8\" >8.75</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col9\" class=\"data row2 col9\" >170.18</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col10\" class=\"data row2 col10\" >2.17</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col11\" class=\"data row2 col11\" >94.01</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row2_col12\" class=\"data row2 col12\" >6.77</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row3\" class=\"row_heading level0 row3\" >min</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col0\" class=\"data row3 col0\" >0.01</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col1\" class=\"data row3 col1\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col2\" class=\"data row3 col2\" >0.46</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col3\" class=\"data row3 col3\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col4\" class=\"data row3 col4\" >0.39</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col5\" class=\"data row3 col5\" >3.56</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col6\" class=\"data row3 col6\" >6.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col7\" class=\"data row3 col7\" >1.17</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col8\" class=\"data row3 col8\" >1.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col9\" class=\"data row3 col9\" >188.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col10\" class=\"data row3 col10\" >12.60</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col11\" class=\"data row3 col11\" >2.52</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row3_col12\" class=\"data row3 col12\" >1.92</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col0\" class=\"data row4 col0\" >0.08</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col1\" class=\"data row4 col1\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col2\" class=\"data row4 col2\" >5.19</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col3\" class=\"data row4 col3\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col4\" class=\"data row4 col4\" >0.45</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col5\" class=\"data row4 col5\" >5.88</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col6\" class=\"data row4 col6\" >41.20</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col7\" class=\"data row4 col7\" >2.09</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col8\" class=\"data row4 col8\" >4.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col9\" class=\"data row4 col9\" >277.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col10\" class=\"data row4 col10\" >17.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col11\" class=\"data row4 col11\" >376.60</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row4_col12\" class=\"data row4 col12\" >7.12</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col0\" class=\"data row5 col0\" >0.25</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col1\" class=\"data row5 col1\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col2\" class=\"data row5 col2\" >9.90</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col3\" class=\"data row5 col3\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col4\" class=\"data row5 col4\" >0.54</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col5\" class=\"data row5 col5\" >6.21</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col6\" class=\"data row5 col6\" >76.50</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col7\" class=\"data row5 col7\" >3.27</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col8\" class=\"data row5 col8\" >5.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col9\" class=\"data row5 col9\" >330.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col10\" class=\"data row5 col10\" >19.10</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col11\" class=\"data row5 col11\" >392.28</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row5_col12\" class=\"data row5 col12\" >11.38</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col0\" class=\"data row6 col0\" >3.52</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col1\" class=\"data row6 col1\" >20.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col2\" class=\"data row6 col2\" >18.10</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col3\" class=\"data row6 col3\" >0.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col4\" class=\"data row6 col4\" >0.62</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col5\" class=\"data row6 col5\" >6.60</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col6\" class=\"data row6 col6\" >94.07</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col7\" class=\"data row6 col7\" >5.23</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col8\" class=\"data row6 col8\" >24.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col9\" class=\"data row6 col9\" >666.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col10\" class=\"data row6 col10\" >20.20</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col11\" class=\"data row6 col11\" >396.78</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row6_col12\" class=\"data row6 col12\" >16.82</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08level0_row7\" class=\"row_heading level0 row7\" >max</th>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col0\" class=\"data row7 col0\" >73.53</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col1\" class=\"data row7 col1\" >100.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col2\" class=\"data row7 col2\" >27.74</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col3\" class=\"data row7 col3\" >1.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col4\" class=\"data row7 col4\" >0.87</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col5\" class=\"data row7 col5\" >8.78</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col6\" class=\"data row7 col6\" >100.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col7\" class=\"data row7 col7\" >10.71</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col8\" class=\"data row7 col8\" >24.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col9\" class=\"data row7 col9\" >711.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col10\" class=\"data row7 col10\" >22.00</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col11\" class=\"data row7 col11\" >396.90</td>\n", " <td id=\"T_2e34d652_f1f5_11ea_9e87_677b8e0bcd08row7_col12\" class=\"data row7 col12\" >34.77</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x7ffea457afd0>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08\" ><caption>After normalization :</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row0\" class=\"row_heading level0 row0\" >count</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col0\" class=\"data row0 col0\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col1\" class=\"data row0 col1\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col2\" class=\"data row0 col2\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col3\" class=\"data row0 col3\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col4\" class=\"data row0 col4\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col5\" class=\"data row0 col5\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col6\" class=\"data row0 col6\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col7\" class=\"data row0 col7\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col8\" class=\"data row0 col8\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col9\" class=\"data row0 col9\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col10\" class=\"data row0 col10\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col11\" class=\"data row0 col11\" >354.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row0_col12\" class=\"data row0 col12\" >354.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col0\" class=\"data row1 col0\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col1\" class=\"data row1 col1\" >-0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col2\" class=\"data row1 col2\" >-0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col3\" class=\"data row1 col3\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col4\" class=\"data row1 col4\" >-0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col5\" class=\"data row1 col5\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col6\" class=\"data row1 col6\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col7\" class=\"data row1 col7\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col8\" class=\"data row1 col8\" >-0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col9\" class=\"data row1 col9\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col10\" class=\"data row1 col10\" >0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col11\" class=\"data row1 col11\" >-0.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row1_col12\" class=\"data row1 col12\" >0.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row2\" class=\"row_heading level0 row2\" >std</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col0\" class=\"data row2 col0\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col1\" class=\"data row2 col1\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col2\" class=\"data row2 col2\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col3\" class=\"data row2 col3\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col4\" class=\"data row2 col4\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col5\" class=\"data row2 col5\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col6\" class=\"data row2 col6\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col7\" class=\"data row2 col7\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col8\" class=\"data row2 col8\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col9\" class=\"data row2 col9\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col10\" class=\"data row2 col10\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col11\" class=\"data row2 col11\" >1.00</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row2_col12\" class=\"data row2 col12\" >1.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row3\" class=\"row_heading level0 row3\" >min</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col0\" class=\"data row3 col0\" >-0.43</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col1\" class=\"data row3 col1\" >-0.50</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col2\" class=\"data row3 col2\" >-1.55</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col3\" class=\"data row3 col3\" >-0.28</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col4\" class=\"data row3 col4\" >-1.44</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col5\" class=\"data row3 col5\" >-4.04</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col6\" class=\"data row3 col6\" >-2.10</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col7\" class=\"data row3 col7\" >-1.27</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col8\" class=\"data row3 col8\" >-0.96</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col9\" class=\"data row3 col9\" >-1.29</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col10\" class=\"data row3 col10\" >-2.69</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col11\" class=\"data row3 col11\" >-3.76</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row3_col12\" class=\"data row3 col12\" >-1.55</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col0\" class=\"data row4 col0\" >-0.42</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col1\" class=\"data row4 col1\" >-0.50</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col2\" class=\"data row4 col2\" >-0.88</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col3\" class=\"data row4 col3\" >-0.28</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col4\" class=\"data row4 col4\" >-0.90</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col5\" class=\"data row4 col5\" >-0.59</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col6\" class=\"data row4 col6\" >-0.89</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col7\" class=\"data row4 col7\" >-0.83</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col8\" class=\"data row4 col8\" >-0.62</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col9\" class=\"data row4 col9\" >-0.77</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col10\" class=\"data row4 col10\" >-0.67</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col11\" class=\"data row4 col11\" >0.22</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row4_col12\" class=\"data row4 col12\" >-0.78</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col0\" class=\"data row5 col0\" >-0.39</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col1\" class=\"data row5 col1\" >-0.50</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col2\" class=\"data row5 col2\" >-0.21</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col3\" class=\"data row5 col3\" >-0.28</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col4\" class=\"data row5 col4\" >-0.13</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col5\" class=\"data row5 col5\" >-0.09</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col6\" class=\"data row5 col6\" >0.33</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col7\" class=\"data row5 col7\" >-0.26</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col8\" class=\"data row5 col8\" >-0.51</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col9\" class=\"data row5 col9\" >-0.46</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col10\" class=\"data row5 col10\" >0.30</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col11\" class=\"data row5 col11\" >0.38</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row5_col12\" class=\"data row5 col12\" >-0.15</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col0\" class=\"data row6 col0\" >0.03</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col1\" class=\"data row6 col1\" >0.31</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col2\" class=\"data row6 col2\" >0.95</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col3\" class=\"data row6 col3\" >-0.28</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col4\" class=\"data row6 col4\" >0.60</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col5\" class=\"data row6 col5\" >0.49</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col6\" class=\"data row6 col6\" >0.93</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col7\" class=\"data row6 col7\" >0.67</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col8\" class=\"data row6 col8\" >1.66</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col9\" class=\"data row6 col9\" >1.51</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col10\" class=\"data row6 col10\" >0.81</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col11\" class=\"data row6 col11\" >0.43</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row6_col12\" class=\"data row6 col12\" >0.65</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08level0_row7\" class=\"row_heading level0 row7\" >max</th>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col0\" class=\"data row7 col0\" >9.02</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col1\" class=\"data row7 col1\" >3.58</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col2\" class=\"data row7 col2\" >2.32</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col3\" class=\"data row7 col3\" >3.55</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col4\" class=\"data row7 col4\" >2.71</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col5\" class=\"data row7 col5\" >3.74</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col6\" class=\"data row7 col6\" >1.14</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col7\" class=\"data row7 col7\" >3.29</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col8\" class=\"data row7 col8\" >1.66</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col9\" class=\"data row7 col9\" >1.78</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col10\" class=\"data row7 col10\" >1.64</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col11\" class=\"data row7 col11\" >0.43</td>\n", " <td id=\"T_2e3c00da_f1f5_11ea_9e87_677b8e0bcd08row7_col12\" class=\"data row7 col12\" >3.30</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x7ffea452d1d0>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(x_train.describe().style.format(\"{0:.2f}\").set_caption(\"Before normalization :\"))\n", "\n", "mean = x_train.mean()\n", "std = x_train.std()\n", "x_train = (x_train - mean) / std\n", "x_test = (x_test - mean) / std\n", "\n", "display(x_train.describe().style.format(\"{0:.2f}\").set_caption(\"After normalization :\"))\n", "\n", "x_train, y_train = np.array(x_train), np.array(y_train)\n", "x_test, y_test = np.array(x_test), np.array(y_test)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 4 - Build a model\n", "More informations about : \n", " - [Optimizer](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers)\n", " - [Activation](https://www.tensorflow.org/api_docs/python/tf/keras/activations)\n", " - [Loss](https://www.tensorflow.org/api_docs/python/tf/keras/losses)\n", " - [Metrics](https://www.tensorflow.org/api_docs/python/tf/keras/metrics)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ " def get_model_v1(shape):\n", " \n", " model = keras.models.Sequential()\n", " model.add(keras.layers.Input(shape, name=\"InputLayer\"))\n", " model.add(keras.layers.Dense(64, activation='relu', name='Dense_n1'))\n", " model.add(keras.layers.Dense(64, activation='relu', name='Dense_n2'))\n", " model.add(keras.layers.Dense(1, name='Output'))\n", " \n", " model.compile(optimizer = 'rmsprop',\n", " loss = 'mse',\n", " metrics = ['mae', 'mse'] )\n", " return model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5 - Train the model\n", "### 5.1 - Get it" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "Dense_n1 (Dense) (None, 64) 896 \n", "_________________________________________________________________\n", "Dense_n2 (Dense) (None, 64) 4160 \n", "_________________________________________________________________\n", "Output (Dense) (None, 1) 65 \n", "=================================================================\n", "Total params: 5,121\n", "Trainable params: 5,121\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<IPython.core.display.Image object>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model=get_model_v1( (13,) )\n", "\n", "model.summary()\n", "img=keras.utils.plot_model( model, to_file='./run/model.png', show_shapes=True, show_layer_names=True, dpi=96)\n", "display(img)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.2 - Add callback" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "os.makedirs('./run/models', mode=0o750, exist_ok=True)\n", "save_dir = \"./run/models/best_model.h5\"\n", "\n", "savemodel_callback = tf.keras.callbacks.ModelCheckpoint(filepath=save_dir, verbose=0, save_best_only=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.3 - Train it" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 354 samples, validate on 152 samples\n", "Epoch 1/100\n", "354/354 [==============================] - 1s 2ms/sample - loss: 429.1682 - mae: 18.8468 - mse: 429.1683 - val_loss: 352.0686 - val_mae: 16.2867 - val_mse: 352.0686\n", "Epoch 2/100\n", "354/354 [==============================] - 0s 220us/sample - loss: 187.3996 - mae: 11.6919 - mse: 187.3996 - val_loss: 124.8861 - val_mae: 8.8280 - val_mse: 124.8861\n", "Epoch 3/100\n", "354/354 [==============================] - 0s 226us/sample - loss: 60.9587 - mae: 6.1852 - mse: 60.9587 - val_loss: 64.7766 - val_mae: 5.7120 - val_mse: 64.7766\n", "Epoch 4/100\n", "354/354 [==============================] - 0s 215us/sample - loss: 33.4901 - mae: 4.3295 - mse: 33.4901 - val_loss: 42.7490 - val_mae: 4.3789 - val_mse: 42.7490\n", "Epoch 5/100\n", "354/354 [==============================] - 0s 218us/sample - loss: 23.7739 - mae: 3.5450 - mse: 23.7739 - val_loss: 35.5486 - val_mae: 3.8631 - val_mse: 35.5486\n", "Epoch 6/100\n", "354/354 [==============================] - 0s 224us/sample - loss: 18.6308 - mae: 3.0728 - mse: 18.6308 - val_loss: 31.7546 - val_mae: 3.6386 - val_mse: 31.7546\n", "Epoch 7/100\n", "354/354 [==============================] - 0s 219us/sample - loss: 16.3552 - mae: 2.8485 - mse: 16.3552 - val_loss: 29.6702 - val_mae: 3.5472 - val_mse: 29.6702\n", "Epoch 8/100\n", "354/354 [==============================] - 0s 225us/sample - loss: 15.0688 - mae: 2.7065 - mse: 15.0688 - val_loss: 27.7940 - val_mae: 3.4281 - val_mse: 27.7940\n", "Epoch 9/100\n", "354/354 [==============================] - 0s 219us/sample - loss: 13.7102 - mae: 2.5252 - mse: 13.7102 - val_loss: 25.8524 - val_mae: 3.3030 - val_mse: 25.8524\n", "Epoch 10/100\n", "354/354 [==============================] - 0s 214us/sample - loss: 13.0620 - mae: 2.4623 - mse: 13.0620 - val_loss: 24.1970 - val_mae: 3.2497 - val_mse: 24.1970\n", "Epoch 11/100\n", "354/354 [==============================] - 0s 181us/sample - loss: 12.3652 - mae: 2.4164 - mse: 12.3652 - val_loss: 25.3418 - val_mae: 3.2958 - val_mse: 25.3418\n", "Epoch 12/100\n", "354/354 [==============================] - 0s 209us/sample - loss: 11.8866 - mae: 2.3633 - mse: 11.8866 - val_loss: 23.2097 - val_mae: 3.1934 - val_mse: 23.2097\n", "Epoch 13/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 11.5238 - mae: 2.2892 - mse: 11.5238 - val_loss: 23.2434 - val_mae: 3.1315 - val_mse: 23.2434\n", "Epoch 14/100\n", "354/354 [==============================] - 0s 208us/sample - loss: 11.1692 - mae: 2.2504 - mse: 11.1692 - val_loss: 22.5373 - val_mae: 3.0818 - val_mse: 22.5373\n", "Epoch 15/100\n", "354/354 [==============================] - 0s 215us/sample - loss: 10.8398 - mae: 2.2416 - mse: 10.8398 - val_loss: 21.5891 - val_mae: 3.0361 - val_mse: 21.5891\n", "Epoch 16/100\n", "354/354 [==============================] - 0s 171us/sample - loss: 10.7131 - mae: 2.2010 - mse: 10.7131 - val_loss: 22.0238 - val_mae: 3.0444 - val_mse: 22.0238\n", "Epoch 17/100\n", "354/354 [==============================] - 0s 207us/sample - loss: 10.4554 - mae: 2.2160 - mse: 10.4554 - val_loss: 20.3310 - val_mae: 3.0210 - val_mse: 20.3310\n", "Epoch 18/100\n", "354/354 [==============================] - 0s 215us/sample - loss: 10.1969 - mae: 2.1522 - mse: 10.1969 - val_loss: 19.8989 - val_mae: 3.0406 - val_mse: 19.8989\n", "Epoch 19/100\n", "354/354 [==============================] - 0s 231us/sample - loss: 9.8782 - mae: 2.1273 - mse: 9.8782 - val_loss: 19.5894 - val_mae: 3.0204 - val_mse: 19.5894\n", "Epoch 20/100\n", "354/354 [==============================] - 0s 179us/sample - loss: 9.6757 - mae: 2.1045 - mse: 9.6757 - val_loss: 20.2566 - val_mae: 2.9530 - val_mse: 20.2566\n", "Epoch 21/100\n", "354/354 [==============================] - 0s 209us/sample - loss: 9.7305 - mae: 2.1052 - mse: 9.7305 - val_loss: 19.3397 - val_mae: 2.9417 - val_mse: 19.3397\n", "Epoch 22/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 9.3255 - mae: 2.0713 - mse: 9.3255 - val_loss: 20.6716 - val_mae: 2.9769 - val_mse: 20.6716\n", "Epoch 23/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 9.4971 - mae: 2.0784 - mse: 9.4971 - val_loss: 19.5308 - val_mae: 2.8951 - val_mse: 19.5308\n", "Epoch 24/100\n", "354/354 [==============================] - 0s 171us/sample - loss: 9.3786 - mae: 2.0279 - mse: 9.3786 - val_loss: 20.0007 - val_mae: 2.9042 - val_mse: 20.0007\n", "Epoch 25/100\n", "354/354 [==============================] - 0s 164us/sample - loss: 9.2494 - mae: 2.0473 - mse: 9.2494 - val_loss: 19.8543 - val_mae: 2.9153 - val_mse: 19.8543\n", "Epoch 26/100\n", "354/354 [==============================] - 0s 178us/sample - loss: 8.8924 - mae: 1.9611 - mse: 8.8924 - val_loss: 20.1059 - val_mae: 3.0175 - val_mse: 20.1059\n", "Epoch 27/100\n", "354/354 [==============================] - 0s 211us/sample - loss: 8.8493 - mae: 1.9850 - mse: 8.8493 - val_loss: 19.0924 - val_mae: 2.9133 - val_mse: 19.0924\n", "Epoch 28/100\n", "354/354 [==============================] - 0s 222us/sample - loss: 8.7235 - mae: 1.9539 - mse: 8.7235 - val_loss: 18.8848 - val_mae: 2.8254 - val_mse: 18.8848\n", "Epoch 29/100\n", "354/354 [==============================] - 0s 212us/sample - loss: 8.4714 - mae: 1.9410 - mse: 8.4714 - val_loss: 18.6757 - val_mae: 2.8632 - val_mse: 18.6757\n", "Epoch 30/100\n", "354/354 [==============================] - 0s 213us/sample - loss: 8.5340 - mae: 1.9305 - mse: 8.5340 - val_loss: 17.5472 - val_mae: 2.9041 - val_mse: 17.5472\n", "Epoch 31/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 8.2329 - mae: 1.9490 - mse: 8.2329 - val_loss: 18.3023 - val_mae: 2.8256 - val_mse: 18.3023\n", "Epoch 32/100\n", "354/354 [==============================] - 0s 179us/sample - loss: 8.2141 - mae: 1.8936 - mse: 8.2141 - val_loss: 19.1499 - val_mae: 2.9304 - val_mse: 19.1499\n", "Epoch 33/100\n", "354/354 [==============================] - 0s 168us/sample - loss: 8.1556 - mae: 1.8934 - mse: 8.1556 - val_loss: 17.6018 - val_mae: 2.7829 - val_mse: 17.6018\n", "Epoch 34/100\n", "354/354 [==============================] - 0s 213us/sample - loss: 8.0088 - mae: 1.8932 - mse: 8.0088 - val_loss: 17.0437 - val_mae: 2.7469 - val_mse: 17.0437\n", "Epoch 35/100\n", "354/354 [==============================] - 0s 233us/sample - loss: 7.7964 - mae: 1.8813 - mse: 7.7964 - val_loss: 16.5385 - val_mae: 2.7644 - val_mse: 16.5385\n", "Epoch 36/100\n", "354/354 [==============================] - 0s 172us/sample - loss: 7.9428 - mae: 1.9060 - mse: 7.9428 - val_loss: 17.1548 - val_mae: 2.8017 - val_mse: 17.1548\n", "Epoch 37/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 7.8799 - mae: 1.8151 - mse: 7.8798 - val_loss: 18.0839 - val_mae: 2.7838 - val_mse: 18.0839\n", "Epoch 38/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 7.9034 - mae: 1.8507 - mse: 7.9034 - val_loss: 16.7612 - val_mae: 2.7060 - val_mse: 16.7612\n", "Epoch 39/100\n", "354/354 [==============================] - 0s 171us/sample - loss: 7.6441 - mae: 1.8198 - mse: 7.6441 - val_loss: 16.7067 - val_mae: 2.7185 - val_mse: 16.7067\n", "Epoch 40/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 7.7784 - mae: 1.8554 - mse: 7.7784 - val_loss: 16.5735 - val_mae: 2.6828 - val_mse: 16.5735\n", "Epoch 41/100\n", "354/354 [==============================] - 0s 222us/sample - loss: 7.4901 - mae: 1.8260 - mse: 7.4901 - val_loss: 16.4810 - val_mae: 2.6926 - val_mse: 16.4810\n", "Epoch 42/100\n", "354/354 [==============================] - 0s 171us/sample - loss: 7.4583 - mae: 1.7847 - mse: 7.4583 - val_loss: 16.6520 - val_mae: 2.6816 - val_mse: 16.6520\n", "Epoch 43/100\n", "354/354 [==============================] - 0s 213us/sample - loss: 7.1234 - mae: 1.8169 - mse: 7.1234 - val_loss: 16.1394 - val_mae: 2.8231 - val_mse: 16.1394\n", "Epoch 44/100\n", "354/354 [==============================] - 0s 176us/sample - loss: 7.3209 - mae: 1.8194 - mse: 7.3209 - val_loss: 17.1395 - val_mae: 2.7080 - val_mse: 17.1395\n", "Epoch 45/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 7.2618 - mae: 1.7858 - mse: 7.2618 - val_loss: 16.5276 - val_mae: 2.6765 - val_mse: 16.5276\n", "Epoch 46/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 7.0747 - mae: 1.7662 - mse: 7.0747 - val_loss: 16.8039 - val_mae: 2.7428 - val_mse: 16.8039\n", "Epoch 47/100\n", "354/354 [==============================] - 0s 205us/sample - loss: 6.9520 - mae: 1.7333 - mse: 6.9520 - val_loss: 15.9968 - val_mae: 2.6659 - val_mse: 15.9968\n", "Epoch 48/100\n", "354/354 [==============================] - 0s 178us/sample - loss: 6.9232 - mae: 1.7301 - mse: 6.9232 - val_loss: 16.2660 - val_mae: 2.6494 - val_mse: 16.2660\n", "Epoch 49/100\n", "354/354 [==============================] - 0s 207us/sample - loss: 7.0229 - mae: 1.7404 - mse: 7.0229 - val_loss: 15.6720 - val_mae: 2.6691 - val_mse: 15.6720\n", "Epoch 50/100\n", "354/354 [==============================] - 0s 184us/sample - loss: 6.7251 - mae: 1.7580 - mse: 6.7251 - val_loss: 17.0077 - val_mae: 2.7250 - val_mse: 17.0077\n", "Epoch 51/100\n", "354/354 [==============================] - 0s 185us/sample - loss: 6.8393 - mae: 1.7131 - mse: 6.8393 - val_loss: 16.5671 - val_mae: 2.6707 - val_mse: 16.5671\n", "Epoch 52/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 6.6647 - mae: 1.6831 - mse: 6.6647 - val_loss: 16.2175 - val_mae: 2.6816 - val_mse: 16.2175\n", "Epoch 53/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 6.5925 - mae: 1.7133 - mse: 6.5925 - val_loss: 16.8129 - val_mae: 2.6882 - val_mse: 16.8129\n", "Epoch 54/100\n", "354/354 [==============================] - 0s 211us/sample - loss: 6.5071 - mae: 1.6980 - mse: 6.5071 - val_loss: 15.6172 - val_mae: 2.7470 - val_mse: 15.6172\n", "Epoch 55/100\n", "354/354 [==============================] - 0s 237us/sample - loss: 6.4762 - mae: 1.7064 - mse: 6.4762 - val_loss: 15.1044 - val_mae: 2.6354 - val_mse: 15.1044\n", "Epoch 56/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 6.2826 - mae: 1.6902 - mse: 6.2826 - val_loss: 17.5892 - val_mae: 2.8422 - val_mse: 17.5892\n", "Epoch 57/100\n", "354/354 [==============================] - 0s 162us/sample - loss: 6.5736 - mae: 1.7001 - mse: 6.5736 - val_loss: 15.5415 - val_mae: 2.6102 - val_mse: 15.5415\n", "Epoch 58/100\n", "354/354 [==============================] - 0s 158us/sample - loss: 6.3667 - mae: 1.6807 - mse: 6.3667 - val_loss: 15.3699 - val_mae: 2.6143 - val_mse: 15.3699\n", "Epoch 59/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 6.3116 - mae: 1.6672 - mse: 6.3116 - val_loss: 15.1690 - val_mae: 2.6191 - val_mse: 15.1690\n", "Epoch 60/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 6.0480 - mae: 1.6076 - mse: 6.0480 - val_loss: 15.4159 - val_mae: 2.5666 - val_mse: 15.4159\n", "Epoch 61/100\n", "354/354 [==============================] - 0s 168us/sample - loss: 5.9372 - mae: 1.6170 - mse: 5.9372 - val_loss: 16.3723 - val_mae: 2.7008 - val_mse: 16.3723\n", "Epoch 62/100\n", "354/354 [==============================] - 0s 209us/sample - loss: 6.2295 - mae: 1.6809 - mse: 6.2295 - val_loss: 14.4432 - val_mae: 2.5659 - val_mse: 14.4432\n", "Epoch 63/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 6.0430 - mae: 1.6175 - mse: 6.0430 - val_loss: 15.7230 - val_mae: 2.6120 - val_mse: 15.7230\n", "Epoch 64/100\n", "354/354 [==============================] - 0s 165us/sample - loss: 5.8128 - mae: 1.5988 - mse: 5.8128 - val_loss: 15.3515 - val_mae: 2.6344 - val_mse: 15.3515\n", "Epoch 65/100\n", "354/354 [==============================] - 0s 163us/sample - loss: 6.0937 - mae: 1.6535 - mse: 6.0937 - val_loss: 15.0359 - val_mae: 2.6071 - val_mse: 15.0359\n", "Epoch 66/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 5.9493 - mae: 1.6212 - mse: 5.9493 - val_loss: 14.5079 - val_mae: 2.5570 - val_mse: 14.5079\n", "Epoch 67/100\n", "354/354 [==============================] - 0s 167us/sample - loss: 5.7467 - mae: 1.5815 - mse: 5.7467 - val_loss: 15.6834 - val_mae: 2.6418 - val_mse: 15.6834\n", "Epoch 68/100\n", "354/354 [==============================] - 0s 175us/sample - loss: 5.7754 - mae: 1.5822 - mse: 5.7754 - val_loss: 15.3485 - val_mae: 2.6661 - val_mse: 15.3485\n", "Epoch 69/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 5.8671 - mae: 1.6219 - mse: 5.8671 - val_loss: 14.7226 - val_mae: 2.5691 - val_mse: 14.7226\n", "Epoch 70/100\n", "354/354 [==============================] - 0s 161us/sample - loss: 5.5371 - mae: 1.5618 - mse: 5.5371 - val_loss: 15.4694 - val_mae: 2.7397 - val_mse: 15.4694\n", "Epoch 71/100\n", "354/354 [==============================] - 0s 184us/sample - loss: 5.7798 - mae: 1.6298 - mse: 5.7798 - val_loss: 14.9847 - val_mae: 2.5864 - val_mse: 14.9847\n", "Epoch 72/100\n", "354/354 [==============================] - 0s 215us/sample - loss: 5.6852 - mae: 1.5909 - mse: 5.6852 - val_loss: 14.4344 - val_mae: 2.5542 - val_mse: 14.4344\n", "Epoch 73/100\n", "354/354 [==============================] - 0s 226us/sample - loss: 5.4654 - mae: 1.5450 - mse: 5.4654 - val_loss: 13.7925 - val_mae: 2.5750 - val_mse: 13.7925\n", "Epoch 74/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 5.4204 - mae: 1.5595 - mse: 5.4204 - val_loss: 14.3083 - val_mae: 2.5919 - val_mse: 14.3083\n", "Epoch 75/100\n", "354/354 [==============================] - 0s 170us/sample - loss: 5.3183 - mae: 1.5827 - mse: 5.3183 - val_loss: 14.8913 - val_mae: 2.6033 - val_mse: 14.8913\n", "Epoch 76/100\n", "354/354 [==============================] - 0s 162us/sample - loss: 5.4595 - mae: 1.5874 - mse: 5.4595 - val_loss: 14.0410 - val_mae: 2.6021 - val_mse: 14.0410\n", "Epoch 77/100\n", "354/354 [==============================] - 0s 165us/sample - loss: 5.3295 - mae: 1.5586 - mse: 5.3295 - val_loss: 14.4499 - val_mae: 2.6315 - val_mse: 14.4499\n", "Epoch 78/100\n", "354/354 [==============================] - 0s 170us/sample - loss: 5.3187 - mae: 1.5144 - mse: 5.3187 - val_loss: 14.8048 - val_mae: 2.6123 - val_mse: 14.8048\n", "Epoch 79/100\n", "354/354 [==============================] - 0s 163us/sample - loss: 5.0078 - mae: 1.5458 - mse: 5.0078 - val_loss: 16.8855 - val_mae: 2.7085 - val_mse: 16.8855\n", "Epoch 80/100\n", "354/354 [==============================] - 0s 165us/sample - loss: 5.2642 - mae: 1.5158 - mse: 5.2642 - val_loss: 14.1548 - val_mae: 2.5029 - val_mse: 14.1548\n", "Epoch 81/100\n", "354/354 [==============================] - 0s 157us/sample - loss: 5.1865 - mae: 1.5163 - mse: 5.1865 - val_loss: 14.0614 - val_mae: 2.5335 - val_mse: 14.0614\n", "Epoch 82/100\n", "354/354 [==============================] - 0s 185us/sample - loss: 5.0460 - mae: 1.5366 - mse: 5.0460 - val_loss: 14.5370 - val_mae: 2.5429 - val_mse: 14.5370\n", "Epoch 83/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 4.9748 - mae: 1.5005 - mse: 4.9748 - val_loss: 14.7812 - val_mae: 2.6546 - val_mse: 14.7812\n", "Epoch 84/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 5.1114 - mae: 1.5233 - mse: 5.1114 - val_loss: 14.6264 - val_mae: 2.5917 - val_mse: 14.6264\n", "Epoch 85/100\n", "354/354 [==============================] - 0s 173us/sample - loss: 4.9709 - mae: 1.4471 - mse: 4.9709 - val_loss: 14.4156 - val_mae: 2.5713 - val_mse: 14.4156\n", "Epoch 86/100\n", "354/354 [==============================] - 0s 218us/sample - loss: 4.7742 - mae: 1.4547 - mse: 4.7742 - val_loss: 13.4703 - val_mae: 2.6523 - val_mse: 13.4703\n", "Epoch 87/100\n", "354/354 [==============================] - 0s 176us/sample - loss: 5.0550 - mae: 1.4842 - mse: 5.0550 - val_loss: 13.4970 - val_mae: 2.5958 - val_mse: 13.4970\n", "Epoch 88/100\n", "354/354 [==============================] - 0s 167us/sample - loss: 4.6993 - mae: 1.5044 - mse: 4.6993 - val_loss: 13.9216 - val_mae: 2.5554 - val_mse: 13.9216\n", "Epoch 89/100\n", "354/354 [==============================] - 0s 164us/sample - loss: 4.7660 - mae: 1.4815 - mse: 4.7660 - val_loss: 13.6762 - val_mae: 2.5521 - val_mse: 13.6762\n", "Epoch 90/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 4.6544 - mae: 1.4618 - mse: 4.6544 - val_loss: 14.6759 - val_mae: 2.5828 - val_mse: 14.6759\n", "Epoch 91/100\n", "354/354 [==============================] - 0s 240us/sample - loss: 4.7288 - mae: 1.4415 - mse: 4.7288 - val_loss: 13.2609 - val_mae: 2.6077 - val_mse: 13.2609\n", "Epoch 92/100\n", "354/354 [==============================] - 0s 177us/sample - loss: 4.6730 - mae: 1.4331 - mse: 4.6730 - val_loss: 13.4463 - val_mae: 2.7238 - val_mse: 13.4463\n", "Epoch 93/100\n", "354/354 [==============================] - 0s 163us/sample - loss: 4.4141 - mae: 1.4512 - mse: 4.4141 - val_loss: 13.6472 - val_mae: 2.5763 - val_mse: 13.6472\n", "Epoch 94/100\n", "354/354 [==============================] - 0s 165us/sample - loss: 4.5136 - mae: 1.4138 - mse: 4.5136 - val_loss: 15.7465 - val_mae: 2.7020 - val_mse: 15.7465\n", "Epoch 95/100\n", "354/354 [==============================] - 0s 168us/sample - loss: 4.6733 - mae: 1.4679 - mse: 4.6733 - val_loss: 13.3843 - val_mae: 2.5652 - val_mse: 13.3843\n", "Epoch 96/100\n", "354/354 [==============================] - 0s 174us/sample - loss: 4.6895 - mae: 1.4674 - mse: 4.6895 - val_loss: 13.7346 - val_mae: 2.5467 - val_mse: 13.7346\n", "Epoch 97/100\n", "354/354 [==============================] - 0s 166us/sample - loss: 4.3689 - mae: 1.4277 - mse: 4.3689 - val_loss: 13.6955 - val_mae: 2.5702 - val_mse: 13.6955\n", "Epoch 98/100\n", "354/354 [==============================] - 0s 167us/sample - loss: 4.3953 - mae: 1.3996 - mse: 4.3953 - val_loss: 13.6977 - val_mae: 2.5888 - val_mse: 13.6977\n", "Epoch 99/100\n", "354/354 [==============================] - 0s 160us/sample - loss: 4.3799 - mae: 1.4405 - mse: 4.3799 - val_loss: 15.0689 - val_mae: 2.6300 - val_mse: 15.0689\n", "Epoch 100/100\n", "354/354 [==============================] - 0s 205us/sample - loss: 4.3640 - mae: 1.4099 - mse: 4.3640 - val_loss: 12.8820 - val_mae: 2.5248 - val_mse: 12.8820\n" ] } ], "source": [ "history = model.fit(x_train,\n", " y_train,\n", " epochs = 100,\n", " batch_size = 10,\n", " verbose = 1,\n", " validation_data = (x_test, y_test),\n", " callbacks = [savemodel_callback])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 6 - Evaluate\n", "### 6.1 - Model evaluation\n", "MAE = Mean Absolute Error (between the labels and predictions) \n", "A mae equal to 3 represents an average error in prediction of $3k." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_test / loss : 12.8820\n", "x_test / mae : 2.5248\n", "x_test / mse : 12.8820\n" ] } ], "source": [ "score = model.evaluate(x_test, y_test, verbose=0)\n", "\n", "print('x_test / loss : {:5.4f}'.format(score[0]))\n", "print('x_test / mae : {:5.4f}'.format(score[1]))\n", "print('x_test / mse : {:5.4f}'.format(score[2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 6.2 - Training history\n", "What was the best result during our training ?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "min( val_mae ) : 2.5029\n" ] } ], "source": [ "print(\"min( val_mae ) : {:.4f}\".format( min(history.history[\"val_mae\"]) ) )" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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ruSEE04AoLm5mR/96EcKDiIiUhZzrjJvYlGUSqUcQDqd7rd/5cqVzJs3b1jH2r6nm827OgFonVTPrJbGMaplNIzknImISFUMumqfBkdWSDVaHERERMaagkOF9Ft1WblBREQiSsGhQizU8qPeIRERiSoFhwpRV4WIiEwECg5VoBYHERGJKgWHCglfWlrBQUREokrBoULUVSEiIhOBgkOFVHNwZHNzc2V/oIiITFgKDhXSv8VBREQkmrTk9Gid+9ayijUChw/32N//Vcndn//85zn44INJpVIAXHrppZgZDzzwANu3byeTyfDlL3+Zd7zjHUP+iPvuu49LLrmE/fbbj+XLl3PmmWeyYMECvvWtb9HZ2ckdd9zBoYceyq233soXv/hF4vE4LS0tPPDAA+RyOS644ALuu+8+uru7+fjHP66LZ4mITHBqcYigs846i5tvvrn3+1tuuYUPfehD3H777Tz++OPce++9fPazn6Xc5cSffPJJvvWtb7FixQquv/56nn32WZYtW8a5557LVVddBcBll13G3XffzZNPPsmdd94JwA9+8ANaWlp49NFHefTRR7n22mt54YUXxv4Ji4hIzai54GBmTWb2gpk5M/tOifuPMLM7zGy7mbWb2YNmdvIAx4qZ2afN7Gkz6zKztWZ2uZlNGv9nMn4WL17MK6+8woYNG3jyySeZOnUqs2fP5qKLLmLhwoWceuqprF+/nk2bNpV1vCVLljB79mzq6+s59NBDectb3gLAggULWLNmDQAnnngiH/zgB7n22mvJ5XIALF26lOuuu45FixZx3HHHsXXrVlatWjUuz1lERGpDLXZVXAbMKHWHmR0KPAxkgW8AO4EPA3eb2enOuXuKHnIF8E/A7cDlwLzg+8VmdqpzLj/q2g7QnVAsk83xwiu7AUjEY7xqvymj+rHvfve7+clPfsLGjRs566yzuOGGG9i8eTN/+MMfSCaTzJ07l66urrKOVV9f3/t1LBbr/T4Wi5HNZgH43ve+x+9//3t+8YtfsGjRIpYvX45zjquuuorTTjttVM9FRESio6ZaHMzsWOBTwCUDFPka0Aqc5pz7mnMuDfwFsAG42kKLJZjZfOATwG3OuTOdc9c65z4DfAY4CThr3J5ICWaDXmxs2M466yx+/OMf85Of/IR3v/vd7Ny5k1mzZpFMJrn33nt58cUXx/TnPffccxx3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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhQAAAGdCAYAAABKLepoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABOF0lEQVR4nO3deXxcdb3/8dcnyWSyL03bdKMLZSlLQRAEWZRFccHrdlFQcEEQdRSX61V/ol7qlYtXr+tFRwV3RGUTBbzKohRks+xroUBpS1u6Zd8zmXx/f3wnyWQ6SWaSSWdO+n4+HvOY5JzvnPnOSZvzznc75pxDREREZCqK8l0BERERCT4FChEREZkyBQoRERGZMgUKERERmTIFChEREZkyBQoRERGZMgUKERERmTIFChHJKTP7pZm5xCNmZnMnKP/2pPLOzD44QfnvJZW9KIP6rEo5/niP72X3aUVkiAKFiEynEuC9E5R5f6YHM7PU430gi7oMAtsneLRncTwRSVKS7wqIyIy1CViMDwzfS1fAzGYBpwOdQD8wa4JjvhmYA9wJzAMONLNjnXP3Z1Cfl5xzSzOquYhkTS0UIjJd7gNeAI4ws0PGKHMWUApcD/RkcMyhFonfJh7J20QkjxQoRGQ6XZl4HqtbY2j7ryc6UKI14y34lozrgKsSu840s/BUKikiU6dAISLTaShQnG1mo37fmNkBwDHAS8DqDI71Hnxrxl+dc83OuReAfwL1wFtzVmMRmRQFChGZNs659cA9wELglJTdQ60TVznnBjM43FDXxlVJ265K2ScieaJAISLTbag7Y7jbw8wMOCdl/5jM7CDgaKADuClp19XAAPAGM2uc4DD7mNm2CR5jjfUQkQkoUIjIdLsG6AXeaWaViW2vBZYADzrn1mZwjA8mnm9wzg0P3nTO7QBux89YO3uCYxQBjRM8QhnURUTSUKAQkWnlnGvFtypUAv+a2JzNYMwiRlozfpumyFC3x0TrWWx0ztkEj0cnqo+IpKdAISJ7wlBweJ+ZleODRQz4XQavfT2wABhqjUj1R6AbONzMDp96VUVkMhQoRGRP+Cs+EJwCfAKoAf7inNuVwWuHBlzOBQZSl8vGj6uoSCkrInuYAoWITDvn3ADwe/zvnP9KbL5y7Fd4ZlYDvD2Ltzo7sTy3iOxhChQisqcMdXuEgBZGz9YYy7uBcvxaFfXjPBqAJnwrxhtzWmsRyYiSvIjsEc65h8xsFVANPO6c68vgZUNdGH9IDO4ck5n9CfhQ4jU3T6GqIjIJChQissc4576aaVkzWw6ckPj2Dxm85A/4QPEvZlbvnGuZRBVFZJIUKESkUA1NA90O3J1B+dvwtx+vwd907Ecp+/cxs20THONe59w7s6qliAAaQyEiBSixkuZQoPhTJktzO+f6GenqSDfbI5OFrSa6fbqIjMGcc/mug4iIiAScWihERERkyhQoREREZMoUKERERGTKFChERERkyhQoshSJRFwkEtFIVhERkSRah2LyFCpERGRvYuPtVAuFiIiITJkChYiIiEyZAoWIiIhMmQKFiIiITJkGZeZILBZj8+bN9Pb25rsqgVFWVsaiRYsIhUL5roqIiEyRAkWObN68merqapYuXYq/r5GMxzlHU1MTmzdvZtmyZfmujoiITJG6PHKkt7eXhoYGhYkMmRkNDQ1q0RERmSEUKHJIYSI7Ol8iIjOHAoWIiIhMmQKFiIiITJkCxQyyYcMGVqxYwfnnn8+hhx7K2Wefze23387xxx/P/vvvz5o1a1izZg3HHXccRxxxBMcddxzPPvssAPF4nM997nMcffTRHHbYYfzkJz/J86cREZEg0SyPafCGr/152o59y1dOH3f/888/z7XXXsvll1/O0UcfzW9/+1vuvvtubrzxRi699FJ+/etfc9ddd1FSUsLtt9/ORRddxPXXX8/PfvYzamtreeCBB+jr6+P444/ntNNO0wwMERHJiALFDLNs2TJWrlwJwCGHHMKpp56KmbFy5Uo2bNhAW1sbH/jAB3juuecwM2KxGAC33norjz/+ONdddx0AbW1tPPfccwoUIiKSEQWKGSYcDg9/XVRUNPx9UVERAwMDfOUrX+Hkk0/mhhtuYMOGDZx00kmAXxfisssu4w1veEM+qi0iIgGnQDENJuqWSLa5qZPuvgEAFs6qpLJseleNbGtrY+HChQD88pe/HN7+hje8gR/96EeccsophEIh1q1bx8KFC6msrJzW+oiIyMygQZl5lrwWg3PT/36f//zn+eIXv8jxxx9PPB4f3n7++edz8MEHc+SRR3LooYfykY98hIGBgemvkIiIzAjm9sRVbAaJRCIOIBqNjtq+du1aDjrooKyP93JLFx09fhzD/PoKqstLc1DL4JjseRMRkT1u3NUI1UKR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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg4AAAGdCAYAAAB6oftJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAABGRklEQVR4nO3deZxcVZ3//9enlt7SSToLS9IBwiL7EpSwjE4ERFD5ieMKKCjOAKPlBvp1FEcRcUFxAL8qJYKOiAN+QcUVBAdlFRQCBAMSAoYAWQjZl15rOb8/zq3u25Wq7qruTlXdzvv5eNTjVt86dfvUTafqXWe75pxDREREpBKxeldAREREokPBQURERCqm4CAiIiIVU3AQERGRiik4iIiISMUUHERERKRiCg4iIiJSMQUHERmRmV1vZs7M7hnFc99oZj8ys2fNbKuZbTOz54JjnlzhMQ4ws2+b2eLgGH1m9pKZPWxm3zOz081sepnntpnZx83sbjNba2b9ZrbOzJ40s1vN7BNmdki1r0tkZ2VaAEpERmJm1wMfAO51zh1f4XOmAzcCbwrt7gYcMCm0707gvc65DWWOcz7wHaAp2OWATUAb0BwqeqFz7ltFz90PuAPYN7S7C8gDk0P7nnDOzavgZYns9NTiICLjzsw6gAfwoaEP+Aqwt3NuknOuHdgL+BLQC5wCPBA8p/g4rwWuwYeGu4DXAy3OuelAK7A/8FHgIXygCD83AfwKHxpeBj4MzHDOtTvnpgAzgNOAG4Ce8Xv1IhObWhxEZETVtjiY2c+Ad+E/kN/snLu3TLkF+BaBVuBnzrn3FD3+/4DTgb8Br3bO5Yb5na3OuZ7Qz28Cfh/8ON85t7DS54pIeWpxEJFxZWZH4UMDwMXlQgOAc+4+4IvBj+82s9cUFTks2P5+uNAQHKv4g7/w3DXDhYYyzxWRMhQcRGS8/Xuw3QRcXUH57wKbi55brHMM9ZluZi1jeL6IhCg4iMh4Oz7Y/qGSb/JBmT8UPbeg0FJwupm9o8p6FJ6bBK4xs8nDFRaRyig4iMi4MbMksF/w4xNVPPVvwfZVwaDGgsvxMzGSwC/MbHkwtfPDZvYaM4uXO6Bz7m6g0E3yAWC1mf3OzL5gZm8qNRhTREam4CAi4ym8lsL6Kp63rtQxnHNPAScBTwW79gLOAdL4FoX1ZnaNme1R5riFWRN5/BTQU4FL8YMm1wdrO7ylinqK7PQUHERkPNl4P8859xB+oOPxwDeA+4AtwcNT8eMiFpvZP5d47hbn3AeAvYELgVuBF4KHY8ExbzOzK0ZZb5GdjoKDiIyncCvDjCqeFy673UJQzrvXOfdZ59zr8a0SrwN+jF+/YSpws5m1ljq4c+5F59y3nHPvdM7NxbdcfDL0uz5pZm+ror4iOy0FBxEZN865DPCP4Mcjqnjq4cH2WedctoLfk3PO/dk5dw5wcbB7FkNXqRzu+S86564CjsOPoQD41yrqK7LTUnAQkfF2d7A9uVwLQFhQpnDNirJrPgzjh6H7+1fzROfcUvwKl1U/V2RnpeAgIuPt2mDbAXykgvIfxXc1AHx/FL+vK3S/fwzPH81zRXY6Cg4iMq6cc4/gByECXBosK11SMKDxS8GPvyhe4dHMjh9uymXgvaH7i0LPPdTMdh/uiWa2G3Bi8XNFpDwFBxGpRtLMZo5wSwLnAs/gr0HxBzO71Mz2LBzEzPYwsy/iF35qDcqeV+L3/RfwnJldYmbzg2NjZjEz29vMLgO+HZRdhJ9xUXA88LyZ/cTM3hq+7LaZTTGz9+G7Kabip2t+dxzOj8iEp4tciciIQhe5qsQJzrl7zGwG8FPgjaHHuvCzINpD++4CznDObbfug5k9BBwb2pXHL0/djl8UquBp4C3OueWh5/47/sqaYduC3x9eRbIX+JBz7scVvTqRnVxi5CIiItULgsDJZnYKvjvhdcDu+DUblgF/Bm5yzt0xzGFOwF92+w3AfPyqlB1AFn+p7CeAXwL/45wbMkbBOfd9M3sYeHPwuw8Ofn8cP230WeBPwHXhwCEiw1OLg4iIiFRMYxxERESkYgoOIiIiUjEFBxEREamYgoOIiIhUTMFhGKlUyqVSKY0eFRERCWg6ZmUUHkREZGdR9jL3oBYHERERqYKCg4iIiFRMwUFEREQqpuAgIiIiFdPgyFHIZDKsWLGC3t7eelelobW0tDBnzhySyeTIhUVEJBIUHEZhxYoVTJ48mblz52I27ODTnZZzjvXr17NixQr23nvveldHRETGiboqRqG3t5cZM2YoNAzDzJgxY4ZaZUREJhgFh1FSaBiZzpGIyMSj4BBR7e3t9a6CiIjshBQcREREpGIKDhHnnOPTn/40hx56KIcddhg333wzAKtXr2bBggXMmzePQw89lPvvv59cLsc555wzUPaqq66qc+1FRCRqNKtijE758m077Nh3fuHUEcvceuutLFq0iCeeeIJ169Yxf/58FixYwE033cQpp5zCf/7nf5LL5eju7mbRokWsXLmSJ598EoBNmzbtsLqLiMjEpBaHiHvggQc488wzicfj7Lbbbrz+9a/nkUceYf78+fzoRz/ikksuYfHixUyePJl99tmHZcuW8bGPfYw77riDKVOm1Lv6IiISMQoOEedc6Qt3LliwgPvuu4/Ozk7OPvtsbrjhBqZNm8YTTzzB8ccfz9VXX825555b49qKiEjUqatijCrpTgBYv7WX9Vv9mgbT21uYOaVlXH7/ggUL+P73v88HPvABNmzYwH333cc3v/lNXnjhBTo7OznvvPPo6uriscce4y1veQtNTU28853vZN999+Wcc84ZlzqIiMjOQ8GhRsJLGjhKtxKMxtvf/nYeeughjjjiCMyMyy+/nN13350f//jHfPOb3ySZTNLe3s4NN9zAypUr+eAHP0g+nwfgsssuG7d6iIjIzsHKNXULpFIpB5BOp4fsf/rppznooIOqOtbGbX2s3dIDQMekZnad2jpOtWxsozlXIiJSV8Ou3qcxDjWyo1ocREREaknBoUaGrL6s3CAiIhGl4FAjFmr5Ue+QiIhElYJDjairQkREJgIFhzpQi4OIiESVgkONhC8xreAgIiJRpeBQI+qqEBGRiUDBoUbqOTiyvb297GPLly/n0EMPrWFtREQkyhQcamRoi4OIiEg0acnpsTr3TRUVawX2r/bYP7ij5O7PfOYz7LXXXqRSKQAuueQSzIz77ruPjRs3kslk+MpXvsLb3va2qn5db28vH/7wh1m4cCGJRIIrr7ySE044gaeeeooPfvCD9Pf3k8/n+cUvfsHs2bN5z3vew4oVK8jlcnzhC1/g9NNPr/YViohIxCg4RNAZZ5zBBRdcMBAcbrnlFu644w4uvPBCpkyZwrp16zj22GM57bTThgzKHMnVV18NwOLFi1myZAknn3wyS5cu5ZprruETn/gE73vf++jv7yeXy3H77bcze/ZsbrvtNgA2b948/i9UREQaTsN1VZhZm5k9b2bOzL5b4vEDzOxXZrbRzLrM7H4zO7HMsWJmdqGZLTGzXjN7ycyuMLNJO/6V7DhHHnkkr7zyCqtWreKJJ55g2rRpzJo1i8997nMcfvjhnHTSSaxcuZI1a9ZUddwHHniAs88+G4ADDzyQvfbai6VLl3Lcccfxta99jW984xu88MILtLa2cthhh3HXXXfxmc98hvvvv5+pU6fuiJcqIiINphFbHC4FZpZ6wMz2BR4EssDlwGbgPOBOM3uzc+6uoqdcBXwc+CVwBXBQ8PORZnaScy4/5tqW6U4olsnmeP6VrQAk4jH22W3KmH7tu971Ln7+85/z8ssvc8YZZ3DjjTeydu1aHn30UZLJJHPnzqW3t7eqY5a74Nl73/tejjnmGG677TZOOeUUfvCDH3DiiSfy6KOPcvvtt3PRRRdx8sknc/HFF4/pNYmISONrqOBgZq8GLgD+A/9BX+wyoAN4jXNuUfCcG4CngKvN7EAXfPqZ2SHAx4BbnXPvDP2O54FvA2cAN+2o11Ksmi6DSpxxxhmcd955rFu3jnvvvZdbbrmFXXfdlWQyyd13380LL7xQ9TEXLFjAjTfeyIknnsjSpUt58cUXOeCAA1i2bBn77LMPH//4x1m2bBl/+9vfOPDAA5k+fTpnnXUW7e3tXH/99eP6+kREpDE1TFeFmcWB64A7gFtLPD4JOA24pxAaAJxz24Af4Mcezg895Uz8pUG/VXSo64Bu4Kzxq/3IhlzjahzmYx5yyCFs3bqVzs5OZs2axfve9z4WLlzIUUcdxY033siBBx5Y9TFTqRS5XI7DDjuM008/neuvv57m5mZuvvlmDj30UObNm8eSJUt4//vfz+LFizn66KOZN28eX/3qV/n85z8/5tckIiKNr5FaHC4EDgTeWebxw4Fm4KESj/0l2M4HHg7dz4d+BsA512tmixgaMna8HbBy5OLFiwfuz5w5k4ceKnVqYNu2bWWPMXfuXJ588kkAWlpaSrYcXHTRRVx00UVD9p1yyimccsopo6i1iIhEWUO0OJjZ3sCXgEudc8vLFJsdbFeWeKywr7Oo/DrnXF+Z8jPNrGkU1R0VreMgIiITQUMEB+B7wPPAlcOUaQu2pYJAb1GZwv1SZcuVH2Bm55vZwmHqUrXirorx6K6oxuLFi5k3b96Q2zHHHFPTOoiISPTVvavCzM4CTgYWOOcywxTtDrbNJR5rKSpTuL9rmWOVKj/AOXctcG0qlRq3T3czw8wGAoNjaJjY0Q477DAWLVpUw98oIiITUV2Dg5k141sZbgdeNrP9gocKXQ5Tg33rgFVFj4UV9oW7MVYBB5tZc4nuik58N0b/aOvunKt6poQR6qaodXKog1q3qoiIyI5X766KVmAX4FTg2dDtnuDxs4KfzwUW47sejitxnGODbbh74RH86zs6XNDMWoB5RWWr0tLSwvr166v/YAyPc5jgH6rOOdavX09LS8vIhUVEJDLq3VXRBby7xP5dgDR+auYPgb8557aZ2W+Bd5jZEc65JwDMrB0fLJ5l6AyKm4HP4deFuD+0/zz82IYbR1vpOXPmsGLFCtauXVvV89Zu6SWf94Ghf2ML8djEbnJoaWlhzpw59a6GiIiMo7oGh2BMw8+L95vZ3ODuP5xz4ccvAt4A/MHMrgK24INAJ3CqC32Nd84tNrOrgY+a2a347pDCypH3MobFn5LJJHvvvXfVz/vq//0ja7f4cZk3fOwEdusoOTZTRESkYdW7xaEqzrnnzOy1wNeBzwJNwGPAm0osNw2+tWE5cD6+O2Qd8B3g4nFZbrpKycRgz1A2N7G7KkREZGJqyOAQrOVQsh3fOfc0UNH1op1zOfzS1aWWr665RGwwOGRyNc8tIiIiY1bvwZE7lWRcwUFERKJNwaGGEvFwV4WCg4iIRI+CQw0NHeOg4CAiItGj4FBDifjgsI2MBkeKiEgEKTjU0NAxDrk61kRERGR0FBxqKDyrQtMxRUQkihQcaiihWRUiIhJxCg411KTBkSIiEnEKDjU0dHCkgoOIiESPgkMNaR0HERGJOgWHGho6q0KDI0VEJHoUHGpILQ4iIhJ1Cg41lFRwEBGRiFNwqKEh0zGzCg4iIhI9Cg41lNSsChERiTgFhxoaMsYhr8GRIiISPQoONaQxDiIiEnUKDjWkMQ4iIhJ1Cg41lNS1KkREJOIUHGoovOS0uipERCSKFBxqSAtAiYhI1Ck41NCQrgrNqhARkQhScKihpAZHiohIxCk41MrGdUx++XkO6V3FLtmt6qoQEZFIStS7AjuNP/6G/e+4hSuB/+44jr/l9qh3jURERKqmFodaSQxmtITLaTqmiIhEkoJDrSSSA3ebFBxERCSiFBxqJTkYHJIuRzanWRUiIhI9Cg61Eg91VZDX4EgREYkkBYdaKWpxUFeFiIhEkYJDrcSLuyoUHEREJHoUHGol1OKgWRUiIhJVCg61ktDgSBERiT4Fh1oJDY5MkieTy+OcwoOIiESLgkOtFA2OBMjpQlciIhIxCg61ktg+OGicg4iIRI2CQ60ULTkNCg4iIhI9Cg61UqLFQVMyRUQkahQcaiUcHPCBQTMrREQkahQcakVjHEREZAJQcKiVUsEhq+AgIiLRouBQKyUGR2qMg4iIRI2CQ62UGhyZV3AQEZFoUXColSGDIwtjHDQ4UkREokXBoVYS4Ytc+ZYGjXEQEZGoUXColXgczJ/uOI6Yy2uMg4iIRI6CQy2FBkj6K2QqOIiISLQoONRS0QBJreMgIiJRo+BQS0UDJNXiICIiUaPgUEtD1nLIq8VBREQiR8GhlrbrqtB0TBERiRYFh1oqCg7qqhARkahRcKglBQcREYk4BYdaSg4dHKkxDiIiEjUKDrUU1+BIERGJNgWHWtquq0KDI0VEJFrqHhzM7AAzu9HMnjazzWbWbWZLzOxKM5tVpvyvzGyjmXWZ2f1mdmKZY8fM7MLgeL1m9pKZXWFmk3b8KyshqTEOIiISbYmRi+xwc4BZwC+BFUAWOAw4HzjDzOY5514BMLN9gQeDMpcDm4HzgDvN7M3OubuKjn0V8PHg2FcABwU/H2lmJznnavvJHR+65LS6KkREJGrqHhycc38E/li838zuA24BzsGHBIDLgA7gNc65RUG5G4CngKvN7EDnnAv2HwJ8DLjVOffO0HGfB74NnAHctENeVDkaHCkiIhFX966KYbwQbKcBBN0LpwH3FEIDgHNuG/ADYH9gfuj5ZwIGfKvouNcB3cBZO6LSw4oPvbS2uipERCRqGiY4mFmLmc00szlmdjLw/eCh24Pt4UAz8FCJp/8l2IaDw3wgDzwcLuic6wUWFZWtje3GOGhwpIiIREvDBAfgXGAt8BJwJ75L4izn3P3B47OD7coSzy3s6wztmw2sc871lSk/08yaxlrpqujqmCIiEnGNFBx+BbwReDtwKbAJ2CX0eFuwLRUEeovKFO6XKluu/AAzO9/MFo5Y42oVDY5UV4WIiERNwwQH59wK59xdzrlfOee+CHwA+IaZXRQU6Q62zSWe3lJUpnC/VNly5cN1udY5d1Tlta+QBkeKiEjENUxwKOac+xvwOJAKdq0Ktp0lihf2hbsxVuG7I0qFh058N0b/eNS1YmpxEBGRiGvY4BBoBaYH9xfjux6OK1Hu2GAb7l54BP/6jg4XNLMWYF5R2dpIhmdVqMVBRESip+7Bwcx2L7P/BOBQghkTwbTL3wLHm9kRoXLt+IGVzzJ0BsXNgAMuKDr0efixDTeOzyuowpDBkXnNqhARkcip+wJQwPeCpaX/hF+7oQV4DX6Bpq3Ap0JlLwLeAPzBzK4CtuCDQCdwamHxJwDn3GIzuxr4qJndip/WWVg58l5qvfgTDAkOCZcjk1WLg4iIREsjBIef4gdCno2fReHwAeL7wDedcy8WCjrnnjOz1wJfBz4LNAGPAW8qsdw0+NaG5fjlq08F1gHfAS6u+XLTMLTFAY1xEBGR6Kl7cHDO3YJfWrrS8k8Db6uwbA5/jYorRle7cVa8jkNewUFERKKl7mMcdioJzaoQEZFoU3CopYSWnBYRkWhTcKilUItDwuU1OFJERCJHwaGWElo5UkREok3BoZYSg9fUKoxxCM0gFRERaXgKDrVUNDjSAXkFBxERiRAFh1oqGhwJaJyDiIhEioJDLZUKDppZISIiEaLgUEvhWRX4lgat5SAiIlGi4FBLJVscFBxERCQ6FBxqqegiV6AWBxERiRYFh1pSi4OIiEScgkMtJbcPDmpxEBGRKFFwqKX44ODIJvLgnGZViIhIpCg41FIsBvH4wI8J8mpxEBGRSFFwqLX40NUjNcZBRESiRMGh1opmVqjFQUREokTBodaKBkiqxUFERKJEwaHW4uFLa+fJanCkiIhEiIJDrRW1OKirQkREokTBodYS6qoQEZHoUnCotdCsioSCg4iIRIyCQ62pq0JERCJMwaHWwus4kFeLg4iIRIqCQ60VT8fMKjiIiEh0KDjUWqK4q0LTMUVEJDoUHGpNK0eKiEiEKTjUWvF0zLyCg4iIREdi5CIjS6VSRwAnAAbcn06nF47HcSek7boqFBxERCQ6KmpxSKVSC1Kp1A2pVOrYEo9dAjwGXAH8F/DXVCp15bjWciJJFM2q0OBIERGJkEq7Kt4NvAd4OrwzlUr9M3AxkAduBK4B1gOfSKVSbxnHek4cGhwpIiIRVmlwOA74azqd3ly0/98BB3w8nU6/P51OfwRYAGSBD45fNSeQhFaOFBGR6Ko0OMwGni2x/0SgC7iusCOdTi8B7gTmj7l2E5HGOIiISIRVGhxmAGvCO1Kp1O7A7sCD6XQ6W1T+WWC3sVdvAtJFrkREJMIqDQ49bB8EXh1sHy9Rvg/fXSHFwus4kFeLg4iIREqlwWEJ8OZUKhWevnkqfnzDgyXK7wGsHmPdJia1OIiISIRVuo7Dz4HLgd+kUqlrgP2BfwM2A/9bovxrKZqBIYFQcGjSrAoREYmYSoPDd4AzgTcBpwT7DPg/6XS6N1wwlUodA8wNniPFimZVqKtCRESipKKuinQ63YefZnkxcAd+zYa3ptPp75YoPg/4NfDbcarjxKKuChERibCKl5xOp9NdwFcqKPd94PtjqdSEVjQ4UsFBRESiRBe5qjWt4yAiIhE25otcpVKpJPBh/GJQBtwLXB10b0ixpJacFhGR6Kr0IlfvT6VSL6ZSqTcU7Y8BvwOuAk4D3gp8E/hT0dRNKYiHLnKlMQ4iIhIxlXZVvBGYDNxTtP/M4LE1wLnA6cBfgWPx0zWlWLirAgUHERGJlkqDw6vxS0vnivafhV8E6v3pdPq/0+n0z4CT8es7vGf8qjmBDJmOqZUjRUQkWioNDrsBy0rs/ydgTTqdvquwI51ObwNuAw4de/UmIA2OFBGRCKs0OEzBXwVzQCqV2g/fffHnEuVXAB1jqtlEVTQ4Mu8gl9cASRERiYZKg8NGYO+ifYXLZpe6yFUC2DbaSk1o8dA6Ds73/Gicg4iIREWlweFx4NRUKjUrtO8M/PiGe0uUfxW6yFVpyaGDIwF1V4iISGRUOmXyh/hBjw+lUqlb8Re5egvwXDqdHtJVEUzD/Gf80tRSrOgiV6DgICIi0VHptSp+BvwA2BO4AB8aNgPnlSj+VmAapa+aKUWzKkBdFSIiEh0VLzmdTqfPB14HfAa/ZsMh6XS6VDdFN3Ah8JtxqeFEUzSrAiCTVXAQEZFoqGp1x3Q6/SDw4Ahl7gTuHEulJrTQypEJ8phz6qoQEZHI0EWuas2s6AqZOTK6XoWIiERE1deTSKVSxwHnA68FZuNnVqwGHgCuS6fTD41rDSeiRBKyGSBYBCqvFgcREYmGioNDcBXMNPCv+Ktghu0X3D6QSqX+G0il0+nMuNVyokmEL3SlZadFRCQ6qumq+CH+wlWb8FfAPBk4CDg4uP9N/EJR/4qfgVERM9vfzC41s7+Y2Voz22pmi8zsP81sUonyB5jZr8xso5l1mdn9ZnZimWPHzOxCM1tiZr1m9pKZXVHquDVVNEBSgyNFRCQqKmpxSKVSJ+EvaPUo8NZ0Ov1yUZElwF2pVOpK/GW2z0qlUjek0+k/VnD4fwU+gp+FcSOQAU4AvgK8x8yOdc71AJjZvvjBmVngcganhN5pZm92zt1VdOyrgI8DvwSuwAedjwNHmtlJzrn6fGInhq4eqemYIiISFZW2OJyHv1bFv5QIDQPS6fQa4F+AHkqv8VDKz4E5zrn3Oee+45y7xjl3OvBV4HCGXp77Mvw1ME5xzl3mnEvjF5taBVxtZgNdKGZ2CPAx4Fbn3Ducc9c55z4JfBIfTM6osH7jL9xVQY6sBkeKiEhEVBocjgN+n06nV45UMChzG/7KmSNyzi10zm0u8dDNwfZQgKB74TTgHufcotDzt+G7RvZn8PoZAGfix2J8q+i41+HXmjirkvrtELpCpoiIRFSlwWFX4NkqjvscsEv11RliTrBdE2wPB5qBUrM2/hJsw8FhPpAHHg4XdM71AouKytbWkMGR6qoQEZHoqDQ4dOMvoV2pyUBv9dXxzCwOXIwfy3BTsHt2sC3V6lHY1xnaNxtY55zrK1N+ppk1lfn955vZwqorXqniwZEKDiIiEhGVBodngZIzF8o4gepaKIp9CzgWuNg590ywry3YlgoCvUVlCvdLlS1XfoBz7lrn3FEV17ZaicG8oq4KERGJkkqDw23AQalUKjVSwVQq9SH8FM3fjaZCZvZl4KPAtc65y0IPdQfb5hJPaykqU7hfqmy58rWTGLrstIKDiIhERaULQH0bP0Ph/6ZSqdnAN9Pp9JABjalUagrwafxFsDYA36m2MmZ2CfB54EfAh4oeXhVsO9leYV+4G2MVcLCZNZforujEd2P0V1vHcbFdV4VmVYiISDRUFBzS6fSmVCr1TnzLw0XAJ1Op1KPAS/glp/cEXoP/ht8DvCudTm+spiJm9kXgi8ANwLnOueJP08X4rofjSjz92GAbHpfwCH5hqqOB+0O/pwWYB9xXTf3GlQZHiohIRFVzWe37gGOAu/FN/a/Fr4VwZnC/BbgHOLbM5bbLMrOLgUuAnwAfLLUwUzDt8rfA8WZ2ROi57fjLfD/L0BkUN+NDzQVFhzoPP7bhxmrqOK40HVNERCKq2stq/x04KZVKzQVeB8zCr5WwGnggnU4/D5BKpVqApnQ6vWWkY5rZR4AvAS8CdwHvDa3jBLDGOfe/wf2LgDcAfzCzq4At+CDQCZwabqVwzi02s6uBj5rZrcDtDK4ceS+DszVqT7MqREQkoqq+OiZAOp1eDiwfpsj3gLMrPH5hPYU9gR+XePxe4H8BnHPPmdlrga8DnwWagMeAN5VYbhp8a8Ny/NU8TwXW4cdeXFy35aah6LLaGhwpIiLRMargUKHiK2iW5Jw7Bzin0oM6554G3lZh2Rz+GhVXVHr8mtiuq0KDI0VEJBqquTqmjJei4NCXzdWxMiIiIpVTcKiH8DoOLkdvv4KDiIhEg4JDPYRaHJpcjt7+bB0rIyIiUjkFh3ooWjmyJ6MWBxERiQYFh3ooGuPQoxYHERGJiIpmVaRSKX0lHk/JocFBYxxERCQqKp2OWdHUyiKaY1hOPLSOg1ocREQkQiq9VoW6NMZTsrirQi0OIiISDQoE9RAe40BesypERCQyFBzqIT706pjZvNP1KkREJBIUHOqhqKsC0ABJERGJBAWHeogPXTkS0ABJERGJBAWHeijZ4qDgICIijU/BoR4S2wcHrR4pIiJRoOBQD0WzKkBdFSIiEg0KDvVQosVBgyNFRCQKFBzqITF05UhQi4OIiESDgkM9JIau4wBo9UgREYkEBYd6KNlVoRYHERFpfAoO9RDuqhgYHKkWBxERaXwKDvVQqsVB0zFFRCQCFBzqIR4H86c+jiPm8hocKSIikaDgUC9FAyQ1HVNERKJAwaFeiror1OIgIiJRoOBQL6EWhwR5LTktIiKRoOBQL0UtDpqOKSIiUaDgUC/bdVWoxUFERBqfgkO9aIyDiIhEkIJDvWzXVaEWBxERaXwKDvWSHLp6ZG9GLQ4iItL4FBzqJb79Og555+pYIRERkZEpONRLUVeFA/o1JVNERBqcgkO96NLaIiISQQoO9VLiQleaWSEiIo1OwaFeQoMjk6jFQUREokHBoV7ioVkVLg+gmRUiItLwFBzqJVmqq0ItDiIi0tgUHOolEW5x0BgHERGJBgWHegmt49AUBAetHikiIo1OwaFeSgyO1BgHERFpdAoO9RJqcUhojIOIiESEgkO9lBwcqRYHERFpbAoO9ZIoMR1TLQ4iItLgFBzqJRQcmtTiICIiEaHgUC9t7QN3p+Z7AI1xEBGRxqfgUC9Tpw/cnZ7rAqBXLQ4iItLgFBzqZUhw6AagR5fVFhGRBqfgUC8dRS0OzmmMg4iINDwFh3ppnQTJJgBaXJY2l9GsChERaXgKDvVitt04h151VYiISINTcKinouCgrgoREWl0Cg711DF0gKS6KkREpNEpONRTUYtDJpcnk8vXsUIiIiLDU3Cop5JrOajVQUREGpeCQz2VWstB4xxERKSBKTjUU/FaDmj1SBERaWx1Dw5mdpGZ/czMlpmZM7PlI5Q/wMx+ZWYbzazLzO43sxPLlI2Z2YVmtsTMes3sJTO7wswm7ZAXU60SXRVaPVJERBpZ3YMD8DXgROAfwMbhCprZvsCDwHHA5cCngXbgTjM7qcRTrgKuBP4OfAz4GfBx4LdmVv/XXqKrQmMcRESkkSXqXQFgX+fcMgAzexIfBMq5DOgAXuOcWxQ85wbgKeBqMzvQOeeC/Yfgw8Ktzrl3Fg5gZs8D3wbOAG4a91dTjfYpEI9DLsfkfB9N+azGOIiISEOr+7fuQmgYSdC9cBpwTyE0BM/fBvwA2B+YH3rKmYAB3yo61HVAN3DWqCs9XmIxmDJt4MdpuS61OIiISEOre3CowuFAM/BQicf+EmzDwWE+kAceDhd0zvUCi4rK1s/UweAwI9dNT0YtDiIi0riiFBxmB9uVJR4r7OssKr/OOddXpvxMM2sq9YvM7HwzWzjqmlZju2Wn1eIgIiKNK0rBoS3YlgoCvUVlCvdLlS1XfoBz7lrn3FFV13A0ii90pTEOIiLSwKIUHLqDbXOJx1qKyhTulypbrnx9FM2sUIuDiIg0sigFh1XBtrPEY4V94W6MVfjuiFLhoRPfjdE/jvUbnQ5dIVNERKIjSsFhMb7r4bgSjx0bbMPjEh7Bv76jwwXNrAWYV1S2frbrqlCLg4iINK7IBIdg2uVvgePN7IjCfjNrB84FnmXoDIqbAQdcUHSo8/BjG27ckfWt2HZdFWpxEBGRxlX3BaDM7Gxgr+DHXYAmM/t88PMLzrmfhIpfBLwB+IOZXQVswQeBTuDUwuJPAM65xWZ2NfBRM7sVuB04CL9y5L3Ue/GnguIWBy05LSIiDazuwQH4N+D1Rfu+HGzvBQaCg3PuOTN7LfB14LNAE/AY8Cbn3F0ljn0BsBw4HzgVWAd8B7jYOZcfv5cwBlOm4TAMx9R8D3199R92ISIiUk7dg4Nz7vgqyz8NvK3CsjngiuDWmBIJcpMmk+jaQgxIdm2ud41ERETKiswYh4ksH1p2uqVHwUFERBqXgkMjCI1zaOvZWseKiIiIDE/BoQFYaC2HSb1b6lgTERGR4Sk4NID4tJkD9yf3bSU/ODlERESkoSg4NIBYx9C1HPo1JVNERBqUgkMj0BUyRUQkIhQcGoEWgRIRkYhQcGgEHVp2WkREokHBoRGEWhym5brp0eqRIiLSoBQcGkFTMz3xFgAS5Mlu1iJQIiLSmBQcGsS2lskD93Mb19exJiIiIuUpODSI7lBwYNOG+lVERERkGAoODaKnberAfdui4CAiIo1JwaFB9IWCQ3zrpvpVREREZBgKDg0i094xcD+5bVPd6iEiIjIcBYcGkZ3cMXC/Zau6KkREpDEpODSIvl3mDNzffd0yyOfrWBsREZHSFBwaRHb3PdkUawWgtb8bViyrc41ERES2p+DQINpamnm8ZY/BHU89Xr/KiIiIlKHg0CD23nUyj7UOBgf39GN1rI2IiEhpCg4NYreOVp6bts/Az27pU5DRNStERKSxKDg0CDNjl7l78lKiA4BYth+e+3t9KyUiIlJEwaGBHDC7Y+g4h7+ru0JERBqLgkMDObCzg8dD4xx4WgMkRUSksSg4NJADOjt4omUOOQwA98JzsG1rnWslIiIySMGhgbS3JJm2y3SWNu0KgDkHzzxR51qJiIgMUnBoMBrnICIijUzBocFsN87h7xrnICIijUPBocEc2NnB082z6LWE37F2Nax9ub6VEhERCSg4NJi9d5sCiSSLm2cP7tTsChERaRAKDg0mGY+x3+5ThnZXPHIfOFe/SomIiAQUHBrQAZ0dPNw6d3DH04/DbT+tW31EREQKFBwa0IGdHbyUnM6vJx8+uPNXN8DjD9WvUiIiIig4NKQDZncA8P1pr2NxW6jL4geXw8rldamTiIgIKDg0pFnT2pja1kTO4lw6/RSy0/yCUPT1wHe/pNUkRUSkbhQcGpCZccDsqQBsibfyyJtT0NziH1y7Gr7xKfiHrpwpIiK1p+DQoArdFQCP9rXDv3168MHVL8LXPwU//R709tS+ciIistNScGhQB3R2DNz/85KX6TrkaDjnk9Dc6nc6B3/8NVz87/DAndDdVZ+KiojITkXBoUEdvtcMprc3A7BhWx8/ufdZeN3JcOk1cOhRgwU3vALXXwWfPAO+9xV4/EHI9Nep1iIiMtEpODSo5mSc89940MDPv354OcvWbIEZu8Envuy7LiZNHnxCNgOPPgBXXwoXngHXXgYL71NXhoiIjCsFhwZ2/CGzOWLuDADyzvHd3z+Jcw7M4Lg3wFd+AO8+F/bYd+gTe7vh4Xvhmq/BBe+B714CD/1R3RkiIjJm5rSUcVmpVMoBpNPputXhxbVb+fC195PN+3+n/3PaEbzxiDnbF1z1AvzlbnjkXj/zopREEg5+Nbz6n+CQ18C0mUMfdw62bIRkM7RNGudXIiIiEWHDPqjgUF4jBAeAH/5xCbc8+A8AprY18d8fOZ72lmTpws7Biuf9WIfH/uzvl9M514+XiCfgxefghedg6yawGBzyat+qMe+4wamgIiKyM1BwGK1GCQ49/VnO/d69rNvSC/gujP/4lyOIxyroaVqzCh69Hxbe78NBtZpbYf9DIR73ocQ5SDbBtF1gxq7+NnM32G2OAoaIyMQwbHBI1KoWMnqtTQk+dPLBfOXnjwFwz1Or6O7P8rl3HElr0wj/hLvNhrec7m9rV/tWiCcXwrNP+QGVxZpboK938Oe+Hlj8SGUVnbErzNrTD+Ds7YaurbBti5/lsder4PD5vqukrb3CVy4iIo1GLQ7DaJQWBwDnHFf97m/cuWjFwL5XzZrKpWccxfT2UXzT7+2BZ/4GS56AWAz22g/23A92ne2neP7lbvjLH+HlFSMfqxqxGOx7EOzWCZOmQPsUPzukbRK0tEFrm2/l6Nrq67FhHWxaB03NsPse/jZrD+je5lfPfO5pWPY0ZDIwZ2/Yc1//WqbvGgSXzT689Pb4LplEcIvFfUDq7/PbXBZ2meW7b2bt4VtVRER2TuqqGK1GCg7gw8P1dz/D//vzPwb27Ta1lYvecSQHdnZgNuy/9Wh+Iby0DNa97GdymAHmWyE2rIX1r/gP91dW+Vs+P76/v15iMR8iJk32gSXZVHo7YzcfVObs7X8Gf862bYa1a2DtKliz0t/WrvbH3f8wOOhI2O/gsYUT53x4ap3kjysiMn4UHEar0YJDwe2Pvch3bn+SfOjfbu9dJ/PmI/fghMM6mdJah2/L2Yz/gFz9Emxa71sOCi0KLg9/f9x3eSxfWvu67WixmG8JMfMhK9zVU06yCebu72e2TJ0GU6fDlGkwpcPfJnf4bqPNG32Ly6b1Pqitfsm3Ar38kv89kybDPgfCvgf7lpwpHUHIi/l6xeODLS3xZPBz3Le4xGI+7OWyvjspk/Fl24rCSDYLa1bAyhega4uvZ8cMf2uf4p/b1+NbdXJZ/5rapwZBswpbNsHyZyCXh/bJ/u9n8hRom+zrHOYc9HT78wK+Bau4TLHNG+D+O2DFch/2jjneB0TZ8XI5//4wddrQ9WekUSk4jFajBgeAh599ha/+4jF6M7kh+5PxGIfsOY2DOqdx0JwODuycxtS2Bmp237IJnnvKz97YtnVwHERvt//g6e32t9ZJfgDm9F38B1FPl/+wXL3Cf4glkrDPQbDfQf5Ds6XVt4688JwfBLpti/9Qa58Ck6f6bpBczgecbMZ/YDY1+w/npqCrZ80KPwtl3cv+g2miMyv9OuNx/8E/ZZoPAmtW+m01Wtpg11m+VcblobfXh4v+Pv/BMXU6dEz3/zarV/hup1dWlT9eU7P/m2idBPmcDwz9fUMf32NfmPsqv+2YPhjANrwCf/qtHyBc/Dr2PgDmv97XNdnk/66STYO3QgtTLuuDWl/wOta+DKtehNUv+CDX1u5nIL3mdbB7MF3aOf+3tGwJbN3s697W7oNZW7v/m21p89tyrU/dXf7v+eXgb761zT+/dZL/95k6fWhgyuV80Fz/ig+Pk6f6W1t79UFurJzzr/2vd8Mj9/n/84kk/NNJcMq7fNibyDL9/gtT9zY4+Ej/bxUdCg6j1cjBAfwaDzc/+A/u//tq+rLluwk6p0/i4D2mccge0zhkzjTmzGwnVus3kfFUWARrR+nr9R9ifb2Q6YO+Pv8m0B/a9vX4i429+A//wRr+f9TS5mea7DLLjxnZrdNvu7bCkkX+zWTNyrHXM5EsPcBV6qtzrh8o/PwzPjBUIpEcbG2aMs0HiRXPj/x3YjH/nKnT/QfUxrU+PBSLx32ImjItaOEKQse0IJhPm+lD0tZNPtxv2eTXdNm03rfUbFrv/z/M2M3/Pe/W6UN9Xw90bfN/211bfStQzzYfeNav8QGmZL0NXv1aH7YSycHWsb5ef862bfbbnq7BcUj9ff61JRKQKIS85NDuw5Y2PyB81p5+rFJrifVonAvqvdXXMx4PvkA0+2OuWwMrl/u1cV5e4b98vOoQ3804Y7fh/z3yeXju73582ML7/b9J4fzPOw4WvAUOmjfYopfNQn/v4Dmx2Pbvbf19/m/puaf8oPaVy/17y3Fv8K1mkzuGr9PoKDiMVqMHh4Ku3gx3P7WKOx9/iaWrR36jSsSMGVNamDm5hV2mtLLLlBZ2ndo6cJs5uYX21mS0w0Ut9fb4/8zxOMzc3X+jHuncbVjrg8fmjf62ZYN/g9662b9pb93sW16mTINpM6Bjpu8a2L3Tvynuvof/JrlmJfzjaf+N/cXnoL/fvzHmc/5NLJ/zb065rN/mc/7NN/zNu/AGXAgiPd3b13fGrjB7L1+HLRth0wb/zbZrW/CG3eoHtZr5D4u+USx1nkj62TeTJvsukW3BrbvLt1oUa2r29cn0w8Z1lf2OfQ/2H1jP/A2eWlj6Q1Z2jObW0f1djMXkDh80ClPJ83n/YV5tC1rB9F18eMj0+1s2E3yhyPgvGf39pf9Ww6ZM8/9PCqFoLOJxOOxo34pz+NH+/9D4UHAYragEh7A1m7p5euUmlqzcxJIVG3nu5S1kctUPWowZTG5tYmpbE1PammhvTjCpJUl7S5JJLQkmNftte3OStuDntuYEk5oTtDUnSMRjJGI2/gM2Zfzkc6W/4WT6g/CyCfIOZs0p/c2tHOd88Fm7ys+KSST8N7rmFv/NsGtrEDw2+BDSMcMPFt1z39JN9oVviN1d/s3WYv45rW2Ddd+8AV54Fp5f6sNU+Juzy8MRx8KJb/XBpGDbFn99l2ee8F0phQ+CTOGDoH/wFo/7Lq3C65g63QepWXv4ronVL/ljPblw6EXm2tp9d8ius3zA7No2+I28t9uHtN7u8gOL43GYPdePySAY19HT5T/8Nm3wr7PY1GmD34wLQbTWH9gFrW2+++aYE+GAw2Dpk3DHz/x52hnM2NX/rf7j6R3/u048Dd6bGq+jKTiMVhSDQ7H+bI5nV2/mqZc28tSLG3h65SY2d9fu6pnxmJGIx2hJxmlJxmlOxmltStDS5H8u3G9r8oGjcGtOxGlKxGhOxmlKxIkZ5JzzXxqcoykeY3JrE5Nbk0xuTZKIx8jm8vRn8/Rnc+TzkIjbQICJK8hILfT2wNOP++3c/X2T/kizXgrBKNxF0NvjW5X22Hv42TfZTNCVsMGHlBm7Ds7wCSuEwXDr1qYNvmtj4zp/y2R8K1ahu2TyVP+hN3W63yab/JiNNSt9V96mDcEg6MnB2I12mNQ+OBZlUrtvHStV/5eWwZ//4OuUyw4O0m1q9r+3PTQ2ozAOqanZB6lsFrKFkJcZ2oW4bYsfC7XqxeHH5jQ1D9Y7l/PdBf19/jZ1OnTu5YPh7nv4MTJLn/StepUMfG6f6sPSsSf4Fq5YzLdI3vf74JpB2wbLWgxaWoBgvJHLbz/uyMwH1P0O9V0mc/bxXZ4P3uXrVPCZ/4JXHTpy/Sqj4DBaEyE4lNLbn2Xd1l7Wbell7ZZeXtncwytbeli7uYc1m3vYuK2Prr5RNuU1uEKISMZjgy0nQViJB8EiZmBmJILQ429GcyIIP01xWpKJYGyhI5935JwfmNrWFKe1OUFbU4Jkwn9gmBkWbOMxfz8WM2JmJBO+Lom4kYzHaU76n4sDjnOObN4RM4iZApDIiHI5H5BgcDq5mQ8Lo5kKncvBimU+1IUH0CaboKlwv3n42T2Zfj/2o6nFD3ItdO+N1ssr4KG7fIvGp74+nmO/tHKkDNXSlGDOjHbmzCi/gmMml2dLdz+bu/vZ2pOhqzdDV1+Wbb0ZtgX3u3r9/m19WXr6snT1Zenuy9LdnyWXyw9cmKuRZPOObD5HXybHtt4M0HiXHTegKRknGTeyOUe2zLn0Y1B8K0zh0aZEbKAlpznp38AyuTzZXJ5c3hGPGa1NCX9rjtMU910VMQAzH6iaE777KQg//dk8fZncwHF8uLIg/EBT0DrUlIgPBKF4zAZCWmwgOPnwlM87snlfn1ze+cDV7OvU1pzA8P9OuXyebM6HpWQiTjIeoynhg1w8VqgDxGP+58F9vl5g/ndC2aCVyfnXlgiOrXE9E0g87sckjOfxwl1do5Fs8q0Y42X3OfD2c8bveBVScJCSkvEYMya3MGPy6K8/UfiWnAk+eHozOXr7s/RkcvT25+jNZINtzgeOIHR092Xoy/guh75snv5MDgcDLQFm0J/Js603w9aeDFt7+skGH0BNiRjJ4AMglx/80C18cEaBA/oyOfpGmDCRL9Fa6Ltq8mzp0WyLMB9sfLiJx4y+TI6e/tx243+S8RjNyRjxWBB4zLcONSVitCaDLramhG8lCsJKoZuspz9LT3+Onv4subyjKRG0ICXiNAe/u9BdF4uZ/78QlO/P5knGB1u4Cn/Lha66pqD1yo/xczgIWrp8+MrnHU2JWGicUZK8cwP/7/oyOfLOEY8NrXdz0tetORkf+H9T+D8WD1rIYkHZQqDL5vJkcnnyeUcsZoNBMT40eBnQ0uRD7KRmH2Tzzg38n+/N5MAxEPTisdhg92I8RjJuZVvXckGwzOfdQJCspBXOOafWunEwoYODmcWATwD/DswF1gK3ABc757rqWLWdgpmRjNvAN8odpdDdNtIbggveZLO5PH3ZPN1BC0pXX4buviz5/OAYCucY+FZc+KbdNxB4/M05N9DlEI8Z/cEx/QdIlkw2P9ASUHjDzztHPrhfCDWF4/cHIalcS008ZsExxvPs7RwKgQqG74LLBB+KMv58+1j1Ct1zMd+MRDaXL/l/IBkErmQhcMVjxOODIbEQ0FqS8SHdlFgwAck5/3/ajHjcSAQtWeCDSj7olgT/XlMIPIUxXIVWvmQ85lvLgha1XPA3lcnmt/v7KswsL7S2TQpa3grCXw4K72/hd7lCNygGbzisk712qc3iWhM6OABXAR8HfglcARwU/HykmZ3k3EjzZiQKKv0GYWYD32hammishbFCcnlHf9Z/G04WxlgUfaMqvIlZqEkeoD8INT39vnXHgu6HwuvO5PL09PlWn56+7MCbWD7o7+jP5unu991Q3cHjhW/OTYk4ibiRd/7bbj4IYplgQGp/bjD45HK+OyKbyw92pQShp9CtUPg225/139Z96PKBLBm86SdiMfLODbzp9meDbpfg9edD37gLXR+F4Ff4Zj6cmEFLMqHAUAOjzbv5IMyPlJgH/g1HGPtdCP7rt45xKmSDObCzQ8FhrMzsEOBjwK3OuXeG9j8PfBs4A7ipTtUTKWtgHMIwZWJmxOLbB6aWpgQtTQk6qpg9OdHlnRuYbdOf8cGj0ITelBgciDpQLmjWLwSQQpDr7c8F3Wy+NSncBRaP2ZBxGjErjJ8IutwyOfqz+YFug1ze0do0OKuoKRH3LVA5P64jk8vTl80N1Kc/WOAtFgwWMYYGMDOjP5sbHGfUl8UMmkOzmeJB910uXwh1jr6gboUxLIMtY/iuAAe54DXmg0BX6EqIxYxcPu9DYonglXfQmwkCYV+Wvmx+oPuiJej2MSuEUP/7CkF0oDukTFYwCLpGGPhmv7Oz4cczjqsJGxyAM/F/X98q2n8d8HXgLBQcRCa8mNnAdODh0tiQcjLucvl81TOCCt17ufxgF12psQ+FMQ+Z7OCU7L4ggBS6EVqb4iQTcXozWbp6g1a1ft91NTio1gaOlQ1azWJFg4ELA3yd82NMMkEgLIzbyuTcwIysQrArdKEUgpcftGsDr7G7fzDw9QR1CndDFJprHOHZmkMHRu8xs3bfFiZycJgP5IGHwzudc71mtih4XEREaiA+iqu4mlkwSHOkYxvxmG+5Genj049tSMLU4dr0ZDgT+Xq8s4F1zrlSHVkrgZlmVrKT28zON7OdZGkzERGRyk3k4NAGlBv90hsqsx3n3LXOuaN2SK1EREQibCIHh26gxNqrALSEyoiIiEiFJnJwWIXvjigVHjrx3Ri1u2iDiIjIBDCRg8Mj+Nd3dHinmbUA8wCNYRAREanSRA4ON+NnqlxQtP88/NiGG2tdIRERkaibsNMxnXOLzexq4KNmditwO4MrR96L1nAQERGp2oQNDoELgOXA+cCpwDrgO/hrVWh9WRERkSpN6ODgnMvhr1FxRb3rIiIiMhFM5DEOIiIiMs4UHERERKRiE7qrYrykUql6V0FERKRWXDqdLns1MrU4iIiISMXMOV3HvJbMbKGugzF2Oo/jQ+dxfOg8jg+dx/Gxo8+jWhxERESkYgoOIiIiUjEFh9q7tt4VmCB0HseHzuP40HkcHzqP42OHnkeNcRAREZGKqcVBREREKqbgICIiIhVTcNjBzCxmZhea2RIz6zWzl8zsCjObVO+6NSIz29/MLjWzv5jZWjPbamaLzOw/S50zMzvAzH5lZhvNrMvM7jezE+tR90ZmZm1m9ryZOTP7bonHdR6HYWbTzey/zOy54P/xWjO728z+uaiczmMZZtZuZp8zs8XB/+t1ZvagmZ1jZlZUdqc/j2Z2kZn9zMyWBf9vl49QvuJzNtbPJa0cueNdhb+U9y/xF9sqXNr7SDM7SVfp3M6/Ah8BfgPcCGSAE4CvAO8xs2Odcz0AZrYv8CCQBS4HNgPnAXea2Zudc3fVof6N6lJgZqkHdB6HZ2Z7AfcA7cAPgaXAVOBwoDNUTuexDDOLAb8H/gn4Mf4qxW3AmcCP8O+LnwnK6jx6XwM2AI8BHcMVHMU5G9vnknNOtx10Aw4B8sAvivZ/DHDAe+tdx0a7AUcBU0vs/0pwzj4a2ncLkAPmhfa1Ay8AzxAM/t3Zb8CrgzeUTwbn8LtFj+s8Dn/+7gdeAmaNUE7nsfy5OS7427uqaH8TsAzYpPO43TnbJ3T/SWD5MGUrPmfj8bmkrood60zAgG8V7b8O6AbOqnWFGp1zbqFzbnOJh24OtocCBE1qpwH3OOcWhZ6/DfgBsD8wf8fWtvGZWRz/93YHcGuJx3Ueh2FmC4DXAZc751abWdLM2kqU03kc3pRguyq80znXD6wDukDnMcw5t6yScqM4Z2P+XFJw2LHm45Pdw+GdzrleYBE7yX+AcTIn2K4JtocDzcBDJcr+Jdjq/MKFwIHAR8s8rvM4vLcE2xfN7LdAD9BlZkvNLPwGq/M4vIeBTcB/mNm7zWzPoE/+MuA1wCVBOZ3H6lV7zsb8uaTgsGPNBtY55/pKPLYSmGlmTTWuU+QE35ovxje33xTsnh1sV5Z4SmFfZ4nHdhpmtjfwJeBS59zyMsV0Hod3QLC9DpgOfAD4N6Af+ImZfTB4XOdxGM65jfhvxRvwzeovAEvw45ne6Zy7Liiq81i9as/ZmD+XNDhyx2oDSv3jAPSGyvTXpjqR9S3gWOBzzrlngn2F5uJS57e3qMzO6nvA88CVw5TReRze5GC7FTghaFrHzH6J75v/mpn9GJ3HSmzD99X/Bj+Qbzo+ONxkZm9zzv0vOo+jUe05G/PnkoLDjtUN7FrmsZZQGSnDzL6Mb2a/1jl3WeihwnlrLvG0nf7cBs3oJwMLnHOZYYrqPA6vJ9j+tBAawH+DNrPfAO/Ht0roPA7DzA7Dh4ULnXPXhPb/FB8mrgtmBug8Vq/aczbmzyV1VexYq/DNPqX+QTvxzUVqbSjDzC4BPo+frvWhoocLg6xKNVsW9pVqupvwgr+3K4HbgZfNbD8z2w/YKygyNdjXgc7jSFYE25dLPLY62E5D53EkF+I/lH4W3umc6wZuw/9tzkXncTSqPWdj/lxScNixHsGf46PDO82sBZgHLKxDnSLBzL4IfBG4ATjXBfOFQhbjm9uOK/H0Y4Ptznp+W4FdgFOBZ0O3e4LHzwp+Phedx5EUBpDNKfFYYd8r6DyOpPABFi/xWCK01XmsXrXnbOyfS/WeqzqRb8BhDD9f9qx617ERb/iBkA4fGmLDlPsZfu7yEaF9hbnLS9lJ5nuXOC9J4F0lbh8Ozuvvg5/313kc8VxOA7bgWx7aQ/tn4fvsl4b26TyWP49XBX97/1G0vwP/DXgDkNB5LHv+RlrHoeJzNh6fS7o65g5mZt/B99H/Et90XFih68/AiU4rRw5hZh8Bvgu8CHwB/wcetsb5QVQEze8P41eXvAr/Bn8e/j/Gqc65O2tV7ygws7n4wZJXO+c+Gtqv8zgMMzsf+D7wFPDf+EWLPowPD/+fc+4PQTmdxzKC1TcfwwexG/Hvf9Px52cu8BHnXDooq/MImNnZDHYvfgz/d3dF8PMLzrmfhMpWdc7G/LlU7yQ10W/4prlP4Vfv6sP3NV1J6NuLbkPO1/X41Fvudk9R+YOAX+PniHcDDwAn1ft1NOIN/wa93cqROo8Vnbt34OfEd+FnWPwBeK3OY1XncF/8ctMrgg+4LcB9wDt0Hkuer3sqfR+s9pyN9XNJLQ4iIiJSMQ2OFBERkYopOIiIiEjFFBxERESkYgoOIiIiUjEFBxEREamYgoOIiIhUTMFBREREKqarY4rIhJdKpS7BX/vkhHQ6fU99ayMSbQoOIjKiVCpVyUpx+lAW2QkoOIhINb40zGPLa1UJEakfBQcRqVg6nb6k3nUQkfpScBCRcRceU4C/wt8FwIH4C0T9DvhcOp1+ucTzXoW/KuobgF2AdcBdwJfT6fSzJcrH8VcBPBs4FH8FwZX4CwR9o8xz3gX8R1C+F3/Bqk+l0+mVY3jJIjsNzaoQkR3pQuAa4AngW/ir8X0QeDCVSu0SLphKpeYDC4GzgEeA/8JfkfJ9wMJUKnVUUfkm4A7ge8AewE3At4FHgbcDry1RnxTwP/hulauBJ4HTgbtSqVTzWF+syM5ALQ4iUrGgJaGU3nQ6/fUS+98MHJNOpx8PHeMqfAvE14F/C/YZcAMwBTgrnU7fGCp/OvD/gP9JpVIHp9PpfPDQJcBJwG+Bd6fT6b7Qc5qDYxV7EzA/nU4vDpW9CTgTeBtwS7nXLiKeWhxEpBpfLHP7bJnyPwmHhsAlwGbgvaFv+f+E78p4KBwaANLp9M3AA8ABwOtgoIsiBfQAHwqHhuA5fel0em2J+nw7HBoC1wXbo8u8BhEJUYuDiFQsnU5blU+5t8QxNqdSqUXA64GDgEXAq4OH/1TmOH/Ch4YjgfvwIWMq8Nd0Or2qivosLLHvpWA7rYrjiOy01OIgIjvSmjL7CwMjpxZtV5cpX9jfUbStdkDjphL7ssE2XuWxRHZKCg4isiPtVmb/7sF2c9F29xJlAWYVldsUbDtHXTMRGRUFBxHZkV5fvCOVSk0F5uGnQj4d7C6Mgzi+zHEK+x8Ltkvw4eHwVCo1e+zVFJFKKTiIyI50diqVOrJo3yX4romfhgY1/hk/VfN1wToLA4KfFwBL8YMkSafTOSANtALXFE+lTKVSTcXTPUVkfGhwpIhUbJjpmAC/SqfTi4r2/R74cyqVugU/TuF1wW05oZkY6XTapVKpDwD/C9ycSqV+jW9VOAD4F/zCUe8PTcUEv/z1McBbgaWpVOp3Qbk9gJOBTwPXj+JlisgwFBxEpBpfHOax5fgZEmFXAb/Er9twOrAN/2H+uXQ6/Uq4YDqd/muwCNTn8eszvBW/cuRP8StHPlNUvj+VSr0J+BDwfuADgAGrgt/5QLUvTkRGZs5VctE7EZHK6TLWIhOXxjiIiIhIxRQcREREpGIKDiIiIlIxjXEQERGRiqnFQURERCqm4CAiIiIVU3AQERGRiik4iIiISMUUHERERKRiCg4iIiJSsf8f2T2TDW7FEooAAAAASUVORK5CYII=\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ooo.plot_history(history, plot={'MSE' :['mse', 'val_mse'],\n", " 'MAE' :['mae', 'val_mae'],\n", " 'LOSS':['loss','val_loss']})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 7 - Restore a model :" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7.1 - Reload model" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "Dense_n1 (Dense) (None, 64) 896 \n", "_________________________________________________________________\n", "Dense_n2 (Dense) (None, 64) 4160 \n", "_________________________________________________________________\n", "Output (Dense) (None, 1) 65 \n", "=================================================================\n", "Total params: 5,121\n", "Trainable params: 5,121\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Loaded.\n" ] } ], "source": [ "loaded_model = tf.keras.models.load_model('./run/models/best_model.h5')\n", "loaded_model.summary()\n", "print(\"Loaded.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7.2 - Evaluate it :" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "x_test / loss : 12.8820\n", "x_test / mae : 2.5248\n", "x_test / mse : 12.8820\n" ] } ], "source": [ "score = loaded_model.evaluate(x_test, y_test, verbose=0)\n", "\n", "print('x_test / loss : {:5.4f}'.format(score[0]))\n", "print('x_test / mae : {:5.4f}'.format(score[1]))\n", "print('x_test / mse : {:5.4f}'.format(score[2]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 7.3 - Make a prediction" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "my_data = [ 1.26425925, -0.48522739, 1.0436489 , -0.23112788, 1.37120745,\n", " -2.14308942, 1.13489104, -1.06802005, 1.71189006, 1.57042287,\n", " 0.77859951, 0.14769795, 2.7585581 ]\n", "real_price = 10.4\n", "\n", "my_data=np.array(my_data).reshape(1,13)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction : 10.39 K$ Reality : 10.40 K$\n" ] } ], "source": [ "predictions = loaded_model.predict( my_data )\n", "print(\"Prediction : {:.2f} K$ Reality : {:.2f} K$\".format(predictions[0][0], real_price))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "<img width=\"80px\" src=\"../fidle/img/00-Fidle-logo-01.svg\"></img>" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }