Skip to content
Snippets Groups Projects
03-Polynomial-Regression.ipynb 106 KiB
Newer Older
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img width=\"800px\" src=\"../fidle/img/00-Fidle-header-01.svg\"></img>\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "# <!-- TITLE --> [POLR1] - Complexity Syndrome\n",
    "<!-- DESC --> Illustration of the problem of complexity with the polynomial regression\n",
    "<!-- AUTHOR : Jean-Luc Parouty (CNRS/SIMaP) -->\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "## Objectives :\n",
    " - Visualizing and understanding under and overfitting\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    " \n",
    "## What we're going to do :\n",
    "\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "We are looking for a polynomial function to approximate the observed series :  \n",
    "$ y = a_n\\cdot x^n + \\dots + a_i\\cdot x^i + \\dots + a_1\\cdot x + b $  \n",
    "\n",
    "\n",
    "## Step 1 - Import and init"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 1,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>\n",
       "\n",
       "div.warn {    \n",
       "    background-color: #fcf2f2;\n",
       "    border-color: #dFb5b4;\n",
       "    border-left: 5px solid #dfb5b4;\n",
       "    padding: 0.5em;\n",
       "    font-weight: bold;\n",
       "    font-size: 1.1em;;\n",
       "    }\n",
       "\n",
       "\n",
       "\n",
       "div.nota {    \n",
       "    background-color: #DAFFDE;\n",
       "    border-left: 5px solid #92CC99;\n",
       "    padding: 0.5em;\n",
       "    }\n",
       "\n",
       "div.todo:before { content:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1My44OTEyIiBoZWlnaHQ9IjE0My4zOTAyIiB2aWV3Qm94PSIwIDAgNTMuODkxMiAxNDMuMzkwMiI+PHRpdGxlPjAwLUJvYi10b2RvPC90aXRsZT48cGF0aCBkPSJNMjMuNDU2OCwxMTQuMzAxNmExLjgwNjMsMS44MDYzLDAsMSwxLDEuODE1NywxLjgyNEExLjgyMDksMS44MjA5LDAsMCwxLDIzLjQ1NjgsMTE0LjMwMTZabS0xMC42NjEyLDEuODIyQTEuODI3MiwxLjgyNzIsMCwxLDAsMTAuOTgsMTE0LjMsMS44MiwxLjgyLDAsMCwwLDEyLjc5NTYsMTE2LjEyMzZabS03LjcwNyw0LjU4NzR2LTVzLjQ4NjMtOS4xMjIzLDguMDIxNS0xMS45Njc1YTE5LjIwODIsMTkuMjA4MiwwLDAsMSw2LjA0ODYtMS4yNDU0LDE5LjE3NzgsMTkuMTc3OCwwLDAsMSw2LjA0ODcsMS4yNDc1YzcuNTM1MSwyLjgzNDcsOC4wMTc0LDExLjk2NzQsOC4wMTc0LDExLjk2NzR2NS4wMjM0bC4wMDQyLDcuNjgydjIuNGMuMDE2Ny4xOTkyLjAzMzYuMzkyMS4wMzM2LjU4NzEsMCwuMjEzOC0uMDE2OC40MTA5LS4wMzM2LjYzMzJ2LjA1ODdoLS4wMDg0YTguMzcxOSw4LjM3MTksMCwwLDEtNy4zNzM4LDcuNjU0N3MtLjk5NTMsMy42MzgtNi42OTMzLDMuNjM4LTYuNjkzNC0zLjYzOC02LjY5MzQtMy42MzhhOC4zNyw4LjM3LDAsMCwxLTcuMzcxNi03LjY1NDdINS4wODQzdi0uMDU4N2MtLjAxODktLjIyLS4wMjk0LS40MTk0LS4wMjk0LS42MzMyLDAtLjE5MjkuMDE2Ny0uMzgzNy4wMjk0LS41ODcxdi0yLjRtMTguMDkzNy00LjA0YTEuMTU2NSwxLjE1NjUsMCwxLDAtMi4zMTI2LDAsMS4xNTY0LDEuMTU2NCwwLDEsMCwyLjMxMjYsMFptNC4wODM0LDBhMS4xNTk1LDEuMTU5NSwwLDEsMC0xLjE2MzYsMS4xN0ExLjE3NSwxLjE3NSwwLDAsMCwyNy4yNjE0LDEyNC4zNzc5Wk05LjM3MzksMTE0LjYzNWMwLDMuMTA5MywyLjQxMzIsMy4zMSwyLjQxMzIsMy4zMWExMzMuOTI0MywxMzMuOTI0MywwLDAsMCwxNC43MzQ4LDBzMi40MTExLS4xOTI5LDIuNDExMS0zLjMxYTguMDc3Myw4LjA3NzMsMCwwLDAtMi40MTExLTUuNTUxOWMtNC41LTMuNTAzMy05LjkxMjYtMy41MDMzLTE0Ljc0MTEsMEE4LjA4NTEsOC4wODUxLDAsMCwwLDkuMzczOSwxMTQuNjM1WiIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjMzLjE0MzYiIGN5PSIxMjQuNTM0IiByPSIzLjgzNjMiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48cmVjdCB4PSIzNS42NjU5IiB5PSIxMTIuOTYyNSIgd2lkdGg9IjIuMDc3IiBoZWlnaHQ9IjEwLjU0NTgiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIxLjYgMjQxLjExMjEpIHJvdGF0ZSgtMTU1Ljc0NikiIHN0eWxlPSJmaWxsOiMwMTAxMDEiLz48Y2lyY2xlIGN4PSIzOC44NzA0IiBjeT0iMTEzLjQyNzkiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxjaXJjbGUgY3g9IjUuMjI0OCIgY3k9IjEyNC41MzQiIHI9IjMuODM2MyIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxyZWN0IHg9IjEuNDE2NCIgeT0iMTI0LjYzMDEiIHdpZHRoPSIyLjA3NyIgaGVpZ2h0PSIxMC41NDU4IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0LjkwOTcgMjU5LjgwNikgcm90YXRlKC0xODApIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PGNpcmNsZSBjeD0iMi40MDkxIiBjeT0iMTM3LjA5OTYiIHI9IjIuNDA4NSIgc3R5bGU9ImZpbGw6IzAxMDEwMSIvPjxwYXRoIGQ9Ik0xOC4wNTExLDEwMC4xMDY2aC0uMDE0NlYxMDIuNjFoMi4zdi0yLjQyNzlhMi40MjI5LDIuNDIyOSwwLDEsMC0yLjI4NTQtLjA3NTVaIiBzdHlsZT0iZmlsbDojMDEwMTAxIi8+PHBhdGggZD0iTTM5LjQyMTQsMjcuMjU4djEuMDVBMTEuOTQ1MiwxMS45NDUyLDAsMCwwLDQ0LjU5NTQsNS43OWEuMjQ0OS4yNDQ5LDAsMCwxLS4wMjM1LS40MjI3TDQ2Ljc1LDMuOTUxNWEuMzg5Mi4zODkyLDAsMCwxLC40MjYyLDAsMTQuODQ0MiwxNC44NDQyLDAsMCwxLTcuNzU0MywyNy4yNTkxdjEuMDY3YS40NS40NSwwLDAsMS0uNzA0Ny4zNzU4bC0zLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsMC0uNzUxNmwzLjg0MTktMi41MWEuNDUuNDUsMCwwLDEsLjY5NDYuMzc1OFpNNDMuMjMsMi41ODkyLDM5LjM4NzguMDc5NGEuNDUuNDUsMCwwLDAtLjcwNDYuMzc1OHYxLjA2N2ExNC44NDQyLDE0Ljg0NDIsMCwwLDAtNy43NTQzLDI3LjI1OTEuMzg5LjM4OSwwLDAsMCwuNDI2MSwwbDIuMTc3Ny0xLjQxOTNhLjI0NS4yNDUsMCwwLDAtLjAyMzUtLjQyMjgsMTEuOTQ1MSwxMS45NDUxLDAsMCwxLDUuMTc0LTIyLjUxNDZ2MS4wNWEuNDUuNDUsMCwwLDAsLjcwNDYuMzc1OGwzLjg1NTMtMi41MWEuNDUuNDUsMCwwLDAsMC0uNzUxNlpNMzkuMDUyMywxNC4yNDU4YTIuMTIwNiwyLjEyMDYsMCwxLDAsMi4xMjA2LDIuMTIwNmgwQTIuMTI0LDIuMTI0LDAsMCwwLDM5LjA1MjMsMTQuMjQ1OFptNi4wNzMyLTQuNzc4MS44MjU0LjgyNTVhMS4wNTY4LDEuMDU2OCwwLDAsMSwuMTE3NSwxLjM0MjFsLS44MDIsMS4xNDQyYTcuMTAxOCw3LjEwMTgsMCwwLDEsLjcxMTQsMS43MTEybDEuMzc1Ny4yNDE2YTEuMDU2OSwxLjA1NjksMCwwLDEsLjg3NTcsMS4wNHYxLjE2NDNhMS4wNTY5LDEuMDU2OSwwLDAsMS0uODc1NywxLjA0bC0xLjM3MjQuMjQxNkE3LjExLDcuMTEsMCwwLDEsNDUuMjcsMTkuOTNsLjgwMTksMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLS4xMTc0LDEuMzQyMmwtLjgyODguODQ4OWExLjA1NywxLjA1NywwLDAsMS0xLjM0MjEuMTE3NGwtMS4xNDQyLS44MDE5YTcuMTMzOCw3LjEzMzgsMCwwLDEtMS43MTEzLjcxMTNsLS4yNDE2LDEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLTEuMDQuODc1N0gzOC40Njg0YTEuMDU2OCwxLjA1NjgsMCwwLDEtMS4wNC0uODc1N2wtLjI0MTYtMS4zNzI0YTcuMTM1NSw3LjEzNTUsMCwwLDEtMS43MTEzLS43MTEzbC0xLjE0NDEuODAxOWExLjA1NzEsMS4wNTcxLDAsMCwxLTEuMzQyMi0uMTE3NGwtLjgzNTUtLjgyNTVhMS4wNTcsMS4wNTcsMCwwLDEtLjExNzQtMS4zNDIxbC44MDE5LTEuMTQ0MmE3LjEyMSw3LjEyMSwwLDAsMS0uNzExMy0xLjcxMTJsLTEuMzcyNC0uMjQxNmExLjA1NjksMS4wNTY5LDAsMCwxLS44NzU3LTEuMDRWMTUuNzgyNmExLjA1NjksMS4wNTY5LDAsMCwxLC44NzU3LTEuMDRsMS4zNzU3LS4yNDE2YTcuMTEsNy4xMSwwLDAsMSwuNzExNC0xLjcxMTJsLS44MDItMS4xNDQyYTEuMDU3LDEuMDU3LDAsMCwxLC4xMTc1LTEuMzQyMmwuODI1NC0uODI1NEExLjA1NjgsMS4wNTY4LDAsMCwxLDM0LjMyNDUsOS4zNmwxLjE0NDIuODAxOUE3LjEzNTUsNy4xMzU1LDAsMCwxLDM3LjE4LDkuNDUxbC4yNDE2LTEuMzcyNGExLjA1NjgsMS4wNTY4LDAsMCwxLDEuMDQtLjg3NTdoMS4xNjc3YTEuMDU2OSwxLjA1NjksMCwwLDEsMS4wNC44NzU3bC4yNDE2LDEuMzcyNGE3LjEyNSw3LjEyNSwwLDAsMSwxLjcxMTIuNzExM0w0My43NjY2LDkuMzZBMS4wNTY5LDEuMDU2OSwwLDAsMSw0NS4xMjU1LDkuNDY3N1ptLTIuMDMsNi44OTg3QTQuMDQzMyw0LjA0MzMsMCwxLDAsMzkuMDUyMywyMC40MWgwQTQuMDQ2NSw0LjA0NjUsMCwwLDAsNDMuMDk1NSwxNi4zNjY0WiIgc3R5bGU9ImZpbGw6I2UxMjIyOSIvPjxwb2x5Z29uIHBvaW50cz0iMzkuNDEzIDM0Ljc1NyAzOS41MzcgMzQuNzU3IDM5LjY3NSAzNC43NTcgMzkuNjc1IDEwOS41MSAzOS41MzcgMTA5LjUxIDM5LjQxMyAxMDkuNTEgMzkuNDEzIDM0Ljc1NyAzOS40MTMgMzQuNzU3IiBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojOTk5O3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEwO3N0cm9rZS13aWR0aDowLjMwODg1NDQ1MDU2MDE2MThweDtmaWxsLXJ1bGU6ZXZlbm9kZCIvPjwvc3ZnPg==);\n",
       "    float:left;\n",
       "    margin-right:20px;\n",
       "    margin-top:-20px;\n",
       "    margin-bottom:20px;\n",
       "}\n",
       "div.todo{\n",
       "    font-weight: bold;\n",
       "    font-size: 1.1em;\n",
       "    margin-top:40px;\n",
       "}\n",
       "div.todo ul{\n",
       "    margin: 0.2em;\n",
       "}\n",
       "div.todo li{\n",
       "    margin-left:60px;\n",
       "    margin-top:0;\n",
       "    margin-bottom:0;\n",
       "}\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
       "\n",
       "\n",
       "</style>\n",
       "\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "FIDLE 2020 - Practical Work Module\n",
      "Version              : 0.6.1 DEV\n",
      "Notebook id          : POLR1\n",
      "Run time             : Tuesday 15 December 2020, 15:05:27\n",
      "TensorFlow version   : 2.0.0\n",
      "Keras version        : 2.2.4-tf\n",
      "Datasets dir         : /home/pjluc/datasets/fidle\n",
      "Update keras cache   : False\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "import random\n",
    "import matplotlib\n",
    "import matplotlib.pyplot as plt\n",
    "import sys\n",
    "\n",
    "sys.path.append('..')\n",
    "import fidle.pwk as pwk\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "\n",
    "datasets_dir = pwk.init('POLR1')"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 2 - Preparation of learning data :"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 2,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nombre de points : 100  a=[-1.73470323 -0.96758946  0.56806097 -0.69785106  1.20525819  0.2900597\n",
      "  1.11499056] deg=7 bruit=2000\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "text/markdown": [
       "#### Before normalization :"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Données d'aprentissage brute :\n",
      "(100 points visibles sur 100)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X        :      mean=     +0.2918  std=     +3.1059    min=     -4.8714    max=     +4.7676\n",
      "Y        :      mean=  -4500.4407  std=  +6563.1355    min= -22360.3344    max=  +6127.0924\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "text/markdown": [
       "#### After normalization :"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Données d'aprentissage normalisées :\n",
      "(100 points visibles sur 100)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "X_norm   :      mean=     -0.0000  std=     +1.0000    min=     -1.6624    max=     +1.4411\n",
      "Y_norm   :      mean=     -0.0000  std=     +1.0000    min=     -2.7212    max=     +1.6193\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    }
   ],
   "source": [
    "# ---- Parameters\n",
    "\n",
    "n         = 100\n",
    "\n",
    "xob_min   = -5\n",
    "xob_max   = 5\n",
    "\n",
    "deg       =  7\n",
    "a_min     = -2\n",
    "a_max     =  2\n",
    "\n",
    "noise     =  2000\n",
    "\n",
    "# ---- Train data\n",
    "#      X,Y              : data\n",
    "#      X_norm,Y_norm    : normalized data\n",
    "\n",
    "X = np.random.uniform(xob_min,xob_max,(n,1))\n",
    "# N = np.random.uniform(-noise,noise,(n,1))\n",
    "N = noise * np.random.normal(0,1,(n,1))\n",
    "\n",
    "a = np.random.uniform(a_min,a_max, (deg,))\n",
    "fy = np.poly1d( a )\n",
    "\n",
    "Y = fy(X) + N\n",
    "\n",
    "# ---- Data normalization\n",
    "#\n",
    "X_norm = (X - X.mean(axis=0)) / X.std(axis=0)\n",
    "Y_norm = (Y - Y.mean(axis=0)) / Y.std(axis=0)\n",
    "\n",
    "# ---- Data visualization\n",
    "\n",
    "width = 12\n",
    "height = 6\n",
    "nb_viz = min(2000,n)\n",
    "\n",
    "def vector_infos(name,V):\n",
    "    m=V.mean(axis=0).item()\n",
    "    s=V.std(axis=0).item()\n",
    "    print(\"{:8} :      mean={:+12.4f}  std={:+12.4f}    min={:+12.4f}    max={:+12.4f}\".format(name,m,s,V.min(),V.max()))\n",
    "\n",
    "\n",
    "print(\"Nombre de points : {}  a={} deg={} bruit={}\".format(n,a,deg,noise))\n",
    "\n",
    "pwk.display_md('#### Before normalization :')\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "print(\"\\nDonnées d'aprentissage brute :\")\n",
    "print(\"({} points visibles sur {})\".format(nb_viz,n))\n",
    "plt.figure(figsize=(width, height))\n",
    "plt.plot(X[:nb_viz], Y[:nb_viz], '.')\n",
    "plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n",
    "plt.xlabel('x axis')\n",
    "plt.ylabel('y axis')\n",
    "plt.show()\n",
    "vector_infos('X',X)\n",
    "vector_infos('Y',Y)\n",
    "\n",
    "pwk.display_md('#### After normalization :')\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "print(\"\\nDonnées d'aprentissage normalisées :\")\n",
    "print(\"({} points visibles sur {})\".format(nb_viz,n))\n",
    "plt.figure(figsize=(width, height))\n",
    "plt.plot(X_norm[:nb_viz], Y_norm[:nb_viz], '.')\n",
    "plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n",
    "plt.xlabel('x axis')\n",
    "plt.ylabel('y axis')\n",
    "plt.show()\n",
    "vector_infos('X_norm',X_norm)\n",
    "vector_infos('Y_norm',Y_norm)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Step 3 - Polynomial regression with NumPy\n",
    "### 3.1 - Underfitting"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 3,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [],
   "source": [
    "def draw_reg(X_norm, Y_norm, x_hat,fy_hat, size):\n",
    "    plt.figure(figsize=size)\n",
    "    plt.plot(X_norm, Y_norm, '.')\n",
    "\n",
    "    x_hat = np.linspace(X_norm.min(), X_norm.max(), 100)\n",
    "\n",
    "    plt.plot(x_hat, fy_hat(x_hat))\n",
    "    plt.tick_params(axis='both', which='both', bottom=False, left=False, labelbottom=False, labelleft=False)\n",
    "    plt.xlabel('x axis')\n",
    "    plt.ylabel('y axis')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 4,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nombre de degrés : 1 a_hat=[-5.75965507e-02 -1.92340078e-18]\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "image/png": "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\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "reg_deg=1\n",
    "\n",
    "a_hat   = np.polyfit(X_norm.reshape(-1,), Y_norm.reshape(-1,), reg_deg)\n",
    "fy_hat  = np.poly1d( a_hat )\n",
    "\n",
    "print(\"Nombre de degrés : {} a_hat={}\".format(reg_deg, a_hat))\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "draw_reg(X_norm[:nb_viz],Y_norm[:nb_viz], X_norm,fy_hat, (width,height))"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.2 - Good fitting"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 5,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nombre de degrés : 5 a_hat=[-0.11012813 -0.86090502 -0.06692461  0.74769467 -0.04976534  0.58587519]\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "image/png": "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\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "reg_deg=5\n",
    "\n",
    "a_hat   = np.polyfit(X_norm.reshape(-1,), Y_norm.reshape(-1,), reg_deg)\n",
    "fy_hat  = np.poly1d( a_hat )\n",
    "\n",
    "print(\"Nombre de degrés : {} a_hat={}\".format(reg_deg, a_hat))\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "draw_reg(X_norm[:nb_viz],Y_norm[:nb_viz], X_norm,fy_hat, (width,height))"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3.3 - Overfitting"
   ]
  },
  {
   "cell_type": "code",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "execution_count": 6,
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Nombre de degrés : 24 a_hat=[-1.45668043e+01 -3.71816434e+01  1.65760336e+02  4.59549397e+02\n",
      " -8.10675684e+02 -2.48528909e+03  2.21972076e+03  7.71216289e+03\n",
      " -3.70717297e+03 -1.51254030e+04  3.84328083e+03  1.94566710e+04\n",
      " -2.39252512e+03 -1.64831502e+04  8.13218675e+02  8.99081679e+03\n",
      " -1.38253096e+02 -2.99612773e+03  3.85192157e+01  5.55085597e+02\n",
      " -2.23807387e+01 -4.86320671e+01  5.03530599e+00  1.33494174e+00\n",
      "  4.19736748e-01]\n"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
     ]
    },
    {
     "data": {
      "image/png": "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\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
      "text/plain": [
       "<Figure size 864x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "reg_deg=24\n",
    "\n",
    "a_hat   = np.polyfit(X_norm.reshape(-1,), Y_norm.reshape(-1,), reg_deg)\n",
    "fy_hat  = np.poly1d( a_hat )\n",
    "\n",
    "print(\"Nombre de degrés : {} a_hat={}\".format(reg_deg, a_hat))\n",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
    "draw_reg(X_norm[:nb_viz],Y_norm[:nb_viz], X_norm,fy_hat, (width,height))"
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "End time is : Tuesday 15 December 2020, 15:05:28\n",
      "Duration is : 00:00:01 686ms\n",
      "This notebook ends here\n"
     ]
    }
   ],
   "source": [
    "pwk.end()"
   ]
  },
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "<img width=\"80px\" src=\"../fidle/img/00-Fidle-logo-01.svg\"></img>"
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
   ]
  }
 ],
 "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",
Jean-Luc Parouty's avatar
Jean-Luc Parouty committed
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}