{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\n", "\n", "\n", "# <!-- TITLE --> [BHPD1] - Regression with a Dense Network (DNN)\n", "<!-- DESC --> Simple example of a regression with the dataset Boston Housing Prices Dataset (BHPD)\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** \n", "\n", "\n", "The **[Boston Housing Prices 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 theses informations : \n", "\n", " - CRIM: This is the per capita crime rate by town\n", " - ZN: This is the proportion of residential land zoned for lots larger than 25,000 sq.ft\n", " - INDUS: This is the proportion of non-retail business acres per town\n", " - CHAS: This is the Charles River dummy variable (this is equal to 1 if tract bounds river; 0 otherwise)\n", " - NOX: This is the nitric oxides concentration (parts per 10 million)\n", " - RM: This is the average number of rooms per dwelling\n", " - AGE: This is the proportion of owner-occupied units built prior to 1940\n", " - DIS: This is the weighted distances to five Boston employment centers\n", " - RAD: This is the index of accessibility to radial highways\n", " - TAX: This is the full-value property-tax rate per 10,000 dollars\n", " - PTRATIO: This is the pupil-teacher ratio by town\n", " - B: This is calculated as 1000(Bk — 0.63)^2, where Bk is the proportion of people of African American descent by town\n", " - LSTAT: This is the percentage lower status of the population\n", " - MEDV: This is the median value of owner-occupied homes in 1000 dollars\n", "## What we're going to do :\n", "\n", " - Retrieve data\n", " - Preparing the data\n", " - Build a model\n", " - Train the model\n", " - Evaluate the result\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 1 - Import and init" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style>\n", "\n", "div.warn { \n", " background-color: #fcf2f2;\n", " border-color: #dFb5b4;\n", " border-left: 5px solid #dfb5b4;\n", " padding: 0.5em;\n", " font-weight: bold;\n", " font-size: 1.1em;;\n", " }\n", "\n", "\n", "\n", "div.nota { \n", " background-color: #DAFFDE;\n", " border-left: 5px solid #92CC99;\n", " padding: 0.5em;\n", " }\n", "\n", "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n", " float:left;\n", " margin-right:20px;\n", " margin-top:-20px;\n", " margin-bottom:20px;\n", "}\n", "div.todo{\n", " font-weight: bold;\n", " font-size: 1.1em;\n", " margin-top:40px;\n", "}\n", "div.todo ul{\n", " margin: 0.2em;\n", "}\n", "div.todo li{\n", " margin-left:60px;\n", " margin-top:0;\n", " margin-bottom:0;\n", "}\n", "\n", "div .comment{\n", " font-size:0.8em;\n", " color:#696969;\n", "}\n", "\n", "\n", "\n", "</style>\n", "\n" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/markdown": [ "<br>**FIDLE 2020 - Practical Work Module**" ], "text/plain": [ "<IPython.core.display.Markdown object>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Version : 2.0.7\n", "Notebook id : BHPD1\n", "Run time : Wednesday 27 January 2021, 18:21:45\n", "TensorFlow version : 2.2.0\n", "Keras version : 2.3.0-tf\n", "Datasets dir : /gpfswork/rech/mlh/uja62cb/datasets\n", "Run dir : ./run\n", "Update keras cache : False\n", "Save figs : True\n", "Path figs : ./run/figs\n" ] } ], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import os,sys\n", "\n", "sys.path.append('..')\n", "import fidle.pwk as pwk\n", "\n", "datasets_dir = pwk.init('BHPD1')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 2 - Retrieve data\n", "\n", "### 2.1 - Option 1 : From Keras\n", "Boston housing is a famous historic dataset, so we can get it directly from [Keras datasets](https://www.tensorflow.org/api_docs/python/tf/keras/datasets) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# (x_train, y_train), (x_test, y_test) = keras.datasets.boston_housing.load_data(test_split=0.2, seed=113)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2 - Option 2 : From a csv file\n", "More fun !" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9\" ><caption>Few lines of the dataset :</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> <th class=\"col_heading level0 col13\" >medv</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9level0_row0\" class=\"row_heading level0 row0\" >0</th>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col0\" class=\"data row0 col0\" >0.01</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col1\" class=\"data row0 col1\" >18.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col2\" class=\"data row0 col2\" >2.31</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col3\" class=\"data row0 col3\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col4\" class=\"data row0 col4\" >0.54</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col5\" class=\"data row0 col5\" >6.58</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col6\" class=\"data row0 col6\" >65.20</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col7\" class=\"data row0 col7\" >4.09</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col8\" class=\"data row0 col8\" >1.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col9\" class=\"data row0 col9\" >296.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col10\" class=\"data row0 col10\" >15.30</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col11\" class=\"data row0 col11\" >396.90</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col12\" class=\"data row0 col12\" >4.98</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row0_col13\" class=\"data row0 col13\" >24.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9level0_row1\" class=\"row_heading level0 row1\" >1</th>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col0\" class=\"data row1 col0\" >0.03</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col1\" class=\"data row1 col1\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col2\" class=\"data row1 col2\" >7.07</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col3\" class=\"data row1 col3\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col4\" class=\"data row1 col4\" >0.47</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col5\" class=\"data row1 col5\" >6.42</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col6\" class=\"data row1 col6\" >78.90</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col7\" class=\"data row1 col7\" >4.97</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col8\" class=\"data row1 col8\" >2.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col9\" class=\"data row1 col9\" >242.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col10\" class=\"data row1 col10\" >17.80</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col11\" class=\"data row1 col11\" >396.90</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col12\" class=\"data row1 col12\" >9.14</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row1_col13\" class=\"data row1 col13\" >21.60</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9level0_row2\" class=\"row_heading level0 row2\" >2</th>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col0\" class=\"data row2 col0\" >0.03</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col1\" class=\"data row2 col1\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col2\" class=\"data row2 col2\" >7.07</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col3\" class=\"data row2 col3\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col4\" class=\"data row2 col4\" >0.47</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col5\" class=\"data row2 col5\" >7.18</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col6\" class=\"data row2 col6\" >61.10</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col7\" class=\"data row2 col7\" >4.97</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col8\" class=\"data row2 col8\" >2.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col9\" class=\"data row2 col9\" >242.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col10\" class=\"data row2 col10\" >17.80</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col11\" class=\"data row2 col11\" >392.83</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col12\" class=\"data row2 col12\" >4.03</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row2_col13\" class=\"data row2 col13\" >34.70</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9level0_row3\" class=\"row_heading level0 row3\" >3</th>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col0\" class=\"data row3 col0\" >0.03</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col1\" class=\"data row3 col1\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col2\" class=\"data row3 col2\" >2.18</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col3\" class=\"data row3 col3\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col4\" class=\"data row3 col4\" >0.46</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col5\" class=\"data row3 col5\" >7.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col6\" class=\"data row3 col6\" >45.80</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col7\" class=\"data row3 col7\" >6.06</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col8\" class=\"data row3 col8\" >3.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col9\" class=\"data row3 col9\" >222.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col10\" class=\"data row3 col10\" >18.70</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col11\" class=\"data row3 col11\" >394.63</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col12\" class=\"data row3 col12\" >2.94</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row3_col13\" class=\"data row3 col13\" >33.40</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9level0_row4\" class=\"row_heading level0 row4\" >4</th>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col0\" class=\"data row4 col0\" >0.07</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col1\" class=\"data row4 col1\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col2\" class=\"data row4 col2\" >2.18</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col3\" class=\"data row4 col3\" >0.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col4\" class=\"data row4 col4\" >0.46</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col5\" class=\"data row4 col5\" >7.15</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col6\" class=\"data row4 col6\" >54.20</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col7\" class=\"data row4 col7\" >6.06</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col8\" class=\"data row4 col8\" >3.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col9\" class=\"data row4 col9\" >222.00</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col10\" class=\"data row4 col10\" >18.70</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col11\" class=\"data row4 col11\" >396.90</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col12\" class=\"data row4 col12\" >5.33</td>\n", " <td id=\"T_2168aaa0_60c4_11eb_b688_ac1f6bce5dd9row4_col13\" class=\"data row4 col13\" >36.20</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x1509a9e37cd0>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Missing Data : 0 Shape is : (506, 14)\n" ] } ], "source": [ "data = pd.read_csv(f'{datasets_dir}/BHPD/origine/BostonHousing.csv', header=0)\n", "\n", "display(data.head(5).style.format(\"{0:.2f}\").set_caption(\"Few lines of the dataset :\"))\n", "print('Missing Data : ',data.isna().sum().sum(), ' Shape is : ', data.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 3 - Preparing the data\n", "### 3.1 - Split data\n", "We will use 70% of the data for training and 30% for validation. \n", "The dataset is **shuffled** and shared between **learning** and **testing**. \n", "x will be input data and y the expected output" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Original data shape was : (506, 14)\n", "x_train : (354, 13) y_train : (354,)\n", "x_test : (152, 13) y_test : (152,)\n" ] } ], "source": [ "# ---- Suffle and Split => train, test\n", "#\n", "data_train = data.sample(frac=0.7, axis=0)\n", "data_test = data.drop(data_train.index)\n", "\n", "# ---- Split => x,y (medv is price)\n", "#\n", "x_train = data_train.drop('medv', axis=1)\n", "y_train = data_train['medv']\n", "x_test = data_test.drop('medv', axis=1)\n", "y_test = data_test['medv']\n", "\n", "print('Original data shape was : ',data.shape)\n", "print('x_train : ',x_train.shape, 'y_train : ',y_train.shape)\n", "print('x_test : ',x_test.shape, 'y_test : ',y_test.shape)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3.2 - Data normalization\n", "**Note :** \n", " - All input data must be normalized, train and test. \n", " - To do this we will **subtract the mean** and **divide by the standard deviation**. \n", " - But test data should not be used in any way, even for normalization. \n", " - The mean and the standard deviation will therefore only be calculated with the train data." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9\" ><caption>Before normalization :</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row0\" class=\"row_heading level0 row0\" >count</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col0\" class=\"data row0 col0\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col1\" class=\"data row0 col1\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col2\" class=\"data row0 col2\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col3\" class=\"data row0 col3\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col4\" class=\"data row0 col4\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col5\" class=\"data row0 col5\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col6\" class=\"data row0 col6\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col7\" class=\"data row0 col7\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col8\" class=\"data row0 col8\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col9\" class=\"data row0 col9\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col10\" class=\"data row0 col10\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col11\" class=\"data row0 col11\" >354.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row0_col12\" class=\"data row0 col12\" >354.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col0\" class=\"data row1 col0\" >3.77</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col1\" class=\"data row1 col1\" >10.75</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col2\" class=\"data row1 col2\" >11.45</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col3\" class=\"data row1 col3\" >0.07</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col4\" class=\"data row1 col4\" >0.56</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col5\" class=\"data row1 col5\" >6.28</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col6\" class=\"data row1 col6\" >69.31</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col7\" class=\"data row1 col7\" >3.71</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col8\" class=\"data row1 col8\" >9.68</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col9\" class=\"data row1 col9\" >413.32</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col10\" class=\"data row1 col10\" >18.40</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col11\" class=\"data row1 col11\" >354.19</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row1_col12\" class=\"data row1 col12\" >12.96</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row2\" class=\"row_heading level0 row2\" >std</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col0\" class=\"data row2 col0\" >8.53</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col1\" class=\"data row2 col1\" >22.33</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col2\" class=\"data row2 col2\" >6.89</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col3\" class=\"data row2 col3\" >0.25</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col4\" class=\"data row2 col4\" >0.12</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col5\" class=\"data row2 col5\" >0.69</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col6\" class=\"data row2 col6\" >28.11</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col7\" class=\"data row2 col7\" >2.03</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col8\" class=\"data row2 col8\" >8.79</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col9\" class=\"data row2 col9\" >169.48</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col10\" class=\"data row2 col10\" >2.22</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col11\" class=\"data row2 col11\" >93.12</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row2_col12\" class=\"data row2 col12\" >7.28</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row3\" class=\"row_heading level0 row3\" >min</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col0\" class=\"data row3 col0\" >0.01</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col1\" class=\"data row3 col1\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col2\" class=\"data row3 col2\" >0.46</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col3\" class=\"data row3 col3\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col4\" class=\"data row3 col4\" >0.39</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col5\" class=\"data row3 col5\" >3.56</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col6\" class=\"data row3 col6\" >2.90</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col7\" class=\"data row3 col7\" >1.13</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col8\" class=\"data row3 col8\" >1.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col9\" class=\"data row3 col9\" >187.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col10\" class=\"data row3 col10\" >12.60</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col11\" class=\"data row3 col11\" >0.32</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row3_col12\" class=\"data row3 col12\" >1.92</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col0\" class=\"data row4 col0\" >0.09</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col1\" class=\"data row4 col1\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col2\" class=\"data row4 col2\" >5.40</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col3\" class=\"data row4 col3\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col4\" class=\"data row4 col4\" >0.45</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col5\" class=\"data row4 col5\" >5.88</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col6\" class=\"data row4 col6\" >45.18</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col7\" class=\"data row4 col7\" >2.07</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col8\" class=\"data row4 col8\" >4.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col9\" class=\"data row4 col9\" >281.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col10\" class=\"data row4 col10\" >16.90</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col11\" class=\"data row4 col11\" >372.83</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row4_col12\" class=\"data row4 col12\" >6.95</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col0\" class=\"data row5 col0\" >0.28</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col1\" class=\"data row5 col1\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col2\" class=\"data row5 col2\" >9.79</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col3\" class=\"data row5 col3\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col4\" class=\"data row5 col4\" >0.54</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col5\" class=\"data row5 col5\" >6.17</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col6\" class=\"data row5 col6\" >78.80</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col7\" class=\"data row5 col7\" >3.08</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col8\" class=\"data row5 col8\" >5.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col9\" class=\"data row5 col9\" >349.50</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col10\" class=\"data row5 col10\" >19.10</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col11\" class=\"data row5 col11\" >390.95</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row5_col12\" class=\"data row5 col12\" >11.73</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col0\" class=\"data row6 col0\" >3.80</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col1\" class=\"data row6 col1\" >12.50</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col2\" class=\"data row6 col2\" >18.10</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col3\" class=\"data row6 col3\" >0.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col4\" class=\"data row6 col4\" >0.63</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col5\" class=\"data row6 col5\" >6.60</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col6\" class=\"data row6 col6\" >94.57</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col7\" class=\"data row6 col7\" >5.12</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col8\" class=\"data row6 col8\" >24.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col9\" class=\"data row6 col9\" >666.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col10\" class=\"data row6 col10\" >20.20</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col11\" class=\"data row6 col11\" >396.23</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row6_col12\" class=\"data row6 col12\" >17.30</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9level0_row7\" class=\"row_heading level0 row7\" >max</th>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col0\" class=\"data row7 col0\" >73.53</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col1\" class=\"data row7 col1\" >100.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col2\" class=\"data row7 col2\" >27.74</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col3\" class=\"data row7 col3\" >1.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col4\" class=\"data row7 col4\" >0.87</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col5\" class=\"data row7 col5\" >8.78</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col6\" class=\"data row7 col6\" >100.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col7\" class=\"data row7 col7\" >12.13</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col8\" class=\"data row7 col8\" >24.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col9\" class=\"data row7 col9\" >711.00</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col10\" class=\"data row7 col10\" >21.20</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col11\" class=\"data row7 col11\" >396.90</td>\n", " <td id=\"T_217240ba_60c4_11eb_b688_ac1f6bce5dd9row7_col12\" class=\"data row7 col12\" >37.97</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x1509a8075c10>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9\" ><caption>After normalization :</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row0\" class=\"row_heading level0 row0\" >count</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col0\" class=\"data row0 col0\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col1\" class=\"data row0 col1\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col2\" class=\"data row0 col2\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col3\" class=\"data row0 col3\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col4\" class=\"data row0 col4\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col5\" class=\"data row0 col5\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col6\" class=\"data row0 col6\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col7\" class=\"data row0 col7\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col8\" class=\"data row0 col8\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col9\" class=\"data row0 col9\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col10\" class=\"data row0 col10\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col11\" class=\"data row0 col11\" >354.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row0_col12\" class=\"data row0 col12\" >354.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row1\" class=\"row_heading level0 row1\" >mean</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col0\" class=\"data row1 col0\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col1\" class=\"data row1 col1\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col2\" class=\"data row1 col2\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col3\" class=\"data row1 col3\" >-0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col4\" class=\"data row1 col4\" >-0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col5\" class=\"data row1 col5\" >-0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col6\" class=\"data row1 col6\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col7\" class=\"data row1 col7\" >-0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col8\" class=\"data row1 col8\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col9\" class=\"data row1 col9\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col10\" class=\"data row1 col10\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col11\" class=\"data row1 col11\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row1_col12\" class=\"data row1 col12\" >-0.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row2\" class=\"row_heading level0 row2\" >std</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col0\" class=\"data row2 col0\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col1\" class=\"data row2 col1\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col2\" class=\"data row2 col2\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col3\" class=\"data row2 col3\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col4\" class=\"data row2 col4\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col5\" class=\"data row2 col5\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col6\" class=\"data row2 col6\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col7\" class=\"data row2 col7\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col8\" class=\"data row2 col8\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col9\" class=\"data row2 col9\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col10\" class=\"data row2 col10\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col11\" class=\"data row2 col11\" >1.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row2_col12\" class=\"data row2 col12\" >1.00</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row3\" class=\"row_heading level0 row3\" >min</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col0\" class=\"data row3 col0\" >-0.44</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col1\" class=\"data row3 col1\" >-0.48</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col2\" class=\"data row3 col2\" >-1.59</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col3\" class=\"data row3 col3\" >-0.27</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col4\" class=\"data row3 col4\" >-1.48</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col5\" class=\"data row3 col5\" >-3.94</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col6\" class=\"data row3 col6\" >-2.36</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col7\" class=\"data row3 col7\" >-1.27</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col8\" class=\"data row3 col8\" >-0.99</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col9\" class=\"data row3 col9\" >-1.34</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col10\" class=\"data row3 col10\" >-2.61</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col11\" class=\"data row3 col11\" >-3.80</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row3_col12\" class=\"data row3 col12\" >-1.52</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row4\" class=\"row_heading level0 row4\" >25%</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col0\" class=\"data row4 col0\" >-0.43</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col1\" class=\"data row4 col1\" >-0.48</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col2\" class=\"data row4 col2\" >-0.88</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col3\" class=\"data row4 col3\" >-0.27</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col4\" class=\"data row4 col4\" >-0.94</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col5\" class=\"data row4 col5\" >-0.57</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col6\" class=\"data row4 col6\" >-0.86</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col7\" class=\"data row4 col7\" >-0.81</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col8\" class=\"data row4 col8\" >-0.65</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col9\" class=\"data row4 col9\" >-0.78</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col10\" class=\"data row4 col10\" >-0.68</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col11\" class=\"data row4 col11\" >0.20</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row4_col12\" class=\"data row4 col12\" >-0.83</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row5\" class=\"row_heading level0 row5\" >50%</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col0\" class=\"data row5 col0\" >-0.41</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col1\" class=\"data row5 col1\" >-0.48</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col2\" class=\"data row5 col2\" >-0.24</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col3\" class=\"data row5 col3\" >-0.27</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col4\" class=\"data row5 col4\" >-0.19</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col5\" class=\"data row5 col5\" >-0.15</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col6\" class=\"data row5 col6\" >0.34</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col7\" class=\"data row5 col7\" >-0.31</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col8\" class=\"data row5 col8\" >-0.53</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col9\" class=\"data row5 col9\" >-0.38</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col10\" class=\"data row5 col10\" >0.31</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col11\" class=\"data row5 col11\" >0.39</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row5_col12\" class=\"data row5 col12\" >-0.17</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row6\" class=\"row_heading level0 row6\" >75%</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col0\" class=\"data row6 col0\" >0.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col1\" class=\"data row6 col1\" >0.08</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col2\" class=\"data row6 col2\" >0.96</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col3\" class=\"data row6 col3\" >-0.27</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col4\" class=\"data row6 col4\" >0.60</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col5\" class=\"data row6 col5\" >0.47</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col6\" class=\"data row6 col6\" >0.90</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col7\" class=\"data row6 col7\" >0.69</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col8\" class=\"data row6 col8\" >1.63</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col9\" class=\"data row6 col9\" >1.49</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col10\" class=\"data row6 col10\" >0.81</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col11\" class=\"data row6 col11\" >0.45</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row6_col12\" class=\"data row6 col12\" >0.60</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9level0_row7\" class=\"row_heading level0 row7\" >max</th>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col0\" class=\"data row7 col0\" >8.18</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col1\" class=\"data row7 col1\" >4.00</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col2\" class=\"data row7 col2\" >2.36</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col3\" class=\"data row7 col3\" >3.70</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col4\" class=\"data row7 col4\" >2.64</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col5\" class=\"data row7 col5\" >3.64</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col6\" class=\"data row7 col6\" >1.09</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col7\" class=\"data row7 col7\" >4.14</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col8\" class=\"data row7 col8\" >1.63</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col9\" class=\"data row7 col9\" >1.76</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col10\" class=\"data row7 col10\" >1.26</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col11\" class=\"data row7 col11\" >0.46</td>\n", " <td id=\"T_217c56f4_60c4_11eb_b688_ac1f6bce5dd9row7_col12\" class=\"data row7 col12\" >3.43</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x150a3d37aa50>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<style type=\"text/css\" >\n", "</style><table id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9\" ><caption>Few lines of the dataset :</caption><thead> <tr> <th class=\"blank level0\" ></th> <th class=\"col_heading level0 col0\" >crim</th> <th class=\"col_heading level0 col1\" >zn</th> <th class=\"col_heading level0 col2\" >indus</th> <th class=\"col_heading level0 col3\" >chas</th> <th class=\"col_heading level0 col4\" >nox</th> <th class=\"col_heading level0 col5\" >rm</th> <th class=\"col_heading level0 col6\" >age</th> <th class=\"col_heading level0 col7\" >dis</th> <th class=\"col_heading level0 col8\" >rad</th> <th class=\"col_heading level0 col9\" >tax</th> <th class=\"col_heading level0 col10\" >ptratio</th> <th class=\"col_heading level0 col11\" >b</th> <th class=\"col_heading level0 col12\" >lstat</th> </tr></thead><tbody>\n", " <tr>\n", " <th id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9level0_row0\" class=\"row_heading level0 row0\" >457</th>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col0\" class=\"data row0 col0\" >0.52</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col1\" class=\"data row0 col1\" >-0.48</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col2\" class=\"data row0 col2\" >0.96</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col3\" class=\"data row0 col3\" >-0.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col4\" class=\"data row0 col4\" >1.30</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col5\" class=\"data row0 col5\" >-0.49</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col6\" class=\"data row0 col6\" >0.39</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col7\" class=\"data row0 col7\" >-0.46</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col8\" class=\"data row0 col8\" >1.63</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col9\" class=\"data row0 col9\" >1.49</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col10\" class=\"data row0 col10\" >0.81</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col11\" class=\"data row0 col11\" >-3.77</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row0_col12\" class=\"data row0 col12\" >0.55</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9level0_row1\" class=\"row_heading level0 row1\" >458</th>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col0\" class=\"data row1 col0\" >0.47</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col1\" class=\"data row1 col1\" >-0.48</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col2\" class=\"data row1 col2\" >0.96</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col3\" class=\"data row1 col3\" >-0.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col4\" class=\"data row1 col4\" >1.30</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col5\" class=\"data row1 col5\" >0.04</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col6\" class=\"data row1 col6\" >0.51</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col7\" class=\"data row1 col7\" >-0.45</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col8\" class=\"data row1 col8\" >1.63</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col9\" class=\"data row1 col9\" >1.49</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col10\" class=\"data row1 col10\" >0.81</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col11\" class=\"data row1 col11\" >-0.88</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row1_col12\" class=\"data row1 col12\" >0.45</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9level0_row2\" class=\"row_heading level0 row2\" >71</th>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col0\" class=\"data row2 col0\" >-0.42</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col1\" class=\"data row2 col1\" >-0.48</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col2\" class=\"data row2 col2\" >-0.09</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col3\" class=\"data row2 col3\" >-0.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col4\" class=\"data row2 col4\" >-1.25</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col5\" class=\"data row2 col5\" >-0.46</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col6\" class=\"data row2 col6\" >-1.84</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col7\" class=\"data row2 col7\" >0.78</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col8\" class=\"data row2 col8\" >-0.65</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col9\" class=\"data row2 col9\" >-0.64</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col10\" class=\"data row2 col10\" >0.36</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col11\" class=\"data row2 col11\" >0.24</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row2_col12\" class=\"data row2 col12\" >-0.42</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9level0_row3\" class=\"row_heading level0 row3\" >57</th>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col0\" class=\"data row3 col0\" >-0.44</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col1\" class=\"data row3 col1\" >4.00</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col2\" class=\"data row3 col2\" >-1.47</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col3\" class=\"data row3 col3\" >-0.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col4\" class=\"data row3 col4\" >-1.26</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col5\" class=\"data row3 col5\" >0.79</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col6\" class=\"data row3 col6\" >-1.02</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col7\" class=\"data row3 col7\" >2.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col8\" class=\"data row3 col8\" >-0.53</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col9\" class=\"data row3 col9\" >-0.93</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col10\" class=\"data row3 col10\" >-1.49</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col11\" class=\"data row3 col11\" >0.42</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row3_col12\" class=\"data row3 col12\" >-1.24</td>\n", " </tr>\n", " <tr>\n", " <th id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9level0_row4\" class=\"row_heading level0 row4\" >388</th>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col0\" class=\"data row4 col0\" >1.24</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col1\" class=\"data row4 col1\" >-0.48</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col2\" class=\"data row4 col2\" >0.96</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col3\" class=\"data row4 col3\" >-0.27</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col4\" class=\"data row4 col4\" >1.19</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col5\" class=\"data row4 col5\" >-2.03</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col6\" class=\"data row4 col6\" >1.09</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col7\" class=\"data row4 col7\" >-1.04</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col8\" class=\"data row4 col8\" >1.63</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col9\" class=\"data row4 col9\" >1.49</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col10\" class=\"data row4 col10\" >0.81</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col11\" class=\"data row4 col11\" >0.20</td>\n", " <td id=\"T_217d4370_60c4_11eb_b688_ac1f6bce5dd9row4_col12\" class=\"data row4 col12\" >2.42</td>\n", " </tr>\n", " </tbody></table>" ], "text/plain": [ "<pandas.io.formats.style.Styler at 0x1509a9dea050>" ] }, "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", "display(x_train.head(5).style.format(\"{0:.2f}\").set_caption(\"Few lines of the dataset :\"))\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", "About informations about : \n", " - [Optimizer](https://www.tensorflow.org/api_docs/python/tf/keras/optimizers)\n", " - [Activation](https://www.tensorflow.org/api_docs/python/tf/keras/activations)\n", " - [Loss](https://www.tensorflow.org/api_docs/python/tf/keras/losses)\n", " - [Metrics](https://www.tensorflow.org/api_docs/python/tf/keras/metrics)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ " def get_model_v1(shape):\n", " \n", " model = keras.models.Sequential()\n", " model.add(keras.layers.Input(shape, name=\"InputLayer\"))\n", " model.add(keras.layers.Dense(32, activation='relu', name='Dense_n1'))\n", " model.add(keras.layers.Dense(64, activation='relu', name='Dense_n2'))\n", " model.add(keras.layers.Dense(32, activation='relu', name='Dense_n3'))\n", " model.add(keras.layers.Dense(1, name='Output'))\n", " \n", " model.compile(optimizer = 'adam',\n", " loss = 'mse',\n", " metrics = ['mae', 'mse'] )\n", " return model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 5 - Train the model\n", "### 5.1 - Get it" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "Dense_n1 (Dense) (None, 32) 448 \n", "_________________________________________________________________\n", "Dense_n2 (Dense) (None, 64) 2112 \n", "_________________________________________________________________\n", "Dense_n3 (Dense) (None, 32) 2080 \n", "_________________________________________________________________\n", "Output (Dense) (None, 1) 33 \n", "=================================================================\n", "Total params: 4,673\n", "Trainable params: 4,673\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ], "source": [ "model=get_model_v1( (13,) )\n", "\n", "model.summary()\n", "\n", "# img=keras.utils.plot_model( model, to_file='./run/model.png', show_shapes=True, show_layer_names=True, dpi=96)\n", "# display(img)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 5.2 - Train it" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "history = model.fit(x_train,\n", " y_train,\n", " epochs = 60,\n", " batch_size = 10,\n", " verbose = 0,\n", " validation_data = (x_test, y_test))" ] }, { "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": [ "\r", "1/5 [=====>........................] - ETA: 0s - loss: 4.6145 - mae: 1.7680 - mse: 4.6145" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\r", "5/5 [==============================] - 0s 1ms/step - loss: 12.8622 - mae: 2.5038 - mse: 12.8622\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "x_test / loss : 12.8622\n", "x_test / mae : 2.5038\n", "x_test / mse : 12.8622\n" ] } ], "source": [ "score = model.evaluate(x_test, y_test, verbose=1)\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": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>loss</th>\n", " <th>mae</th>\n", " <th>mse</th>\n", " <th>val_loss</th>\n", " <th>val_mae</th>\n", " <th>val_mse</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>557.110229</td>\n", " <td>21.755095</td>\n", " <td>557.110229</td>\n", " <td>566.663513</td>\n", " <td>22.079660</td>\n", " <td>566.663513</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>432.437531</td>\n", " <td>18.720016</td>\n", " <td>432.437531</td>\n", " <td>309.664307</td>\n", " <td>15.449092</td>\n", " <td>309.664307</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>128.784424</td>\n", " <td>9.146366</td>\n", " <td>128.784424</td>\n", " <td>76.502739</td>\n", " <td>6.500687</td>\n", " <td>76.502739</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>46.740250</td>\n", " <td>5.145848</td>\n", " <td>46.740250</td>\n", " <td>46.013943</td>\n", " <td>4.854597</td>\n", " <td>46.013943</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>32.746838</td>\n", " <td>4.164395</td>\n", " <td>32.746838</td>\n", " <td>32.412849</td>\n", " <td>4.084362</td>\n", " <td>32.412849</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>25.993132</td>\n", " <td>3.689824</td>\n", " <td>25.993132</td>\n", " <td>25.835711</td>\n", " <td>3.591498</td>\n", " <td>25.835711</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>21.744696</td>\n", " <td>3.314952</td>\n", " <td>21.744696</td>\n", " <td>23.283384</td>\n", " <td>3.319693</td>\n", " <td>23.283384</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>19.453054</td>\n", " <td>3.105563</td>\n", " <td>19.453054</td>\n", " <td>20.690527</td>\n", " <td>3.269499</td>\n", " <td>20.690527</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>18.129580</td>\n", " <td>2.975687</td>\n", " <td>18.129580</td>\n", " <td>19.584963</td>\n", " <td>3.050544</td>\n", " <td>19.584963</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>16.578382</td>\n", " <td>2.889005</td>\n", " <td>16.578382</td>\n", " <td>19.213827</td>\n", " <td>2.943497</td>\n", " <td>19.213827</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>16.430822</td>\n", " <td>2.857874</td>\n", " <td>16.430822</td>\n", " <td>18.419195</td>\n", " <td>2.884873</td>\n", " <td>18.419195</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>15.353567</td>\n", " <td>2.716110</td>\n", " <td>15.353567</td>\n", " <td>17.896538</td>\n", " <td>2.863943</td>\n", " <td>17.896538</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>14.577881</td>\n", " <td>2.710038</td>\n", " <td>14.577881</td>\n", " <td>17.512091</td>\n", " <td>2.813848</td>\n", " <td>17.512091</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>14.009259</td>\n", " <td>2.636542</td>\n", " <td>14.009259</td>\n", " <td>16.709333</td>\n", " <td>2.847991</td>\n", " <td>16.709333</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>13.622747</td>\n", " <td>2.586885</td>\n", " <td>13.622747</td>\n", " <td>16.828131</td>\n", " <td>2.783819</td>\n", " <td>16.828131</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>13.196759</td>\n", " <td>2.609227</td>\n", " <td>13.196759</td>\n", " <td>16.234299</td>\n", " <td>2.811693</td>\n", " <td>16.234299</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>12.950662</td>\n", " <td>2.550461</td>\n", " <td>12.950662</td>\n", " <td>15.932192</td>\n", " <td>2.768209</td>\n", " <td>15.932192</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>12.235045</td>\n", " <td>2.501354</td>\n", " <td>12.235045</td>\n", " <td>16.159029</td>\n", " <td>2.756651</td>\n", " <td>16.159029</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>12.013583</td>\n", " <td>2.450771</td>\n", " <td>12.013583</td>\n", " <td>15.604077</td>\n", " <td>2.795785</td>\n", " <td>15.604077</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>11.832004</td>\n", " <td>2.462322</td>\n", " <td>11.832004</td>\n", " <td>15.506014</td>\n", " <td>2.723617</td>\n", " <td>15.506014</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>11.513858</td>\n", " <td>2.434575</td>\n", " <td>11.513858</td>\n", " <td>15.271301</td>\n", " <td>2.699143</td>\n", " <td>15.271301</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>11.223393</td>\n", " <td>2.400579</td>\n", " <td>11.223393</td>\n", " <td>14.807283</td>\n", " <td>2.684988</td>\n", " <td>14.807283</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>10.964899</td>\n", " <td>2.418457</td>\n", " <td>10.964899</td>\n", " <td>15.809488</td>\n", " <td>2.696303</td>\n", " <td>15.809488</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>11.118007</td>\n", " <td>2.429673</td>\n", " <td>11.118008</td>\n", " <td>15.656264</td>\n", " <td>2.681730</td>\n", " <td>15.656264</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>10.572912</td>\n", " <td>2.337246</td>\n", " <td>10.572912</td>\n", " <td>15.135712</td>\n", " <td>2.715697</td>\n", " <td>15.135712</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>10.455198</td>\n", " <td>2.322559</td>\n", " <td>10.455198</td>\n", " <td>14.578933</td>\n", " <td>2.627208</td>\n", " <td>14.578933</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>10.346705</td>\n", " <td>2.315346</td>\n", " <td>10.346705</td>\n", " <td>14.823316</td>\n", " <td>2.658370</td>\n", " <td>14.823316</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>10.355490</td>\n", " <td>2.317309</td>\n", " <td>10.355490</td>\n", " <td>15.032076</td>\n", " <td>2.656401</td>\n", " <td>15.032076</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>10.311305</td>\n", " <td>2.315498</td>\n", " <td>10.311305</td>\n", " <td>13.855297</td>\n", " <td>2.597041</td>\n", " <td>13.855297</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>9.676501</td>\n", " <td>2.266373</td>\n", " <td>9.676501</td>\n", " <td>14.449501</td>\n", " <td>2.602626</td>\n", " <td>14.449501</td>\n", " </tr>\n", " <tr>\n", " <th>30</th>\n", " <td>9.492561</td>\n", " <td>2.244102</td>\n", " <td>9.492561</td>\n", " <td>13.742427</td>\n", " <td>2.587132</td>\n", " <td>13.742427</td>\n", " </tr>\n", " <tr>\n", " <th>31</th>\n", " <td>9.191629</td>\n", " <td>2.191142</td>\n", " <td>9.191629</td>\n", " <td>13.792264</td>\n", " <td>2.587759</td>\n", " <td>13.792264</td>\n", " </tr>\n", " <tr>\n", " <th>32</th>\n", " <td>9.310394</td>\n", " <td>2.220257</td>\n", " <td>9.310394</td>\n", " <td>13.355861</td>\n", " <td>2.577220</td>\n", " <td>13.355861</td>\n", " </tr>\n", " <tr>\n", " <th>33</th>\n", " <td>9.685646</td>\n", " <td>2.289821</td>\n", " <td>9.685646</td>\n", " <td>14.095552</td>\n", " <td>2.606347</td>\n", " <td>14.095551</td>\n", " </tr>\n", " <tr>\n", " <th>34</th>\n", " <td>8.895621</td>\n", " <td>2.156183</td>\n", " <td>8.895621</td>\n", " <td>13.986664</td>\n", " <td>2.588361</td>\n", " <td>13.986664</td>\n", " </tr>\n", " <tr>\n", " <th>35</th>\n", " <td>8.831407</td>\n", " <td>2.159810</td>\n", " <td>8.831407</td>\n", " <td>13.347268</td>\n", " <td>2.645553</td>\n", " <td>13.347268</td>\n", " </tr>\n", " <tr>\n", " <th>36</th>\n", " <td>9.205605</td>\n", " <td>2.249952</td>\n", " <td>9.205605</td>\n", " <td>13.786952</td>\n", " <td>2.557330</td>\n", " <td>13.786952</td>\n", " </tr>\n", " <tr>\n", " <th>37</th>\n", " <td>8.611838</td>\n", " <td>2.150589</td>\n", " <td>8.611838</td>\n", " <td>13.023615</td>\n", " <td>2.552000</td>\n", " <td>13.023615</td>\n", " </tr>\n", " <tr>\n", " <th>38</th>\n", " <td>8.395627</td>\n", " <td>2.119596</td>\n", " <td>8.395627</td>\n", " <td>12.889799</td>\n", " <td>2.510767</td>\n", " <td>12.889799</td>\n", " </tr>\n", " <tr>\n", " <th>39</th>\n", " <td>8.306986</td>\n", " <td>2.115590</td>\n", " <td>8.306986</td>\n", " <td>12.923724</td>\n", " <td>2.505140</td>\n", " <td>12.923725</td>\n", " </tr>\n", " <tr>\n", " <th>40</th>\n", " <td>8.289637</td>\n", " <td>2.098911</td>\n", " <td>8.289637</td>\n", " <td>13.090283</td>\n", " <td>2.544958</td>\n", " <td>13.090283</td>\n", " </tr>\n", " <tr>\n", " <th>41</th>\n", " <td>8.257290</td>\n", " <td>2.107672</td>\n", " <td>8.257290</td>\n", " <td>12.793848</td>\n", " <td>2.490349</td>\n", " <td>12.793847</td>\n", " </tr>\n", " <tr>\n", " <th>42</th>\n", " <td>7.911699</td>\n", " <td>2.057218</td>\n", " <td>7.911699</td>\n", " <td>12.559152</td>\n", " <td>2.517291</td>\n", " <td>12.559152</td>\n", " </tr>\n", " <tr>\n", " <th>43</th>\n", " <td>7.926489</td>\n", " <td>2.067045</td>\n", " <td>7.926489</td>\n", " <td>12.680960</td>\n", " <td>2.488867</td>\n", " <td>12.680960</td>\n", " </tr>\n", " <tr>\n", " <th>44</th>\n", " <td>7.728731</td>\n", " <td>2.029821</td>\n", " <td>7.728731</td>\n", " <td>12.956861</td>\n", " <td>2.505697</td>\n", " <td>12.956861</td>\n", " </tr>\n", " <tr>\n", " <th>45</th>\n", " <td>7.896817</td>\n", " <td>2.051337</td>\n", " <td>7.896817</td>\n", " <td>12.698907</td>\n", " <td>2.529223</td>\n", " <td>12.698908</td>\n", " </tr>\n", " <tr>\n", " <th>46</th>\n", " <td>7.747711</td>\n", " <td>2.042965</td>\n", " <td>7.747711</td>\n", " <td>12.507236</td>\n", " <td>2.481057</td>\n", " <td>12.507236</td>\n", " </tr>\n", " <tr>\n", " <th>47</th>\n", " <td>7.299829</td>\n", " <td>1.974992</td>\n", " <td>7.299829</td>\n", " <td>12.904597</td>\n", " <td>2.510432</td>\n", " <td>12.904597</td>\n", " </tr>\n", " <tr>\n", " <th>48</th>\n", " <td>7.412511</td>\n", " <td>1.982558</td>\n", " <td>7.412511</td>\n", " <td>12.734959</td>\n", " <td>2.487465</td>\n", " <td>12.734959</td>\n", " </tr>\n", " <tr>\n", " <th>49</th>\n", " <td>7.232289</td>\n", " <td>1.979351</td>\n", " <td>7.232289</td>\n", " <td>13.761557</td>\n", " <td>2.557386</td>\n", " <td>13.761557</td>\n", " </tr>\n", " <tr>\n", " <th>50</th>\n", " <td>7.164174</td>\n", " <td>1.972562</td>\n", " <td>7.164174</td>\n", " <td>14.608506</td>\n", " <td>2.640860</td>\n", " <td>14.608506</td>\n", " </tr>\n", " <tr>\n", " <th>51</th>\n", " <td>7.635994</td>\n", " <td>2.040386</td>\n", " <td>7.635994</td>\n", " <td>12.303484</td>\n", " <td>2.467364</td>\n", " <td>12.303484</td>\n", " </tr>\n", " <tr>\n", " <th>52</th>\n", " <td>7.076495</td>\n", " <td>1.935595</td>\n", " <td>7.076495</td>\n", " <td>12.791563</td>\n", " <td>2.510791</td>\n", " <td>12.791563</td>\n", " </tr>\n", " <tr>\n", " <th>53</th>\n", " <td>6.842372</td>\n", " <td>1.956153</td>\n", " <td>6.842371</td>\n", " <td>13.455476</td>\n", " <td>2.541403</td>\n", " <td>13.455476</td>\n", " </tr>\n", " <tr>\n", " <th>54</th>\n", " <td>6.992228</td>\n", " <td>1.942284</td>\n", " <td>6.992228</td>\n", " <td>12.227015</td>\n", " <td>2.455993</td>\n", " <td>12.227015</td>\n", " </tr>\n", " <tr>\n", " <th>55</th>\n", " <td>6.643617</td>\n", " <td>1.898294</td>\n", " <td>6.643617</td>\n", " <td>12.968992</td>\n", " <td>2.518973</td>\n", " <td>12.968992</td>\n", " </tr>\n", " <tr>\n", " <th>56</th>\n", " <td>6.949604</td>\n", " <td>1.896108</td>\n", " <td>6.949604</td>\n", " <td>13.591916</td>\n", " <td>2.579016</td>\n", " <td>13.591916</td>\n", " </tr>\n", " <tr>\n", " <th>57</th>\n", " <td>6.503430</td>\n", " <td>1.910864</td>\n", " <td>6.503431</td>\n", " <td>12.660034</td>\n", " <td>2.518983</td>\n", " <td>12.660034</td>\n", " </tr>\n", " <tr>\n", " <th>58</th>\n", " <td>6.535034</td>\n", " <td>1.900807</td>\n", " <td>6.535034</td>\n", " <td>13.523602</td>\n", " <td>2.557911</td>\n", " <td>13.523602</td>\n", " </tr>\n", " <tr>\n", " <th>59</th>\n", " <td>6.394708</td>\n", " <td>1.861171</td>\n", " <td>6.394708</td>\n", " <td>12.862247</td>\n", " <td>2.503769</td>\n", " <td>12.862247</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " loss mae mse val_loss val_mae val_mse\n", "0 557.110229 21.755095 557.110229 566.663513 22.079660 566.663513\n", "1 432.437531 18.720016 432.437531 309.664307 15.449092 309.664307\n", "2 128.784424 9.146366 128.784424 76.502739 6.500687 76.502739\n", "3 46.740250 5.145848 46.740250 46.013943 4.854597 46.013943\n", "4 32.746838 4.164395 32.746838 32.412849 4.084362 32.412849\n", "5 25.993132 3.689824 25.993132 25.835711 3.591498 25.835711\n", "6 21.744696 3.314952 21.744696 23.283384 3.319693 23.283384\n", "7 19.453054 3.105563 19.453054 20.690527 3.269499 20.690527\n", "8 18.129580 2.975687 18.129580 19.584963 3.050544 19.584963\n", "9 16.578382 2.889005 16.578382 19.213827 2.943497 19.213827\n", "10 16.430822 2.857874 16.430822 18.419195 2.884873 18.419195\n", "11 15.353567 2.716110 15.353567 17.896538 2.863943 17.896538\n", "12 14.577881 2.710038 14.577881 17.512091 2.813848 17.512091\n", "13 14.009259 2.636542 14.009259 16.709333 2.847991 16.709333\n", "14 13.622747 2.586885 13.622747 16.828131 2.783819 16.828131\n", "15 13.196759 2.609227 13.196759 16.234299 2.811693 16.234299\n", "16 12.950662 2.550461 12.950662 15.932192 2.768209 15.932192\n", "17 12.235045 2.501354 12.235045 16.159029 2.756651 16.159029\n", "18 12.013583 2.450771 12.013583 15.604077 2.795785 15.604077\n", "19 11.832004 2.462322 11.832004 15.506014 2.723617 15.506014\n", "20 11.513858 2.434575 11.513858 15.271301 2.699143 15.271301\n", "21 11.223393 2.400579 11.223393 14.807283 2.684988 14.807283\n", "22 10.964899 2.418457 10.964899 15.809488 2.696303 15.809488\n", "23 11.118007 2.429673 11.118008 15.656264 2.681730 15.656264\n", "24 10.572912 2.337246 10.572912 15.135712 2.715697 15.135712\n", "25 10.455198 2.322559 10.455198 14.578933 2.627208 14.578933\n", "26 10.346705 2.315346 10.346705 14.823316 2.658370 14.823316\n", "27 10.355490 2.317309 10.355490 15.032076 2.656401 15.032076\n", "28 10.311305 2.315498 10.311305 13.855297 2.597041 13.855297\n", "29 9.676501 2.266373 9.676501 14.449501 2.602626 14.449501\n", "30 9.492561 2.244102 9.492561 13.742427 2.587132 13.742427\n", "31 9.191629 2.191142 9.191629 13.792264 2.587759 13.792264\n", "32 9.310394 2.220257 9.310394 13.355861 2.577220 13.355861\n", "33 9.685646 2.289821 9.685646 14.095552 2.606347 14.095551\n", "34 8.895621 2.156183 8.895621 13.986664 2.588361 13.986664\n", "35 8.831407 2.159810 8.831407 13.347268 2.645553 13.347268\n", "36 9.205605 2.249952 9.205605 13.786952 2.557330 13.786952\n", "37 8.611838 2.150589 8.611838 13.023615 2.552000 13.023615\n", "38 8.395627 2.119596 8.395627 12.889799 2.510767 12.889799\n", "39 8.306986 2.115590 8.306986 12.923724 2.505140 12.923725\n", "40 8.289637 2.098911 8.289637 13.090283 2.544958 13.090283\n", "41 8.257290 2.107672 8.257290 12.793848 2.490349 12.793847\n", "42 7.911699 2.057218 7.911699 12.559152 2.517291 12.559152\n", "43 7.926489 2.067045 7.926489 12.680960 2.488867 12.680960\n", "44 7.728731 2.029821 7.728731 12.956861 2.505697 12.956861\n", "45 7.896817 2.051337 7.896817 12.698907 2.529223 12.698908\n", "46 7.747711 2.042965 7.747711 12.507236 2.481057 12.507236\n", "47 7.299829 1.974992 7.299829 12.904597 2.510432 12.904597\n", "48 7.412511 1.982558 7.412511 12.734959 2.487465 12.734959\n", "49 7.232289 1.979351 7.232289 13.761557 2.557386 13.761557\n", "50 7.164174 1.972562 7.164174 14.608506 2.640860 14.608506\n", "51 7.635994 2.040386 7.635994 12.303484 2.467364 12.303484\n", "52 7.076495 1.935595 7.076495 12.791563 2.510791 12.791563\n", "53 6.842372 1.956153 6.842371 13.455476 2.541403 13.455476\n", "54 6.992228 1.942284 6.992228 12.227015 2.455993 12.227015\n", "55 6.643617 1.898294 6.643617 12.968992 2.518973 12.968992\n", "56 6.949604 1.896108 6.949604 13.591916 2.579016 13.591916\n", "57 6.503430 1.910864 6.503431 12.660034 2.518983 12.660034\n", "58 6.535034 1.900807 6.535034 13.523602 2.557911 13.523602\n", "59 6.394708 1.861171 6.394708 12.862247 2.503769 12.862247" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df=pd.DataFrame(data=history.history)\n", "display(df)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "min( val_mae ) : 2.4560\n" ] } ], "source": [ "print(\"min( val_mae ) : {:.4f}\".format( min(history.history[\"val_mae\"]) ) )" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div class=\"comment\">Saved: ./run/figs/BHPD1-01-history_0</div>" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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8qKLLuKWW24hm83ywhe+kDe96U3k83nuv/9+jjnmGAD6+/v59re/rdAgIiI7Ze6edB1Sq1gsOkCpVBq1/f777+ewww6b2MG2bYWNTwDgvfOwfRZPTiVniF06ZyIikoRxZ+TTQMhpsrVca67XavUEayIiIrJrFBqmice7J3x6uidEREQmk0LDNMlks60n0zSmQUREZDIpNEyTbJdaGkREZGZTaJgm8ZYG0+BTERGZgRQapklXV+vq1oxaGkREZAZSaJgm8e6JDE6gcQ0iIjLDKDRME7MMQezS13p9+kJDf3//tL2XiIjMXgoN08gtFhpqtR2UFBERSR9NI727Tnljx0VjF11S6OQF3/xJ282f/OQnWbZsGcViEYBzzz0XM+O2225j8+bNVKtVPv/5z/O2t71tp2+xevVqzjnnHPbdd1/WrFnDCSecwPLly/nqV7/K8PAw1113HQceeCBXXXUVn/3sZ8lmsyxYsIDbbruNer3OmWeeyerVqxkZGeHDH/6wboQlIjKLqaVhBjrxxBO58sorm8+///3v8/73v59rr72WX/3qV9xyyy18/OMfp9Mpwu+55x6++tWvct999/Gtb32LBx98kDvvvJNTTjmFiy++GIDzzjuPG2+8kXvuuYfrr78egH/6p39iwYIF3HXXXdx1111cdtllPPzww5P/gUVEJBXU0jADHXnkkTz11FNs2LCBp59+mj322IPFixdzxhlncNttt5HJZHj88cd58sknec5znrPT461cuZLFi8N7YRx44IG8/vWvB2D58uXccsstAKxatYr3ve99vOtd7+KEE04A4KabbuLee+/l6quvBmDLli2sXbuWAw44YCo+toiIJEyhYXeN04XQTnXDY+QqwwA807uIPfdZtMtv+853vpOrr76aJ554ghNPPJErrriCp59+ml/+8pfkcjn2339/yuVyR8fK5/PN9Uwm03yeyWSoRWMv/vEf/5Ff/OIX/OhHP2LFihWsWbMGd+fiiy/mDW94wy5/DhERmTnUPTGNLNMa1eC7ecnliSeeyPe+9z2uvvpq3vnOd7Jlyxb22Wcfcrkct9xyC4888sjuVneU3/3ud7z85S/nvPPOY6+99uKxxx7jDW94A9/4xjeoVqsAPPjggwwODk7q+4qISHqopWEaWbaV0XY3NBx++OEMDAywZMkSFi9ezEknncQf//Efc9RR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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "<div class=\"comment\">Saved: ./run/figs/BHPD1-01-history_1</div>" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/html": [ "<div class=\"comment\">Saved: ./run/figs/BHPD1-01-history_2</div>" ], "text/plain": [ "<IPython.core.display.HTML object>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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zoc+9CEOOuggDj74YK6//noAnnvuOY499lgOO+wwDjroIO69914ajQbvfve7h8peccUVKddeREQmE909sYPe+Olbx+3cd/zDKdssc+ONN7JkyRIeeughVq5cyZFHHsmxxx7Lddddxxvf+EY+9rGP0Wg0GBgYYMmSJTz77LP85je/AWDt2rXjVncREZl61NIwyf30pz/ljDPOIJ/Ps9tuu/H617+eBx54gCOPPJJvfetbXHzxxSxdupRZs2ax995788QTT3Deeedx++23M3v27LSrLyIik4hCwyTn3v4BnMceeyz33HMPCxcu5J3vfCfXXHMN8+bN46GHHuK4447jyiuv5Kyzzprg2oqIyGSm7okd1EkXAgDrVsOalWF99jzYaZcx+fxjjz2Wr3/967zrXe9i9erV3HPPPVx66aU89dRTLFy4kLPPPpv+/n5+9atfcfLJJ9Pd3c2b3/xm9tlnH9797nePSR1ERGR6UGiYKJZo1ImiMTvtX/zFX3D//fdz6KGHYmZ84QtfYPfdd+fb3/42l156KYVCgb6+Pq655hqeffZZ3vOe9xDFn3/JJZeMWT1ERGTqs5GatwVKpZIDlMvlzbY/8sgjHHDAAaM72cb1sPJ5AHzGLGzXPcamkhm3XddKRETSNOLMfBrTMEHWV+pD6/V6I8WaiIiIbB+Fhgniye4JH7vuCRERkYmi0DBBcvl8680YjmkQERGZKAoNEyTfpZYGERGZ3BQaJkiypcE0+FRERCYhhYYJ0tXVurs1p5YGERGZhBQaJkiyeyKHD82VICIiMlkoNEwQsxxR4tbXRmPiQkNfX9+I+5YtW8ZBBx00YXUREZHJS6FhArklQkO9vpWSIiIi2aNppHfUWW/quGjipkuKnRxw1e1tN3/4wx9m8eLFlEolAC6++GLMjHvuuYc1a9ZQq9X4zGc+w2mnndZx3QAqlQrvf//7efDBB+nq6uLyyy/n+OOP57e//S3vec97qFarRFHE97//fRYsWMBb3/pWli9fTqPR4B/+4R9429veNqrPExGRyUWhYRI6/fTTOf/884dCww033MDtt9/OBRdcwOzZs1m5ciVHHXUUp556KmYjzga6hSuvvBKApUuX8uijj3LSSSfx2GOP8bWvfY0PfvCDvOMd76BardJoNLjttttYsGABt956KwDr1q0b+y8qIiKZou6JSejwww/nxRdfZMWKFTz00EPMmzePPfbYg49+9KMccsghnHjiiTz77LO88MILozrvT3/6U975zncCsP/++7N48WIee+wxjj76aD772c/y+c9/nqeeeore3l4OPvhg7rzzTj784Q9z7733MmfOnPH4qiIikiFqadhRI3QhtFNb8QyF6iYAVs+Yz067zt/uj33LW97C9773PZ5//nlOP/10rr32Wl566SV++ctfUigU2HPPPalUKqM650gPL3v729/Oa17zGm699Vbe+MY3ctVVV3HCCSfwy1/+kttuu40LL7yQk046iYsuumi7v4+IiGSfQsMEslxrVIPv4C2Xp59+OmeffTYrV67k7rvv5oYbbmDXXXelUCjwk5/8hKeeemrU5zz22GO59tprOeGEE3jsscd4+umn2W+//XjiiSfYe++9+cAHPsATTzzBww8/zP77789OO+3EmWeeSV9fH1dfffUOfR8REck+hYYJZPlWb9COhoYDDzyQDRs2sHDhQvbYYw/e8Y538Gd/9mccccQRHHbYYey///6jPmepVOJ973sfBx98MF1dXVx99dX09PRw/fXX86//+q8UCgV23313LrroIh544AE+9KEPkcvlKBQKfPWrX92h7yMiItlnIzVJC5RKJQcol8ubbX/kkUc44IADRn2+aNWL5DasBWBlVx/zF+4xqoGKk9H2XisREUnNiL+YNBByAtmw509ECmwiIjKJqHtiApltPpV0veHkJyi2LV26dOjOiKaenh5+/vOfT0wFRERk0lNomEi5RGhwpx5F9Gw25dP4Ofjgg1myZMmEfJaIiExN6p7YTts1FiQxfqHZ0jCVabyMiMjUotCwHYrFIqtWrRr9L8VES4Ph1CfwoVUTzd1ZtWoVxWJHE2aLiMgkoO6J7bBo0SKWL1/OSy+9NLoDa1VYvwaAqnUxuHItL/Z2j0MNs6FYLLJo0aK0qyEiImNEoWE7FAoF9tprr9EfuOxx+NKHAfh9YWduOu58Ln7boWNcOxERkfGh7omJVOwdWp3hNVZtHN00zyIiImlSaJhIidDQG1VZtUGhQUREJg+FholUnDG02us11mwcpLGD00mLiIhMlEyEBjPzEV4b25Tdz8xuNrM1ZtZvZvea2QkjnDdnZheY2aNmVjGzZ8zsMjObOf7fqo2e4tBtl0WvQxSxtr+aSlVERERGK0sDIe8FvjFsWy35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\n", "text/plain": [ "<Figure size 576x432 with 1 Axes>" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pwk.plot_history(history, plot={'MSE' :['mse', 'val_mse'],\n", " 'MAE' :['mae', 'val_mae'],\n", " 'LOSS':['loss','val_loss']}, save_as='01-history')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Step 7 - Make a prediction\n", "The data must be normalized with the parameters (mean, std) previously used." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "my_data = [ 1.26425925, -0.48522739, 1.0436489 , -0.23112788, 1.37120745,\n", " -2.14308942, 1.13489104, -1.06802005, 1.71189006, 1.57042287,\n", " 0.77859951, 0.14769795, 2.7585581 ]\n", "real_price = 10.4\n", "\n", "my_data=np.array(my_data).reshape(1,13)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Prediction : 9.95 K$\n", "Reality : 10.40 K$\n" ] } ], "source": [ "\n", "predictions = model.predict( my_data )\n", "print(\"Prediction : {:.2f} K$\".format(predictions[0][0]))\n", "print(\"Reality : {:.2f} K$\".format(real_price))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "End time is : Wednesday 27 January 2021, 18:21:56\n", "Duration is : 00:00:11 667ms\n", "This notebook ends here\n" ] } ], "source": [ "pwk.end()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "---\n", "<img width=\"80px\" src=\"../fidle/img/00-Fidle-logo-01.svg\"></img>" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.7" } }, "nbformat": 4, "nbformat_minor": 4 }