Newer
Older
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\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 information such as Crime, areas of non-retail business in the town, \n",
"age of people who own the house and many other attributes...\n",
"\n",
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"\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.4.3\n",
"Run time : Friday 28 February 2020, 10:23:12\n",
"TensorFlow version : 2.0.0\n",
"Keras version : 2.2.4-tf\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",
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
"from importlib import reload\n",
"\n",
"sys.path.append('..')\n",
"import fidle.pwk as ooo\n",
"\n",
"ooo.init()\n",
"os.makedirs('./run/models', mode=0o750, exist_ok=True)"
]
},
{
"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": "raw",
"metadata": {},
"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": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795\" ><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",
" <th id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795level0_row0\" class=\"row_heading level0 row0\" >0</th>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col0\" class=\"data row0 col0\" >0.01</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col1\" class=\"data row0 col1\" >18.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col2\" class=\"data row0 col2\" >2.31</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col3\" class=\"data row0 col3\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col4\" class=\"data row0 col4\" >0.54</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col5\" class=\"data row0 col5\" >6.58</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col6\" class=\"data row0 col6\" >65.20</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col7\" class=\"data row0 col7\" >4.09</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col8\" class=\"data row0 col8\" >1.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col9\" class=\"data row0 col9\" >296.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col10\" class=\"data row0 col10\" >15.30</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col11\" class=\"data row0 col11\" >396.90</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col12\" class=\"data row0 col12\" >4.98</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row0_col13\" class=\"data row0 col13\" >24.00</td>\n",
" <th id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795level0_row1\" class=\"row_heading level0 row1\" >1</th>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col0\" class=\"data row1 col0\" >0.03</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col1\" class=\"data row1 col1\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col2\" class=\"data row1 col2\" >7.07</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col3\" class=\"data row1 col3\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col4\" class=\"data row1 col4\" >0.47</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col5\" class=\"data row1 col5\" >6.42</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col6\" class=\"data row1 col6\" >78.90</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col7\" class=\"data row1 col7\" >4.97</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col8\" class=\"data row1 col8\" >2.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col9\" class=\"data row1 col9\" >242.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col10\" class=\"data row1 col10\" >17.80</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col11\" class=\"data row1 col11\" >396.90</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col12\" class=\"data row1 col12\" >9.14</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row1_col13\" class=\"data row1 col13\" >21.60</td>\n",
" <th id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795level0_row2\" class=\"row_heading level0 row2\" >2</th>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col0\" class=\"data row2 col0\" >0.03</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col1\" class=\"data row2 col1\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col2\" class=\"data row2 col2\" >7.07</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col3\" class=\"data row2 col3\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col4\" class=\"data row2 col4\" >0.47</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col5\" class=\"data row2 col5\" >7.18</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col6\" class=\"data row2 col6\" >61.10</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col7\" class=\"data row2 col7\" >4.97</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col8\" class=\"data row2 col8\" >2.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col9\" class=\"data row2 col9\" >242.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col10\" class=\"data row2 col10\" >17.80</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col11\" class=\"data row2 col11\" >392.83</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col12\" class=\"data row2 col12\" >4.03</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row2_col13\" class=\"data row2 col13\" >34.70</td>\n",
" <th id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795level0_row3\" class=\"row_heading level0 row3\" >3</th>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col0\" class=\"data row3 col0\" >0.03</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col1\" class=\"data row3 col1\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col2\" class=\"data row3 col2\" >2.18</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col3\" class=\"data row3 col3\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col4\" class=\"data row3 col4\" >0.46</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col5\" class=\"data row3 col5\" >7.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col6\" class=\"data row3 col6\" >45.80</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col7\" class=\"data row3 col7\" >6.06</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col8\" class=\"data row3 col8\" >3.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col9\" class=\"data row3 col9\" >222.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col10\" class=\"data row3 col10\" >18.70</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col11\" class=\"data row3 col11\" >394.63</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col12\" class=\"data row3 col12\" >2.94</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row3_col13\" class=\"data row3 col13\" >33.40</td>\n",
" <th id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795level0_row4\" class=\"row_heading level0 row4\" >4</th>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col0\" class=\"data row4 col0\" >0.07</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col1\" class=\"data row4 col1\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col2\" class=\"data row4 col2\" >2.18</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col3\" class=\"data row4 col3\" >0.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col4\" class=\"data row4 col4\" >0.46</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col5\" class=\"data row4 col5\" >7.15</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col6\" class=\"data row4 col6\" >54.20</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col7\" class=\"data row4 col7\" >6.06</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col8\" class=\"data row4 col8\" >3.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col9\" class=\"data row4 col9\" >222.00</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col10\" class=\"data row4 col10\" >18.70</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col11\" class=\"data row4 col11\" >396.90</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col12\" class=\"data row4 col12\" >5.33</td>\n",
" <td id=\"T_f61cd91c_5a0b_11ea_81e5_41c397e73795row4_col13\" class=\"data row4 col13\" >36.20</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x7f2b48bd6f90>"
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Données manquantes : 0 Shape is : (506, 14)\n"
]
}
],
"source": [
"data = pd.read_csv('./data/BostonHousing.csv', header=0)\n",
"\n",
"display(data.head(5).style.format(\"{0:.2f}\"))\n",
"print('Données manquantes : ',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": 3,
"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": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795\" ><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",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col0\" class=\"data row0 col0\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col1\" class=\"data row0 col1\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col2\" class=\"data row0 col2\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col3\" class=\"data row0 col3\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col4\" class=\"data row0 col4\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col5\" class=\"data row0 col5\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col6\" class=\"data row0 col6\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col7\" class=\"data row0 col7\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col8\" class=\"data row0 col8\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col9\" class=\"data row0 col9\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col10\" class=\"data row0 col10\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col11\" class=\"data row0 col11\" >354.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row0_col12\" class=\"data row0 col12\" >354.00</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col0\" class=\"data row1 col0\" >3.80</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col1\" class=\"data row1 col1\" >10.67</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col2\" class=\"data row1 col2\" >11.27</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col3\" class=\"data row1 col3\" >0.08</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col4\" class=\"data row1 col4\" >0.56</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col5\" class=\"data row1 col5\" >6.30</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col6\" class=\"data row1 col6\" >67.72</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col7\" class=\"data row1 col7\" >3.76</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col8\" class=\"data row1 col8\" >9.64</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col9\" class=\"data row1 col9\" >411.60</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col10\" class=\"data row1 col10\" >18.45</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col11\" class=\"data row1 col11\" >355.42</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row1_col12\" class=\"data row1 col12\" >12.47</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col0\" class=\"data row2 col0\" >9.33</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col1\" class=\"data row2 col1\" >22.26</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col2\" class=\"data row2 col2\" >6.84</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col3\" class=\"data row2 col3\" >0.27</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col4\" class=\"data row2 col4\" >0.12</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col5\" class=\"data row2 col5\" >0.69</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col6\" class=\"data row2 col6\" >28.69</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col7\" class=\"data row2 col7\" >2.09</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col8\" class=\"data row2 col8\" >8.75</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col9\" class=\"data row2 col9\" >170.38</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col10\" class=\"data row2 col10\" >2.18</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col11\" class=\"data row2 col11\" >91.02</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row2_col12\" class=\"data row2 col12\" >6.91</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col0\" class=\"data row3 col0\" >0.01</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col1\" class=\"data row3 col1\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col2\" class=\"data row3 col2\" >1.25</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col3\" class=\"data row3 col3\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col4\" class=\"data row3 col4\" >0.39</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col5\" class=\"data row3 col5\" >3.56</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col6\" class=\"data row3 col6\" >2.90</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col7\" class=\"data row3 col7\" >1.13</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col8\" class=\"data row3 col8\" >1.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col9\" class=\"data row3 col9\" >187.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col10\" class=\"data row3 col10\" >12.60</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col11\" class=\"data row3 col11\" >0.32</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row3_col12\" class=\"data row3 col12\" >1.73</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col0\" class=\"data row4 col0\" >0.08</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col1\" class=\"data row4 col1\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col2\" class=\"data row4 col2\" >5.19</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col3\" class=\"data row4 col3\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col4\" class=\"data row4 col4\" >0.45</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col5\" class=\"data row4 col5\" >5.89</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col6\" class=\"data row4 col6\" >42.25</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col7\" class=\"data row4 col7\" >2.08</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col8\" class=\"data row4 col8\" >4.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col9\" class=\"data row4 col9\" >279.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col10\" class=\"data row4 col10\" >17.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col11\" class=\"data row4 col11\" >374.46</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row4_col12\" class=\"data row4 col12\" >7.12</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col0\" class=\"data row5 col0\" >0.23</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col1\" class=\"data row5 col1\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col2\" class=\"data row5 col2\" >9.79</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col3\" class=\"data row5 col3\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col4\" class=\"data row5 col4\" >0.54</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col5\" class=\"data row5 col5\" >6.21</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col6\" class=\"data row5 col6\" >76.50</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col7\" class=\"data row5 col7\" >3.21</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col8\" class=\"data row5 col8\" >5.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col9\" class=\"data row5 col9\" >332.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col10\" class=\"data row5 col10\" >19.10</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col11\" class=\"data row5 col11\" >390.94</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row5_col12\" class=\"data row5 col12\" >10.99</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col0\" class=\"data row6 col0\" >3.69</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col1\" class=\"data row6 col1\" >12.50</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col2\" class=\"data row6 col2\" >18.10</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col3\" class=\"data row6 col3\" >0.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col4\" class=\"data row6 col4\" >0.63</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col5\" class=\"data row6 col5\" >6.63</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col6\" class=\"data row6 col6\" >94.25</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col7\" class=\"data row6 col7\" >5.12</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col8\" class=\"data row6 col8\" >24.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col9\" class=\"data row6 col9\" >666.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col10\" class=\"data row6 col10\" >20.20</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col11\" class=\"data row6 col11\" >396.12</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row6_col12\" class=\"data row6 col12\" >16.63</td>\n",
" <th id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795level0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col0\" class=\"data row7 col0\" >88.98</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col1\" class=\"data row7 col1\" >100.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col2\" class=\"data row7 col2\" >27.74</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col3\" class=\"data row7 col3\" >1.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col4\" class=\"data row7 col4\" >0.87</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col5\" class=\"data row7 col5\" >8.70</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col6\" class=\"data row7 col6\" >100.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col7\" class=\"data row7 col7\" >12.13</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col8\" class=\"data row7 col8\" >24.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col9\" class=\"data row7 col9\" >711.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col10\" class=\"data row7 col10\" >22.00</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col11\" class=\"data row7 col11\" >396.90</td>\n",
" <td id=\"T_f7d13686_5a0b_11ea_81e5_41c397e73795row7_col12\" class=\"data row7 col12\" >37.97</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x7f2b48b9b810>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<style type=\"text/css\" >\n",
"</style><table id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795\" ><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",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row0\" class=\"row_heading level0 row0\" >count</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col0\" class=\"data row0 col0\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col1\" class=\"data row0 col1\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col2\" class=\"data row0 col2\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col3\" class=\"data row0 col3\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col4\" class=\"data row0 col4\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col5\" class=\"data row0 col5\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col6\" class=\"data row0 col6\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col7\" class=\"data row0 col7\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col8\" class=\"data row0 col8\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col9\" class=\"data row0 col9\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col10\" class=\"data row0 col10\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col11\" class=\"data row0 col11\" >354.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row0_col12\" class=\"data row0 col12\" >354.00</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col0\" class=\"data row1 col0\" >-0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col1\" class=\"data row1 col1\" >-0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col2\" class=\"data row1 col2\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col3\" class=\"data row1 col3\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col4\" class=\"data row1 col4\" >-0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col5\" class=\"data row1 col5\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col6\" class=\"data row1 col6\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col7\" class=\"data row1 col7\" >-0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col8\" class=\"data row1 col8\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col9\" class=\"data row1 col9\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col10\" class=\"data row1 col10\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col11\" class=\"data row1 col11\" >0.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row1_col12\" class=\"data row1 col12\" >-0.00</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row2\" class=\"row_heading level0 row2\" >std</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col0\" class=\"data row2 col0\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col1\" class=\"data row2 col1\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col2\" class=\"data row2 col2\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col3\" class=\"data row2 col3\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col4\" class=\"data row2 col4\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col5\" class=\"data row2 col5\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col6\" class=\"data row2 col6\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col7\" class=\"data row2 col7\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col8\" class=\"data row2 col8\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col9\" class=\"data row2 col9\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col10\" class=\"data row2 col10\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col11\" class=\"data row2 col11\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row2_col12\" class=\"data row2 col12\" >1.00</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row3\" class=\"row_heading level0 row3\" >min</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col0\" class=\"data row3 col0\" >-0.41</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col1\" class=\"data row3 col1\" >-0.48</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col2\" class=\"data row3 col2\" >-1.46</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col3\" class=\"data row3 col3\" >-0.29</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col4\" class=\"data row3 col4\" >-1.46</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col5\" class=\"data row3 col5\" >-3.99</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col6\" class=\"data row3 col6\" >-2.26</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col7\" class=\"data row3 col7\" >-1.26</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col8\" class=\"data row3 col8\" >-0.99</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col9\" class=\"data row3 col9\" >-1.32</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col10\" class=\"data row3 col10\" >-2.69</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col11\" class=\"data row3 col11\" >-3.90</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row3_col12\" class=\"data row3 col12\" >-1.55</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col0\" class=\"data row4 col0\" >-0.40</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col1\" class=\"data row4 col1\" >-0.48</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col2\" class=\"data row4 col2\" >-0.89</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col3\" class=\"data row4 col3\" >-0.29</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col4\" class=\"data row4 col4\" >-0.91</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col5\" class=\"data row4 col5\" >-0.59</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col6\" class=\"data row4 col6\" >-0.89</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col7\" class=\"data row4 col7\" >-0.80</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col8\" class=\"data row4 col8\" >-0.65</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col9\" class=\"data row4 col9\" >-0.78</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col10\" class=\"data row4 col10\" >-0.67</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col11\" class=\"data row4 col11\" >0.21</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row4_col12\" class=\"data row4 col12\" >-0.77</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col0\" class=\"data row5 col0\" >-0.38</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col1\" class=\"data row5 col1\" >-0.48</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col2\" class=\"data row5 col2\" >-0.22</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col3\" class=\"data row5 col3\" >-0.29</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col4\" class=\"data row5 col4\" >-0.17</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col5\" class=\"data row5 col5\" >-0.12</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col6\" class=\"data row5 col6\" >0.31</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col7\" class=\"data row5 col7\" >-0.26</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col8\" class=\"data row5 col8\" >-0.53</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col9\" class=\"data row5 col9\" >-0.47</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col10\" class=\"data row5 col10\" >0.30</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col11\" class=\"data row5 col11\" >0.39</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row5_col12\" class=\"data row5 col12\" >-0.21</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col0\" class=\"data row6 col0\" >-0.01</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col1\" class=\"data row6 col1\" >0.08</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col2\" class=\"data row6 col2\" >1.00</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col3\" class=\"data row6 col3\" >-0.29</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col4\" class=\"data row6 col4\" >0.62</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col5\" class=\"data row6 col5\" >0.49</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col6\" class=\"data row6 col6\" >0.92</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col7\" class=\"data row6 col7\" >0.65</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col8\" class=\"data row6 col8\" >1.64</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col9\" class=\"data row6 col9\" >1.49</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col10\" class=\"data row6 col10\" >0.80</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col11\" class=\"data row6 col11\" >0.45</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row6_col12\" class=\"data row6 col12\" >0.60</td>\n",
" <th id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795level0_row7\" class=\"row_heading level0 row7\" >max</th>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col0\" class=\"data row7 col0\" >9.13</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col1\" class=\"data row7 col1\" >4.01</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col2\" class=\"data row7 col2\" >2.41</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col3\" class=\"data row7 col3\" >3.41</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col4\" class=\"data row7 col4\" >2.64</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col5\" class=\"data row7 col5\" >3.50</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col6\" class=\"data row7 col6\" >1.13</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col7\" class=\"data row7 col7\" >4.01</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col8\" class=\"data row7 col8\" >1.64</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col9\" class=\"data row7 col9\" >1.76</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col10\" class=\"data row7 col10\" >1.63</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col11\" class=\"data row7 col11\" >0.46</td>\n",
" <td id=\"T_f7d89eee_5a0b_11ea_81e5_41c397e73795row7_col12\" class=\"data row7 col12\" >3.69</td>\n",
" </tr>\n",
" </tbody></table>"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x7f2b48814c10>"
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
]
},
"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": 5,
"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": 6,
"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": "iVBORw0KGgoAAAANSUhEUgAAAb0AAAGVCAIAAADls7hIAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzde1wU5f448Ge4LCwLuyAJCwuKWkRe2Aj80RqEgkGFYGwgmmgdD8Q39QApKph6vJFpmHC+aiocA6VM4fXCAtPyoHQOCAkWmBpi4I27gguCclmZ3x/Pab7TLiw7sOzs4uf9l/vMM898dmI/zeWZzxAkSSIAAABqM2A7AAAA0DOQNwEAgBnImwAAwAzkTQAAYMaI/qGkpOSzzz5jKxQAANBNEolk1apV1Mc/HW/evXs3JydH6yEBoFV1dXXwd05XWlpaWlrKdhS6q7S0tKSkhN5ipNwpOztbW/EAwIITJ06Eh4fD3zklLCwMwQ9/cHj/0MH1TQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBACoJSsri/iDubm5wtLbt28HBwd3dHQghBobG5OSkjw8PPh8vlAo9PHxyc3NHd5Gv/vuO2dnZyOjAe5gkyRZXFy8YsUKZ2dnExMTGxsbLy+vrKwses2NhISE48ePK6yYkJBAfZGXX355GFFB3gRAXZ2dnc8999y8efPYDoRNn3/+OUmSnZ2d9MaKigoPDw9/f38+n48QioqKSklJ2bJlS2NjY2lpqYODg1QqTUhIYLShmpqa4ODgxMTE5ubmATtcv37dy8ururo6Jyenvb29tLR0woQJS5YsWbNmDdUnKioqMTFx48aN9BU/+eQTkiRJkjQ0NGQUEgXyJgDqIkmyv7+/v7+frQDMzc29vLzY2vpgOjo6goKC3n777ZUrV1KNycnJgYGBPB7Pycnpiy++EIlEycnJLS0t6g+7cePGWbNmXbp0ycLCYrA+RkZGJ06ccHV1NTU1nTx5ckZGhrW19d69e3t6enCHKVOm5ObmJiUlnThxYthfcIDtanAsAMY2CwuLmpoatqPQObt27Wpqatq0aRPVkp+fT+/A4XCmTp1aX19//fp1GxsbNYf95z//yeVyVXRwcXHp6+tT2JCjo2NFRUV3d7eJiQluFIvFoaGhq1evlkqlA57vDwMcbwIAho8kyfT0dE9PT3t7exXdamtrEULjxo1Tf2TVSXNAMpnsxo0bbm5uAoGA3h4SElJXV3fq1CmmAw4G8iYAajl58iR1M6G7u1uh5datW+Hh4ZaWltbW1vPmzaMOS5OTk3EHBweHsrIyPz8/CwsLMzOzOXPmFBcX4z7bt2/Hfahz8DNnzuCWZ555hj5OV1dXcXExXqSpQ6cRqqysbG5uFovFKvpkZmbW1NQ4OztPnTp1lMLo6OgoLi4ODg4WCoVHjhxRWPriiy8ihL7//ntNbQ7yJgBqeeutt0iSnD9//oAtcXFxcXFx9fX1x48fP3fu3KJFi3Cf+Ph4kiTFYrFMJouNjd2+fXtTU9O///3vtrY2X1/fH3/8ESG0YcMGkiR5PB418uuvv06SpLu7O9WCx+HxeK+88gq+pyGXy6mlvr6+1tbWrDxjfuXKFYSQg4PDgEuvXbsWGxu7bNkyKysrfDt+NGLYvn27QCDw8vIyNDTMzc2dPn26QgeRSESFqhGQNwHQgMjISIlEwuPx5s6dGxgYWFZWdv/+fXqHrq6u/fv34z4eHh5ZWVm9vb2xsbEa2Xp/fz9OphoZjZHGxkaEkMJ5McXV1TU7O3vlypVXrlyZOXPmKMWwYcOGnp6e3377zcXFxc3Nbdu2bQod+Hw+QRA4VI3QiUN9APQdPSk4OjoihBoaGqizbIQQj8fDZ4vYjBkz7O3tKysrGxsb7ezsRrj1wsLCEY4wbPiShbGx8WAdzp075+LiMtphcDgcFxeXzz//vLm5edOmTRKJZO7cufQORkZGjx8/1tTm4HgTAA2gH3BxOByEkMJ0JUtLS4VV8J1lRlNzdJCpqSlCSOG+NouCgoKQ0g19hJBcLh/GjabBQN4EQBtaW1sVzqNxxqTm5RgYGPT29tI7yGQyhUFG6frgSOCD5fb2drYD+S88/aitrY3e2NHRQZLkyI/rKZA3AdCG7u7usrIy6uOvv/7a0NAgFoupH7OdnV19fT3Voamp6c6dOwqDmJmZUbn1+eefP3To0ChHPTR8E6aurm7ApXK5fPRO0uPj4yMiIhQaT58+jf582QQhhHes8v2iYYO8CYA2CASC9evXl5SUdHV1lZeXR0REcDic1NRUqoO/v39DQ8PevXs7OztrampiY2OVp4i/9NJL1dXVd+/eLSkpqa2t9fb2xu0s3k8Xi8U2NjaVlZXKi9LS0ng83tq1a5UXRUREEARx8+bNEW79q6++2rp1661bt3p6em7durVu3bqsrCx3d/fIyEh6t4qKCoSQv7//CDdHgbwJgFrwbM1vvvkGIcTlciMiIkpLS+ktGzZsQAgRBLFz506EkJubG/1JdnNz8//93//dsmWLnZ3dq6++amVlde7cOR8fH6rD9u3bIyMjP/74Yxsbm/fee2/NmjVCobC1tZUgCOrJ7pSUFFdX1xdeeCE8PDw1NfWFF17A7XK5nK376QRBREZG/vTTTw0NDQqLVNzlb2xsNDc3nzBhgoqR8/Pz8UzV+vr6J0+e4H+np6dTHTZt2pSWlnbhwoU5c+bw+fwZM2YUFBTs2LHjP//5j8KlzNzcXJFIFBgYOIIv+mckDS4cQgIwpmn/71wsFotEIm1ukZHQ0NDQ0NAhux09ehT9UdeDTiaTiUSi6OhoNTf34MEDLpcbGRnJONBhqaioIAji2LFjyosMDQ09PT2HHEF5/8DxJgBgRAQCQV5eXk5Ozr59+4bsTJJkTEwMn89XnmU5Gmpra6VSaWJi4sKFCzU47HDyprm5OUGTnJyswYBGSJdjY0SXv4guxwZG2wcffKBcf9PNza28vPz06dO4/qYKzc3NtbW1BQUFQqFwNMP8r4MHDyYlJSUlJdEbqfqbT548Gea49INP9c9ffvnlF4TQ/Pnz1emsZbocGyO6/EV0ObYhafM8/dNPP6X/3D766CPtbJcRNc/Tn1pj6jxdN2sRjjGwk0cIP1dO2b59O9sRAQ3Q47wJAACsgLwJAADMaCxv6lctQrlcfvz48ddee00oFHK53BkzZqSmpuIHimUyGf2mBz6xksvlVEtoaCge5N69ezExMU5OThwOZ/z48VKpFE+vVdgb169fX7BggbW1Nf6oUCYHdrKu7WQAhka/+DLy+0K4FuH8+fMvXLjQ2dl59uxZLpc7c+ZMeh+xWMzj8SQSCe5TVlbm6urK4XAKCwupPvQ6g5i7u7u1tTW9RbmP6tjo8vLyEEIff/xxW1vbvXv3/vGPfxgYGNAvRQUEBBgYGPz+++/0tSQSyZdffon/3dDQMHHiRFtb21OnTj18+PDKlSs+Pj6mpqYXLlxQ2Bs+Pj7nz5/v6uoqLS01NDS8d+8eSZJz5swZN25cSUmJiiBhJ49wJw8G5ikrgPtCqinvn1HJm3l5efRNIoTof8e4NPQvv/xCtVy+fBkhJBaLqRYt/KRnz55Nb4mIiDA2Nm5vb8cfcWno5cuXUx2KiopEIlFvby/++O677yKEqF84SZKNjY0mJibu7u4Ke+O7775TDsDHx8fKyor++1f/i8BOVnMnDwbypgLIm6pp6X76gLUI6R1U1CIcjXiUzZs37/z58/QWsVjc19d39epV/NHf33/GjBkZGRmtra245dNPP/3b3/5G1Rk8efKkgYEB/UE6oVA4bdq0S5cuKdQ4+H//7/8pB1BYWNjW1iaRSIb9FWAn00cecCerRoA/5OTk5OTksB2F7srJyVH44xmVusXDq0XY0NDQ0tKiwVpPKrS3t+/evTs3N7euro5erevRo0fUv+Pi4v7617/u379/48aN1dXV586d++KLL/Cinp4eXDhrwDLXN27coL82gP7+Aw2CnTzCnYyPOgFCaM+ePQihDz/8kO1AdBTeP3Ts1HvHtQgJWjFBLdciDAoK+s9//pOamrpo0aJnnnmGIIiUlJQPP/yQpNUgWLx48fr16/fu3bt27drdu3e/++67VlZWeJGJiYmlpWVnZ+fjx4915PVYymAnq7ZgwQKNj6mnsrOzEeyQweH9Q8fOPCS2ahEaGRlVVVU9efKkuLhYKBTGxMSMHz8epwblGvomJibLly9vaWnZvXv3l19+qfAqGKlUKpfLqTvU2M6dOydMmEB/YRaLYCcDMErYyZujWotwSIaGhrNnz25qavr000/v37//+PHj8+fPHzhwQLnn8uXLcX2wuXPnPvvss/RFO3bsmDJlyrJly06fPt3e3t7W1nbw4MGtW7cmJyerc3CkhYKJsJMBGC30m0Rq3mdUuJb06aefkiRZUlJCb8TP4dJbAgMD8eq4pta1a9cCAgIsLCy4XK6Pj09RURF9EzKZLDIy0s7Ojsvlenl5lZWVUe9EXbduHe5TVVXl7e3N4/EcHR337ds3YGzKfvvtN5Ik7927Fx0d7ejoaGxsbGtr+95771ElDun3akmSjIqKQgj9+OOPyvuhtbV11apVkydPNjY2Hj9+vL+//9mzZ/Eihb2hvFe9vb1V30+HnTzynTwYuJ+uAO6nq6axeUgjoeO1CBUcPnxY4UeuF2AnqwB5UwHkTdXGVF0P7Thw4MCqVavYjmKMg52sF7KysqipOQp15BBCt2/fDg4OxnXkGhsbk5KSPDw8+Hy+UCj08fHJzc0d3ka/++47Z2fnAS/LkCRZXFy8YsUKZ2dnExMTGxsbLy+vrKwsknYSlpCQoDxxgqojRxDEyy+/PIyoIG8OID09PSQkpLOz88CBAw8ePID7jKMBdrKewvXeOzs76Y0VFRUeHh7+/v58Ph8hFBUVlZKSsmXLlsbGxtLSUgcHB6lUSl2lUVNNTU1wcHBiYmJzc/OAHa5fv+7l5VVdXZ2Tk9Pe3l5aWjphwoQlS5asWbOG6hMVFZWYmLhx40b6ip988gk+bDQ0NGQU0v+hH3yO9vmLXtQiJEkyLS0NIWRkZOTq6nrp0iW2w2EGdvKQtHyePtgzV7oz/gjfk9He3u7g4EB/T0ZgYGBGRgb1saenRyQSGRoaNjc3qx/VokWLduzY0dfXh9dV7vDbb78ZGRm1tbXRN2RtbW1iYtLd3U014vdkHD9+XHmEYb8nA94vBJ46kDcVjDBvfvTRR0ZGRvX19SrWfe211xBC//73v9WP6tGjR/gfg+XNAeFn5GQyGb0xLCzMwcGhr69PoTO8XwgAwAKSJNPT0z09Pe3t7VV0q62tRQiNGzdO/ZEV3kmpDplMduPGDTc3N4VnzEJCQurq6k6dOsV0wMFA3gRgUHgW1JQpUzgcjpWV1RtvvEE9cT+SWny6U+tv5CorK5ubm3EdmcFkZmbW1NQ4OztPnTp1lMLo6OgoLi4ODg4WCoVHjhxRWIoPQnEdGY2AvAnAwJqammbOnPnVV1+lpqbev3//p59+MjMz8/Pzw6/w3rBhA/nnqayvv/46SZLUHFj0x0sy6OfR+DEn3C4Wi2UyWWxs7Pbt25uamv7973+3tbX5+vr++OOPIxwf08KzFQihK1euIITotQLorl27Fhsbu2zZMisrK3w7fjRi2L59u0Ag8PLyMjQ0zM3NnT59ukIHkUhEhaoRkDcBGFhiYuLNmzdTUlLmzZvH5/OdnZ2/+uorOzu7mJiYwe7wMtXV1bV//36JRMLj8Tw8PLKysnp7exUeNh22/v5+nEw1MtpgcHmtAWuvIIRcXV2zs7NXrlx55coVegUvzdqwYUNPT89vv/3m4uLi5uam/IZhPp9PEIQGK4FB3gRgYHjKYWBgINViYmLi5+f3+PFjTZ3xjWqtv5HXKlRHd3c3Qogq/afs3Llzqampqq9+jhyHw3Fxcfn888+Dg4M3bdr0r3/9S6GDkZGRcnmEYYO8CcAAcBU7U1NTCwsLerutrS1CqKmpSSNbGbDWH/qjcpVeMDU1RQj19fWxHch/BQUFIYTy8/MV2uVy+TBuNA0G8iYAAzAxMREIBN3d3Q8fPqS34zN0oVCIP46wFh+u9Udv0XKtv5HD5bVwpVRdYGJighBqa2ujN3Z0dJAkqcGys5A3ARhYSEgIQog+eaWnp6egoIDL5QYEBOCWEdbiY6vWnwbhmzAK5fcpcrncxcVllDYdHx8fERGh0Hj69Gn057chIITwPlS+XzRskDcBGNiOHTsmTZoUFxeXn5//8OHD6urqd955p7GxMTU1FZ+toxHX4hvVWn/auZ8uFottbGwqKyuVF6WlpfF4vLVr1yovioiIIAji5s2bI9z6V199tXXr1lu3bvX09Ny6dWvdunVZWVnu7u6RkZH0bvgdqP7+/iPc3P+hT4KH54XA00D9v/P79+/HxcVNmjTJ2NhYIBAEBAQUFBTQOwy7Fh85yrX+SDVqFVJG+LzQ+vXrB3xe6MCBA1wul/4GU4qvr6+5ublcLlexOfw+VAVpaWlUh/b29vT09ICAAPyaaHNzc3d39x07dlAPGlHCwsLo7/ujwHOWAKhLR/7OdafW3wjzpkwmE4lE9OfTVXvw4AGXy42MjGQc6LDg59OPHTumvAieswQAsEMgEOTl5eXk5Ozbt2/IziRJxsTE8Pl85VmWo6G2tlYqlSYmJi5cuFCDw0LeBAAw8MEHHyjX33RzcysvLz99+jSuv6lCc3NzbW1tQUEBNSdhVB08eDApKSkpKYneSNXffPLkyfCGhbwJgLbh58orKyvr6+sJgtiwYQPbEaklIiKCOlFVqL+JEHJycsrPz8f1N1UQCoVFRUXTpk0btTD/ZOfOncpHmlT9TZIkh3ffDF5uBYC2xcfHx8fHsx0FGD443gQAAGYgbwIAADOQNwEAgBnImwAAwMwA94VOnDih/TgA0JqSkhIEf+c0+Oly2CGDqaurUyzMTJ8Er/yiYQAAAArPCxHkKJeDBmB48Ltb4b3qQAfB9U0AAGAG8iYAADADeRMAAJiBvAkAAMxA3gQAAGYgbwIAADOQNwEAgBnImwAAwAzkTQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBAAAZiBvAgAAM5A3AQCAGcibAADADORNAABgBvImAAAwA3kTAACYgbwJAADMQN4EAABmIG8CAAAzkDcBAIAZyJsAAMAM5E0AAGAG8iYAADADeRMAAJiBvAkAAMxA3gQAAGYgbwIAADOQNwEAgBnImwAAwAzkTQAAYIYgSZLtGABACKHo6Ojr169TH3/++edJkyZZWVnhj4aGhpmZmQ4ODixFB8D/MWI7AAD+y9bW9tChQ/SWy5cvU/+ePHkyJE2gI+A8HeiKd955Z7BFHA7nvffe02IsAKgC5+lAh0yfPv3atWsD/k1ev37d2dlZ+yEBoAyON4EOWbp0qaGhoUIjQRBisRiSJtAdkDeBDlm0aNGTJ08UGg0NDd99911W4gFgQHCeDnTLrFmzfvrpp/7+fqqFIIi7d++KRCIWowKADo43gW5ZsmQJQRDURwMDAy8vL0iaQKdA3gS6JSwsjP6RIIilS5eyFQwAA4K8CXTLM8884+fnR90dIggiJCSE3ZAAUAB5E+iciIgIfNnd0NAwICDA2tqa7YgA+BPIm0DnSKVSDoeDECJJMiIigu1wAFAEeRPoHB6PN2/ePIQQh8MJCgpiOxwAFEHeBLpo8eLFCKGQkBAej8d2LAAoIVnF9rcHAOil48ePs5i42K+HFBcXJ5FI2I4C6JysrKyFCxcaGf3fn2hJSUlKSsrx48dZjEqn7NmzByH04Ycfsh2ItoWHh7MbAPt5UyKRLFiwgO0ogM4JDg42NTVVaExJSYG/Fkp2djZC6CncIaznTbi+CXSUctIEQEdA3gQAAGYgbwIAADOQNwEAgBnImwA8LW7fvh0cHNzR0YEQamxsTEpK8vDw4PP5QqHQx8cnNzd3eMN+9913zs7O9JkPFJIki4uLV6xY4ezsbGJiYmNj4+XllZWVRZ+DmJCQoHdzJCBvgrGvs7Pzueeew88gPbUqKio8PDz8/f35fD5CKCoqKiUlZcuWLY2NjaWlpQ4ODlKpNCEhgdGYNTU1wcHBiYmJzc3NA3a4fv26l5dXdXV1Tk5Oe3t7aWnphAkTlixZsmbNGqpPVFRUYmLixo0bR/LttAzyJhj7SJLs7++n10LWMnNzcy8vL7a2jhDq6OgICgp6++23V65cSTUmJycHBgbyeDwnJ6cvvvhCJBIlJye3tLSoP+zGjRtnzZp16dIlCwuLwfoYGRmdOHHC1dXV1NR08uTJGRkZ1tbWe/fu7enpwR2mTJmSm5ublJR04sSJYX9BLWN//iYAo83CwqKmpobtKNi0a9eupqamTZs2US35+fn0DhwOZ+rUqfX19devX7exsVFz2H/+859cLldFBxcXl76+PoUNOTo6VlRUdHd3m5iY4EaxWBwaGrp69WqpVDrg+b6ugeNNAMY4kiTT09M9PT3t7e1VdKutrUUIjRs3Tv2RVSfNAclkshs3bri5uQkEAnp7SEhIXV3dqVOnmA7ICsibYIw7efIk8Yfu7m6Fllu3boWHh1taWlpbW8+bN486LE1OTsYdHBwcysrK/Pz8LCwszMzM5syZU1xcjPts374d96HOwc+cOYNbnnnmGfo4XV1dxcXFeJH2j6cqKyubm5vFYrGKPpmZmTU1Nc7OzlOnTh2lMDo6OoqLi4ODg4VC4ZEjRxSWvvjiiwih77//fpS2rmEsPhuP76mx+3w+0CP4ruvw1p0/fz5C6PHjxwot8+fPv3DhQmdn59mzZ7lc7syZM+lricViHo8nkUhwn7KyMldXVw6HU1hYSPXh8XivvPIKfS13d3dra2t6i3IfbM6cOePGjSspKRnelwoNDQ0NDR2y29GjRxFCH3/88YBLr169GhMTY2BgYGVldfHixeFFIhKJDA0NVXTYtm0bTjizZ8++fPmycof29naEkLe3tzqbYz1vwPEmeKpFRkZKJBIejzd37tzAwMCysrL79+/TO3R1de3fvx/38fDwyMrK6u3tjY2N1cjW+/v7qUQwehobGxFCCufFFFdX1+zs7JUrV165cmXmzJmjFMOGDRt6enp+++03FxcXNzc3Ko1S+Hw+QRA4VN2nB5dgARg99Ezh6OiIEGpoaKDOshFCPB4Pn0JiM2bMsLe3r6ysbGxstLOzG+HWCwsLRziCOvDVCWNj48E6nDt3zsXFZbTD4HA4Li4un3/+eXNz86ZNmyQSydy5c+kdjIyMHj9+PNphaAQcb4KnGv0oDL+cQ2G6kqWlpcIq+HYzo/k67MIVUhTua7MI1/BXuKGPEJLL5cO40cQKyJsAqNLa2qpwHo0zJjVZx8DAoLe3l95BJpMpDEJ/I7z24eNifAFRF+DpR21tbfTGjo4OkiRHfgivHZA3AVClu7u7rKyM+vjrr782NDSIxWLqF25nZ1dfX091aGpqunPnjsIgZmZmVG59/vnnDx06NMpR/8n06dMRQnV1dQMulcvlo3eSHh8fr/xmvdOnT6M/XyFBCOF9iEPVfZA3AVBFIBCsX7++pKSkq6urvLw8IiKCw+GkpqZSHfz9/RsaGvbu3dvZ2VlTUxMbG6s8b/yll16qrq6+e/duSUlJbW2tt7c3bvf19bW2ti4tLR3VryAWi21sbCorK5UXpaWl8Xi8tWvXKi+KiIggCOLmzZsj3PpXX321devWW7du9fT03Lp1a926dVlZWe7u7pGRkfRuFRUVCCF/f/8Rbk5LWLyXT+rAfAKgR4Y3D0mhXMXixYtLSkroLR999BH55zPxwMBAvK5YLBaJRNeuXQsICLCwsOByuT4+PkVFRfTxZTJZZGSknZ0dl8v18vIqKytzd3fH46xbtw73qaqq8vb25vF4jo6O+/bto9b19va2srK6cOHC8HaImvOQSJJcv369kZFRfX29QvuBAwe4XG58fLzyKr6+vubm5nK5XMWweXl5yiklLS2N6tDe3p6enh4QEODk5MThcMzNzd3d3Xfs2PHo0SOFocLCwkQiUW9vrzpfh/W8AXkT6I2RzN8cHpw3tblFRtTPmzKZTCQSRUdHqznygwcPuFxuZGTkCKJjoKKigiCIY8eOqdmf9byhB+fp5ubmBA2eoCsWi5cvX37p0iW2oxtdKip0qeNp3nWATiAQ5OXl5eTk7Nu3b8jOJEnGxMTw+XzlWZajoba2ViqVJiYmLly4UAub0wg9yJudnZ2//PILQmj+/PkkSfb19VVVVW3durWqqsrDw+Mvf/nLo0eP2I5R84as0KWOp3PXgQG5ubmVl5efPn0a199Uobm5uba2tqCgQCgUaiGwgwcPJiUlJSUlaWFbmqIHeVOBoaGhra3t/Pnzz507t3bt2oyMjEWLFpFj7lXs6lToYuop2XUagZ8rr6ysrK+vJwhiw4YNbEekAU5OTvn5+bj+pgpCobCoqGjatGnaiWrnzp16dKSJ6V/epPvkk088PT2//fbbr7/+mu1YNOyf//xnQkLC6NWAGMO7TiMUbpVs376d7YiADtHvvEkQBK7Dun//frZj0bDRfnBiDO86AEabfudNhBAu4VVaWko9Rnbv3r2YmBg872H8+PFSqRRPDUPqFRBDCPX09GzatMnFxcXMzGzcuHFBQUHffvvtkydPqA4qNqGamgFoh37tOgB0CAv38GmQevMJ6Dc3FFCFABoaGkiSbGhomDhxoq2t7alTpx4+fHjlyhUfHx9TU1P6FLkhC4hFRkYKBIIffvjh0aNHTU1N8fHxCKHz58/jpepsQjV1KphRVFToUqcK2Vjaddqfh6Tj1J+HNMaomTdGMQAWt01qIm9Sd4Txj//dd99FCH355ZdUh8bGRhMTE3d3d6oF//jz8vKoltDQUITQvXv38MdJkybNmjWLvhVnZ2fqx6/OJlQbMgA6FXnTx8dnyFnTY2nXQd5UAHmTLXpfRw4X7DM2Nsa1v06ePGlgYEB/c6FQKJw2bdqlS5fq6uocHByodhUFxF5//fXPP//8/fffX7Zs2cyZMw0NDa9fv051Vn8Tqg1ZwWxII6xCpqe7To/e3jXa8CPnsEO0T+/zZlFREUJIIjcOHrUAACAASURBVJEYGxv39PTgoi8Dlmi9ceMG/ZepooDYvn37JBJJZmamn58fQsjb2zs6OjokJAQhxGgTqg1ZwWy06emuCw8PV/cbPh1gh2ifft8X6u/vx88/rFixAiFkYmJiaWlpZGTU19enfGg9Z84cNYclCGLJkiX/+te/ZDLZyZMnSZKUSqWfffaZBjfBOv3ddSM9xRpDnubzdHbpd95MTEy8ePFiSEhIWFgYbpFKpXK5nHpzFrZz584JEybI5XI1h7W0tKyqqkIIGRsbv/baa/hWMvWmPY1sgnWw6wAYNv3Lm/39/S0tLd98842fn9+uXbuWLVv25ZdfUnVhd+zYMWXKlGXLlp0+fbq9vb2tre3gwYNbt25NTk5mNIf8f/7nfy5fvtzT09PS0rJr1y6SJH19fTW7iZFjWoUMdh0AmsH68faQ98V4PB49YIIgBALBjBkzPvjgg0uXLin3b21tXbVq1eTJk42NjcePH+/v73/27Fm8SM0CYhUVFdHR0S+88AKehPjyyy+npaVRr9BSvQnV1K9gNmSFLlKNKmRjadeRcD9dydN8ns7u/XSCZPViAUEQx48fX7BgAYsxAH1x4sSJ8PBwdv9idQq+xpKdnc12INrGet7Qv/N0AABgF+RNAJ4Wt2/fDg4OxnXkGhsbk5KSPDw8+Hy+UCj08fFRKIyvpr6+vj179ri7u1tYWNjY2Lzxxhv4sYgBOwcHBxMEoVAkJSEhAV+B0SOQNzWMGNzmzZvZjg48vSoqKjw8PPz9/XEduaioqJSUlC1btjQ2NpaWljo4OEil0oSEBEZjdnV1+fr6ZmRk7Nmzp6Wlpby83NzcPDg4+OrVq8qdjxw5MuBV+6ioqMTExI0bNw7ve7GDxWurpA5c3wV6RMv3hXg83iuvvKLL46t/X6i9vd3BwYH+nozAwMCMjAzqY09PD36it7m5Wf0APvjgAz6f39TURLV0dnaamJj8+uuvCj3r6+utrKyWLFmCENq2bZvCUvyeDPVTAet5A443ARj7du3a1dTUtGnTJqolPz8flwvAOBzO1KlTnzx5Qn8uVrXm5uZDhw4tXrzY1taWauTxeN3d3cqv842KigoLCxvsdZVisTg0NHT16tX6Mo0X8iYAYxxJkunp6Z6envb29iq61dbWIoTGjRun5rC4QiCuRqja4cOHr169mpycrKJPSEhIXV0d9YiEjoO8CcYgPEt0ypQpHA7HysrqjTfeOH/+PF60fft2fLmZ+sGfOXMGt1BFVfBLMrq6uoqLi/EiPC0ftxME4eDgUFZW5ufnZ2FhYWZmNmfOHOohqJGMP0oqKyubm5vFYrGKPpmZmTU1Nc7OzlOnTlVz2J9//hkhZGVltXr1akdHRw6HM3HixJiYmLa2Nnq3urq61atXHz58WPUbX1588UWE0Pfff6/m1lnG4jUCUgeuUwA9oub1zcbGxkmTJtna2ubl5bW3t1+/fl0qlRIEQX9qQPnaoru7u7W1Nb1lsOuPYrGYx+NJJBJchLSsrMzV1ZXD4RQWFmpkfHXKqmJqXt88evQoQujjjz8ecOnVq1djYmLwu04vXrw45GgUXFRQKBQuXry4pqbmwYMHmZmZPB7P2dlZJpNR3QICApYvX06PRPn6JkmSuOaLt7e3OptmPW/A8SYYaxITE2/evJmSkjJv3jw+n+/s7PzVV1/Z2dnFxMSM5OWgdF1dXfv375dIJDwez8PDIysrq7e3NzY2ViODU49XaWQ09EfBwAHLUCGEXF1ds7OzV65ceeXKFXqFwCF1d3cjhLhcbkZGxuTJky0tLZcuXZqYmFhdXb17927cJy0t7caNG7t27RpyND6fTxAEDlX3Qd4EYw2ehxgYGEi1mJiY+Pn5PX78WFOngTweD59XYjNmzLC3t6+srNTIz76wsLCtrU0ikYx8KAwnOGNj48E6nDt3LjU1VfXVT2X4Kd65c+fSLzIEBQWhP06379y5s2bNmsOHDys87zsYIyMj6h0EOg7yJhhTcJVPU1NThatp+J5vU1OTRrZiaWmp0GJjY4MQamlp0cj4mmVqaooQot4ipSlOTk4IIWtra3oj3g/37t1DCOHrJLNnz6amMON5SBs3bsQff//9d/q6crl8tF9HqCmQN8GYYmJiIhAIuru7Hz58SG/HZ+hCoRB/NDAw6O3tpXeQyWQKQ1GVopS1trYqnEfjjImzxsjH1yw7OzuEEL6AqEH4xpfCITbeD/j/UitWrFC4LKhwffPZZ5+lVuzo6CBJEoeq+yBvgrEGl5enz2jp6ekpKCjgcrkBAQG4xc7Orr6+nurQ1NR0584dhXHMzMyo3Pf8888fOnSIWtTd3V1WVkZ9/PXXXxsaGsRiMfWzH+H4moVnU+KXaiiTy+UuLi7DGPbNN98UiURnzpzB1wEw/ETQW2+9xXQ0vLuUJ37qJsibYKzZsWPHpEmT4uLi8vPzHz58WF1d/c477zQ2NqamplIztP39/RsaGvbu3dvZ2VlTUxMbG0sdKlJeeuml6urqu3fvlpSU1NbWent7U4sEAsH69etLSkq6urrKy8sjIiI4HE5qairVYSTjMy2rOiSxWGxjY1NZWam8KC0tjcfjrV27VnlRREQEQRA3b94cbFgTE5P09PTW1taFCxfeuHFDJpMdPXp0x44dnp6eMTExTIPEr4MebGK8ztHivfsBILbnEwA9ov5zlvfv34+Li5s0aZKxsbFAIAgICCgoKKB3kMlkkZGRdnZ2XC7Xy8urrKzM3d0d/yLWrVuH+1RVVXl7e/N4PEdHx3379lHrisVikUh07dq1gIAACwsLLpfr4+NTVFSkqfGHLKtKUf85y/Xr1xsZGdXX1yu0HzhwgMvlxsfHK6/i6+trbm4ul8tVj3zhwoWAgACBQMDhcFxcXDZv3vzo0SPlbtHR0QqZJyAggN4hLCxMJBL19vaq83VYzxuQN4He0JG6xThvsh0FSTLJmzKZTCQS0Z9PV+3BgwdcLjcyMnIE0TGAn08/duyYmv1Zzxtwng7A2CcQCPLy8nJycvDL+FQjSTImJobP52/btk0LsdXW1kql0sTExIULF2phcxoBeROAp4Kbm1t5efnp06dx/U0Vmpuba2trCwoKqOkHo+rgwYNJSUlJSUla2JamQN4EQF34ufLKysr6+nqCIDZs2MB2RMw4OTnl5+fj+psqCIXCoqKiadOmaSeqnTt36tGRJgYvEQRAXfHx8fHx8WxHAdgHx5sAAMAM5E0AAGAG8iYAADADeRMAAJhh/77Qnj17srOz2Y4C6AH8hHVYWBjbgegK/Cwm7BDtI0jNlUcdBvhPDgZz+vRpNzc37UwhBHpn1apVGixRyhTLeROAweAXwy5YsIDtQABQBNc3AQCAGcibAADADORNAABgBvImAAAwA3kTAACYgbwJAADMQN4EAABmIG8CAAAzkDcBAIAZyJsAAMAM5E0AAGAG8iYAADADeRMAAJiBvAkAAMxA3gQAAGYgbwIAADOQNwEAgBnImwAAwAzkTQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBAAAZiBvAgAAM5A3AQCAGcibAADADORNAABgBvImAAAwA3kTAACYgbwJAADMQN4EAABmIG8CAAAzRmwHAMB/yWQykiTpLV1dXQ8ePKA+mpubGxsbaz0uABQRCn+pALDF19f3/Pnzgy01NDSsr6+3tbXVZkgADAjO04GuWLRoEUEQAy4yMDB49dVXIWkCHQF5E+iK0NBQI6OBLxwRBLF06VItxwPAYCBvAl1hZWXl7+9vaGiovMjAwCAkJET7IQEwIMibQIdERET09/crNBoZGQUGBgoEAlZCAkAZ5E2gQ4KDg01MTBQanzx5EhERwUo8AAwI8ibQIWZmZiEhIQqTjbhc7ptvvslWSAAog7wJdMs777zT19dHfTQ2Ng4NDeVyuSyGBIACyJtAtwQEBNAvZfb19b3zzjssxgOAMsibQLcYGxsvXLiQw+Hgj5aWln5+fuyGBIACyJtA5yxatKi3txchZGxsHBERMdikTgDYAs9ZAp3T399vb2/f3NyMECoqKnrllVfYjgiAP4HjTaBzDAwMlixZghCys7ObNWsW2+EAoIjlM6ATJ06wGwDQTc888wxCyNPTMzs7m+1YgC6aNWuWg4MDa5snWcXa1wYA6LPjx4+zmLjYv+J+/PjxBQsWsB0F0Dk5OTmhoaH0lhMnToSHh8P/bilhYWEIoafwkHywullaA9c3gY5SSJoA6A7ImwAAwAzkTQAAYAbyJgAAMAN5EwAAmIG8CcDT4vbt28HBwR0dHQihxsbGpKQkDw8PPp8vFAp9fHxyc3OHMWZfX9+ePXvc3d0tLCxsbGzeeOONvLy8weY8BAcHEwSxfft2emNCQsLx48eHsWkWQd4EY19nZ+dzzz03b948tgNhU0VFhYeHh7+/P5/PRwhFRUWlpKRs2bKlsbGxtLTUwcFBKpUmJCQwGrOrq8vX1zcjI2PPnj0tLS3l5eXm5ubBwcFXr15V7nzkyJG8vDzl9qioqMTExI0bNw7ve7EC8iYY+0iS7O/vV34Dh9aYm5t7eXmxtXWEUEdHR1BQ0Ntvv71y5UqqMTk5OTAwkMfjOTk5ffHFFyKRKDk5uaWlRf1h16xZc/ny5R9++OHVV1/lcrkTJkzIyMhQrtiPEGpoaIiLi8OPzyqYMmVKbm5uUlKSHj09CHkTjH0WFhY1NTXfffcd24GwZteuXU1NTZs2baJa8vPz3333Xeojh8OZOnXqkydPrl+/ruaYzc3Nhw4dWrx4Mf39zDwer7u7e/r06Qqdo6KiwsLC/P39BxxKLBaHhoauXr1aLper+5VYBXkTgDGOJMn09HRPT097e3sV3WpraxFC48aNU3PYb7/99smTJ+ocRx8+fPjq1avJyckq+oSEhNTV1Z06dUrNrbML8iYY406ePEn8obu7W6Hl1q1b4eHhlpaW1tbW8+bNq6mpwWslJyfjDg4ODmVlZX5+fhYWFmZmZnPmzCkuLsZ9tm/fjvtQuePMmTO4Bdclocbp6uoqLi7Gi7RfTrSysrK5uVksFqvok5mZWVNT4+zsPHXqVDWH/fnnnxFCVlZWq1evdnR05HA4EydOjImJaWtro3erq6tbvXr14cOHLSwsVIz24osvIoS+//57NbfOMhafjcc33dh9Ph/oEXzXdXjrzp8/HyH0+PFjhZb58+dfuHChs7Pz7NmzXC535syZ9LXEYjGPx5NIJLhPWVmZq6srh8MpLCyk+vB4vFdeeYW+lru7u7W1Nb1FuQ82Z86ccePGlZSUDO9LhYaGhoaGDtnt6NGjCKGPP/54wKVXr16NiYkxMDCwsrK6ePGi+lvHO1AoFC5evLimpubBgweZmZk8Hs/Z2Vkmk1HdAgICli9fTo9k27ZtyqO1t7cjhLy9vdXZNOt5A443wVMtMjJSIpHweLy5c+cGBgaWlZXdv3+f3qGrq2v//v24j4eHR1ZWVm9vb2xsrEa23t/fTyWC0dPY2IgQGuwF9K6urtnZ2StXrrxy5crMmTPVHxYfvHO53IyMjMmTJ1taWi5dujQxMbG6unr37t24T1pa2o0bN3bt2jXkaHw+nyAIHKrug7wJnmr0TOHo6IgQamhooHfg8Xj4FBKbMWOGvb19ZWWlRn7hhYWFbW1tEolk5EOpgBOcwtuV6c6dO5eamqr66qcyHo+HEJo7dy79ykNQUBD643T7zp07a9asOXz4MO45JCMjo8ePHzOKgS2QN8FTjX4Uhl8GpzBdydLSUmEVGxsbhBCj+TrsMjU1RQjR366sEU5OTggha2treiPeOffu3UMI5eXltbe3z549m7qajOchbdy4EX/8/fff6evK5XJ9eeEz5E0AVGltbVU4j8YZEycIhJCBgQF+ixxFJpMpDMJuvUg7OzuEEL6AqEH4bpjCcTfeOXhm0ooVKxQuCypc33z22WepFTs6OkiSxKHqPsibAKjS3d1dVlZGffz1118bGhrEYjH1C7ezs6uvr6c6NDU13blzR2EQMzMzKrc+//zzhw4dGuWo/wTPpqyrqxtwqVwud3FxGcawb775pkgkOnPmDL4OgOEngt566y2mo+F9qDzxUzdB3gRAFYFAsH79+pKSkq6urvLy8oiICA6Hk5qaSnXw9/dvaGjYu3dvZ2dnTU1NbGwsdShKeemll6qrq+/evVtSUlJbW+vt7Y3bfX19ra2tS0tLR/UriMViGxubyspK5UVpaWk8Hm/t2rXKiyIiIgiCuHnz5mDDmpiYpKent7a2Lly48MaNGzKZ7OjRozt27PD09IyJiWEaZEVFBUJosInxOkeL9+4HgNieTwD0yPDmISmUq1i8eHFJSQm95aOPPiL/fCYeGBiI1xWLxSKR6Nq1awEBARYWFlwu18fHp6ioiD6+TCaLjIy0s7PjcrleXl5lZWXu7u54nHXr1uE+VVVV3t7ePB7P0dFx37591Lre3t5WVlYXLlwY3g5Rcx4SSZLr1683MjKqr69XaD9w4ACXy42Pj1dexdfX19zcXC6Xqx75woULAQEBAoGAw+G4uLhs3rz50aNHyt2io6MVMk9AQAC9Q1hYmEgk6u3tVefrsJ43IG8CvTGS+ZvDg/OmNrfIiPp5UyaTiUSi6OhoNUd+8OABl8uNjIwcQXQMVFRUEARx7NgxNfuznjf04Dzd3NycoMETdMVi8fLlyy9dusR2dKPiwYMHBw4c8PX1HTduHJfLfe655xYvXjzgeZZqT+GuAwMSCAR5eXk5OTn79u0bsjNJkjExMXw+f9u2bVqIrba2ViqVJiYmLly4UAub0wg9yJudnZ2//PILQmj+/PkkSfb19VVVVW3durWqqsrDw+Mvf/nLo0eP2I5Rw9asWfO3v/1t/vz5165da21tPXz4cEVFhbu7+8mTJxmN8xTuOjAYNze38vLy06dP4/qbKjQ3N9fW1hYUFAiFQi0EdvDgwaSkpKSkJC1sS2NYPNYl1T7epv/46fD17ODgYOq5i7Hhr3/96/vvv09vwVfNn3vuOaZDjaVdp83z9E8//ZT+M8HXQHWN+ufpY4yaeWP06MHxpgqffPKJp6fnt99++/XXX7Mdiyalp6cfPHiQ3iIWi7lcbk1NDamhZ/LG6q7TFIVbJQolysFTTr/zJkEQuA7r/v372Y5ldHV1dT1+/Hj69OmamkH99Ow6ADROv/Mm+uOhhdLSUuoxsnv37sXExDg5OXE4nPHjx0ulUnySi9QrIIYQ6unp2bRpk4uLi5mZ2bhx44KCgnCpQaqDik2opmYAyrKzsxFCH330EcPdo4p+7ToAdAhL1wf+C43s+iZJklQhgIaGBpIkGxoaJk6caGtre+rUqYcPH165csXHx8fU1JQ+RW7IAmKRkZECgeCHH3549OhRU1NTfHw8Quj8+fN4qTqbUE2dCmZ0TU1Ntra2ypNC1KlCNpZ2nfbnIek4uL7JWgAsbpvURN6k7gjjHz8u/f/ll19SHRobG01MTNzd3akW/OPHb93DQkNDEUL37t3DHydNmjRr1iz6VpydnakfvzqbUG3IAOju37//4osvhoeHK89A9vHxGXLW9FjadZA3FUDeZIu2S09rHC4rYGxsjCtsnzx50sDAgP7mQqFQOG3atEuXLtXV1Tk4OFDtAxYQw4O8/vrrn3/++fvvv79s2bKZM2caGhrSX7qi/iZUUxEApaurKyAgYOrUqUeOHDE0NFQYobCwUM1tDUhPd11YWNiwv/IYgx/QhB2ifXp/fbOoqAghJJFIjI2Ne3p62tvb+/v7BQIBfb43Luh/48YN+ooqCojt27fvyJEjtbW1fn5+fD7/9ddfp57VY7QJ1YasYCaXy/HDZ5mZmcpJc+T0d9cBwC79Pt7s7+/Hzz+sWLECIWRiYmJpadnZ2fn48eORvMUFFwpcsmRJX19fYWFhcnKyVCrdvXv3qlWrNLUJdURHR/f09OTm5lIbevbZZ7Oysl5++eWRD66/uw7fIgPojyPNp3CHsFuXD+n78WZiYuLFixdDQkKoUxWpVCqXy6k3Z2E7d+6cMGGC+q8YtbS0rKqqQggZGxu/9tpr+FYy9aY9jWxiSJs3b7569eo333wz4NuoR24M7zoARpv+5c3+/v6WlpZvvvnGz89v165dy5Yt+/LLL6n//+zYsWPKlCnLli07ffp0e3t7W1vbwYMHt27dmpyczOgY53/+538uX77c09PT0tKya9cukiR9fX01uwkVMjIytmzZ8tNPP1lYWNBPaRXmKjGtQvY07DoAtIHFe1KkevfFFF5OQhCEQCCYMWPGBx98cOnSJeX+ra2tq1atmjx5srGx8fjx4/39/c+ePYsXqVlArKKiIjo6+oUXXsCTEF9++eW0tDT684gqNqGamgEEBgYO9t+LPutoyCpkY2nXkXA/XQncT2cLQY7yu/RUIwji+PHjCxYsYDEGoC9OnDgRHh7O7l+sTnmar2+ymzf07zwdADA8t2/fDg4OxvWQGhsbk5KSPDw8+Hy+UCj08fFRKPCspr6+vj179ri7u1tYWNjY2Lzxxht4eu+AnYODgwmCUHjYPyEhAZ9J6BHImwA8FSoqKjw8PPz9/fl8PkIoKioqJSVly5YtjY2NpaWlDg4OUqk0ISGB0ZhdXV2+vr4ZGRl79uxpaWkpLy83NzcPDg6+evWqcucjR47gtw8piIqKSkxM3Lhx4/C+Fysgb2oYMbjNmzezHR1gwNzcHD/Cr6fj03V0dAQFBb399tu4mAuWnJwcGBjI4/GcnJy++OILkUiUnJzM6P3Ga9asuXz58g8//PDqq69yudwJEyZkZGQMOAOkoaEhLi4OvwdYwZQpU3Jzc5OSkk6cODGMr8YKuImpYXD1DeigXbt2NTU1bdq0iWrJz8+nd+BwOFOnTq2vr79+/brye+UG1NzcfOjQoffffx+/9Rfj8Xj011tSoqKiwsLCvL298auAFYjF4tDQ0NWrV0ulUr2YWQHHmwCMcSRJpqene3p62tvbq+hWW1uLEBo3bpyaw+JKV+ocMh8+fPjq1avJyckq+oSEhNTV1VFTfXUc5E0wBuHZTlOmTOFwOFZWVm+88cb58+fxou3bt+PLJtQP/syZM7iFKg6QnJxMEERXV1dxcTFehA+CcDtBEA4ODmVlZX5+fhYWFmZmZnPmzKEm849k/FFSWVnZ3NwsFotV9MnMzKypqXF2dp46daqaw+IHZK2srFavXu3o6MjhcCZOnBgTE9PW1kbvVldXt3r16sOHD1tYWKgY7cUXX0QIff/992punWUszoEidWAeFtAjas7fbGxsnDRpkq2tbV5eXnt7+/Xr16VSKUEQaWlpVB8ej/fKK6/Q13J3d7e2tqa3KPfBxGIxj8eTSCS4mF5ZWZmrqyuHwyksLNTI+OqUB8TUnL+JT40//vjjAZdevXo1JiYGv7Pv4sWLQ45GwcWxhELh4sWLa2pqHjx4kJmZyePxnJ2dZTIZ1S0gIGD58uX0SLZt26Y8Wnt7O0LI29tbnU2znjfgeBOMNYmJiTdv3kxJSZk3bx6fz3d2dv7qq6/s7OxiYmKam5s1somurq79+/dLJBIej+fh4ZGVldXb2xsbG6uRwanHBDQyGvqj8BW9Ggudq6trdnb2ypUrr1y5Qq90NSR8HZPL5WZkZEyePNnS0nLp0qWJiYnV1dW7d+/GfdLS0m7cuLFr164hR+Pz+QRB4FB1H+RNMNbgeYj0Z65MTEz8/PweP36sqdNAHo+HzyuxGTNm2NvbV1ZWauRnX1hY2NbWJpFIRj4UhhOcsbHxYB3OnTuXmpqq+uqnMvw02ty5c+kXGYKCgtAfp9t37txZs2bN4cOHFZ5bG4yRkRFVS1vHQd4EYwquVmdqaqpwNQ3f821qatLIViwtLRVa8D1oRpN4tMbU1BQhRL0NRVOcnJwQQtbW1vRGvB/u3buHEMLXSWbPnk1NxcPzkDZu3Ig//v777/R15XI5l8vVbJCjBPImGFNMTEwEAkF3d/fDhw/p7fgMnXohuIGBQW9vL72DTCZTGEpFsbLW1laF82icMakZPCMcX7Ps7OwQQvgCogbhG18Kh9h4P+D/S61YsULhsqDC9c1nn32WWrGjo4MkSRyq7oO8CcaakJAQhBB9RktPT09BQQGXyw0ICMAtdnZ29fX1VIempqY7d+4ojGNmZkblvueff/7QoUPUou7u7rKyMurjr7/+2tDQIBaLqZ/9CMfXrOnTpyOE6urqBlwql8tdXFyGMeybb74pEonOnDlDn7CJnwh66623mI6GdxcOVfdB3gRjzY4dOyZNmhQXF5efn//w4cPq6up33nmnsbExNTWVmqHt7+/f0NCwd+/ezs7Ompqa2NhY5cneL730UnV19d27d0tKSmpra729valFAoFg/fr1JSUlXV1d5eXlERERHA4nNTWV6jCS8ZmWBxySWCy2sbGprKxUXpSWlsbj8dauXau8KCIigiCImzdvDjasiYlJenp6a2vrwoULb9y4IZPJjh49umPHDk9Pz5iYGKZB4tea+vv7M12RHVq8dz8AxPZ8AqBH1K8jd//+/bi4uEmTJhkbGwsEgoCAgIKCAnoHmUwWGRlpZ2fH5XK9vLzKysrc3d3xL2LdunW4T1VVlbe3N4/Hc3R03LdvH7WuWCwWiUTXrl0LCAiwsLDgcrk+Pj5FRUWaGn/I8oAU9evIrV+/3sjIqL6+XqH9wIEDXC43Pj5eeRVfX19zc3PltwEquHDhQkBAgEAg4HA4Li4umzdvfvTokXK36OhohcwTEBBA74BfCdPb26vO12E9b0DeBHpDR+pv4rzJdhQkySRvymQykUgUHR2t5sgPHjzgcrnKr54eJRUVFQRBHDt2TM3+rOcNOE8HYOwTCAR5eXk5OTn4pVKqkSQZExPD5/O3bdumhdhqa2ulUmliYuLChQu1sDmNgLwJwFPBzc2tvLz89OnTuP6mCs3NzbW1tQUFBdT0g4kfVAAAFiBJREFUg1F18ODBpKSkpKQkLWxLUyBvAqAu/Fx5ZWVlfX09QRAbNmxgOyJmnJyc8vPzcf1NFYRCYVFR0bRp07QT1c6dO/XoSBPTg5JNAOiI+Pj4+Ph4tqMA7IPjTQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBAAAhlicc0/CK8wAAMPC7vNCLM9D0rv3zQOtCQ8Pj4uL02D5XjCWzJo1i8WtE3DQB3QTQRDHjx9fsGAB24EAoAiubwIAADOQNwEAgBnImwAAwAzkTQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBAAAZiBvAgAAM5A3AQCAGcibAADADORNAABgBvImAAAwA3kTAACYgbwJAADMQN4EAABmIG8CAAAzkDcBAIAZyJsAAMAM5E0AAGAG8iYAADADeRMAAJiBvAkAAMxA3gQAAGYgbwIAADOQNwEAgBnImwAAwAzkTQAAYAbyJgAAMAN5EwAAmIG8CQAAzEDeBAAAZozYDgCA/zp27NjDhw/pLf/6179kMhn1MSQkZPz48VqPCwBFBEmSbMcAAEIIvffee5mZmcbGxvgj/sskCAIh9OTJE3Nz85aWFhMTEzZDBAAhBOfpQHcsWrQIIdT3B7lcLpfL8b8NDQ3DwsIgaQIdAcebQFfI5XJbW9u2trYBlxYUFPj6+mo5JAAGBMebQFcYGRktWrSIOk+ne+aZZ3x8fLQfEgADgrwJdMiiRYv6+voUGo2NjZcsWWJoaMhKSAAog/N0oENIkpwwYUJdXZ1C+8WLF2fOnMlKSAAog+NNoEMIgoiIiFA4VXd0dPTw8GArJACUQd4EukXhVN3Y2Pi9997Ds5EA0BFwng50jouLy/Xr16mPV65cmTZtGovxAKAAjjeBzlmyZAl1qj516lRImkDXQN4EOiciIkIulyOEjI2N3333XbbDAUARnKcDXeTh4XHp0iWCIG7dujVhwgS2wwHgT+B4E+iipUuXIoQ8PT0haQIdpAf1kEpKSj777DO2owBa1d3dTRBET09PWFgY27EArZJIJKtWrWI7iiHowfHm3bt3c3Jy2I4CjK6cnBz6dHdTU1NbW1sHBwcWQ2JRXV3d0/k3X1paWlJSwnYUQ9OD400sOzub7RDAKCII4sMPP1ywYAHV8vvvvz/77LMshsSiEydOhIeHP4V/8/pyeqEHx5vg6fTUJk2g+yBvAgAAM5A3AQCAGcibAADADORNAPTe7du3g4ODOzo6EEKNjY1JSUkeHh58Pl8oFPr4+OTm5g5jzL6+vj179ri7u1tYWNjY2Lzxxht5eXmDPSYTHBxMEMT27dvpjQkJCcePHx/GpnUf5E2gxzo7O5977rl58+axHQibKioqPDw8/P39+Xw+QigqKiolJWXLli2NjY2lpaUODg5SqTQhIYHRmF1dXb6+vhkZGXv27GlpaSkvLzc3Nw8ODr569apy5yNHjuTl5Sm3R0VFJSYmbty4cXjfS5dB3gR6jCTJ/v7+/v5+tgIwNzf38vJia+sIoY6OjqCgoLfffnvlypVUY3JycmBgII/Hc3Jy+uKLL0QiUXJycktLi/rDrlmz5vLlyz/88MOrr77K5XInTJiQkZEx4HvxGhoa4uLilixZorxoypQpubm5SUlJJ06cGMZX02WQN4Ees7CwqKmp+e6779gOhDW7du1qamratGkT1ZKfn08vhsLhcKZOnfrkyRN6aT7VmpubDx06tHjxYltbW6qRx+N1d3dPnz5doXNUVFRYWJi/v/+AQ4nF4tDQ0NWrV+NCLWMG5E0A9BVJkunp6Z6envb29iq61dbWIoTGjRun5rDffvvtkydP1DmOPnz48NWrV5OTk1X0CQkJqaurO3XqlJpb1wuQN4G+OnnyJPGH7u5uhZZbt26Fh4dbWlpaW1vPmzevpqYGr5WcnIw7ODg4lJWV+fn5WVhYmJmZzZkzp7i4GPfZvn077kPljjNnzuCWZ555hj5OV1dXcXExXmRkpO2n7yorK5ubm8VisYo+mZmZNTU1zs7OU6dOVXPYn3/+GSFkZWW1evVqR0dHDoczceLEmJgYhVc019XVrV69+vDhwxYWFipGe/HFFxFC33//vZpb1w+kzsO35NiOAowuhNDx48eHseL8+fMRQo8fP1ZomT9//oULFzo7O8+ePcvlcmfOnElfSywW83g8iUSC+5SVlbm6unI4nMLCQqoPj8d75ZVX6Gu5u7tbW1vTW5T7YHPmzBk3blxJSckwvhGp9t/80aNHEUIff/zxgEuvXr0aExNjYGBgZWV18eJF9beOd6BQKFy8eHFNTc2DBw8yMzN5PJ6zs7NMJqO6BQQELF++nB7Jtm3blEdrb29HCHl7e6uz6dDQ0NDQUPVDZQscb4KxKTIyUiKR8Hi8uXPnBgYGlpWV3b9/n96hq6tr//79uI+Hh0dWVlZvb29sbKxGtt7f349/YBoZbTCNjY0IIYFAMOBSV1fX7OzslStXXrlyhdHbQPHBO5fLzcjImDx5sqWl5dKlSxMTE6urq3fv3o37pKWl3bhxY9euXUOOxufzCYLAoY4ZkDfB2ETPFI6OjgihhoYGegcej4dPIbEZM2bY29tXVlZq5BdeWFjY1tYmkUhGPpQKOMEpvP6T7ty5c6mpqaqvfirj8XgIoblz59KvPAQFBaE/Trfv3LmzZs2aw4cP455DMjIyevz4MaMYdBzkTTA20Y/COBwOQkhhupKlpaXCKjY2NgghRvN12GVqaooQor/+UyOcnJwQQtbW1vRGvHPu3buHEMrLy2tvb589ezZ1NRnPQ9q4cSP++Pvvv9PXlcvlXC5Xs0GyC/ImeEq1trYqnEfjjIkTBELIwMCgt7eX3kEmkykMwu4Liu3s7BBC+AKiBuG7YQrH3Xjn4JlJK1asULjep3B9k17LqqOjgyRJHOqYAXkTPKW6u7vLysqoj7/++mtDQ4NYLKZ+4XZ2dvX19VSHpqamO3fuKAxiZmZG5dbnn3/+0KFDoxz1n+DZlPR6z3RyudzFxWUYw7755psikejMmTP4OgCGnwh66623mI6G96HyxE+9BnkTPKUEAsH69etLSkq6urrKy8sjIiI4HE5qairVwd/fv6GhYe/evZ2dnTU1NbGxsdShKOWll16qrq6+e/duSUlJbW2tt7c3bvf19bW2ti4tLR3VryAWi21sbCorK5UXpaWl8Xi8tWvXKi+KiIggCOLmzZuDDWtiYpKent7a2rpw4cIbN27IZLKjR4/u2LHD09MzJiaGaZAVFRUIocEmxusrLd67HyaYh/Q0QMznISmUq1i8eLHCKxY++ugj8s9n4oGBgXhdsVgsEomuXbsWEBBgYWHB5XJ9fHyKioro48tkssjISDs7Oy6X6+XlVVZW5u7ujsdZt24d7lNVVeXt7c3j8RwdHfft20et6+3tbWVldeHCheHtDfX/5tevX29kZFRfX6/QfuDAAS6XGx8fr7yKr6+vubm5XC5XPfKFCxcCAgIEAgGHw3Fxcdm8efOjR4+Uu0VHRyuklICAAHqHsLAwkUjU29urztfRl3lIepCPIG8+DYaRN0cC502tbY4p9f/mZTKZSCSKjo5Wc+QHDx5wudzIyMgRRMdARUUFQRDHjh1Ts7++5E04TwdAjwkEgry8vJycnH379g3ZmSTJmJgYPp+/bds2LcRWW1srlUoTExMXLlyohc1p0xjMm+Xl5e+9956Tk5OpqamlpeXMmTO3bt2qfCdU35mbmxM0+LEQsVi8fPnyS5cusR0d0B43N7fy8vLTp0/j+psqNDc319bWFhQUCIVCLQR28ODBpKSkpKQkLWxLy8Za3kxMTHz55ZetrKzy8/NlMtnNmzf//ve/5+bmOjs7U08fjw2dnZ2//PILQmj+/PkkSfb19VVVVW3durWqqsrDw+Mvf/nLo0eP2I5RF+HnyisrK+vr6wmC2LBhA9sRaYCTk1N+fj6uv6mCUCgsKiqaNm2adqLauXPn2DvS/C+2LxQMTf1rPfjs48CBAwrtXV1duGz1b7/9xnTrgz2ArCkjGZ+eN+nwXdTg4GDqaT/dh7R7fVPHPbXX9OH6prb9/vvvW7Zseemll5Rv8JmZme3Zs+fhw4fDmEWhjz755BNPT89vv/3266+/ZjsWAMagsZM3Dxw4IJfLB3tvvbe3t729/dmzZ3EtwrGNIAhc/Xv//v1sxwLAGDR28uaPP/6IEFJRixAv+s9//oNGVmBRLwo44u2WlpZSDy/fu3cvJibGycmJw+GMHz9eKpXiCclIvbKVCKGenp5Nmza5uLiYmZmNGzcuKCgIF7ilOqjYBABjCtsXCoam5rUe/HjcTz/9NFiHiIgI9OdihSMpsKgLBRwHu75JkiRVfqahoYEkyYaGhokTJ9ra2p46derhw4dXrlzx8fExNTWlT8wesmxlZGSkQCD44YcfHj161NTUFB8fjxA6f/48XqrOJlRAcH2TBq5v6rixc7yJDVlnQYOFGHS5gKPCiomJibdv3/7ss8/efPNNc3PzadOmff311yRJ/u1vf1NYUUXZyoKCgmnTpr322mtcLtfW1vbTTz91dnYexiYA0Hfaruw/euzt7RsbG1tbWwfrgBcxrUWogooCjiOv/lJYWDiS1XExG2NjY3xZ4OTJkwYGBvT35QqFwmnTpl26dKmurs7BwYFqH7BsJR7k9ddf//zzz99///1ly5bNnDnT0NCQ/qov9TcxmPDw8PDw8JF86zGG3WJLbAkNDWU7hKGNnbzp4+Nz6dKlioqK119/fcAOuPzB7NmzNbXFAQs4NjQ0tLS0sF41q6ioCCEkkUiMjY17enpwqbEBC4PfuHGDntRUlK3ct2+fRCLJzMz08/NDCHl7e0dHR4eEhCCEGG1iMHFxcaNd6FdflJSUpKSk4LP1p8qePXvYDkEtYydvRkdH/+Mf/8jOzk5ISFBeWlRU1NDQEBQUNGHCBKpxhAUWcQFHegcdKeDY39+Pn7pbsWIFQsjExMTS0rKzs/Px48cjufWEy9MuWbKkr6+vsLAwOTlZKpXu3r171apVGtmERCJZsGDBsMMbY1JSUp7CvZGdnc12CGoZO9c3nZ2d//73v//8888HDx5UWPTo0aO4uDhra+uUlBR6+wgLLOpsAcfExMSLFy+GhIRQs7KkUqlcLld4Ymrnzp0TJkxQ/8XWlpaWVVVVCCFjY+PXXnsN34Wn3u+qkU0AoB/YuyWlLkb3FhMTEw0NDT/88MMrV650d3c/ePAgLy/Pzc1NJBKVl5crdMaTHP/3f/9/e/cf0sQbxwH8OdqmS91RUS5OyDkYZT9WMigCESbMwhJavyQEIRIJYklJNcEockThH45vfxgrIoIiCwo2jIhVf0STVJpggdImlTYPtMwVLVmsPx467uvmdbeb7e72ef3n3eNzj/P4sN3z7P38F41G3717d+DAAYqi5s1379ixgyTJDx8+vHz5UqVSvX37Fh83m80kSVZXV3PMp4vpX+h8+q9fv2iafvjwodVqRQgdPnyYnfpF07TRaCwrK+vt7Z2ZmZmenu7u7l66dCl7Cjt5Y8jTp08jhF6/fo1/JEmyqqpqaGgoFovRNH3u3DmEUEdHB/9LcEAwn84C8+kSJ4P/jdB7qL+/v7Gxcc2aNRqNpqioyGKxdHR0sPcvZYgJWMx6gOO8LbEIgiBJcuPGjUePHh0cHExuPz09feLEibKyMrVavXLlSpvN9uTJE3yKZ2xlMBhsbm5et24dXr+5bds2j8fD/ionxyX+CuomG9RNiSMSi7xVqXg9PT0HDx6U2jg3b948NTW10BYFQCiCIO7evZuDT/RSkuY9/w/gJ0vSf8qpnOebAADG+/fv6+rqcLJcJBJxuVwWi0Wn0+n1+qqqqnlR+fz19vaaTKaUU39nzpzJnQUAUDcBUJpgMGixWGw2G06Wa2pq6urqOn/+fCQS6evrKykpsdvtKZedcAiFQnV1dU6nk6bplA2ampqcTmd7e3sG/gDJg7opmCIDHHNKYWEhkxsgx/65zc7O7t69e+/evXhaEuvs7KytrS0oKCgtLb1x4wZFUZ2dnYJ2im9vb9++ffvg4GBRUVHKBkaj8cGDBy6Xq6enR+zfIHnKWb/5z7S2tuKvZgMgQZcvX56cnDx79ixzxOfzsRtoNJry8vKJiYmRkZHkHToXcv36da1Wy93GbDbv27fv5MmTdrs9gyE1EgTvNwFQjkQice3ata1bt3J/nxinKS5fvpx/z38tmtiePXvGx8eZVb1KBXUTyAle6mQ0GjUazbJly3bu3Pns2TN8SvHZgHwMDQ3RNM2RpogQunnzZigUMplM5eXlGR8ATmx4/PhxxnuWluwug+IjZ9ey5RTEY/1mJBIxGAzFxcVer/fr168jIyN2u50gCI/Hw7SRezYglvY9f+vWLfT/sES2N2/eOBwOvIXfq1ev0ug/kUhQFLVkyZKFzuKYgsrKyvQ6l8v6TXi/CWTD6XSOjY11dXXt2rVLp9OZTKbbt2+vXr3a4XAsNMkrlJSzAfnAOVgp01UQQps2bbp3796xY8eGh4fZwVcZpNPpCILAw1AwqJtANvCqw9raWuZIXl5edXX1jx8/MvXBkCMbUHznz58///z586JmPsViMYSQWq1eqMHTp0/dbncG0xSTqVQqJjZbqaBuAnnAUXX5+fnz1sEUFxcjhCYnJzNylZTZgOhP0pX05efnI4SYzVGyIh6P85xEki+om0Ae8vLySJKMxWLRaJR9HH9C1+v1+MeMZAOyj0gkG5AnnMWFHzJmxezsbOLPpjUKBnUTyAbOSGavcfn586ff79dqtTU1NfiIUrMBedqwYQNCaKHYhHg8vnbt2kUdAH5x8DAUDOomkI2LFy8aDIaWlhafzxeNRkdHRw8dOhSJRNxuN/60jhCy2WyfPn26cuXKt2/fQqHQ8ePHk5d2V1RUjI6Ofvz4MRAIhMPhyspK5hRJkm1tbYFA4Pv37wMDAw0NDRqNxu12Mw3E9G+1WlesWNHX15f5l+YPs9m8atUqvLXBPB6Pp6Cg4NSpU8mnGhoaCIIYGxsTPwC8g6nNZhPflaRlczKfH1iHlAsQvxy5qamplpYWg8GgVqtJkqypqfH7/ewGss4GZIi559va2lQq1cTExLzj3d3dWq22tbU1+VesVmthYWE8Hufo1uv1JlcP9gowbP/+/RRFzc3NpTd4uaxDkkE9grqZC3jWzUWF62Z2x4CJuednZmYoimpububZ/suXL1qt9siRI+ldji0YDBIEcefOnbR7kEvdhM/pACgKSZJer/f+/ft4jyluiUTC4XDodLoLFy6IvG44HLbb7U6ns76+XmRX0gd1EwCl2bJly8DAwKNHj3D+JgeapsPhsN/vZxYkpO3q1asul8vlconsRxagbgKgwGzA0tJSn8+H8zc56PX6Fy9erF+/XvwVL126lAvvNDElZz0BwBNkAwJB4P0mAAAIA3UTAACEgboJAADCQN0EAABhZDMvlAubPeW4QCCQ7SFIBX4pcvCeHx8fLykpyfYoeMj2wvu/y51NmQEAsvi+EJFYzPRpAABQHni+CQAAwkDdBAAAYaBuAgCAMFA3AQBAmN/I1Q74MRFjcwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"metadata": {},
}
],
"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)"
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 5.2 - Add callback"
]
},
{
"cell_type": "code",
"execution_count": 7,
"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": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 354 samples, validate on 152 samples\n",
"Epoch 1/100\n",
"354/354 [==============================] - 1s 3ms/sample - loss: 452.0200 - mae: 19.1483 - mse: 452.0200 - val_loss: 295.4043 - val_mae: 15.2476 - val_mse: 295.4043\n",
"354/354 [==============================] - 0s 318us/sample - loss: 203.8159 - mae: 11.9110 - mse: 203.8159 - val_loss: 102.2654 - val_mae: 8.2041 - val_mse: 102.2654\n",
"354/354 [==============================] - 0s 322us/sample - loss: 82.2725 - mae: 6.6720 - mse: 82.2725 - val_loss: 48.9591 - val_mae: 5.3325 - val_mse: 48.9591\n",
"354/354 [==============================] - 0s 330us/sample - loss: 47.3532 - mae: 4.9323 - mse: 47.3532 - val_loss: 30.3381 - val_mae: 4.0806 - val_mse: 30.3381\n",
"354/354 [==============================] - 0s 332us/sample - loss: 34.2380 - mae: 4.1989 - mse: 34.2380 - val_loss: 25.3102 - val_mae: 3.6149 - val_mse: 25.3102\n",
"354/354 [==============================] - 0s 330us/sample - loss: 27.7203 - mae: 3.7333 - mse: 27.7203 - val_loss: 24.1136 - val_mae: 3.4089 - val_mse: 24.1136\n",
"354/354 [==============================] - 0s 336us/sample - loss: 23.4702 - mae: 3.4503 - mse: 23.4702 - val_loss: 21.9095 - val_mae: 3.1906 - val_mse: 21.9095\n",
"354/354 [==============================] - 0s 322us/sample - loss: 19.8215 - mae: 3.1687 - mse: 19.8215 - val_loss: 21.9063 - val_mae: 3.2564 - val_mse: 21.9063\n",
"354/354 [==============================] - 0s 326us/sample - loss: 17.6146 - mae: 2.9640 - mse: 17.6146 - val_loss: 19.1573 - val_mae: 2.9280 - val_mse: 19.1573\n",
"354/354 [==============================] - 0s 288us/sample - loss: 15.9631 - mae: 2.8267 - mse: 15.9631 - val_loss: 19.1600 - val_mae: 2.8806 - val_mse: 19.1600\n",
"354/354 [==============================] - 0s 326us/sample - loss: 14.4344 - mae: 2.6588 - mse: 14.4344 - val_loss: 18.0972 - val_mae: 2.7704 - val_mse: 18.0972\n",
"354/354 [==============================] - 0s 330us/sample - loss: 13.3890 - mae: 2.5821 - mse: 13.3890 - val_loss: 18.0529 - val_mae: 2.7683 - val_mse: 18.0529\n",
"354/354 [==============================] - 0s 326us/sample - loss: 12.7002 - mae: 2.5117 - mse: 12.7002 - val_loss: 17.7848 - val_mae: 2.6781 - val_mse: 17.7848\n",
"354/354 [==============================] - 0s 279us/sample - loss: 11.8030 - mae: 2.4625 - mse: 11.8030 - val_loss: 18.4840 - val_mae: 2.7626 - val_mse: 18.4840\n",
"354/354 [==============================] - 0s 331us/sample - loss: 11.4627 - mae: 2.3904 - mse: 11.4627 - val_loss: 17.1289 - val_mae: 2.6199 - val_mse: 17.1289\n",
"354/354 [==============================] - 0s 284us/sample - loss: 11.1781 - mae: 2.3387 - mse: 11.1781 - val_loss: 17.9369 - val_mae: 2.6804 - val_mse: 17.9369\n",
"354/354 [==============================] - 0s 326us/sample - loss: 10.7485 - mae: 2.3250 - mse: 10.7485 - val_loss: 16.6649 - val_mae: 2.5390 - val_mse: 16.6649\n",
"354/354 [==============================] - 0s 294us/sample - loss: 10.5149 - mae: 2.2548 - mse: 10.5149 - val_loss: 18.1112 - val_mae: 2.6858 - val_mse: 18.1112\n",
"354/354 [==============================] - 0s 295us/sample - loss: 10.4495 - mae: 2.2872 - mse: 10.4495 - val_loss: 17.9377 - val_mae: 2.6937 - val_mse: 17.9377\n",
"354/354 [==============================] - 0s 277us/sample - loss: 10.2075 - mae: 2.2586 - mse: 10.2075 - val_loss: 17.5565 - val_mae: 2.5374 - val_mse: 17.5565\n",
"354/354 [==============================] - 0s 325us/sample - loss: 10.0869 - mae: 2.2396 - mse: 10.0869 - val_loss: 16.2770 - val_mae: 2.4551 - val_mse: 16.2770\n",
"354/354 [==============================] - 0s 278us/sample - loss: 9.5957 - mae: 2.1407 - mse: 9.5957 - val_loss: 17.8160 - val_mae: 2.6874 - val_mse: 17.8160\n",
"354/354 [==============================] - 0s 304us/sample - loss: 9.7569 - mae: 2.2057 - mse: 9.7569 - val_loss: 15.5761 - val_mae: 2.4537 - val_mse: 15.5761\n",
"354/354 [==============================] - 0s 286us/sample - loss: 9.4873 - mae: 2.1643 - mse: 9.4873 - val_loss: 16.8661 - val_mae: 2.5735 - val_mse: 16.8661\n",
"354/354 [==============================] - 0s 287us/sample - loss: 9.0956 - mae: 2.1422 - mse: 9.0956 - val_loss: 16.5815 - val_mae: 2.4812 - val_mse: 16.5815\n",
"354/354 [==============================] - 0s 288us/sample - loss: 9.3352 - mae: 2.1471 - mse: 9.3352 - val_loss: 16.0146 - val_mae: 2.4404 - val_mse: 16.0146\n",
"354/354 [==============================] - 0s 286us/sample - loss: 8.6794 - mae: 2.0948 - mse: 8.6794 - val_loss: 18.2565 - val_mae: 2.7272 - val_mse: 18.2565\n",
"354/354 [==============================] - 0s 294us/sample - loss: 8.9854 - mae: 2.1159 - mse: 8.9854 - val_loss: 16.4515 - val_mae: 2.5282 - val_mse: 16.4515\n",
"354/354 [==============================] - 0s 286us/sample - loss: 8.8348 - mae: 2.1032 - mse: 8.8348 - val_loss: 17.2604 - val_mae: 2.5932 - val_mse: 17.2604\n",
"354/354 [==============================] - 0s 244us/sample - loss: 8.7365 - mae: 2.0970 - mse: 8.7365 - val_loss: 16.1155 - val_mae: 2.4509 - val_mse: 16.1155\n",
"354/354 [==============================] - 0s 282us/sample - loss: 8.6290 - mae: 2.0487 - mse: 8.6290 - val_loss: 16.9125 - val_mae: 2.5010 - val_mse: 16.9125\n",
"354/354 [==============================] - 0s 280us/sample - loss: 8.6531 - mae: 2.0411 - mse: 8.6531 - val_loss: 15.7585 - val_mae: 2.4288 - val_mse: 15.7585\n",
"354/354 [==============================] - 0s 330us/sample - loss: 8.6551 - mae: 2.0516 - mse: 8.6551 - val_loss: 15.4765 - val_mae: 2.4073 - val_mse: 15.4765\n",
"354/354 [==============================] - 0s 292us/sample - loss: 8.4218 - mae: 2.0072 - mse: 8.4218 - val_loss: 16.2900 - val_mae: 2.5081 - val_mse: 16.2900\n",
"354/354 [==============================] - 0s 293us/sample - loss: 8.3149 - mae: 1.9851 - mse: 8.3149 - val_loss: 15.7184 - val_mae: 2.4337 - val_mse: 15.7184\n",
"354/354 [==============================] - 0s 289us/sample - loss: 8.4496 - mae: 2.0142 - mse: 8.4496 - val_loss: 16.2760 - val_mae: 2.5489 - val_mse: 16.2760\n",
"354/354 [==============================] - 0s 334us/sample - loss: 8.0962 - mae: 1.9872 - mse: 8.0962 - val_loss: 15.3895 - val_mae: 2.3543 - val_mse: 15.3895\n",
"354/354 [==============================] - 0s 298us/sample - loss: 8.1599 - mae: 1.9882 - mse: 8.1599 - val_loss: 16.0081 - val_mae: 2.3977 - val_mse: 16.0081\n",
"354/354 [==============================] - 0s 286us/sample - loss: 7.9958 - mae: 1.9817 - mse: 7.9958 - val_loss: 15.8999 - val_mae: 2.4583 - val_mse: 15.8999\n",
"354/354 [==============================] - 0s 282us/sample - loss: 7.8666 - mae: 1.9441 - mse: 7.8666 - val_loss: 16.8131 - val_mae: 2.6931 - val_mse: 16.8131\n",
"354/354 [==============================] - 0s 293us/sample - loss: 7.9312 - mae: 1.9216 - mse: 7.9312 - val_loss: 15.4608 - val_mae: 2.3995 - val_mse: 15.4608\n",
"354/354 [==============================] - 0s 286us/sample - loss: 7.6752 - mae: 1.9127 - mse: 7.6752 - val_loss: 15.8675 - val_mae: 2.5118 - val_mse: 15.8675\n",
"354/354 [==============================] - 0s 332us/sample - loss: 7.7535 - mae: 1.9296 - mse: 7.7535 - val_loss: 15.2040 - val_mae: 2.3731 - val_mse: 15.2040\n",
"354/354 [==============================] - 0s 331us/sample - loss: 7.6188 - mae: 1.9150 - mse: 7.6188 - val_loss: 15.0409 - val_mae: 2.3680 - val_mse: 15.0409\n",
"354/354 [==============================] - 0s 284us/sample - loss: 7.6286 - mae: 1.8755 - mse: 7.6286 - val_loss: 15.1650 - val_mae: 2.3595 - val_mse: 15.1650\n",
"354/354 [==============================] - 0s 278us/sample - loss: 7.7937 - mae: 1.9318 - mse: 7.7937 - val_loss: 15.7196 - val_mae: 2.4218 - val_mse: 15.7196\n",
"354/354 [==============================] - 0s 275us/sample - loss: 7.4244 - mae: 1.9022 - mse: 7.4244 - val_loss: 15.5651 - val_mae: 2.4811 - val_mse: 15.5651\n",
"354/354 [==============================] - 0s 330us/sample - loss: 7.4042 - mae: 1.9083 - mse: 7.4042 - val_loss: 14.7377 - val_mae: 2.3598 - val_mse: 14.7377\n",
"354/354 [==============================] - 0s 270us/sample - loss: 7.3230 - mae: 1.8741 - mse: 7.3230 - val_loss: 15.2313 - val_mae: 2.4210 - val_mse: 15.2313\n",
"354/354 [==============================] - 0s 276us/sample - loss: 7.3075 - mae: 1.8614 - mse: 7.3075 - val_loss: 14.7584 - val_mae: 2.3305 - val_mse: 14.7584\n",
"354/354 [==============================] - 0s 270us/sample - loss: 7.4376 - mae: 1.8956 - mse: 7.4376 - val_loss: 15.3226 - val_mae: 2.3742 - val_mse: 15.3226\n",
"354/354 [==============================] - 0s 287us/sample - loss: 7.1467 - mae: 1.8380 - mse: 7.1467 - val_loss: 15.5150 - val_mae: 2.4291 - val_mse: 15.5150\n",
"354/354 [==============================] - 0s 271us/sample - loss: 6.9376 - mae: 1.8018 - mse: 6.9376 - val_loss: 16.2807 - val_mae: 2.5440 - val_mse: 16.2807\n",
"354/354 [==============================] - 0s 289us/sample - loss: 7.0885 - mae: 1.8170 - mse: 7.0885 - val_loss: 15.2975 - val_mae: 2.4258 - val_mse: 15.2975\n",
"354/354 [==============================] - 0s 284us/sample - loss: 7.0596 - mae: 1.8107 - mse: 7.0596 - val_loss: 15.7460 - val_mae: 2.4825 - val_mse: 15.7460\n",
"354/354 [==============================] - 0s 288us/sample - loss: 6.7812 - mae: 1.8335 - mse: 6.7812 - val_loss: 14.7849 - val_mae: 2.3684 - val_mse: 14.7849\n",
"354/354 [==============================] - 0s 290us/sample - loss: 6.9172 - mae: 1.8140 - mse: 6.9172 - val_loss: 15.1139 - val_mae: 2.4500 - val_mse: 15.1139\n",
"354/354 [==============================] - 0s 284us/sample - loss: 6.8010 - mae: 1.7637 - mse: 6.8010 - val_loss: 16.7211 - val_mae: 2.5769 - val_mse: 16.7211\n",
"354/354 [==============================] - 0s 271us/sample - loss: 6.8954 - mae: 1.8046 - mse: 6.8954 - val_loss: 15.1101 - val_mae: 2.4743 - val_mse: 15.1101\n",
"354/354 [==============================] - 0s 280us/sample - loss: 6.7740 - mae: 1.7866 - mse: 6.7740 - val_loss: 15.0811 - val_mae: 2.3838 - val_mse: 15.0811\n",
"354/354 [==============================] - 0s 323us/sample - loss: 6.8996 - mae: 1.7872 - mse: 6.8996 - val_loss: 14.4203 - val_mae: 2.3199 - val_mse: 14.4203\n",
"354/354 [==============================] - 0s 277us/sample - loss: 6.7188 - mae: 1.7858 - mse: 6.7188 - val_loss: 14.5972 - val_mae: 2.3610 - val_mse: 14.5972\n",
"354/354 [==============================] - 0s 266us/sample - loss: 6.5708 - mae: 1.7710 - mse: 6.5708 - val_loss: 14.5145 - val_mae: 2.3563 - val_mse: 14.5145\n",
"354/354 [==============================] - 0s 273us/sample - loss: 6.1133 - mae: 1.6706 - mse: 6.1133 - val_loss: 14.9870 - val_mae: 2.4017 - val_mse: 14.9870\n",
"354/354 [==============================] - 0s 313us/sample - loss: 6.4980 - mae: 1.7295 - mse: 6.4980 - val_loss: 14.0636 - val_mae: 2.3661 - val_mse: 14.0636\n",
"354/354 [==============================] - 0s 262us/sample - loss: 6.5237 - mae: 1.7277 - mse: 6.5237 - val_loss: 14.2366 - val_mae: 2.3318 - val_mse: 14.2366\n",
"354/354 [==============================] - 0s 326us/sample - loss: 6.3067 - mae: 1.7433 - mse: 6.3067 - val_loss: 14.0032 - val_mae: 2.3350 - val_mse: 14.0032\n",
"354/354 [==============================] - 0s 286us/sample - loss: 6.4447 - mae: 1.7336 - mse: 6.4447 - val_loss: 14.4271 - val_mae: 2.3149 - val_mse: 14.4271\n",
"354/354 [==============================] - 0s 332us/sample - loss: 6.3821 - mae: 1.7012 - mse: 6.3821 - val_loss: 13.9716 - val_mae: 2.3141 - val_mse: 13.9716\n",
"354/354 [==============================] - 0s 251us/sample - loss: 6.3734 - mae: 1.7080 - mse: 6.3734 - val_loss: 14.9184 - val_mae: 2.4716 - val_mse: 14.9184\n",
"354/354 [==============================] - 0s 321us/sample - loss: 6.4273 - mae: 1.7281 - mse: 6.4273 - val_loss: 13.8686 - val_mae: 2.3176 - val_mse: 13.8686\n",
"354/354 [==============================] - 0s 285us/sample - loss: 6.2473 - mae: 1.6967 - mse: 6.2473 - val_loss: 14.2249 - val_mae: 2.3450 - val_mse: 14.2249\n",
"354/354 [==============================] - 0s 286us/sample - loss: 6.3427 - mae: 1.7034 - mse: 6.3427 - val_loss: 14.3159 - val_mae: 2.3431 - val_mse: 14.3159\n",
"354/354 [==============================] - 0s 287us/sample - loss: 6.0929 - mae: 1.6752 - mse: 6.0929 - val_loss: 14.2151 - val_mae: 2.3644 - val_mse: 14.2151\n",
"354/354 [==============================] - 0s 289us/sample - loss: 6.1445 - mae: 1.6985 - mse: 6.1445 - val_loss: 14.8251 - val_mae: 2.4202 - val_mse: 14.8251\n",
"354/354 [==============================] - 0s 311us/sample - loss: 6.2184 - mae: 1.6867 - mse: 6.2184 - val_loss: 14.0596 - val_mae: 2.3274 - val_mse: 14.0596\n",
"354/354 [==============================] - 0s 340us/sample - loss: 6.1201 - mae: 1.6785 - mse: 6.1201 - val_loss: 13.4886 - val_mae: 2.2769 - val_mse: 13.4886\n",
"354/354 [==============================] - 0s 286us/sample - loss: 5.9001 - mae: 1.6716 - mse: 5.9001 - val_loss: 14.0295 - val_mae: 2.3214 - val_mse: 14.0295\n",
"354/354 [==============================] - 0s 284us/sample - loss: 6.0389 - mae: 1.6783 - mse: 6.0389 - val_loss: 14.0250 - val_mae: 2.3245 - val_mse: 14.0250\n",
"354/354 [==============================] - 0s 288us/sample - loss: 5.8268 - mae: 1.6458 - mse: 5.8268 - val_loss: 15.2746 - val_mae: 2.4834 - val_mse: 15.2746\n",
"354/354 [==============================] - 0s 284us/sample - loss: 5.8671 - mae: 1.6680 - mse: 5.8671 - val_loss: 14.4935 - val_mae: 2.4353 - val_mse: 14.4935\n",
"354/354 [==============================] - 0s 274us/sample - loss: 5.8115 - mae: 1.6742 - mse: 5.8115 - val_loss: 14.6922 - val_mae: 2.3631 - val_mse: 14.6922\n",
"354/354 [==============================] - 0s 331us/sample - loss: 5.8561 - mae: 1.6727 - mse: 5.8561 - val_loss: 13.4236 - val_mae: 2.2982 - val_mse: 13.4236\n",
"354/354 [==============================] - 0s 290us/sample - loss: 5.7500 - mae: 1.5833 - mse: 5.7500 - val_loss: 14.4867 - val_mae: 2.4330 - val_mse: 14.4867\n",
"354/354 [==============================] - 0s 286us/sample - loss: 5.6700 - mae: 1.6435 - mse: 5.6700 - val_loss: 13.9873 - val_mae: 2.3614 - val_mse: 13.9873\n",
"354/354 [==============================] - 0s 268us/sample - loss: 5.6816 - mae: 1.6524 - mse: 5.6816 - val_loss: 13.4864 - val_mae: 2.3505 - val_mse: 13.4864\n",
"354/354 [==============================] - 0s 267us/sample - loss: 5.5838 - mae: 1.6220 - mse: 5.5838 - val_loss: 15.4727 - val_mae: 2.5215 - val_mse: 15.4727\n",
"354/354 [==============================] - 0s 284us/sample - loss: 5.6117 - mae: 1.6208 - mse: 5.6117 - val_loss: 13.6392 - val_mae: 2.3150 - val_mse: 13.6392\n",
"354/354 [==============================] - 0s 324us/sample - loss: 5.5648 - mae: 1.6051 - mse: 5.5648 - val_loss: 13.2082 - val_mae: 2.2858 - val_mse: 13.2082\n",
"354/354 [==============================] - 0s 288us/sample - loss: 5.6019 - mae: 1.5946 - mse: 5.6019 - val_loss: 13.7882 - val_mae: 2.3677 - val_mse: 13.7882\n",
"354/354 [==============================] - 0s 336us/sample - loss: 5.4979 - mae: 1.6000 - mse: 5.4979 - val_loss: 12.9619 - val_mae: 2.2898 - val_mse: 12.9619\n",
"354/354 [==============================] - 0s 294us/sample - loss: 5.4595 - mae: 1.5815 - mse: 5.4595 - val_loss: 13.8617 - val_mae: 2.3735 - val_mse: 13.8617\n",
"354/354 [==============================] - 0s 321us/sample - loss: 5.1999 - mae: 1.6043 - mse: 5.1999 - val_loss: 12.9011 - val_mae: 2.3053 - val_mse: 12.9011\n",
"354/354 [==============================] - 0s 268us/sample - loss: 5.2630 - mae: 1.5463 - mse: 5.2630 - val_loss: 14.3610 - val_mae: 2.4348 - val_mse: 14.3610\n",
"354/354 [==============================] - 0s 300us/sample - loss: 5.3272 - mae: 1.6047 - mse: 5.3272 - val_loss: 12.9650 - val_mae: 2.2989 - val_mse: 12.9650\n",
"354/354 [==============================] - 0s 283us/sample - loss: 5.3137 - mae: 1.5796 - mse: 5.3137 - val_loss: 13.9091 - val_mae: 2.3669 - val_mse: 13.9091\n",
"354/354 [==============================] - 0s 280us/sample - loss: 5.2891 - mae: 1.5773 - mse: 5.2891 - val_loss: 13.2578 - val_mae: 2.3012 - val_mse: 13.2578\n",
"354/354 [==============================] - 0s 264us/sample - loss: 5.3977 - mae: 1.5920 - mse: 5.3977 - val_loss: 13.8690 - val_mae: 2.4075 - val_mse: 13.8690\n",
"354/354 [==============================] - 0s 273us/sample - loss: 5.3071 - mae: 1.5391 - mse: 5.3071 - val_loss: 12.9043 - val_mae: 2.2816 - val_mse: 12.9043\n",
"354/354 [==============================] - 0s 318us/sample - loss: 5.2748 - mae: 1.5458 - mse: 5.2748 - val_loss: 12.6915 - val_mae: 2.2683 - val_mse: 12.6915\n"
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
]
}
],
"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": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x_test / loss : 12.6915\n",
"x_test / mae : 2.2683\n",
"x_test / mse : 12.6915\n"
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
]
}
],
"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": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
]
}
],
"source": [
"print(\"min( val_mae ) : {:.4f}\".format( min(history.history[\"val_mae\"]) ) )"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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c47PfvazHHrooSxYsICf/exnAKxdu5aFCxdyxBFHcOihh/Lwww+Ty+U4//zz+8ted911Na69iIhEja6e2A2nfv3uUdv3fV9+507L/OIXv2Dx4sUsWbKEDRs2cOyxx7Jw4UJuv/12Tj31VL74xS+Sy+Xo6upi8eLFtLe388wzzwCwZcuWUau7iIiMTWppiLA///nPnH322cTjcaZNm8Zb3/pWnnjiCY499lhuvvlmrrzySpYuXUpbWxv77bcfK1as4NJLL+Xee+9l/Pjxta6+iIhEjEJDhDlX+gacCxcu5KGHHmLWrFmcd9553HrrrUyaNIklS5Zw4okncsMNN3DhhRdWubYiIhJ16p7YDeV0IRQsf7XYHXDAjAkjckniwoUL+f73v8+HP/xhNm3axEMPPcQ111zD6tWrmTVrFhdddBGdnZ089dRTnH766TQ0NPC+972P/fffn/PPP3+3v7+IiOxZFBqqxMz6Wwacg5GYxuA973kPjz76KIcffjhmxre+9S2mT5/Oj3/8Y6655hqSySStra3ceuuttLe3c8EFF5DP5wG4+uqrd78CIiKyR7Ghmrj3dKlUygGk0+kBy5ctW8bBBx9c8f5efG0r+bw/1vtPH088NvZ7hnb1WImISE0NeVo79v9z1QkL/QyU00REJIoUGqok3B2h0CAiIlGk0FAlA0IDSg0iIhI9Cg1Vou4JERGJOoWGKhnYPaHUICIi0aPQUCXhoaiKDCIiEkUKDVUSnsxJDQ0iIhJFCg1VUquBkK2trUOuW7VqFYceemjV6iIiItGm0FAl4YGQ6p8QEZEo0jTSu+PCd5RddFal+/7hvSUXf/7zn2fOnDmkUikArrzySsyMhx56iM2bN5PJZLjqqqs444wzKvp2PT09XHLJJSxatIhEIsG1117LSSedxLPPPssFF1xAX18f+Xyen//858ycOZMPfvCDrFmzhlwux5e//GXOPPPMSt+hiIhEjEJDxJx11llcdtll/aHhjjvu4N577+VTn/oU48ePZ8OGDRx33HG8+93vruimWDfccAMAS5cu5bnnnuPtb387y5cv58Ybb+STn/wkH/rQh+jr6yOXy3HPPfcwc+ZM7r77bgC2bt068m9URETqjronIubII4/k9ddf59VXX2XJkiVMmjSJGTNmcPnll3PYYYdxyimn0N7ezrp16yra75///GfOO+88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\n",
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
"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": 12,
"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": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"x_test / loss : 12.6915\n",
"x_test / mae : 2.2683\n",
"x_test / mse : 12.6915\n"
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
]
}
],
"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": 14,
"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",
"my_data=np.array(my_data).reshape(1,13)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Prédiction : 10.75 K$ Reality : 10.40 K$\n"
"predictions = loaded_model.predict( my_data )\n",
"print(\"Prédiction : {:.2f} K$ Reality : {:.2f} K$\".format(predictions[0][0], real_price))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<img width=\"80px\" src=\"../fidle/img/00-Fidle-logo-01.svg\"></img>"
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}