{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c7610b8d",
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "# @hidden_cell\n",
    "from IPython.display import display\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from scipy.optimize import minimize\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import r2_score, mean_squared_error\n",
    "\n",
    "import warnings\n",
    "warnings.simplefilter(action=\"ignore\", category=FutureWarning)\n",
    "\n",
    "housing_df = pd.read_csv(\"../../data/Housing.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d3fcd2f0",
   "metadata": {},
   "source": [
    "# Model Complexity and Overfitting\n",
    "\n",
    "Now that we have an intutitive undestanding of the relationship between a model's complexity and generalization ability, let us look at an example to demonstrate these ideas and how overfitting manifests during model building. Note that for now we are working within the premise of a regression problem where we attempt to predict real-valued outcomes. \n",
    "\n",
    "We will begin with a toy dataset, that exhibit some non-linearity in the data, obtained by some simple simulation. We separate part of the data for testing the model since, as we have just discussed in the introductory section, evidence of overfitting can be found when the model makes predictions on previously unseen datapoints. We will then attempt to fit models of varying complexity on this data and account for their performance.\n",
    "\n",
    "To test for model performance, we will use the fitted models to make prediction on the test data and use the root mean squared error (**RMSE**) as the metric of choice to get an estimate of the generalization error that models make. This metric is a quantification of the average deviation of the model's prediction from the actual outcome value. We also compute the $R^2$ score upon the test predictions to estimate the proportion of variance in the outcome variable that is explained by the polynomial features of the model.\n",
    "\n",
    "<!-- a statistical measure that shows the proportion of the variance in the dependent variable that is explained by the independent variables in the model-->"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "a8cf7327",
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "m = 100\n",
    "x_all = 6 * np.random.rand(200) - 3\n",
    "np.random.shuffle(x_all)\n",
    "\n",
    "x = np.sort(x_all[:100]).reshape(m,1)\n",
    "x_test = np.sort(x_all[100:]).reshape(m,1)\n",
    "\n",
    "y = 0.5 * x**2 + x + 2 + np.random.randn(m,1)\n",
    "y_test = 0.5 * x_test**2 + x_test + 2 + np.random.randn(m,1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "fb4519b9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x283464a10>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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zDrMIAMAQBG019SunhltNpPjjUY648oieyCzDgEZAADy7kRratvHrKl9nD2QWYeADAAAeWdNbW9W7oG8OiTbA7nUBGQAAMg7a2p7V68nex1v23b88WrVHsglpkkXAADknTW1/anXI2Zmkpn1hYXk+zM9bea4xARkAADIu/aa2maz8zrkSiV53pratcbGIrZvT3sUZIQSawAAyDtramEgBGQAACgCa2ph05RYAwBAUVhTC5siIAMAQJFYUwt9U2INAAAAISADAABARAjIAAAAEBECMgAAAESEgAwAAAAR0UdAbjab8fu///vxlKc8JU477bR47nOfG1/5yleGMTYAAAAYmZ62efqv//qvuOiii2LHjh3xyU9+Ms4444z4j//4j3jyk588rPEBAADASPQUkN/97ndHrVaLm2+++dixc845Z+CDAgAAgFHrqcT6E5/4RLzoRS+K17zmNXHmmWfGr/zKr8SHPvShE/6ZpaWlWFxcPO4/AAAAyJqeAvJ3v/vduOmmm+KXfumX4tOf/nRceeWV8eY3vzluvfXWdf/M7t27Y2Ji4th/tVpt04MGAACAQassLy8vd3vyKaecEi960YviC1/4wrFjb37zm+Puu++OL37xix3/zNLSUiwtLR37eHFxMWq1Whw5ciTGx8c3MXQAAADY2OLiYkxMTGyYQ3uaQZ6cnIxnP/vZxx171rOeFffff/+6f2bLli0xPj5+3H8AAACQNT0F5Isuuijuu+++445961vfimc84xkDHRQAAACMWk9drP/kT/4kLrzwwvjLv/zL+J3f+Z2466674oMf/GB88IMfHNb4AAAARqfVipifj1hYiJicjJiejhgbS3tUjEhPM8jnn39+3H777bFv374477zz4h3veEfs2bMnXvva1w5rfAAAAKPRaERMTUXs2BFx2WXJ49RUcpxS6KlJ1yB0uzgaAABgZBqNiJ07I1bHo0oledy/P6JeH/24GIihNOkCAAAonFYrYteuteE44vFjs7PJeRSagAwAAJTb/HzEAw+s//zycsThw8l5FJqADAAAlNvCwmDPI7cEZAAAoNwmJwd7HrnV0zZPAABACRV966Pp6YhqNaLZ7LwOuVJJnp+eHv3YGCkzyAAAwPrKsPXR2FjEjTcm/9/uWt3W/njPnmLdFKAjARkAAOisvfXR6gZWzWZyvEghuV5PtnLatu34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178eT3rSk2LLli3xx3/8x3H77bfHs5/97LSH1VEpAvK1114blUrlhP9985vfPHb+W97ylviXf/mX+Kd/+qcYGxuLP/zDPwyV6OXV6/snIqLZbMbLX/7yeM1rXhN/9Ed/lNLIyYJ+3j8AkGVXXXVV/Ou//mvcdtttaQ+FnHjmM58Z9957b3z5y1+OK6+8Mi6//PL4t3/7t7SH1VEp1iA//PDD8Z//+Z8nPOcXfuEX4pRTTllz/IEHHoharRZf+MIXMlsGwHD1+v558MEHY/v27fFrv/Zrccstt8RJJ5XiPhTr6OffH2uQWc9jjz0WT3jCE2L//v3HrRu9/PLL48c//rGKJ3piDTL9uPrqq+OOO+6Iz33uc3HOOeekPRxy6uKLL45zzz03PvCBD6Q9lDVOTnsAo3DGGWfEGWec0defPXr0aERELC0tDXJI5Egv759msxk7duyIF77whXHzzTcLx2zq3x9Y7ZRTTokXvvCFceeddx4LNUePHo0777wzrr766nQHBxTa8vJyvOlNb4rbb7895ubmhGM25ejRo5nNV6UIyN368pe/HHfffXf8+q//ejz5yU+O73znO/H2t789zj33XLPHbKjZbMb27dvjGc94Rvz1X/91PPzww8eee9rTnpbiyMiL+++/P370ox/F/fffH61WK+69996IiPjFX/zFeNKTnpTu4MiMa665Ji6//PJ40YteFL/6q78ae/bsiUcffTSuuOKKtIdGDvzkJz+Jb3/728c+PnjwYNx7771x+umnx9Of/vQUR0bWXXXVVbF379644447YuvWrcf6HkxMTMRpp52W8ujIsuuuuy5e8YpXxNOf/vR45JFHYu/evTE3Nxef/vSn0x5aR6Uose7W17/+9di1a1d87Wtfi0cffTQmJyfj5S9/efzZn/1ZbNu2Le3hkXG33HLLuheofszoxute97q49dZb1xw/cOBAbN++ffQDIrPe+973xg033BAPPfRQvOAFL4i/+7u/iwsuuCDtYZEDc3NzsWPHjjXHL7/88rjllltGPyByo1KpdDx+8803x+te97rRDoZcef3rXx933nlnLCwsxMTERDzvec+Lt771rfFbv/VbaQ+tIwEZAAAAoiRdrAEAAGAjAjIAAACEgAwAAAARISADAABARAjIAAAAEBECMgAAAESEgAwAAAARISADAABARAjIAAAAEBECMgAAAESEgAwAAAAREfH/AQKMNIzhT3V8AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x,y,color=\"red\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "99f0677f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x283565690>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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PxwRESdPnoyxsbF44xvfGG9/+9tzHh1l12g04uabb46LL74476FQEQ899FCce+65cfvtt8eLXvSivIdDRZx11llx9dVXx+te97q+3UetZqIX+s53vhMf//jH4/nPf74ATWZmZ2fjrLPOynsYQA09+uijcdddd8XOnTtPHTvttNNi586d8ZnPfCbHkQF0Nzs7GxHhvROZaLfbcdNNN8Xx48fjec97Xl/vq3Yh+m1ve1s84QlPiLPPPju+9a1vxS233JL3kKiIe+65J/78z/88fud3fifvoQA19PDDD0e73Y6tW7cuOr5169a4//77cxoVQHcnT56MycnJeMELXhBPf/rT8x4OJfalL30pfvAHfzA2b94cv/u7vxs333xzPPWpT+3rfZY+RL/97W+PRqOx6sdXv/rVU+e/9a1vjX/913+Nv//7v4+hoaH4jd/4jajxina66PU5FRExPT0dv/iLvxiveMUr4rd+67dyGjlFtZ7nFABU2eWXXx5f/vKX46abbsp7KJTcj//4j8fdd98dn/vc5+L1r399XHrppfFv//Zvfb3P0u+Jfuihh+Lb3/72quf8yI/8SDzucY9bdvzee++NsbGx+Od//ue+T/lTHr0+p+67777Yvn17/NzP/VzceOONcdpppb82RcbW8zplTzS9evTRR+Pxj398HDp0aNGe1UsvvTS++93vWnnFhtkTTVbe8IY3xC233BJ33HFHXHDBBXkPh4rZuXNnXHjhhfGRj3ykb/exqW/feUDOOeecOOecc9b1/548eTIiIk6cOJHlkCi5Xp5T09PTsWPHjnj2s58dN9xwgwBNVxt5nYK0Hve4x8Wzn/3suPXWW0+FnJMnT8att94ab3jDG/IdHEBEzM/Pxxvf+Ma4+eab4/DhwwI0fXHy5Mm+57vSh+i0Pve5z8W//Mu/xAtf+MJ44hOfGN/4xjfiHe94R1x44YVmoVmX6enp2L59ezz5yU+OP/uzP4uHHnro1Nee9KQn5Tgyyuxb3/pWfOc734lvfetb0W634+67746IiB/90R+NH/zBH8x3cBTeFVdcEZdeemk85znPiZ/92Z+Nffv2xfHjx+Oyyy7Le2iU1Pe+97245557Tn1+9OjRuPvuu+Oss86K888/P8eRUUaXX355HDhwIG655ZY488wzT9VrGB4ejjPOOCPn0VFGV155ZfzSL/1SnH/++fHII4/EgQMH4vDhw/F3f/d3fb3f0i/nTutLX/pS7NmzJ774xS/G8ePHY2RkJH7xF38x/uiP/ii2bduW9/AooRtvvHHFN6Y1+bWiD1772tfGxz72sWXHb7vttti+ffvgB0TpfPjDH46rr7467r///vjpn/7p+NCHPhQXXXRR3sOipA4fPhw7duxYdvzSSy+NG2+8cfADotQajUbX4zfccEO89rWvHexgqITXve51ceutt8bMzEwMDw/HM57xjHjb294Wv/ALv9DX+61NiAYAAICNsoETAAAAUhKiAQAAICUhGgAAAFISogEAACAlIRoAAABSEqIBAAAgJSEaAAAAUhKiAQAAICUhGgAAAFISogEAACAlIRoAAABS+v9A2WgFdkzx9gAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x_test,y_test,color=\"red\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "520770ed",
   "metadata": {},
   "source": [
    "Looking at the data it is obvious this is non linear. Hence we want to transform the $X$ values to higher order features before using them to fit a basic linear regression model. As mentioned in the {ref}`feature engineering section <sec-feature-engineering>`, this type of feature expansion is called a polynomial transformation. The matrix of features following a transformation to a polynomial of degree $d$ looks like:\n",
    "> $F_d(x) = \\left[1, x, x^2, \\ldots, x^d \\right]$\n",
    "\n",
    "The complexity of the underlying model in this case depends on the highest degree of polynomial accommodated within the regression model.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b882eb28",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression \n",
    "from sklearn.preprocessing import PolynomialFeatures\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "\n",
    "test_results = []\n",
    "x_new=np.linspace(-3, 3, 100).reshape(100, 1)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "339ae2b9",
   "metadata": {},
   "source": [
    "The first is a simple linear model using a first order polynomial. That involves fitting a line by directly using the $X$ values available:\n",
    "> $y = ax +b$\n",
    "\n",
    "$a$ and $b$ are the coefficient and bias terms respectively."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "e5fb1544",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a: 0.8780810762959749 b: 3.6993129655551034\n",
      "Fitted Line: 0.88x+3.70\n"
     ]
    }
   ],
   "source": [
    "poly1 = PolynomialFeatures(degree=1, include_bias=False)\n",
    "#this created an array of polynomial feature (here only degree 1 so only 1 column)\n",
    "x_poly1 = poly1.fit_transform(x)\n",
    "\n",
    "#fitting a line\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(x_poly1, y)\n",
    "a = lin_reg.coef_[0][0]\n",
    "b = lin_reg.intercept_[0]\n",
    "print('a:', a, 'b:', b)\n",
    "print(f\"Fitted Line: {a:.2f}x+{b:.2f}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e6df15d7",
   "metadata": {},
   "source": [
    "We will plot this line to test the nature of the fit. As we can see, a first order polynomial is a suboptimal fit for non-linear data. This is an example of what we call an **underfitted** model -- a model that doesnt have the necesarry complexity to well generalize the data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "38b972c6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9UAAAIQCAYAAACPGE2sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAABrYElEQVR4nO3deXxU5d338e9kgBC2IIsQSCAIigsKyiZLIAt91KrFptgqveta27pz622rrWvV23rXp8U+tVrbivZuUVuM2s22EggJsgqCggIiIBjZkYRFAkzO88fl5GSSGTKZzHLOmc/79eKlObkycyWEZL7nun6/y2dZliUAAAAAANBqGameAAAAAAAAbkWoBgAAAAAgRoRqAAAAAABiRKgGAAAAACBGhGoAAAAAAGJEqAYAAAAAIEaEagAAAAAAYkSoBgAAAAAgRoRqAAAAAABiRKgGAMClfD6fHnzwwVZ/3JYtW+Tz+fT888+nbA4AAHgFoRoAgDZ4/vnn5fP55PP5tHDhwmbvtyxLeXl58vl8uuSSS1Iww9hVVFQ0fG5N/1xxxRVhP2bRokV68MEHtX///uROFgCAFGmX6gkAAOAFHTt21OzZszVx4sSQ6wsWLNAnn3yizMzMFM2s7W677TaNHj065Fp+fr4k6fPPP1e7dvbLiUWLFumhhx7SNddco+7duydxlgAApAahGgCAOPjyl7+sP//5z/rFL34REjJnz56tkSNHas+ePSmcXdsUFBRo2rRpYd/XsWPHJM8GAABnYfs3AABxcOWVV2rv3r168803G64dPXpUc+bM0fTp08N+zKFDh3TnnXcqLy9PmZmZGjp0qJ544glZlhUyrq6uTv/5n/+p3r17q2vXrvrKV76iTz75JOxjVldX67rrrlOfPn2UmZmps846S88991z8PtEmGtdUP/jgg7rrrrskSYMGDWrYKr5ly5aEPT8AAKnGSjUAAHGQn5+vcePG6cUXX9RFF10kSXrjjTdUU1OjK664Qr/4xS9CxluWpa985SuaP3++rr/+eo0YMUL/+te/dNddd6m6ulo///nPG8Z++9vf1h/+8AdNnz5d48eP17x583TxxRc3m8POnTt1/vnny+fz6ZZbblHv3r31xhtv6Prrr1dtba1mzJgR0+d24MCBZivtPXr0UEZG6L350tJSbdiwQS+++KJ+/vOfq1evXpKk3r17x/S8AAC4AaEaAIA4mT59uu655x59/vnnysrK0h//+EdNnjxZ/fr1azb2L3/5i+bNm6dHHnlEP/rRjyRJN998sy6//HI9+eSTuuWWWzR48GCtXr1af/jDH3TTTTfpqaeeahj3zW9+U++++27IY/7oRz9SIBDQe++9p549e0qSvve97+nKK6/Ugw8+qO9+97vKyspq9ed13XXXNbu2efPmhrrqoHPOOUfnnXeeXnzxRV122WXN3g8AgBex/RsAgDj5+te/rs8//1x/+9vfdODAAf3tb3+LuPX7H//4h/x+v2677baQ63feeacsy9Ibb7zRME5Ss3FNV50ty9Irr7yiSy+9VJZlac+ePQ1/LrjgAtXU1GjlypUxfV7333+/3nzzzZA/ffv2jemxAADwGlaqAQCIk969e2vKlCmaPXu2Dh8+rEAgELHB18cff6x+/fqpa9euIdfPOOOMhvcH/5uRkaHBgweHjBs6dGjI27t379b+/fv17LPP6tlnnw37nLt27Yrp8zr77LM1ZcqUmD4WAACvI1QDABBH06dP1w033KAdO3booosuStqxUvX19ZKk//iP/9DVV18ddsw555yTlLkAAJBOCNUAAMTRV7/6VX33u9/VkiVL9PLLL0ccN3DgQM2dO1cHDhwIWa1et25dw/uD/62vr9dHH30Usjq9fv36kMcLdgYPBAIpXVX2+Xwpe24AAFKBmmoAAOKoS5cuevrpp/Xggw/q0ksvjTjuy1/+sgKBgH75y1+GXP/5z38un8/X0EE8+N+m3cNnzpwZ8rbf79fXvvY1vfLKK1qzZk2z59u9e3csn06rde7cWZK0f//+pDwfAACpxko1AABxFmn7dWOXXnqpioqK9KMf/UhbtmzR8OHD9e9//1uvv/66ZsyY0VBDPWLECF155ZX61a9+pZqaGo0fP17l5eXauHFjs8f8yU9+ovnz52vs2LG64YYbdOaZZ2rfvn1auXKl5s6dq3379sX9c21q5MiRkkwn8iuuuELt27fXpZde2hC2AQDwGkI1AAApkJGRob/85S+6//779fLLL2vWrFnKz8/XT3/6U915550hY5977jn17t1bf/zjH/Xaa6+puLhYf//735WXlxcyrk+fPlq2bJl+/OMfq6ysTL/61a/Us2dPnXXWWXr88ceT8nmNHj1aDz/8sJ555hn985//VH19vTZv3kyo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VE8NHvToo49q/Pjx6tSpk7p3757q6cBDnnrqKeXn56tjx44aO3asli1bluopwWMqKyt16aWXql+/fvL5fHrttddSPSV41GOPPabRo0era9euOvnkk3XZZZdp/fr1qZ4WPOjpp5/WOeeco27duqlbt24aN26c3njjjVY9huNDdVFRkf70pz9p/fr1euWVV/TRRx9p2rRpqZ4WPGbdunWqr6/Xr3/9a61du1Y///nP9cwzz+iHP/xhqqcGDzp69Kguv/xy3XjjjameCjzk5Zdf1h133KEHHnhAK1eu1PDhw3XBBRdo165dqZ4aPOTQoUMaPny4nnrqqVRPBR63YMEC3XzzzVqyZInefPNNHTt2TP/n//wfHTp0KNVTg8fk5ubqJz/5iVasWKG3335bxcXFmjp1qtauXRv1Y7juSK2//OUvuuyyy1RXV6f27dunejrwsJ/+9Kd6+umntWnTplRPBR71/PPPa8aMGdq/f3+qpwIPGDt2rEaPHq1f/vKXkqT6+nrl5eXp1ltv1d13353i2cGLfD6fXn31VV122WWpngrSwO7du3XyySdrwYIFmjRpUqqnA4/r0aOHfvrTn+r666+ParzjV6ob27dvn/74xz9q/PjxBGokXE1NjXr06JHqaQBAi44ePaoVK1ZoypQpDdcyMjI0ZcoULV68OIUzA4D4qKmpkSRemyGhAoGAXnrpJR06dEjjxo2L+uNcEap/8IMfqHPnzurZs6e2bt2q119/PdVTgsdt3LhR/+///T9997vfTfVUAKBFe/bsUSAQUJ8+fUKu9+nTRzt27EjRrAAgPurr6zVjxgxNmDBBw4YNS/V04EHvvfeeunTposzMTH3ve9/Tq6++qjPPPDPqj09JqL777rvl8/lO+GfdunUN4++66y698847+ve//y2/36+rrrpKLtu1jhRp7feaJFVXV+vCCy/U5ZdfrhtuuCFFM4fbxPK9BgAAWnbzzTdrzZo1eumll1I9FXjU0KFDtWrVKi1dulQ33nijrr76ar3//vtRf3xKaqp3796tvXv3nnDMKaecog4dOjS7/sknnygvL0+LFi1q1ZI80lNrv9c+/fRTFRYW6vzzz9fzzz+vjAxXbOaAA8Tyc42aasTL0aNH1alTJ82ZMyekvvXqq6/W/v372eGFhKCmGslwyy236PXXX1dlZaUGDRqU6ukgTUyZMkWDBw/Wr3/966jGt0vwfMLq3bu3evfuHdPH1tfXS5Lq6uriOSV4VGu+16qrq1VUVKSRI0dq1qxZBGq0Slt+rgFt1aFDB40cOVLl5eUNAae+vl7l5eW65ZZbUjs5AIiBZVm69dZb9eqrr6qiooJAjaSqr69vVd5MSaiO1tKlS7V8+XJNnDhRJ510kj766CPdd999Gjx4MKvUiKvq6moVFhZq4MCBeuKJJ7R79+6G9/Xt2zeFM4MXbd26Vfv27dPWrVsVCAS0atUqSdKQIUPUpUuX1E4OrnXHHXfo6quv1qhRozRmzBjNnDlThw4d0rXXXpvqqcFDDh48qI0bNza8vXnzZq1atUo9evTQgAEDUjgzeM3NN9+s2bNn6/XXX1fXrl0b+kNkZ2crKysrxbODl9xzzz266KKLNGDAAB04cECzZ89WRUWF/vWvf0X9GI4+Uuu9997T7bffrtWrV+vQoUPKycnRhRdeqHvvvVf9+/dP9fTgIc8//3zEF54O/icCl7rmmmv0wgsvNLs+f/58FRYWJn9C8Ixf/vKX+ulPf6odO3ZoxIgR+sUvfqGxY8emelrwkIqKChUVFTW7fvXVV+v5559P/oTgWT6fL+z1WbNm6ZprrknuZOBp119/vcrLy7V9+3ZlZ2frnHPO0Q9+8AN96UtfivoxHB2qAQAAAABwMopGAQAAAACIEaEaAAAAAIAYEaoBAAAAAIgRoRoAAAAAgBgRqgEAAAAAiBGhGgAAAACAGBGqAQAAAACIEaEaAAAAAIAYEaoBAAAAAIgRoRoAAAAAgBgRqgEAAAAAiBGhGgAAAACAGP1/rg2uGwlM2pMAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "x_new_poly = poly1.transform(x_new)\n",
    "y_new = lin_reg.predict(x_new_poly)\n",
    "\n",
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x, y, color=\"red\")\n",
    "plt.plot(x_new, y_new, \"b-\", linewidth=2, label=\"Degree 1 polynomial\")\n",
    "plt.legend(loc=\"upper left\", fontsize=14)\n",
    "plt.axis([-3, 3, 0, 10])\n",
    "plt.title('Model Fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "688967d9",
   "metadata": {},
   "source": [
    "To gauge the fit of the model on previously unseen test data, we make predictions using the fitted line and also report the $R^2$ score and root mean squared metric by comparing the predicted and actual outcomes for our test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "c1108b07",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TEST R^2: 0.5608611832747157\n"
     ]
    }
   ],
   "source": [
    "y_train_pred = lin_reg.predict(x_poly1)\n",
    "train_r2 = r2_score(y, y_train_pred)\n",
    "train_rmse = np.sqrt(mean_squared_error(y, y_train_pred))\n",
    "\n",
    "x_poly1_test = poly1.transform(x_test)\n",
    "y_test_pred = lin_reg.predict(x_poly1_test)\n",
    "test_r2 = r2_score(y_test, y_test_pred)\n",
    "rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))\n",
    "print(f'TEST R^2: {test_r2}')\n",
    "test_results.append({'Polynomial Degree': 1, 'Train R^2 Score': train_r2, 'Test R^2 Score': test_r2, 'Train RMSE': train_rmse, 'Test RMSE': rmse})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c17e1081",
   "metadata": {},
   "source": [
    "To address the issue of underfitting with the previous model, we need to use higher order polynomials that can better model the complex spread of the data. Let us move to a third order polynomial. This involves fitting the following function:\n",
    ">$y = a_{1}x +a_{2}x^{2} +a_{3}x^{3} +b$\n",
    "\n",
    "This model includes three coefficients $a_{1}$, $a_{2}$, $a_{3}$ and a bias term $b$. As we can see by plotting the data alongside the underlying model function, the fit is much improved by increasing the degree of the polynomial. A degree 3 polynomial better captures the non-linearity of the data even if it is not perfect."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "5e4fb4ad",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Features of the first observation: [[-1.55915082  2.05866433 -2.36595779]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9UAAAIQCAYAAACPGE2sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8lUlEQVR4nO3dd3zT1f7H8XdaoJTRMoVCC0VwogxZglYBUURkWEEBByjiROTixKuCE+dP9F7cAsoFXFTAgQtBcIGAKKKAICBUNtICYoH0+/vjmKZp0zZJM75JX8/HI4+Sk2+Sk9Km33fOOZ/jsCzLEgAAAAAA8FtcpDsAAAAAAEC0IlQDAAAAABAgQjUAAAAAAAEiVAMAAAAAECBCNQAAAAAAASJUAwAAAAAQIEI1AAAAAAABIlQDAAAAABAgQjUAAAAAAAEiVAMAEKUcDofGjx/v9/02bdokh8OhqVOnRqwPAADECkI1AADlMHXqVDkcDjkcDn355ZfFbrcsS2lpaXI4HLrwwgsj0MPALVy4sOC1Fb0MGjTI632+/vprjR8/Xvv27QtvZwEAiJBKke4AAACxoGrVqpoxY4bOPPNMj/YvvvhCW7duVUJCQoR6Vn6jRo1Shw4dPNrS09MlSYcOHVKlSu7Tia+//lr333+/hg0bplq1aoWxlwAARAahGgCAILjgggv09ttv69lnn/UImTNmzFC7du20e/fuCPaufDIyMjRgwACvt1WtWjXMvQEAwF6Y/g0AQBAMHjxYe/bs0aefflrQdvjwYb3zzjsaMmSI1/scPHhQt956q9LS0pSQkKATTjhBTz75pCzL8jguLy9P//rXv1S/fn3VrFlTffv21datW70+ZnZ2tq6++mo1aNBACQkJatmypSZPnhy8F1pE4TXV48eP1+233y5JatasWcFU8U2bNoXs+QEAiDRGqgEACIL09HR17txZM2fOVK9evSRJ8+bNU05OjgYNGqRnn33W43jLstS3b18tWLBAw4cPV5s2bfTxxx/r9ttvV3Z2tp5++umCY6+55hr973//05AhQ9SlSxd9/vnn6t27d7E+7NixQ6effrocDodGjhyp+vXra968eRo+fLhyc3M1evTogF7b/v37i42016lTR3Fxnp/NZ2Zmat26dZo5c6aefvpp1atXT5JUv379gJ4XAIBoQKgGACBIhgwZorFjx+rQoUNKTEzU9OnTdfbZZ6tRo0bFjp07d64+//xzPfTQQ/r3v/8tSbrppps0cOBAPfPMMxo5cqSaN2+uH374Qf/73/904403atKkSQXHXXbZZfrxxx89HvPf//63nE6nVq1apbp160qSrr/+eg0ePFjjx4/Xddddp8TERL9f19VXX12sbePGjQXrql1atWql0047TTNnzlT//v2L3Q4AQCxi+jcAAEFyySWX6NChQ3r//fe1f/9+vf/++yVO/f7www8VHx+vUaNGebTfeuutsixL8+bNKzhOUrHjio46W5alWbNmqU+fPrIsS7t37y649OzZUzk5OVqxYkVAr+u+++7Tp59+6nFp2LBhQI8FAECsYaQaAIAgqV+/vnr06KEZM2bor7/+ktPpLLHA1+bNm9WoUSPVrFnTo/2kk04quN31NS4uTs2bN/c47oQTTvC4vmvXLu3bt08vvfSSXnrpJa/PuXPnzoBe16mnnqoePXoEdF8AAGIdoRoAgCAaMmSIRowYoe3bt6tXr15h21YqPz9fknT55Zdr6NChXo9p1apVWPoCAEBFQqgGACCILrroIl133XX69ttv9eabb5Z4XNOmTfXZZ59p//79HqPVa9asKbjd9TU/P18bNmzwGJ1eu3atx+O5KoM7nc6Ijio7HI6IPTcAAJHAmmoAAIKoRo0aev755zV+/Hj16dOnxOMuuOACOZ1O/fe///Vof/rpp+VwOAoqiLu+Fq0ePnHiRI/r8fHxuvjiizVr1iz99NNPxZ5v165dgbwcv1WvXl2StG/fvrA8HwAAkcZINQAAQVbS9OvC+vTpo27duunf//63Nm3apNatW+uTTz7RnDlzNHr06II11G3atNHgwYP13HPPKScnR126dNH8+fO1fv36Yo/56KOPasGCBerUqZNGjBihk08+WXv37tWKFSv02Wefae/evUF/rUW1a9dOkqlEPmjQIFWuXFl9+vQpCNsAAMQaQjUAABEQFxenuXPn6r777tObb76pKVOmKD09XU888YRuvfVWj2MnT56s+vXra/r06Zo9e7a6d++uDz74QGlpaR7HNWjQQEuXLtUDDzygrKwsPffcc6pbt65atmypxx57LCyvq0OHDnrwwQf1wgsv6KOPPlJ+fr42btxIqAYAxCyHZVlWpDsBAAAAAEA0Yk01AAAAAAABIlQDAAAAABAgQjUAAAAAAAHyO1QvWrRIffr0UaNGjeRwODR79uyC244cOaI777xTp556qqpXr65GjRrpyiuv1B9//BHMPgMAAAAAYAt+h+qDBw+qdevWmjRpUrHb/vrrL61YsUL33nuvVqxYoaysLK1du1Z9+/YNSmcBAAAAALCTclX/djgcevfdd9W/f/8Sj/nuu+/UsWNHbd68WU2aNAn0qQAAAAAAsJ2Q71Odk5Mjh8OhWrVqeb09Ly9PeXl5Bdfz8/O1d+9e1a1bVw6HI9TdAwAAAABUcJZlaf/+/WrUqJHi4vyb0B3SUP3333/rzjvv1ODBg5WUlOT1mAkTJuj+++8PZTcAAAAAACjTli1blJqa6td9Qjb9+8iRI7r44ou1detWLVy4sMRQXXSkOicnR02aNNGWLVtKvA8AAAAAAMGSm5urtLQ07du3T8nJyX7dNyQj1UeOHNEll1yizZs36/PPPy81HCckJCghIaFYe1JSEqEaAAAAABA2gSxBDnqodgXqX3/9VQsWLFDdunWD/RQAAAAAANiC36H6wIEDWr9+fcH1jRs3auXKlapTp45SUlI0YMAArVixQu+//76cTqe2b98uSapTp46qVKkSvJ4DAAAAABBhfq+pXrhwobp161asfejQoRo/fryaNWvm9X4LFixQ165dy3z83NxcJScnKycnh+nfAAAAAICQK08O9XukumvXrioth5ej7hkAAAAAAFHFvw24AAAAAABAAUI1AAAAAAABCsmWWpFw5MgROZ3OSHcDgM3Fx8ercuXKke4GAAAAYkTUh+rc3Fzt3r1beXl5ke4KgCiRkJCgevXqUQwRAAAA5RbVoTo3N1fZ2dmqUaOG6tWrp8qVKwe0WTeAisGyLB05ckQ5OTnKzs6WJII1AAAAyiWqQ/Xu3btVo0YNpaamEqYB+CQxMVE1a9bU1q1btXv3bkI1AAAAyiVqC5UdOXJEeXl5Sk5OJlAD8IvD4VBycrLy8vJ05MiRSHcHAAAAUSxqQ7WrKBkFhwAEwvXeQYFDAAAAlEfUhmoXRqkBBIL3DgAAAARD1IdqAAAAAAAihVANAAAAAECACNWATaWnpys9PT3S3Qibrl27lntK9tSpU+VwODR16tTgdAoAAAAoA6E6Sm3atEkOh8PjUq1aNTVq1EjnnHOO7rvvPm3YsCHS3bSdZ599Vr1791Z6erqqV6+uWrVqqXXr1ho/frz27t0b6e4BAAAAiDJRvU81pObNm+vyyy+XJOXl5Wnnzp1aunSpHnzwQT3yyCO644479PDDD1OU6R+vvvqqJOnss89Ww4YN9ffff2vJkiW6//77NXnyZC1dulQNGzaMcC8rptdff11//fVXpLsBAAAA+IVQHeVatGih8ePHF2v/8ssvdcUVV2jChAmKj4/Xgw8+GP7O2dCSJUtUtWrVYu333nuvHnroIT311FN64oknItAzNGnSJNJdAAAAAPzG9O8YdeaZZ+qjjz5SQkKCHn/8cW3ZsqXYMXPmzNE555yj2rVrq2rVqjrllFP05JNPet2396+//tIdd9yhtLS0gmNffvllLVy4UA6Ho1iwdzgc6tq1q7Kzs3XllVeqYcOGiouL08KFCwuOWbRokfr06aN69eopISFBxx13nO65554SRyv9Pd4bb4FakgYOHChJWr9+vU+PU3jt7pw5c9SxY0dVq1ZN9evX19VXX60dO3Z4vd9XX32l3r17q06dOqpatapOPPFEjRs3zqfXcM8998jhcOitt97yevvkyZPlcDg0YcKEgjbX/8OOHTs0dOhQ1atXT4mJiTr99NM9/i8K27x5s4YPH67GjRurSpUqSk1N1fDhw/X7778XO9a1DjovL0933323mjRposTERLVr106fffaZJCknJ0c33XSTGjVqpKpVq6pz585aunRpiY9VWE5Ojh577DGdffbZatSokapUqaJGjRrpyiuvZHkDAAAAbIFQHcNOOOEEXXLJJTp8+LBmz57tcdvYsWPVv39/rV27VpmZmbrxxhuVmJio22+/XYMGDfI41ul06sILL9QTTzyh2rVr65ZbblHnzp1166236v/+7/9KfP49e/aoc+fO+vHHHzVo0CBde+21SkpKkiQ9//zz6tq1a0HIHDVqlFJTU/Xwww/r3HPP1eHDhz0ey9/j/fXBBx9Ikk455RS/7jdr1iwNHDhQLVq00OjRo3XqqadqypQpOvPMM/Xnn396HPv222/r7LPP1sKFC9W/f3+NHj1a1apV0wMPPKDu3bvr77//LvW5RowYobi4OL3yyiteb3/55ZdVqVIlXXXVVR7t+/bt05lnnqnVq1friiuuUGZmppYtW6aePXvqp59+8jh23bp16tChgyZPnqx27drp1ltvVdu2bTV58mS1b99e69at8/rcl156qd5880317dtXQ4YM0erVq3XhhRdq+fLl6t69uxYtWqSBAwcqMzNTS5cu1fnnn6+cnJyyvr365ZdfdN999ykxMVEXXXSRRo8erfbt22vGjBnq2LGjNm/eXOZjAAAAACFl2UxOTo4lycrJySn1uEOHDlk///yzdejQoTD1zF42btxoSbJ69uxZ6nGvvvqqJcm64oorCto++eSTgvseOHCgoD0/P9+6/vrrLUnWO++8U9D+yiuvWJKsXr16WUePHi1oX716tVW1alVLkjVu3DiP55VkSbKuuuoqj/u47lepUiWrdevW1u7duz1umzBhgiXJevLJJwM+3hcvvviiNW7cOGvMmDFW165dLUlW27Ztrb179/p0/ylTphS8xo8++sjjtrvuusuSZI0cObKgLScnx0pOTrYSEhKsH374oaDd6XRal156qSXJeuCBBzwep2nTplbTpk092nr16mU5HA5r48aNHu0//fSTJcnq37+/R7urjzfeeKPldDoL2l3/p9ddd53H8d26dbMkWS+++KJH+6RJkyxJVvfu3T3azz77bEuSdeaZZ3r8LL355puWJKtWrVrWwIEDrSNHjhTc9thjj1mSrKeeesrrYxW2b98+a8+ePVZRn3/+uRUXF2ddc801Hu2u/5cpU6YUu09RFf09BAAAAG6+5lBvYjZUt2tnWY0b2/vSrl3g3ydfQ/W8efMKArFL3759LUnW5s2bix2/b98+y+FwWBdffHFBmyt0rlixotjx1157bYmhukqVKtauXbuK3WfUqFGWJGvRokXFbnM6nVb9+vWtdoW+Of4e74t27doVBE5J1nnnnWft2LHD5/u7wluPHj2K3bZ//36rVq1aVlJSUkGQff311y1J1g033FDs+M2bN1uVKlWyjj32WI92b6F6zpw5liTrnnvu8WgfPXq0Jcn64IMPPNolWdWrV7f279/v0X7kyBGrUqVK1mmnnebRD0nWySefbOXn53sc73Q6rRNPPNGSZP3+++8F7a4g/MUXXxQ7vnLlyl5/zn7//XdLknXllVd6tHsL1aU59dRTrfT0dI82QjUAAAACUZ5QHbOFyrZvl7KzI90Le/r2229VvXp1TZ482evtiYmJWrNmTcH1H374QdWrV1fbtm2LHXvGGWfopZde8vo4zZo1U7169bw+vyR9/PHHmj9/frHbK1eu7PH8/h7vi2XLlkmSdu/erW+++UZ33XWXTjvtNH344Ydq1aqVz4+TkZFRrK1GjRpq06aNFi5cqN9++00tWrTQ999/L8msGy6qSZMmOvbYY7Vu3Trt379fNWvWLPH5evfurcaNG2vKlCkaP3684uPjdfjwYU2bNk1paWk6//zzi93n+OOPV40aNTzaKlWqpAYNGmjfvn0FbStXrpRkKqMXXdscFxens846S2vWrNHKlSuVlpbmcXubNm2KHX/MMcfor7/+KlaALCUlRZL0xx9/lPg6C1u4cKEmTpyoJUuWaPfu3Tp69GjBbVWqVPHpMQAAAIBQidlQHQ27IoWjj67gUr9+/YK2vXv36ujRo7r//vtLvN/BgwcL/p2bm1ssRLk0aNCgxMco6TbXftAPP/xwyR0vx/H+qFevnvr06aM2bdrouOOO04gRI7RkyRKf71/Sa3S1u9YN5+bmlnp8SkqK1q1bp9zc3FJDdXx8vK655hrdf//9mjdvni688EK9++672rNnj0aOHKm4uOJlElzr2IuqVKmSR1E6X/pY+LiynqNSpUoltkvSkSNHvD5PYW+//bYuvfRS1ahRQz179lR6erqqVatWUCSONdUAAACItJgN1f8MRFZ4rgrPHTp0KGhLSkqSw+HQ7t27fXqMpKQk7dq1y+ttJVW5llTi3tiuoFVWgAz0+ECkpaXppJNO0nfffae//vpL1apV8+l+Jb1+V3tycrIk92so6fjt27d7HFeaa665Rg899JBefvllXXjhhXrllVcUFxenq6++2qc+lySYfQyW8ePHq2rVqlq+fLmOO+44j9veeOONsPUDAAAAKAnVv2PYunXr9NZbbykhIUEXXXRRQXunTp20Z88e/frrrz49TuvWrXXw4MGC6cGFff311373q1OnTpLc07qDfXygtm3bJofDofj4eJ/vs3jx4mJtBw4c0MqVK5WUlKRjjz1WkgqmznvbxmrLli3asGGDjj32WJ8+NEhNTVXv3r314Ycf6uuvv9b8+fPVs2fPcu/z7JrCvWjRIlmW5XGbZVlatGiRx3HhsGHDBp100knFAvW2bdv022+/ha0fAAAAQEkI1THqq6++Us+ePZWXl6e77rpLjRs3Lrht1KhRkqSrr75ae/bsKXbf7du365dffim4ftlll0ky+yTn5+cXtK9Zs0avvfaa33278cYbValSJd18881e9z7et29fwRrkQI4vybZt25TtZaG9ZVkaP368duzYoXPOOUcJCQk+v5bPPvtMH3/8sUfbww8/rH379unKK68smI7dr18/JScna8qUKVq9erXHc9955506evSohg0b5vPzXnfddTp69KgGDhwoy7I0YsQIn+9bkiZNmqhbt25avXp1sfX2L730kn755Rd17969xKUAodC0aVOtX7/eY/T877//1g033ODT9HEAAAAg1GJ2+ndFsX79eo0fP16SdPjwYe3cuVNLly7VqlWrFB8fr3vuuUfjxo3zuM/555+ve++9Vw8++KBatGih888/X02bNtWePXu0fv16LV68WA899JBOOukkSdJVV12ladOm6YMPPlDbtm3Vq1cv7d27V2+88YbOPfdcvffee17X8pbklFNO0XPPPacbbrhBJ5xwgi644AI1b95c+/fv12+//aYvvvhCw4YN0wsvvBDQ8SVZu3atzj33XJ1++uk67rjj1KBBA+3evVuLFy/W2rVr1ahRI02aNMmP77504YUXqk+fPhowYIDS09P17bffasGCBWrevLkeeOCBguOSkpL08ssva/DgwerUqZMuvfRS1a9fX5999pmWL1+ujh076vbbb/f5eV3/Z5s3b1bDhg3Vp08fv/pdkueff15nnnmmRowYoffee08nn3yyVq9erblz56p+/fp6/vnng/I8vrr55pt18803q23bthowYICOHj2qTz/9VJZlqXXr1vrhhx/C2h8AAACgmKDWIQ8C9qn2jWtLrcKXxMREKyUlxerWrZt17733WuvXry/1MT799FOrT58+Vv369a3KlStbDRs2tDp37mw9+OCDHtsmWZZlHThwwLr11lutRo0aWQkJCdbJJ59svfTSS9Y777xjSbKefvppj+MlWWeffXapz7906VJr0KBBVqNGjazKlStb9erVs0477TTrrrvusn755ZdyH1/Utm3brDvuuMPq1KmTVb9+fatSpUpWzZo1rdNOO8269957ve6HXJLCWzfNnj3b6tChg5WYmGjVrVvXGjZsmLVt2zav91u0aJHVq1cvq1atWlaVKlWs448/3rr33ns99nh28balVmH33HOPJcm66667SjymtP+Hkh5/06ZN1lVXXWWlpKRYlSpVslJSUqyrrrrK2rRpU7FjS9sGq7T+e+uXt8fKz8+3XnjhBatly5ZW1apVrYYNG1rDhw+3du7c6fV4ttQCAABAIMqz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Y9S/f3+tXbs20t1CDHr++efVqlUrJSUlKSkpSZ07d9a8efP8egzbh+pu3brprbfe0tq1azVr1ixt2LBBAwYMiHS3EGPWrFmj/Px8vfjii1q9erWefvppvfDCC7r77rsj3TXEoMOHD2vgwIG64YYbIt0VxJA333xTY8aM0bhx47RixQq1bt1aPXv21M6dOyPdNcSQgwcPqnXr1po0aVKku4IY98UXX+imm27St99+q08//VRHjhzReeedp4MHD0a6a4gxqampevTRR7V8+XItW7ZM3bt3V79+/bR69WqfHyPqttSaO3eu+vfvr7y8PFWuXDnS3UEMe+KJJ/T888/rt99+i3RXEKOmTp2q0aNHa9++fZHuCmJAp06d1KFDB/33v/+VJOXn5ystLU0333yz7rrrrgj3DrHI4XDo3XffVf/+/SPdFVQAu3bt0jHHHKMvvvhCZ511VqS7gxhXp04dPfHEExo+fLhPx9t+pLqwvXv3avr06erSpQuBGiGXk5OjOnXqRLobAFCmw4cPa/ny5erRo0dBW1xcnHr06KFvvvkmgj0DgODIycmRJM7NEFJOp1NvvPGGDh48qM6dO/t8v6gI1XfeeaeqV6+uunXr6vfff9ecOXMi3SXEuPXr1+s///mPrrvuukh3BQDKtHv3bjmdTjVo0MCjvUGDBtq+fXuEegUAwZGfn6/Ro0frjDPO0CmnnBLp7iAGrVq1SjVq1FBCQoKuv/56vfvuuzr55JN9vn9EQvVdd90lh8NR6mXNmjUFx99+++36/vvv9cknnyg+Pl5XXnmlomzWOiLE3581ScrOztb555+vgQMHasSIERHqOaJNID9rAACgbDfddJN++uknvfHGG5HuCmLUCSecoJUrV2rJkiW64YYbNHToUP38888+3z8ia6p37dqlPXv2lHrMscceqypVqhRr37p1q9LS0vT111/7NSSPisnfn7U//vhDXbt21emnn66pU6cqLi4qJnPABgJ5X2NNNYLl8OHDqlatmt555x2P9a1Dhw7Vvn37mOGFkGBNNcJh5MiRmjNnjhYtWqRmzZpFujuoIHr06KHmzZvrxRdf9On4SiHuj1f169dX/fr1A7pvfn6+JCkvLy+YXUKM8udnLTs7W926dVO7du00ZcoUAjX8Up73NaC8qlSponbt2mn+/PkFASc/P1/z58/XyJEjI9s5AAiAZVm6+eab9e6772rhwoUEaoRVfn6+X3kzIqHaV0uWLNF3332nM888U7Vr19aGDRt07733qnnz5oxSI6iys7PVtWtXNW3aVE8++aR27dpVcFvDhg0j2DPEot9//1179+7V77//LqfTqZUrV0qSWrRooRo1akS2c4haY8aM0dChQ9W+fXt17NhREydO1MGDB3XVVVdFumuIIQcOHND69esLrm/cuFErV65UnTp11KRJkwj2DLHmpptu0owZMzRnzhzVrFmzoD5EcnKyEhMTI9w7xJKxY8eqV69eatKkifbv368ZM2Zo4cKF+vjjj31+DFtvqbVq1Srdcsst+uGHH3Tw4EGlpKTo/PPP1z333KPGjRtHunuIIVOnTi3xxNPGvyKIUsOGDdNrr71WrH3BggXq2rVr+DuEmPHf//5XTzzxhLZv3642bdro2WefVadOnSLdLcSQhQsXqlu3bsXahw4dqqlTp4a/Q4hZDofDa/uUKVM0bNiw8HYGMW348OGaP3++tm3bpuTkZLVq1Up33nmnzj33XJ8fw9ahGgAAAAAAO2PRKAAAAAAAASJUAwAAAAAQIEI1AAAAAAABIlQDAAAAABAgQjUAAAAAAAEiVAMAAAAAECBCNQAAAAAAASJUAwAAAAAQIEI1AAAAAAABIlQDAAAAABAgQjUAAAAAAAEiVAMAAAAAEKD/B5Jarix1nd9NAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#this creates an array for standardized polynomial features (here degree 3)\n",
    "poly3 = PolynomialFeatures(degree=3, include_bias=False)\n",
    "scaler = StandardScaler()\n",
    "x_poly3 = scaler.fit_transform(poly3.fit_transform(x))\n",
    "# features for first observation\n",
    "print(\"Features of the first observation:\",x_poly3[:1]) \n",
    "\n",
    "#fitting a linear model on higher order features\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(x_poly3, y)\n",
    "\n",
    "x_new_poly = scaler.transform(poly3.transform(x_new))\n",
    "y_new = lin_reg.predict(x_new_poly)\n",
    "\n",
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x, y, color=\"red\")\n",
    "plt.plot(x_new, y_new, \"b-\", linewidth=2, label=\"Degree 3 polynomial\")\n",
    "plt.legend(loc=\"upper left\", fontsize=14)\n",
    "plt.axis([-3, 3, 0, 12])\n",
    "plt.title('Model Fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38489d42",
   "metadata": {},
   "source": [
    "Like the previous model, we report the $R^2$ score and root mean squared metric by comparing the predicted and actual outcomes for our test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "dd8b6e1a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TEST R^2: 0.7870600996903524\n"
     ]
    }
   ],
   "source": [
    "y_train_pred = lin_reg.predict(x_poly3)\n",
    "train_r2 = r2_score(y, y_train_pred)\n",
    "train_rmse = np.sqrt(mean_squared_error(y, y_train_pred))\n",
    "\n",
    "x_poly3_test = scaler.transform(poly3.transform(x_test))\n",
    "y_test_pred = lin_reg.predict(x_poly3_test)\n",
    "test_r2 = r2_score(y_test, y_test_pred)\n",
    "rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))\n",
    "print(f'TEST R^2: {test_r2}')\n",
    "test_results.append({'Polynomial Degree': 3, 'Train R^2 Score': train_r2, 'Test R^2 Score': test_r2, 'Train RMSE': train_rmse, 'Test RMSE': rmse})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98aacf54",
   "metadata": {},
   "source": [
    "Now what happens if we try to fit an even higher-order polynomial, say degree 30? As we can see, the fitted curve attempts to capture some more of the points that were missed out by the degree 3 polynomial, thereby yielding a better fit on the training data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "51ede52c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Features of the first observation: [[-1.55915082  2.05866433 -2.36595779  2.6772171  -2.91462656  3.15733221\n",
      "  -3.34401533  3.54292672 -3.69404808  3.85995808 -3.98673531  4.12779132\n",
      "  -4.23752764  4.36012751 -4.45734198  4.56623907 -4.65373099  4.75233149\n",
      "  -4.8318967   4.92261121 -4.9954656   5.08000412 -5.14702124  5.22660857\n",
      "  -5.2884514   5.36397561 -5.42117091  5.4932839  -5.54626545  5.61545113]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9UAAAIQCAYAAACPGE2sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAACZCklEQVR4nOzdd3xT1f/H8XdaSstqmbJahgiKqKCiiFgFUREFgYoKLpw4UMCtP0XgqwhOcCBO3AxHARcoU1BUVJwoKAoIpSyRVlZb0vv745AmaZM2SbP7ej4eeeTem5t7Tzrv557P+RybZVmWAAAAAACA3xIi3QAAAAAAAGIVQTUAAAAAAAEiqAYAAAAAIEAE1QAAAAAABIigGgAAAACAABFUAwAAAAAQIIJqAAAAAAACRFANAAAAAECACKoBAAAAAAgQQTUAADHKZrNpzJgxfr9v/fr1stlsevXVVyPWBgAA4gVBNQAAlfDqq6/KZrPJZrPp888/L/O6ZVnKyMiQzWZTnz59ItDCwC1ZsqTks5V+DBo0yON7li9frjFjxmjXrl3hbSwAABFSLdINAAAgHqSkpGjatGk65ZRT3LZ/9tln2rRpk5KTkyPUssobPny4TjjhBLdtrVq1kiTt27dP1ao5LyeWL1+usWPH6oorrlDdunXD2EoAACKDoBoAgCA455xz9M477+ipp55yCzKnTZum448/Xjt27Ihg6yonMzNTAwcO9PhaSkpKmFsDAEB0If0bAIAgGDx4sP755x/Nnz+/ZFthYaHeffddXXzxxR7fs2fPHt12223KyMhQcnKyDj/8cD322GOyLMttv4KCAt1yyy1q1KiR6tSpo/POO0+bNm3yeMycnBxdddVVaty4sZKTk9WhQwdNnTo1eB+0FNcx1WPGjNEdd9whSWrdunVJqvj69etDdn4AACKNnmoAAIKgVatW6tq1q6ZPn67evXtLkubOnau8vDwNGjRITz31lNv+lmXpvPPO0+LFi3X11VerU6dO+uSTT3THHXcoJydHEydOLNn3mmuu0ZtvvqmLL75YJ598shYtWqRzzz23TBu2bt2qk046STabTTfddJMaNWqkuXPn6uqrr1Z+fr5GjhwZ0Gf777//yvS0169fXwkJ7vfms7Ky9Pvvv2v69OmaOHGiGjZsKElq1KhRQOcFACAWEFQDABAkF198se655x7t27dPNWrU0FtvvaXTTjtNzZo1K7Pv+++/r0WLFunBBx/UvffeK0kaNmyYLrjgAj355JO66aab1KZNG/3444968803deONN2ry5Mkl+11yySX66aef3I557733ym636+eff1aDBg0kSddff70GDx6sMWPG6LrrrlONGjX8/lxXXXVVmW3r1q0rGVftcMwxx+i4447T9OnT1b9//zKvAwAQj0j/BgAgSC688ELt27dPH374of777z99+OGHXlO/P/74YyUmJmr48OFu22+77TZZlqW5c+eW7CepzH6le50ty9J7772nvn37yrIs7dixo+TRq1cv5eXlaeXKlQF9rvvvv1/z5893ezRp0iSgYwEAEG/oqQYAIEgaNWqkM844Q9OmTdPevXtlt9u9FvjasGGDmjVrpjp16rhtb9++fcnrjueEhAS1adPGbb/DDz/cbX379u3atWuXXnjhBb3wwgsez7lt27aAPtfRRx+tM844I6D3AgAQ7wiqAQAIoosvvljXXnuttmzZot69e4dtWqni4mJJ0qWXXqohQ4Z43OeYY44JS1sAAKhKCKoBAAiiAQMG6LrrrtNXX32lmTNnet2vZcuWWrBggf777z+33urVq1eXvO54Li4u1p9//unWO71mzRq34zkqg9vt9oj2KttstoidGwCASGBMNQAAQVS7dm1NmTJFY8aMUd++fb3ud84558hut+uZZ55x2z5x4kTZbLaSCuKO59LVwydNmuS2npiYqPPPP1/vvfeefvnllzLn2759eyAfx2+1atWSJO3atSss5wMAINLoqQYAIMi8pV+76tu3r3r06KF7771X69evV8eOHfXpp59qzpw5GjlyZMkY6k6dOmnw4MF69tlnlZeXp5NPPlkLFy7U2rVryxxzwoQJWrx4sbp06aJrr71WRx55pHbu3KmVK1dqwYIF2rlzZ9A/a2nHH3+8JFOJfNCgQUpKSlLfvn1Lgm0AAOINQTUAABGQkJCg999/X/fff79mzpypV155Ra1atdKjjz6q2267zW3fqVOnqlGjRnrrrbc0e/ZsnX766froo4+UkZHhtl/jxo21YsUK/e9//1N2draeffZZNWjQQB06dNDDDz8cls91wgkn6IEHHtBzzz2nefPmqbi4WOvWrSOoBgDELZtlWVakGwEAAAAAQCxiTDUAAAAAAAEiqAYAAAAAIEAE1QAAAAAABMjvoHrp0qXq27evmjVrJpvNptmzZ5e8VlRUpLvuuktHH320atWqpWbNmunyyy/X5s2bg9lmAAAAAACigt9B9Z49e9SxY0dNnjy5zGt79+7VypUrNWrUKK1cuVLZ2dlas2aNzjvvvKA0FgAAAACAaFKp6t82m02zZs1S//79ve7zzTff6MQTT9SGDRvUokWLQE8FAAAAAEDUCfk81Xl5ebLZbKpbt67H1wsKClRQUFCyXlxcrJ07d6pBgway2Wyhbh4AAAAAoIqzLEv//fefmjVrpoQE/xK6QxpU79+/X3fddZcGDx6s1NRUj/uMHz9eY8eODWUzAAAAAACo0MaNG5Wenu7Xe0KW/l1UVKTzzz9fmzZt0pIlS7wG1aV7qvPy8tSiRQtt3LjR63sAAAAAAPDm8sulOXPM8qpVUkVxcn5+vjIyMrRr1y6lpaX5da6Q9FQXFRXpwgsv1IYNG7Ro0aJyg+Pk5GQlJyeX2Z6amkpQDQAAAADw24EDzuVDDpF8DS0DGYIc9KDaEVD/8ccfWrx4sRo0aBDsUwAAAAAA4NW+fc7lGjVCey6/g+rdu3dr7dq1Jevr1q3TDz/8oPr166tp06YaOHCgVq5cqQ8//FB2u11btmyRJNWvX1/Vq1cPXssBAAAAAPAgnEG132OqlyxZoh49epTZPmTIEI0ZM0atW7f2+L7Fixere/fuFR4/Pz9faWlpysvLI/0bAAAAAOC3Tp2kH3+UkpOl/fsr3r8ycajfPdXdu3dXeXF4JeqeAQAAAABQaY6e6lD3UkuSfxNwAQAAAAAQ5QiqAQAAAAAIUDiD6pBMqRUJRUVFstvtkW4GgDiUmJiopKSkSDcDAAAAPiKo9kN+fr527NihgoKCSDcFQBxLTk5Ww4YNKaAIAAAQ5SxL2rvXLNesGfrzxXRQnZ+fr5ycHNWuXVsNGzZUUlJSQJN1A4A3lmWpqKhIeXl5ysnJkSQCawAAgChWWGgCa4me6grt2LFDtWvXVnp6OsE0gJCpUaOG6tSpo02bNmnHjh0E1QAAAFEsnHNUSzFcqKyoqEgFBQVKS0sjoAYQcjabTWlpaSooKFBRUVGkmwMAAAAvCKp95ChKRvEgAOHi+HtDUUQAAIDoRVDtJ3qpAYQLf28AAACin6NImRSeQmUxH1QDAAAAAOBATzUAAAAAAAEiqAYQkCuuuEI2m03r16+PdFPCYsyYMbLZbFqyZEnAx1i/fr1sNpuuuOKKoLULAAAAkUVQDZ84ggHXR82aNdWsWTP17NlT999/v/78889INzPqPPXUUzr33HPVqlUr1apVS3Xr1lXHjh01ZswY7dy50+N7iouL9fTTT+voo49WjRo11KhRIw0ePFh//fVXmFsPAAAAoCLhDqpjep5qSG3atNGll14qSSooKNC2bdu0YsUKPfDAA3rooYd05513aty4cRRYOujll1+WJJ122mlq0qSJ9u/fr6+//lpjx47V1KlTtWLFCjVp0sTtPdddd51eeukldejQQcOHD9fmzZv19ttv69NPP9VXX32ltm3bRuKjVHk33XSTBg0apBYtWkS6KQAAAIgi4S5URlAd4w477DCNGTOmzPbPP/9cl112mcaPH6/ExEQ98MAD4W9cFPr666+VkpJSZvuoUaP04IMP6vHHH9ejjz5asn3x4sV66aWXdOqpp2r+/PmqXr26JOniiy/WOeeco5tuukmffPJJ2NoPp4YNG6phw4aRbgYAAACiDOnfCIpTTjlF8+bNU3Jysh555BFt3LixzD5z5sxRz549Va9ePaWkpOioo47SY4895nEO3r179+rOO+9URkZGyb4vvviilixZIpvNViawt9ls6t69u3JycnT55ZerSZMmSkhIcBv/unTpUvXt21cNGzZUcnKy2rZtq/vuu097XW8tufB3f088BdSSdMEFF0iS1q5d67b9xRdflCQ98MADJQG1JPXu3Vvdu3fXp59+qr///rvC87qO3V21apXOPfdc1a1bV7Vr19ZZZ52l7777zuP7NmzYoKuvvlrNmzdX9erVlZ6erquvvtqncy5YsEA2m0033nijx9f//PNPJSQkqFevXiXbunfvLpvNpqKiIo0ZM0atWrVScnKy2rVrp2effdbjcfbs2aPRo0friCOOUEpKiurXr69zzz1XX3zxRZl9XcdBv/LKKyUp9a1bt9ZTTz0lSbIsS48//rgOP/xwpaSkqG3btnr99dfLPZarqVOnql+/fmrVqlVJe3r16qXFixdX+DUDAABA7COoRtAcfvjhuvDCC1VYWKjZs2e7vXbPPfeof//+WrNmjbKysnTjjTeqRo0auuOOOzRo0CC3fe12u/r06aNHH31U9erV04gRI9S1a1fddttteuKJJ7ye/59//lHXrl31008/adCgQRo6dKhSU1MlSVOmTFH37t31xRdf6Nxzz9Xw4cOVnp6ucePG6cwzz1RhYaHbsfzd318fffSRJOmoo45y275kyRLVqlVL3bp1K/MeRzD62Wef+Xyev/76S926ddO+fft0ww036LzzztPixYt16qmn6uuvv3bb9/fff9cJJ5ygqVOn6vjjj9dtt92mY489VlOnTlXnzp31+++/l3uunj17qk2bNpo2bZrHGw8vvfSSLMvStddeW+a1wYMHa+rUqerVq5euvvpq7dy5U8OGDSu5yeCwf/9+nX766frf//6nWrVqaeTIkerXr58WL16s0047Te+8847Htk2aNEm33HKLjjvuOA0dOlRFRUUaMWKEXnrpJd1000169NFHlZmZqauuukr//POPhgwZoqVLl1b05ZUkDRs2TFu3btUZZ5yhW265RX369NGXX36pM844Q3PmzPHpGAAAAIhd4Q6qZUWZvLw8S5KVl5dX7n779u2zfv31V2vfvn1hall0WbdunSXJ6tWrV7n7vfzyy5Yk67LLLivZ9umnn5a8d/fu3SXbi4uLreuvv96SZL377rsl21966SVLktW7d2/rwIEDJdtXrVplpaSkWJKs0aNHu51XkiXJuvLKK93e43hftWrVrI4dO1o7duxwe238+PGWJOuxxx4LeH9fPP/889bo0aOtW2+91erevbslyTr22GOtnTt3luyze/duS5J11FFHeTzGu+++a0myRo0aVeH5HN8vSdbdd9/t9tq8efMsSdbRRx/ttr1Hjx6WJOv555932z558mRLknX66ae7bR8yZIglyVq3bl3JtocfftiSZL366qtu+xYVFVlNmza1DjnkEKuwsLBk+2mnnWZJsrp06eL2O7h69WqrWrVq1uGHH+52nLFjx1qSrEsuucQqLi4u2b5y5UqrevXqVt26da38/PyS7aNHj7YkWfXr17f+/PPPku1///23Vb16dSstLc1q166dtW3btpLXvvrqK0uS1bdvX7dzO461ePFit+1//fWXVdrmzZutZs2aWW3btnXb7vi+DBkypMx7PKnqf3cAAABiwdixliWZx0cf+fYeX+NQT+K2p7pzZyk9PbofnTuH/uvQrFkzSdKOHTtKtj3zzDOSpBdeeEG1atUq2W6z2TRhwgTZbDZNnz69ZPubb74pSRo3bpwSExNLth955JG6/PLLvZ67evXqeuSRR9zeI0nPP/+8Dhw4oKeffloNGjRwe+3OO+9Uo0aN3M7v7/6+eOGFFzR27Fg98cQTWrJkic466yzNmzdP9erVK9knLy9PkpSWlubxGI5ed8d+vqhbt67uvfdet229evVSz5499fPPP5ekgf/9999avHixjjzyyDI9yddff72OOOIILVq0yGNav6srr7xS1atX10svveS2/aOPPlJubq6GDBmipKSkMu8bP358yeeTTNZDt27dtGbNGv33338l21977TUlJSWV/Nw4HHvssRoyZIh27dpVJktCkkaMGKFDDz20ZD0jI0OnnHKK8vLydO+996pRo0Ylr3Xp0kWHHnqofvzxx3I/q0Pr1q3LbGvatKnOP/98/fHHH9qwYYNPxwEAAEBsolBZkGzZIuXkRLoV0emrr75SrVq1NHXqVI+v16hRQ6tXry5Z//HHH1WrVi0de+yxZfbt1q2bXnjhBY/Had26tcdCUl999ZUk6ZNPPtHChQvLvJ6UlOR2fn/398W3334rydxs+PLLL3X33XfruOOO08cff6xjjjnGr2P549hjj1Xt2rXLbM/MzNTChQv1/fff6/jjj9cPP/wgyVQpL125PSEhQaeeeqpWr16tH374QRkZGV7P16hRI2VlZWnGjBlavXq1jjjiCEkqCbKvueYaj+87/vjjy2xLT0+XJO3atUt16tRRfn6+/vrrL7Vv377kNVc9evTQiy++qB9++EGXXXaZ22udOnUqs3/Tpk3Lfa10erw3f/31l8aPH69FixYpJydHBQUFbq9v3rxZLVu29OlYAAAAiD1MqRUkpWZFikrhaOPmzZslya3nb+fOnTpw4IDGjh3r9X179uwpWc7Pz/cauDVu3NjrMby95pgPety4cd4bXon9/dGwYUP17dtXnTp1Utu2bXXttdeWBG+OHmpvPdH5+flu+/nC29fEsd1xLsexve3vCEAd+5Xnuuuu04wZM/TSSy/pscce0+bNmzV37lyddtppateuncf3uPZSO1SrZv5cOArZVaaN5R3f22sHDhzweB5Xa9eu1Yknnqj8/Hz16NFDffv2VWpqakmRvM8++6xMkA0AAID4QlAdJAc7Iqs8R2XkE044oWRbamqqbDabW0p4eVJTU7V9+3aPr23dutXr+7zNje0ImvLz81WnTh2fzu/P/oHIyMhQ+/bt9c0332jv3r2qWbOmatWqpaZNm2rdunWy2+1l0tj/+OMPSfJrnmpvXy/HdkeA7vjM3vbfsmWL237l6d69u4444gi9/vrreuihh/TKK6/Ibrd7LFDmj2C2MVgmTpyof//9V2+88UbJ/O0O119/vV9F5QAAABCbqP6NoPn999/19ttvKzk5WQMGDCjZ3qVLF/3zzz8lQWFFOnbsqD179pSkJLtavny53+3q0qWLJGdad7D3D1Rubq5sNptb8Hzaaadpz549HqeHcsxPfeqpp/p8ju+//167d+8us33ZsmWSVJJi70iBXrp0qSzLctvXsqySStieUqU9GTp0qLZv367Zs2dr6tSpqlevns4//3yf2+1JamqqDj30UK1du1Y5HsZaOG7o+NrGYPjzzz8lSf369XPbblmWx+8hAAAA4g9BNYLiiy++UK9evVRQUKC7775bzZs3L3lt+PDhklQyXVFpW7Zs0W+//Vayfskll0iS7rvvPhUXF5dsX716tV577TW/23bjjTeqWrVquvnmmz3Ot7xr1y59//33Ae/vTW5ursfgz7IsjRkzRlu3blXPnj2VnJxc8trQoUMlSaNGjXKbtmvu3LklBc78GZ+7a9euMmnsjrHiRx11VMlY5hYtWqhHjx5atWpVmbHvL7zwgn777Tedfvrp5Y6ndjVkyBClpKTolltu0V9//aXLLrvM65zd/hgyZIiKiop0zz33uAX/P/30k1599VWlpaWpf//+lT6Prxzfi88//9xt+4QJE/TLL7+ErR0AAACIHAqVwS9r167VmDFjJEmFhYXatm2bVqxYoZ9//lmJiYm67777NHr0aLf3nH322Ro1apQeeOABHXbYYTr77LPVsmVL/fPPP1q7dq2WLVumBx98UO3bt5dkKki/8cYb+uijj3Tssceqd+/e2rlzp2bMmKEzzzxTH3zwgRISfL8/c9RRR+nZZ5/VDTfcoMMPP1znnHOO2rRpo//++09//fWXPvvsM11xxRV67rnnAtrfmzVr1ujMM8/USSedpLZt26px48basWOHli1bpjVr1qhZs2aaPHmy23t69Oiha665Ri+99JKOO+44nXvuucrNzdXMmTNVv359Pf300z5/bskUJJsyZYq+/vprnXTSSVq/fr3eeecd1ahRo0yF7ilTpuiUU07Rtddeqw8++EBHHnmkVq1apffff1+NGjXSlClTfD5v/fr1dcEFF+iNN96QpEqnfjvceeed+uijj/TGG2/ot99+U8+ePbVt2zbNnDlTBw4c0IsvvhiylH1Prr/+er3yyis6//zzdeGFF6pBgwb66quvtHLlSp177rkl85EDAAAgfjFPNfNU+8R13mPHo0aNGlbTpk2tHj16WKNGjbLWrl1b7jHmz59v9e3b12rUqJGVlJRkNWnSxOratav1wAMPWH///bfbvrt377Zuu+02q1mzZlZycrJ15JFHWi+88ELJXM0TJ05021+Sddppp5V7/hUrVliDBg2ymjVrZiUlJVkNGza0jjvuOOvuu++2fvvtt0rvX1pubq515513Wl26dLEaNWpkVatWzapTp4513HHHWaNGjbL++ecfj++z2+3Wk08+aXXo0MFKTk62GjRoYF100UUVfn1duc6H/Msvv1jnnHOOlZqaatWqVcs644wzrG+//dbj+9avX29deeWVVtOmTa1q1apZTZs2ta688kpr/fr1Zfb1NE+1qwULFliSrJNOOslrOx3zVHvi7fi7d++2Ro0aZbVr165kburevXtby5YtK3MMb3NLV9R+T+3ydqzFixdb3bp1s+rUqWPVrVvXOuecc6zvvvvO4/7MUw0AABB/unRxzlNdXOzbeyozT7XNskoN2Iyw/Px8paWlKS8vr9wCR/v379e6devUunXroKSxIjD33Xefxo0bp48//li9e/eOdHOi1vr169W6dWsNGTJEr776akTa8Nhjj+mOO+7Qyy+/rKuuuioibYh1/N0BAACIfh07Sj/9JKWkuPdal8fXONQTxlTDJ7m5uWW2/frrr3rqqadUt25dde/ePfyNgs/279+vZ555RvXq1dOgQYMi3RwAAAAgZByBdFhSv8WYavjohhtu0Pr163XiiSeqXr16+vPPP/XBBx+oqKhIL7/8smqE6ycWfvn888/12Wef6ZNPPtGGDRs0fvx41QxHtQYAAAAgQhyFysJ12UtQDZ9ccMEFeu6555Sdna28vDzVrl1bp512mm677Tb16tUr0s2DFwsWLNDYsWPVsGFD3XLLLbr99tsj3SQAAAAgpMLdU82YagDwEX93AAAAol/NmiawPvpoM7baF4ypBgAAAABUeZYV/p5qgmoAAAAAQFwoKHAuE1QDAAAAAOAHR5EyKXyFymI+qI6yIeEA4hh/bwAAAKKb67zU9FRXIDExUZJUVFQU4ZYAqCoc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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#this creates an array for standardized polynomial features (here degree 30)\n",
    "poly30 = PolynomialFeatures(degree=30, include_bias=False)\n",
    "scaler = StandardScaler()\n",
    "x_poly30 = scaler.fit_transform(poly30.fit_transform(x))\n",
    "# features for first observation\n",
    "print(\"Features of the first observation:\",x_poly30[:1]) \n",
    "\n",
    "#fitting a linear model on higher order features\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(x_poly30, y)\n",
    "\n",
    "x_new_poly = scaler.transform(poly30.transform(x_new))\n",
    "y_new = lin_reg.predict(x_new_poly)\n",
    "\n",
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x, y, color=\"red\")\n",
    "plt.plot(x_new, y_new, \"b-\", linewidth=2, label=\"Degree 30 polynomial\")\n",
    "plt.legend(loc=\"upper left\", fontsize=14)\n",
    "plt.axis([-3, 3, 0, 12])\n",
    "plt.title('Model Fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94350823",
   "metadata": {},
   "source": [
    "We report the $R^2$ score and root mean squared metric by comparing the predicted and actual outcomes for our test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "f4142fde",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TEST R^2: 0.7697544745303144\n"
     ]
    }
   ],
   "source": [
    "y_train_pred = lin_reg.predict(x_poly30)\n",
    "train_r2 = r2_score(y, y_train_pred)\n",
    "train_rmse = np.sqrt(mean_squared_error(y, y_train_pred))\n",
    "\n",
    "\n",
    "x_poly30_test = scaler.transform(poly30.transform(x_test))\n",
    "y_test_pred = lin_reg.predict(x_poly30_test)\n",
    "test_r2 = r2_score(y_test, y_test_pred)\n",
    "rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))\n",
    "print(f'TEST R^2: {test_r2}')\n",
    "test_results.append({'Polynomial Degree': 30, 'Train R^2 Score': train_r2, 'Test R^2 Score': test_r2, 'Train RMSE': train_rmse, 'Test RMSE': rmse})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6cb9197d",
   "metadata": {},
   "source": [
    "Could we go higher and use more higher order polynomial features? Let us try fitting a 50 degree polynomial and test it's ramifications on the test data!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "37a188d9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Features of the first observation: [[-1.55915082  2.05866433 -2.36595779  2.6772171  -2.91462656  3.15733221\n",
      "  -3.34401533  3.54292672 -3.69404808  3.85995808 -3.98673531  4.12779132\n",
      "  -4.23752764  4.36012751 -4.45734198  4.56623907 -4.65373099  4.75233149\n",
      "  -4.8318967   4.92261121 -4.9954656   5.08000412 -5.14702124  5.22660857\n",
      "  -5.2884514   5.36397561 -5.42117091  5.4932839  -5.54626545  5.61545113\n",
      "  -5.66458616  5.73120732 -5.77681337  5.8411444  -5.88350062  5.9457508\n",
      "  -5.98510589  6.04543625 -6.08201413  6.14054983 -6.17455385  6.23139335\n",
      "  -6.26300947  6.31823144 -6.34763072  6.4012992  -6.42863968  6.48080804\n",
      "  -6.50623623  6.55695013]]\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9UAAAIQCAYAAACPGE2sAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAClLUlEQVR4nOzdd3gU5drH8d+SQOihSgtNkKJUu2BUFLuARvQIFrAf9ajYK4qiInpUbMd+1NcjWDCKFSsg2EBFEQsK0ntNqCHZzPvHw2RLdpPdzWyZzfdzXbkyMzs7M2mbvee+n/vxWJZlCQAAAAAARK1Gsi8AAAAAAAC3IqgGAAAAACBGBNUAAAAAAMSIoBoAAAAAgBgRVAMAAAAAECOCagAAAAAAYkRQDQAAAABAjAiqAQAAAACIEUE1AAAAAAAxIqgGAMClPB6PxowZE/XzlixZIo/Ho5deeilp1wAAQLogqAYAoApeeukleTweeTwezZo1q9zjlmWpbdu28ng8OuWUU5JwhbGbPn162dcW/HHWWWeFfM7XX3+tMWPGaMuWLYm9WAAAkiQz2RcAAEA6qF27tiZOnKjDDz88YPuMGTO0YsUKZWVlJenKqu6qq67SQQcdFLCtQ4cOkqSdO3cqM9P3duLrr7/WXXfdpZEjR6pRo0YJvEoAAJKDoBoAAAecdNJJevPNN/XYY48FBJkTJ07UAQccoA0bNiTx6qomNzdXQ4cODflY7dq1E3w1AACkFsq/AQBwwLBhw7Rx40Z9+umnZdt2796tyZMna/jw4SGfs337dl133XVq27atsrKy1LVrV/373/+WZVkB+xUVFemaa65R8+bN1aBBAw0ePFgrVqwIecyVK1fqggsuUIsWLZSVlaX99ttP//3vf537QoP4j6keM2aMbrjhBklSx44dy0rFlyxZErfzAwCQbGSqAQBwQIcOHXTYYYdp0qRJOvHEEyVJH330kQoKCnTWWWfpscceC9jfsiwNHjxY06ZN04UXXqg+ffro448/1g033KCVK1fqkUceKdv3oosu0v/+9z8NHz5c/fr10xdffKGTTz653DWsXbtWhx56qDwej/71r3+pefPm+uijj3ThhReqsLBQo0aNiulr27p1a7lMe5MmTVSjRuC9+by8PP3555+aNGmSHnnkETVr1kyS1Lx585jOCwCAGxBUAwDgkOHDh+uWW27Rzp07VadOHb366qs68sgj1bp163L7vvvuu/riiy90zz336LbbbpMkXXHFFTrjjDP06KOP6l//+pc6deqkn3/+Wf/73/90+eWX68knnyzb7+yzz9a8efMCjnnbbbfJ6/Xql19+UdOmTSVJ//znPzVs2DCNGTNGl156qerUqRP113XBBReU27Z48eKycdW2Xr16af/999ekSZN06qmnlnscAIB0RPk3AAAOOfPMM7Vz5069//772rp1q95///2wpd8ffvihMjIydNVVVwVsv+6662RZlj766KOy/SSV2y8462xZlt566y0NGjRIlmVpw4YNZR/HH3+8CgoK9OOPP8b0dd1xxx369NNPAz5atmwZ07EAAEg3ZKoBAHBI8+bNNXDgQE2cOFE7duyQ1+sN2+Br6dKlat26tRo0aBCwvXv37mWP259r1KihTp06BezXtWvXgPX169dry5YtevbZZ/Xss8+GPOe6deti+rp69uypgQMHxvRcAADSHUE1AAAOGj58uC6++GKtWbNGJ554YsKmlSotLZUknXPOORoxYkTIfXr16pWQawEAoDohqAYAwEGnnXaaLr30Un377bd6/fXXw+7Xvn17ffbZZ9q6dWtAtvqPP/4oe9z+XFpaqkWLFgVkpxcsWBBwPLszuNfrTWpW2ePxJO3cAAAkA2OqAQBwUP369fXUU09pzJgxGjRoUNj9TjrpJHm9Xj3xxBMB2x955BF5PJ6yDuL25+Du4RMmTAhYz8jI0Omnn6633npL8+fPL3e+9evXx/LlRK1evXqSpC1btiTkfAAAJBuZagAAHBau/NrfoEGDNGDAAN12221asmSJevfurU8++URTpkzRqFGjysZQ9+nTR8OGDdN//vMfFRQUqF+/fvr888+1cOHCcse8//77NW3aNB1yyCG6+OKLte+++2rTpk368ccf9dlnn2nTpk2Of63BDjjgAEmmE/lZZ52lmjVratCgQWXBNgAA6YagGgCAJKhRo4beffdd3XHHHXr99df14osvqkOHDnrwwQd13XXXBez73//+V82bN9err76qd955R0cffbQ++OADtW3bNmC/Fi1aaPbs2br77ruVn5+v//znP2ratKn2228/jR8/PiFf10EHHaSxY8fq6aef1tSpU1VaWqrFixcTVAMA0pbHsiwr2RcBAAAAAIAbMaYaAAAAAIAYEVQDAAAAABAjgmoAAAAAAGIUdVD95ZdfatCgQWrdurU8Ho/eeeedsseKi4t10003qWfPnqpXr55at26t8847T6tWrXLymgEAAAAASAlRB9Xbt29X79699eSTT5Z7bMeOHfrxxx81evRo/fjjj8rPz9eCBQs0ePBgRy4WAAAAAIBUUqXu3x6PR2+//bZOPfXUsPvMmTNHBx98sJYuXap27drFeioAAAAAAFJO3OepLigokMfjUaNGjUI+XlRUpKKiorL10tJSbdq0SU2bNpXH44n35QEAAAAAqjnLsrR161a1bt1aNWpEV9Ad16B6165duummmzRs2DA1bNgw5D7jxo3TXXfdFc/LAAAAAACgUsuXL1dOTk5Uz4lb+XdxcbFOP/10rVixQtOnTw8bVAdnqgsKCtSuXTstX7487HMAAAAAAHBKYWGh2rZtqy1btig7Ozuq58YlU11cXKwzzzxTS5cu1RdffFFhcJyVlaWsrKxy2xs2bEhQDQAAAABImFiGIDseVNsB9V9//aVp06apadOmTp8CAAAAAICUEHVQvW3bNi1cuLBsffHixfrpp5/UpEkTtWrVSkOHDtWPP/6o999/X16vV2vWrJEkNWnSRLVq1XLuygEAAAAASLKox1RPnz5dAwYMKLd9xIgRGjNmjDp27BjyedOmTdNRRx1V6fELCwuVnZ2tgoICyr8BAAAAAHFXlTg06kz1UUcdpYri8Cr0PQMAAAAAwFWim4ALAAAAAACUIagGAAAAACBGcZlSKxmKi4vl9XqTfRkA0lBGRoZq1qyZ7MsAAABACnJ9UF1YWKgNGzaoqKgo2ZcCII1lZWWpWbNmNFAEAABAAFcH1YWFhVq5cqXq16+vZs2aqWbNmjFN1g0A4ViWpeLiYhUUFGjlypWSRGANAACAMq4Oqjds2KD69esrJyeHYBpA3NSpU0cNGjTQihUrtGHDBoJqAAAAlHFto7Li4mIVFRUpOzubgBpA3Hk8HmVnZ6uoqEjFxcXJvhwAAACkCNcG1XZTMpoHAUgU+/WGpogAAACwuTaotpGlBpAovN4AAAAgmOuDagAAAAAAkoWgGgAAAACAGBFUA2lizJgx8ng8mj59erIvJSFeeukleTwevfTSS1U6jsfj0VFHHeXINQEAAKD6Iah2qSVLlsjj8QR81K1bV61bt9YxxxyjO+64Q4sWLUr2ZaackSNHlvu++X+E8+qrr+rggw9WvXr11LhxY51yyin68ccfE3jlAAAAAFKRq+ephtSpUyedc845kqSioiKtW7dOs2fP1tixY3Xffffpxhtv1L333kuDpSBXX321GjVqFNG+9957r26//Xa1b99e//znP7V161a99tpr6tevnz7//HP1798/vheLkE477TQdeuihatWqVbIvBQAAANUYQbXLde7cWWPGjCm3fdasWTr33HM1btw4ZWRkaOzYsYm/uBQ2atQodejQodL9/vrrL40ZM0ZdunTR7NmzlZ2dLUm6/PLLdeihh+riiy/W/PnzVaMGRR+Jlp2dXfbzAAAAAJKFSCBNHX744Zo6daqysrL0wAMPaPny5eX2mTJlio455hg1btxYtWvXVo8ePfTvf/875By8O3bs0I033qi2bduW7fvcc89p+vTp8ng85QJ7e5zqypUrdd5556lly5aqUaNGwHjfL7/8UoMGDVKzZs2UlZWlffbZR7fffrt27NgR8muKdn8nvPjiiyopKdFtt90WEMD16dNHw4YN0++//65Zs2ZFdCz7e7JixQoNGzZMzZo1U926ddW/f3999tlnIZ+zYcMGjRo1Sh07dlRWVpb22msvnXnmmZo/f36l5/vrr79Uo0YNnXTSSSEf37p1q+rXr69u3bqVbbPL4xcvXqzHHntM3bp1U1ZWltq3b6+77rpLpaWl5Y5TUlKihx9+WL1791adOnWUnZ2tAQMG6L333iu3r/846Pfee0+HHHKI6tatqzZt2mj06NFlx3/55ZfLjteuXTs9+OCDFR7L39tvv61hw4apc+fOqlu3rrKzs5Wbm6u33nqr0u8ZAAAAEC0y1Wmsa9euOvPMM/XKK6/onXfe0ZVXXln22C233KL7779fbdq0UV5enrKzszVz5kzdcMMN+u677/Tmm2+W7ev1enXKKado2rRp6tmzp4YPH65Nmzbpuuuuq7DB08aNG3XYYYepSZMmOuuss7Rr1y41bNhQkvTUU0/piiuuUKNGjTRo0CDttdde+v7773Xvvfdq2rRpmjZtmmrVqlV2rGj3r8z777+vrVu3KisrS927d9cxxxwT8vn2TYDjjjuu3GPHH3+8XnrpJc2YMUNHHHFEROfdvHmz+vfvr+bNm+uiiy7S+vXr9frrr+uEE07Q5MmTdeqpp5btu379eh122GFatGiRjjrqKJ111llavHixJk+erA8++EAff/yxDj/88LDn2meffTRgwAB9/PHHWr58udq2bRvw+MSJE7V9+3ZddNFF5Z57ww03aMaMGTrllFN0/PHH65133tGYMWO0e/du3XvvvWX7WZaloUOHasqUKerSpYuuuOIKbd++Xa+//roGDx6shx9+WNdcc02547/99tv65JNPdOqpp6p///764IMPdM8998iyLGVnZ+uee+7RkCFDdNRRR+mtt97SjTfeqBYtWui8886r9Ht8yy23qFatWjr88MPVqlUrrV+/Xu+++66GDh2qxx57LODvAAAAAKgyK8UUFBRYkqyCgoIK99u5c6f122+/WTt37kzQlaWWxYsXW5Ks448/vsL9XnjhBUuSde6555Zt++STT8qeu23btrLtpaWl1j//+U9LkjV58uSy7c8//7wlyTrxxBOtkpKSsu2//vqrVbt2bUuSdeeddwacV5IlyTr//PMDnmM/LzMz0+rdu7e1YcOGgMfGjRtnSbL+/e9/x7x/RUaMGFF2bf4frVq1sqZOnVpu/2bNmln169cPeazvv/++3Pe2Iva5hg8fbpWWlpZt//nnn61atWpZzZs3t3bs2FG2/fzzz7ckWbfcckvAcT744ANLktW5c2fL6/WWbb/zzjstSda0adPKtr3++uuWJGvMmDHlrufAAw+0atWqZa1bt65sm/396dixo7Vq1aqy7evXr7caNWpkNWjQwCoqKirb/vLLL1uSrCOPPDJg+9KlS61mzZpZmZmZ1qJFi8q2v/jii5Ykq2bNmtbs2bPLthcWFlp77bWXVbduXatly5YBz1m2bJlVq1Ytq2fPngHXbx/rxRdfDNju/1zb1q1brZ49e1rZ2dnW9u3bAx6zrz8S1f11BwAAIF1FGoeGkrbl3wceKOXkpPbHgQfG//vQunVrSaaM2PbEE09Ikp599lnVq1evbLvH49H9998vj8ejSZMmlW3/3//+J8k07MrIyCjbvu+++1aYOaxVq5YeeOCBgOdI0jPPPKOSkhI9/vjjatq0acBjN954o5o3bx5w/mj3r8gRRxyhN954Q8uWLdPOnTv1119/6e6779aWLVs0ePBgff/99wH7FxQUhB23a2fdCwoKIjq3JGVkZOi+++4LaBzXq1cvnXvuuVq/fr0+/PBDSdLu3bs1adIkNW3aVLfffnvAMU466SQde+yxWrhwob766qsKz3faaaepRYsWevHFFwNKt+fNm6fvv/9eQ4YMUfPmzcs9b/To0QENwJo1a6YhQ4Zo69atWrBgQdn2l19+WZL0wAMPBGT627Vrp2uuuUYlJSV69dVXyx3/nHPO0UEHHVS23qBBA51yyinasWOHLrvsMu29995lj7Vt21aHH364fvvtN5WUlFT49UoKeK6tfv36GjlypAoKCjRnzpxKjwEAAABEKm3Lv9eskVauTPZVpKZvv/1W9erV03//+9+Qj9epU0d//PFH2frPP/+sevXqqW/fvuX27d+/v5599tmQx+nYsaOaNWsW8vyS9PHHH+vzzz8v93jNmjUDzh/t/hW54IILAtY7d+6s0aNHq02bNrrwwgt199136913343oWLFo166d2rdvX257bm6uXnjhBc2dO1enn366/vjjD+3atUsDBgxQ3bp1y+0/YMAAffrpp/rpp5+Um5sb9nw1a9bU+eefr/vvv1+ffPKJTjjhBEnSc889J0m6+OKLQz7vgAMOKLctJydHkrRly5aybXPnzlXdunV18MEHh7xGSfrpp5/KPdanT59y2+wgPtxjXq9Xa9euVZs2bUJes23dunW6//779dFHH2np0qXauXNnwOOrVq2q8PkAAABANNI2qG7ZMtlXULlEXKMdQPhnIzdt2qSSkhLdddddYZ+3ffv2suXCwsJy43FtLVq0CHuMcI9t2rRJkgLG5lYk2v1jMWLECF1xxRXlMr/Z2dlhM9GFhYVl+0Qq3PfE3m6fyz52uP3tANTeryKXXHKJxo8fr+eff14nnHCCdu3apVdffVUdO3bUwIEDQz7HzsL7y8w0Lxf+jewq+t2o6BorOn5FjxUXF4c8l23Tpk066KCDtGzZMvXv318DBw5Uo0aNlJGRoZ9++klTpkxRUVFRhccAAAAAopG2QXVQFW+1ZTfa8i+1bdiwoTweT0BJeEUaNmyo9evXh3xs7dq1YZ8Xbm5sO2gqLCxUgwYNIjp/NPvHIiMjQ40aNdLmzZsDtu+zzz765ptvtGbNGrUMugvy119/le0TqXDfL3u7HaDbX3O4/desWROwX0U6duyo4447Tu+++67WrVunTz/9VJs3b9Z1111X5fnLGzZsqHXr1lX5Gp3ywgsvaNmyZRo7dmy5svn7779fU6ZMSdi1AAAAoHpI2zHVkP7880+98cYbysrK0mmnnVa2/ZBDDtHGjRvLgsLK9O7dW9u3bw9Zxvv1119HfV2HHHKIJF9Zt9P7x2LZsmVas2ZNubmrjzzySEnSJ598Uu45H3/8ccA+kZ5n6dKl5bbPnDlTkspK7Lt166batWtrzpw5IacMs2+WhCqVDuXSSy9VcXGxXn75ZT3//PPKyMjQ+eefH/F1h9O3b1/t2LFDs2fPrvI1OmHRokWSpCFDhpR7zP4eAwAAAE4iqE5TX331lY4//ngVFRXp5ptvDhiHetVVV0ky44s3btxY7rlr1qzR77//XrZ+9tlnS5Juv/32gGZXf/zxR1mjqmhcfvnlyszM1JVXXqlly5aVe3zLli2aO3duzPuHs2bNGq0MMdB+y5YtGjlypCRp+PDhAY+df/75yszM1L333htQBv7TTz9p0qRJ6t69e4XTWgXzer269dZbZVlW2bZ58+bplVdeUfPmzcvmlK5Vq5aGDRumDRs2aNy4cQHHmDp1qj7++GN17txZ/fv3j+i8gwYNUuvWrfXII49oxowZOvnkk8ua2FXFiBEjJJlprPxLs5cvX66HH35YmZmZZb8/iWCPVw+eO3zixIllTeAAAAAAJ6Vt+Xd1sXDhQo0ZM0aS6Ri9bt06zZ49W7/88osyMjJ0++2368477wx4zgknnKDRo0dr7Nix6ty5s0444QS1b99eGzdu1MKFCzVz5kzdc8896t69uyQTWL7yyiv64IMP1LdvX5144onatGmTXnvtNR177LF67733VKNG5PdnevToof/85z+67LLL1LVrV5100knq1KmTtm7dqr///lszZszQyJEj9fTTT8e0fzh//PGHjj32WPXr10/77LOPmjdvruXLl2vq1KnauHGjjj76aN14440Bz+nSpYvGjBmj22+/Xb1799bpp5+urVu36rXXXpNkGn5F87X36tVLs2bN0kEHHaSBAweWzVNdUlKiZ599VnXq1Cnbd/z48ZoxY4buueceff311zrkkEO0ZMkSvfnmm6pbt65efPHFiM+dmZmpCy+8UGPHjpUUvkFZtM4991zl5+drypQp6tWrl0455ZSyeao3bdqkhx56KGQ37ng599xzNX78eF155ZWaNm2a2rdvr59//lmff/658vLylJ+fn7BrAQAAQPVAUO1yixYtKms4VqdOHTVq1EjdunXT6NGjNWLECHXq1Cnk8+6++24dccQReuyxx/T5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",
      "text/plain": [
       "<Figure size 1200x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#this creates an array for standardized polynomial features (here degree 50)\n",
    "poly50 = PolynomialFeatures(degree=50, include_bias=False)\n",
    "scaler = StandardScaler()\n",
    "x_poly50 = scaler.fit_transform(poly50.fit_transform(x))\n",
    "# features for first observation\n",
    "print(\"Features of the first observation:\",x_poly50[:1]) \n",
    "\n",
    "#fitting a linear model on higher order features\n",
    "lin_reg = LinearRegression()\n",
    "lin_reg.fit(x_poly50, y)\n",
    "\n",
    "x_new_poly = scaler.transform(poly50.transform(x_new))\n",
    "y_new = lin_reg.predict(x_new_poly)\n",
    "\n",
    "plt.figure(figsize=(12, 6))  \n",
    "plt.scatter(x, y, color=\"red\")\n",
    "plt.plot(x_new, y_new, \"b-\", linewidth=2, label=\"Degree 50 polynomial\")\n",
    "plt.legend(loc=\"upper left\", fontsize=14)\n",
    "plt.axis([-3, 3, 0, 12])\n",
    "plt.title('Model Fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8ab54950",
   "metadata": {},
   "source": [
    "Finally, we report the $R^2$ score and root mean squared metric by comparing the actual outcomes for our test data with the predictions made using this very high order polynomial."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5bee8a98",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "TEST R^2: 0.27024008670544963\n"
     ]
    }
   ],
   "source": [
    "y_train_pred = lin_reg.predict(x_poly50)\n",
    "train_r2 = r2_score(y, y_train_pred)\n",
    "train_rmse = np.sqrt(mean_squared_error(y, y_train_pred))\n",
    "\n",
    "x_poly50_test = scaler.transform(poly50.transform(x_test))\n",
    "y_test_pred = lin_reg.predict(x_poly50_test)\n",
    "test_r2 = r2_score(y_test, y_test_pred)\n",
    "rmse = np.sqrt(mean_squared_error(y_test, y_test_pred))\n",
    "print(f'TEST R^2: {test_r2}')\n",
    "test_results.append({'Polynomial Degree': 50, 'Train R^2 Score': train_r2, 'Test R^2 Score': test_r2, 'Train RMSE': train_rmse, 'Test RMSE': rmse})"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "24b892fe",
   "metadata": {},
   "source": [
    "Summarizing the results obtained above makes it clear that while the choice of going from a simple linear model to a more complex one was the right idea, increasing model complexity by fitting higher order polynomials ceases to pay off beyond a point. \n",
    "\n",
    "In fact, our results clearly show that as the model complexity goes up, we obtain steady improvements in fitting the curve to the training data as evidenced by the increase in the `Train R^2 Score` in the table below. However, the `Test R^2 Score` only goes up from the degree 1 polynomial to the degree 3 polynomial. Beyond that, higher order polynomial functions fitted on the data do not exhibit the improvements in predicting the test data that it shows at the time of training. Hence, the higher order polynomials in this case, beyond degree 3, result in **overfitted** models."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "8b8b3668",
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "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>Polynomial Degree</th>\n",
       "      <th>Train R^2 Score</th>\n",
       "      <th>Test R^2 Score</th>\n",
       "      <th>Train RMSE</th>\n",
       "      <th>Test RMSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.457378</td>\n",
       "      <td>0.560861</td>\n",
       "      <td>1.730694</td>\n",
       "      <td>1.631562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3</td>\n",
       "      <td>0.817757</td>\n",
       "      <td>0.787060</td>\n",
       "      <td>1.002991</td>\n",
       "      <td>1.136139</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>30</td>\n",
       "      <td>0.851246</td>\n",
       "      <td>0.769754</td>\n",
       "      <td>0.906162</td>\n",
       "      <td>1.181404</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>50</td>\n",
       "      <td>0.867291</td>\n",
       "      <td>0.270240</td>\n",
       "      <td>0.855897</td>\n",
       "      <td>2.103259</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Polynomial Degree  Train R^2 Score  Test R^2 Score  Train RMSE  Test RMSE\n",
       "0                  1         0.457378        0.560861    1.730694   1.631562\n",
       "1                  3         0.817757        0.787060    1.002991   1.136139\n",
       "2                 30         0.851246        0.769754    0.906162   1.181404\n",
       "3                 50         0.867291        0.270240    0.855897   2.103259"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# @hidden_cell\n",
    "test_results_df = pd.DataFrame(test_results)\n",
    "display(test_results_df)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7e359eac",
   "metadata": {},
   "source": [
    "In general, complex models typically utilize more parameters to characterize a function that predicts the outcome variable. This is when overfitting can occur.\n",
    "- *A model that overfits tends to follow the training data, whose predictions it uses to optimize the model and determine values of model parameters, too closely.* However, for most practical purposes, the data available to us also exhibit noise. In trying to mimic the training data and its outcomes, overfitted models also end up mimic the inherent noise.\n",
    "- *A model that is overfit will not give good predictions for test observations that were not part of the training set.* This results directly from mimicking the noise within the data, alongside the underlying trends that helps predict the outcomes. Noise adds randomness but is not a reproducible phenomenon and does not help us predict outcomes for the test data better. Hence it should not be taken into consideration at the time of model construction even if that entails performing worse at predicting the training data. \n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc691bf8",
   "metadata": {},
   "source": [
    "<img align=\"center\" src=\"model-complexity.jpeg\" width=\"100%\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b43a9cf9",
   "metadata": {},
   "source": [
    "Hence to select the most suitable model for a prediction problem, it is essential to detect possible overfitting."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ddec3e8e",
   "metadata": {},
   "source": [
    "## Overfitting Treatment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2ad80406",
   "metadata": {},
   "source": [
    "The previous demonstration of overfitting also hints at how we typically incorporate strategies to detect this phenomenon at the time of model construction to choose the most optimal model. In order to address overfitting, we are concerned with any noticeable drop of model performance from training to test. While the actual test data will only be available to the model upon being productionized, we can simulate a test environment by leaving out a portion of the observed data available at the start of model building from being used for training. Instead, this data, that is initially *held out* at the time of training, is used to get an unbiased estimate of the fitted model's generalization capabilities. A dip in performance in the data unused for training reveals us the extent to which the resulting model is overfitted to the training set.\n",
    "\n",
    "There are a few different ways to approach **data splitting** to detect overfitting during model construction."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b6494ca3",
   "metadata": {},
   "source": [
    "### Hold-out set\n",
    "\n",
    "What we have been demonstrating so far to tackle overfitting is separating out a *validation* or *hold-out* set at the onset of training from the full sample of observed data available to us. Typically we randomize the data prior to splitting to avoid any implicit patterns from overpopulating the training or test split, instead of being evenly distributed across both. Depending on the amount of data available we can do a 70-30 split with the larger split allotted for training. \n",
    "\n",
    "Take the previously used housing data for example. As shown in the housing price prediction case study, we split our data into training and holdout partitions, prior to applying steps like feature scaling or standardization. We use the `train_test_split` function from the `model_selection` package of `scikit-learn` and specify the fraction of data the forms the hold-out set using the `test_size` parameter."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "f1f75670",
   "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>floor_size</th>\n",
       "      <th>bed_room_count</th>\n",
       "      <th>built_year</th>\n",
       "      <th>room_count</th>\n",
       "      <th>garage_size</th>\n",
       "      <th>parking_lot</th>\n",
       "      <th>sold_date</th>\n",
       "      <th>sold_price</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2068</td>\n",
       "      <td>3</td>\n",
       "      <td>2003</td>\n",
       "      <td>6</td>\n",
       "      <td>768</td>\n",
       "      <td>3</td>\n",
       "      <td>Aug2015</td>\n",
       "      <td>195500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3372</td>\n",
       "      <td>3</td>\n",
       "      <td>1999</td>\n",
       "      <td>6</td>\n",
       "      <td>480</td>\n",
       "      <td>2</td>\n",
       "      <td>Dec2015</td>\n",
       "      <td>385000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3130</td>\n",
       "      <td>3</td>\n",
       "      <td>1999</td>\n",
       "      <td>7</td>\n",
       "      <td>400</td>\n",
       "      <td>2</td>\n",
       "      <td>Jan2017</td>\n",
       "      <td>188000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3991</td>\n",
       "      <td>3</td>\n",
       "      <td>1999</td>\n",
       "      <td>8</td>\n",
       "      <td>400</td>\n",
       "      <td>2</td>\n",
       "      <td>Nov2014</td>\n",
       "      <td>375000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1450</td>\n",
       "      <td>2</td>\n",
       "      <td>1999</td>\n",
       "      <td>7</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>Jan2015</td>\n",
       "      <td>136000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   floor_size  bed_room_count  built_year  room_count  garage_size  \\\n",
       "0        2068               3        2003           6          768   \n",
       "1        3372               3        1999           6          480   \n",
       "2        3130               3        1999           7          400   \n",
       "3        3991               3        1999           8          400   \n",
       "4        1450               2        1999           7          200   \n",
       "\n",
       "   parking_lot sold_date  sold_price  \n",
       "0            3   Aug2015      195500  \n",
       "1            2   Dec2015      385000  \n",
       "2            2   Jan2017      188000  \n",
       "3            2   Nov2014      375000  \n",
       "4            1   Jan2015      136000  "
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_list = ['floor_size','bed_room_count','built_year','room_count','garage_size','parking_lot','sold_date','sold_price']\n",
    "housing_data_df = housing_df[feature_list]\n",
    "housing_data_prices = housing_df['sold_price']\n",
    "housing_data_df.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4db57200",
   "metadata": {},
   "source": [
    "Here the original data has 106 rows and upon splitting we separate 30% of the data as our hold-out set."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "d6e5d8a3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Initial Dataset size: 106 rows\n",
      "Training data size: 74 rows\n",
      "Test data size: 32 rows\n"
     ]
    }
   ],
   "source": [
    "print(\"Initial Dataset size: \"+str(len(housing_data_df))+\" rows\")\n",
    "housing_data_df_train, housing_data_df_test, housing_data_prices_train, housing_data_prices_test = train_test_split(housing_data_df, housing_data_prices, test_size=0.3, random_state=42)\n",
    "print(\"Training data size: \"+str(len(housing_data_df_train))+\" rows\")\n",
    "print(\"Test data size: \"+str(len(housing_data_df_test))+\" rows\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2176e193",
   "metadata": {},
   "source": [
    "The hold-out set approach demonstrated above is conceptually simple and easily implementable. However, it could present with two potential drawbacks:\n",
    "\n",
    "- Depending on the split, different versions of the hold-out set could include different observations from the data and therefore provide a variable estimate of the test error. To reduce the randomness of the splitting process, we can set the `random_state` parameter in the `train_test_set` to a specific integer value. This will help generate reproducible splits across different executions of the function and thereby generate a stable validation error.\n",
    "- Regardless of the split ratio, we need to make sure enough data is available for training. Otherwise we risk compromising model generalizability that would anyway result in an underperforming model. Hence this strategy is not appropriate when the initial size of observed samples is limited.\n",
    "\n",
    "To address both of these issues, we use cross-validation as an alternative strategy.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b09fed5",
   "metadata": {},
   "source": [
    "### Cross-validation"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f18165e3",
   "metadata": {},
   "source": [
    "In the absence of a large dataset, reserving an exclusive validation or hold-out set is infeasible as it leaves too little data for effective model training. As a workaround, cross-validation techniques suggest splitting the data into multiple folds or subsets. Over several iterations, one of the subsets is reserved to be the validation fold while the rest are utilized for training. The validation fold remains unavailable during the training process. However, once the model is trained, it is used to estimate model performance. This process is repeated such that each subset serves as the validation fold at least once. The validation error, which is also an estimate for model performance, is the average of validation errors obtained across all folds.\n",
    "\n",
    "Suppose for a given learning task, we have obtained a dataset $D$ with $n$ observations : $\\{(x_{1}, y_{1}),(x_{2}, y_{2}),...,(x_{n}, y_{n})\\}$. Broadly we have two types of cross-validation strategies depending on the size of the folds drawn from this dataset:\n",
    "\n",
    "- **Leave-One-Out Cross Validation**: For this strategy, the validation fold only consists of one of the observations of the dataset while the rest of the observations collectively form the training fold.\n",
    "For a dataset $D$ with $n$ observations, this involves $n$ iterations over which each individual observation of the dataset is left out of training in the validation fold, while the rest of the observations are used to train the model of choice. Note that for an extremely large $n$, especially with models that have computationally expensive training process, leave-one-out cross-validation involves too many iteration and can involve a large computational overhead.\n",
    "\n",
    "- **K-fold Cross Validation**: An alternative to the previous approach is $k$-fold cross-validation where the dataset is divided into $k$ folds of approximately equal size. We say approximately because the dataset size $n$ need not be divisible by $k$ which could leave one of the folds smaller in size ($n\\%k$) than the others. In fact, leave-one-out cross-validation is a special case of $k$-fold where the size of each individual fold is one. $k$-fold cross-validation is the more common approach since it is computationally more efficient. It also provides stable and more practically reliable performance estimates of a model than the leave-one-out approach since the evaluation here involves testing the model on validation folds that consist of more than a single example.  \\\n",
    "    The $k$-fold cross-validation process with dataset $D$ would proceed as laid down in Algorithm {prf:ref}`kcv-algorithm`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f372cf7a",
   "metadata": {},
   "source": [
    "```{prf:algorithm} K-fold Cross Validation\n",
    ":label: kcv-algorithm\n",
    "\n",
    "**Inputs** \n",
    "Dataset $D$: $\\{(x_{1}, y_{1}),(x_{2}, y_{2}),...,(x_{n}, y_{n})\\}$\n",
    "$k$: number of folds\n",
    "model: learning algorithm of choice\n",
    "\n",
    "**Output** Mean cross-validation score $k\\_fold\\_cv\\_score$\n",
    "\n",
    "1. Shuffle the observations in $D$ to remove any accidental patterns within subsets of observations.\n",
    "2. Initialize array $cv\\_scores$ = []\n",
    "3. Split $D$ into $k$ subsets approximately of size $D//k$ : $D_{1}$, $D_{1}$, $...$, $D_{k}$\n",
    "4. **for** $i$ = $1 ... k$:\n",
    "\t1. $val\\_set$ = $D_{i}$\n",
    "\t2. $train\\_set$ = $D$ - $D_{i}$\n",
    "\t3. model.fit($train\\_set.features$, $train\\_set.labels$)\n",
    "\t4. $predictions$ = model.predict($val\\_set.features$)\n",
    "\t5. $score$ = evaluate($predictions$, $val\\_set.labels$)\n",
    "\t6. Append $score$ to $cv\\_scores$\n",
    "5. **end**\n",
    "6. $k\\_fold\\_cv\\_score$ = average($cv\\_scores$)\n",
    "7. Return $k\\_fold\\_cv\\_score$\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8b7612d",
   "metadata": {},
   "source": [
    "## Model Selection"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "90f67643",
   "metadata": {},
   "source": [
    "All the aforementioned validation approaches, that we have just discussed to treat overfitting, helps control model complexity for a predictions task.\n",
    "We can use these techniques to select the optimal form of the model. This can refer to the values of model-specific *hyperparameters* like degree of the polynomial for regression tasks. **Hyperparameters** are different from model parameters that are a byproduct of the training process. Instead, these are external parameters that do not directly characterize the model of choice but set the configurations around it. Their values are not learnt directly from the data but are chosen as part of the model selection process using a specific validation strategy. \n",
    "\n",
    "The general approach to model selection first separates the available data into training and validation sets. It then conducts an iterative search through a range of hyperparameters and selects the most optimal one which results in the best performing model on the validation set. We can illustrate this process using Algorithm {prf:ref}`model-selection-algorithm`."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8644fd27",
   "metadata": {},
   "source": [
    "```{prf:algorithm} Model Selection with a Validation Set\n",
    ":label: model-selection-algorithm\n",
    "\n",
    "**Inputs** \n",
    "Dataset $D$: $\\{(x_{1}, y_{1}),(x_{2}, y_{2}),...,(x_{n}, y_{n})\\}$\n",
    "model: learning algorithm of choice\n",
    "$S$: search space for a hyperparameter (e.g., range of values denoting degree of a polynomial)\n",
    "\n",
    "**Output** \n",
    "Best validation score $best\\_score$\n",
    "Optimal hyperparameter value $h\\_best$\n",
    "\n",
    "1. Shuffle the observations in $D$ to remove any accidental patterns within subsets of observations.\n",
    "2. Split $D$ into two subsets: $D\\_train$, $D\\_val$.\n",
    "3. Initialize $best\\_score$ = $-\\infty$\n",
    "4. Initialize $h\\_best$ = $None$\n",
    "5. **for** $h\\_val \\in S$:\n",
    "\t1. Initialize $model$ with hyperparameter $h\\_val$\n",
    "\t2. model.fit($D\\_train.features$, $D\\_train.labels$)\n",
    "\t3. $predictions$ = model.predict($D\\_val.features$)\n",
    "\t4. $score$ = evaluate($predictions$, $D\\_val.labels$)\n",
    "\t5. **if** $score > best\\_score$:\n",
    "        1. $best\\_score$ = $score$\n",
    "        2. $h\\_best$ = $h\\_val$\n",
    "    6. **end**\n",
    "6. **end**\n",
    "7. Return $h\\_best$, $best\\_score$\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52cb6a72",
   "metadata": {},
   "source": [
    "A caveat here lies in the fact that this process requires model complexity to vary discretely. This might not always be the case and there may not be a natural way to order models over a discrete range. \n",
    "Rather than searching through a sequence of models of varying complexity, we can fit a large model and apply constraints on the values that our model parameters can assume. In fact, the training process here involves simultaneously optimizing the loss or performance of a model for a predictive task, as well as the constraints around the size of model coefficients. This technique is called ***regularization*** and will be covered in detail in the next section."
   ]
  }
 ],
 "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.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
