diff --git a/baseline_performance.ipynb b/baseline_performance.ipynb new file mode 100644 index 0000000..1a8fb0b --- /dev/null +++ b/baseline_performance.ipynb @@ -0,0 +1,432 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f75621c4-16cd-4320-a777-2fadf7231c9f", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.preprocessing import PolynomialFeatures" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a4f8dcc4-d866-442e-859d-7895e49acde8", + "metadata": {}, + "outputs": [], + "source": [ + "#Load the training and test data\n", + "X_train=np.load('/home/unipi/v.vichi3/Desktop/X_train.npy')\n", + "X_test=np.load('/home/unipi/v.vichi3/Desktop/X_test.npy')\n", + "y_train=np.load('/home/unipi/v.vichi3/Desktop/y_train.npy')\n", + "y_test=np.load('/home/unipi/v.vichi3/Desktop/y_test.npy')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "c1048709-1a49-4737-b1cd-7dd67033623d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(600000, 5) (52376, 5) (600000,) (52376,)\n" + ] + } + ], + "source": [ + "print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "0edb7d7f-e148-4612-9c7c-97c572e3cb4e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean of the MOID over the training set: 0.18033655783333338\n", + "MSE for test data: 0.016517902853446634\n", + "MAE for test data: 0.1054009483071237\n" + ] + } + ], + "source": [ + "#The baseline model is the one that computes the mean of the target variable on the training set and returns, for \n", + "#all instances in the test set, that mean\n", + "y_bar=y_train.mean()\n", + "print(\"Mean of the MOID over the training set:\", y_bar)\n", + "#Compute the MSE and MAE\n", + "MSE=0\n", + "MAE=0\n", + "for i in range(len(y_test)):\n", + " MSE += (y_test[i]-y_bar)**2\n", + " MAE += abs(y_test[i]-y_bar)\n", + "MAE=MAE/len(y_test)\n", + "MSE=MSE/len(y_test)\n", + "print(\"MSE for test data:\", MSE)\n", + "print(\"MAE for test data:\", MAE)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f4d08069-349a-4665-99e1-96b37e00c60e", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGxCAYAAACwbLZkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAhklEQVR4nO3de3RU1d3/8c8kIQm3hHJLgIQQJJUoIpIoBkUi2kSgtojPI2gFbaOAAoI8VqVQUaoNXkqxVhA0SKmKtGJd1FI1CiKKN2JivVBFBUIwMYK/JoiQmGT//kgzOrkxM5mZM2fm/VprVjIn+8zsszOzz/fs23EYY4wAAAAsEmF1BgAAQHgjGAEAAJYiGAEAAJYiGAEAAJYiGAEAAJYiGAEAAJYiGAEAAJYiGAEAAJYiGAEAAJYiGAGCxLp16+RwOFweffr0UXZ2tp599lmrsydJys7OVnZ2tss2h8Oh22+/3ZL8WM3bY9+3b58cDofWrVvn8zwBdhRldQYAuHr00Uc1dOhQGWNUUVGhP/7xj7r44ou1efNmXXzxxVZnr4XXX39dSUlJVmcDgI0RjABBZtiwYcrMzHQ+v+iii/SDH/xAGzZsCMpg5Oyzz7Y6CwBsjm4aIMjFxsYqOjpanTp1ctl+xx13aNSoUerZs6fi4uI0cuRIFRQUqPm9L7du3ars7Gz16tVLnTt31sCBA3XppZfqm2++caapra3VnXfeqaFDhyomJkZ9+vTRz3/+c3355ZcnzF/zroqm7qZt27bpuuuuU+/evdWrVy9NnjxZn3/+eYv9N27cqKysLHXt2lXdunVTbm6uiouLT/i+Te+zdetWXXvtterVq5fi4uI0ffp0HT16VBUVFbrsssvUo0cP9evXTzfddJO+/fZbl9f46quvdP3112vAgAGKjo7W4MGDtWjRItXU1Likq66udr5Ht27ddNFFF+njjz9uNV979uzRFVdcob59+yomJkbp6el68MEHT3g8QDijZQQIMvX19aqrq5MxRl988YXuvfdeHT16VFdccYVLun379mnmzJkaOHCgJOmNN97Q3LlzdfDgQd12223ONBMnTtSYMWO0du1a9ejRQwcPHtRzzz2n2tpadenSRQ0NDfrpT3+qHTt26Oabb9bo0aO1f/9+LVmyRNnZ2dq1a5c6d+7s8XFcc801mjhxop544gkdOHBAv/zlL3XllVdq69atzjS//e1vtXjxYv385z/X4sWLVVtbq3vvvVdjxozRW2+9pVNOOcWt95k8ebKefPJJFRcX61e/+pXq6ur00UcfafLkyZoxY4ZefPFF3X333erfv78WLFggSTp+/LjOP/98ffrpp7rjjjs0fPhw7dixQ/n5+SopKdE//vEPSZIxRpMmTdLOnTt122236cwzz9Rrr72m8ePHt8jLhx9+qNGjR2vgwIH63e9+p8TERD3//PO64YYbdOjQIS1ZssTjcgTCggEQFB599FEjqcUjJibGrFy5st196+vrzbfffmuWLl1qevXqZRoaGowxxjz11FNGkikpKWlz3w0bNhhJZtOmTS7b3377bSPJ5b3Hjh1rxo4d65JOklmyZEmL47j++utd0t1zzz1GkikvLzfGGFNaWmqioqLM3LlzXdIdOXLEJCYmmssuu6zdY256n+b7T5o0yUgyy5cvd9k+YsQIM3LkSOfzhx56yEgyf/nLX1zS3X333UaSeeGFF4wxxvzzn/80ksz999/vku6uu+5qcey5ubkmKSnJVFVVuaSdM2eOiY2NNV999ZUxxpi9e/caSebRRx9t9xiBcEE3DRBk1q9fr7fffltvv/22/vnPf+qqq67S7Nmz9cc//tEl3datW3XhhRcqPj5ekZGR6tSpk2677TYdPnxYlZWVkqQRI0YoOjpaM2bM0J/+9Cd99tlnLd7v2WefVY8ePXTxxRerrq7O+RgxYoQSExP18ssve3UcP/nJT1yeDx8+XJK0f/9+SdLzzz+vuro6TZ8+3eV9Y2NjNXbsWLff98c//rHL8/T0dEnSxIkTW2xvem+psfy6du2q//mf/3FJd/XVV0uSXnrpJUnStm3bJEk/+9nPXNI1b6k6fvy4XnrpJV1yySXq0qWLyzFNmDBBx48f1xtvvOHWMQHhhm4aIMikp6e3GMC6f/9+3XzzzbryyivVo0cPvfXWW8rJyVF2drYefvhhJSUlKTo6Ws8884zuuusuHTt2TJJ00kkn6cUXX9Q999yj2bNn6+jRoxo8eLBuuOEGzZs3T5L0xRdf6D//+Y+io6Nbzc+hQ4e8Oo5evXq5PI+JiZEkZ96++OILSdKZZ57Z6v4REe5dK/Xs2dPledNxtLb9+PHjzueHDx9WYmKiHA6HS7q+ffsqKipKhw8fdqaLiopqcTyJiYkuzw8fPqy6ujo98MADeuCBB1rNq7dlCYQ6ghHABoYPH67nn39eH3/8sc466yw9+eST6tSpk5599lnFxsY60z3zzDMt9h0zZozGjBmj+vp67dq1Sw888IDmz5+vhIQETZ061TnA9Lnnnmv1vbt37+6XY+rdu7ck6amnnlJKSopf3qM9vXr10ptvviljjEtAUllZqbq6Omf+evXqpbq6Oh0+fNglIKmoqHB5vR/84AeKjIzUtGnTNHv27FbfMzU11Q9HAtgfwQhgAyUlJZKkPn36SGqcwRIVFaXIyEhnmmPHjunPf/5zm68RGRmpUaNGaejQoXr88cf1zjvvaOrUqfrxj3+sJ598UvX19Ro1apRfj+P7cnNzFRUVpU8//VSXXnppwN63yQUXXKC//OUveuaZZ3TJJZc4t69fv975d0k6//zzdc899+jxxx/XDTfc4Ez3xBNPuLxely5ddP7556u4uFjDhw9vs6UJQEsEI0CQef/991VXVyepsen/6aefVmFhoS655BLnlfXEiRO1fPlyXXHFFZoxY4YOHz6s++67z9kV0uShhx7S1q1bNXHiRA0cOFDHjx/X2rVrJUkXXnihJGnq1Kl6/PHHNWHCBM2bN09nnXWWOnXqpLKyMm3btk0//elPXU7WvjJo0CAtXbpUixYt0meffeZcT+WLL77QW2+9pa5du+qOO+7w+fs2mT59uh588EFdddVV2rdvn0477TS9+uqr+u1vf6sJEyY4yycnJ0fnnXeebr75Zh09elSZmZl67bXXWg387r//fp177rkaM2aMrrvuOg0aNEhHjhzRJ598or///e8uM4kAfIdgBAgyP//5z52/x8fHKzU1VcuXL9f111/v3D5u3DitXbtWd999ty6++GINGDBA1157rfr27au8vDxnuhEjRuiFF17QkiVLVFFRoW7dumnYsGHavHmzcnJyJDW2mGzevFn333+//vznPys/P19RUVFKSkrS2LFjddppp/ntWBcuXKhTTjlF999/vzZs2KCamholJibqzDPP1KxZs/z2vlLj+i3btm3TokWLdO+99+rLL7/UgAEDdNNNN7lMwY2IiNDmzZu1YMEC3XPPPaqtrdU555yjLVu2aOjQoS6vecopp+idd97Rb37zGy1evFiVlZXq0aOH0tLSNGHCBL8eD2BnDmOarZAEAAAQQEztBQAAliIYAQAAliIYAQAAliIYAQAAliIYAQAAliIYAQAAlrLFOiMNDQ36/PPP1b179xb3kQAAAMHJGKMjR46of//+7d5vyhbByOeff67k5GSrswEAALxw4MABJSUltfl3WwQjTTfqOnDggOLi4izODQAAcEd1dbWSk5NPeMNNWwQjTV0zcXFxBCMAANjMiYZYMIAVAABYimAEAABYimAEAABYyhZjRgAAoccYo7q6OtXX11udFXgpMjJSUVFRHV52g2AEABBwtbW1Ki8v1zfffGN1VtBBXbp0Ub9+/RQdHe31axCMAAACqqGhQXv37lVkZKT69++v6OhoFrS0IWOMamtr9eWXX2rv3r1KS0trd2Gz9hCMAAACqra2Vg0NDUpOTlaXLl2szg46oHPnzurUqZP279+v2tpaxcbGevU6DGAFAFjC26toBBdf/B/5JAAAAEsRjAAAAEsRjADwqbIyadu2xp8A4A6CEQA+U1AgpaRI48Y1/iwosDpHgG9lZ2dr/vz5Vmcj5BCMAPCJsjJpxgypoaHxeUODNHMmLSTwr2BriWtayA2eIRgB4BN79nwXiDSpr5c++cSa/CD0Bbol7uqrr9b27dt1//33y+FwyOFwaN26dXI4HHr++eeVmZmpmJgY7dixQ1dffbUmTZrksv/8+fOVnZ3tfG6M0T333KPBgwerc+fOOv300/XUU0/59yCCFOuMAPCJtDQpIsI1IImMlIYMsS5PCF1ttcTl5kpJSf55z/vvv18ff/yxhg0bpqVLl0qSPvjgA0nSzTffrPvuu0+DBw9Wjx493Hq9xYsX6+mnn9aqVauUlpamV155RVdeeaX69OmjsWPH+ucgghTBCACfSEqS1qxpPCHU1zcGIqtX++/EgPDWXkucvz5z8fHxio6OVpcuXZSYmChJ+ve//y1JWrp0qX70ox+5/VpHjx7V8uXLtXXrVmVlZUmSBg8erFdffVWrV68mGAEAb+XlNV6ZfvJJY4sIgQj8Jdha4jIzMz1K/+GHH+r48eMtApja2lqdccYZvsyaLRCMAPCppCSCEPhfsLXEde3a1eV5RESEjDEu27799lvn7w3/jaL+8Y9/aMCAAS7pYmJi/JTL4EUwAgCwJSta4qKjo1VfX3/CdH369NH777/vsq2kpESdOnWSJJ1yyimKiYlRaWlp2HXJtIZgBABgW4FuiRs0aJDefPNN7du3T926dXO2cDQ3btw43XvvvVq/fr2ysrL02GOP6f3333d2wXTv3l033XSTbrzxRjU0NOjcc89VdXW1du7cqW7duumqq64K3EEFAab2AgDgpptuukmRkZE65ZRT1KdPH5WWlraaLjc3V7/+9a91880368wzz9SRI0c0ffp0lzS/+c1vdNtttyk/P1/p6enKzc3V3//+d6WmpgbiUIKKwzTv1ApC1dXVio+PV1VVleLi4qzODgCgA44fP669e/cqNTXV61vOI3i09/909/xNywgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAALAUwQgAAEFm0KBBWrFihfO5w+HQM888E/B83H777RoxYoTf34dgBACAIFdeXq7x48e7lTZQAYQvcddeAAD8oLa2VtHR0T55rcTERJ+8TrCiZQQAYF+FhZLD0fjTz7KzszVnzhzNmTNHPXr0UK9evbR48WI13W920KBBuvPOO3X11VcrPj5e1157rSRp586dOu+889S5c2clJyfrhhtu0NGjR52vW1lZqYsvvlidO3dWamqqHn/88Rbv3bybpqysTFOnTlXPnj3VtWtXZWZm6s0339S6det0xx136N1335XD4ZDD4dC6deskSVVVVZoxY4b69u2ruLg4jRs3Tu+++67L+yxbtkwJCQnq3r278vLydPz4cR+XYusIRgAA9vQ//yPl5DT+npPT+NzP/vSnPykqKkpvvvmm/vCHP+j3v/+9HnnkEeff7733Xg0bNkxFRUX69a9/rffee0+5ubmaPHmy/vWvf2njxo169dVXNWfOHOc+V199tfbt26etW7fqqaee0sqVK1VZWdlmHr7++muNHTtWn3/+uTZv3qx3331XN998sxoaGjRlyhT93//9n0499VSVl5ervLxcU6ZMkTFGEydOVEVFhbZs2aKioiKNHDlSF1xwgb766itJ0l/+8hctWbJEd911l3bt2qV+/fpp5cqV/ivM7zM2UFVVZSSZqqoqq7MCAOigY8eOmQ8//NAcO3asYy+UlmaM9N0jLc03GWzD2LFjTXp6umloaHBuu+WWW0x6eroxxpiUlBQzadIkl32mTZtmZsyY4bJtx44dJiIiwhw7dsx89NFHRpJ54403nH/fvXu3kWR+//vfO7dJMn/729+MMcasXr3adO/e3Rw+fLjVfC5ZssScfvrpLtteeuklExcXZ44fP+6y/aSTTjKrV682xhiTlZVlZs2a5fL3UaNGtXit5tr7f7p7/qZlBABgTw8/3P5zPzj77LPlcDicz7OysrRnzx7V19dLkjIzM13SFxUVad26derWrZvzkZubq4aGBu3du1e7d+9WVFSUy35Dhw5Vjx492sxDSUmJzjjjDPXs2dPtfBcVFenrr79Wr169XPKyd+9effrpp5Kk3bt3Kysry2W/5s/9hQGsAAB7ysiQJk9u7J556qnG5xbr2rWry/OGhgbNnDlTN9xwQ4u0AwcO1EcffSRJLgHOiXTu3NnjfDU0NKhfv356+eWXW/ytvcAnUAhGAAD21K2btGlT4++XXx6Qt3zjjTdaPE9LS1NkZGSr6UeOHKkPPvhAQ4YMafXv6enpqqur065du3TWWWdJkj766CP95z//aTMPw4cP1yOPPKKvvvqq1daR6OhoZ0vN9/NRUVGhqKgoDRo0qM28vPHGG5o+fbrL8QUC3TQAALjpwIEDWrBggT766CNt2LBBDzzwgObNm9dm+ltuuUWvv/66Zs+erZKSEu3Zs0ebN2/W3LlzJUknn3yyLrroIl177bV68803VVRUpGuuuabd1o/LL79ciYmJmjRpkl577TV99tln2rRpk15//XVJjbN69u7dq5KSEh06dEg1NTW68MILlZWVpUmTJun555/Xvn37tHPnTi1evFi7du2SJM2bN09r167V2rVr9fHHH2vJkiX64IMPfFh6bSMYAQDATdOnT9exY8d01llnafbs2Zo7d65mzJjRZvrhw4dr+/bt2rNnj8aMGaMzzjhDv/71r9WvXz9nmkcffVTJyckaO3asJk+e7Jx+25bo6Gi98MIL6tu3ryZMmKDTTjtNy5Ytc7bOXHrppbrooot0/vnnq0+fPtqwYYMcDoe2bNmi8847T7/4xS/0wx/+UFOnTtW+ffuUkJAgSZoyZYpuu+023XLLLcrIyND+/ft13XXX+ajk2ucw5r8TpINYdXW14uPjVVVVpbi4OKuzAwDogOPHj2vv3r1KTU1VbGys1dlxW3Z2tkaMGOGyTDva/3+6e/72qmVk5cqVzjfNyMjQjh072k1fU1OjRYsWKSUlRTExMTrppJO0du1ab94aAACEGI8HsG7cuFHz58/XypUrdc4552j16tUaP368PvzwQw0cOLDVfS677DJ98cUXKigo0JAhQ1RZWam6uroOZx4AANifx900o0aN0siRI7Vq1SrntvT0dE2aNEn5+fkt0j/33HOaOnWqPvvsM4/mRH8f3TQAEDrs2k2D1gW8m6a2tlZFRUXKaVp+979ycnK0c+fOVvfZvHmzMjMzdc8992jAgAH64Q9/qJtuuknHjh1r831qampUXV3t8gAAAKHJo26aQ4cOqb6+3jnytklCQoIqKipa3eezzz7Tq6++qtjYWP3tb3/ToUOHdP311+urr75qc9xIfn6+7rjjDk+yBgCwGRvMn4AbfPF/9GoAa/OV4owxba4e19DQIIfDoccff1xnnXWWJkyYoOXLl2vdunVtto4sXLhQVVVVzseBAwe8ySYAIAh16tRJkvTNN99YnBP4QtP/sen/6g2PWkZ69+6tyMjIFq0glZWVLVpLmvTr108DBgxQfHy8c1t6erqMMSorK1NaWlqLfWJiYhQTE+NJ1gAANhEZGakePXo470zbpUsXj5ZDR3Awxuibb75RZWWlevTo0eYqtO7wKBiJjo5WRkaGCgsLdckllzi3FxYW6qc//Wmr+5xzzjn661//qq+//lrdunWTJH388ceKiIhQUlKS1xkHANhXYmKiJDkDEthXjx49nP9Pb3k8m2bjxo2aNm2aHnroIWVlZWnNmjV6+OGH9cEHHyglJUULFy7UwYMHtX79eknS119/rfT0dJ199tm64447dOjQIV1zzTUaO3asHnbzDovMpgGA0FRfX69vv/3W6mzAS506dWq3RcTd87fH64xMmTJFhw8f1tKlS1VeXq5hw4Zpy5YtSklJkSSVl5ertLTUmb5bt24qLCzU3LlzlZmZqV69eumyyy7TnXfe6elbAwBCTGRkZIea9xEaWA4eAAD4hV+XgwcAAPAVghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghEAAGApghF0WFmZtG1b408AADxFMIIOKSiQUlKkceMafxYUWJ0jAIDdEIzAa2Vl0owZUkND4/OGBmnmTFpIAACeIRiB1/bs+S4QaVJfL33yiTX5AQDYE8EIvJaWJkU0+wRFRkpDhliTHwCAPRGMwGtJSdKaNY0BiNT4c/Xqxu0AALgryuoMwN7y8qTc3MaumSFDCEQAAJ4jGEGHJSURhAAAvEc3DQAAsBTB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KyMjQ4WFhS7bCwsLNXr06Fb3ycrKapH+hRdeUGZmZqvjRQAAQHjxuJtmwYIFeuSRR7R27Vrt3r1bN954o0pLSzVr1ixJjV0s06dPd6afNWuW9u/frwULFmj37t1au3atCgoKdNNNN/nuKAAAgG151E0jSVOmTNHhw4e1dOlSlZeXa9iwYdqyZYtSUlIkSeXl5S5rjqSmpmrLli268cYb9eCDD6p///76wx/+oEsvvdR3RwEAAGyLe9MAAAC/4N40AADAFghGAACApQhGAACApQhGAACApQhGAACApQhGAACApQhGAACApTxe9MwKTUuhVFdXW5wTAADgrqbz9omWNLNFMHLkyBFJUnJyssU5AQAAnjpy5Iji4+Pb/LstVmBtaGjQ559/ru7du8vhcPjsdaurq5WcnKwDBw6wsqufUdaBRXkHDmUdOJR14PiqrI0xOnLkiPr376+IiLZHhtiiZSQiIkJJfry3eFxcHB/sAKGsA4vyDhzKOnAo68DxRVm31yLShAGsAADAUgQjAADAUmEdjMTExGjJkiWKiYmxOishj7IOLMo7cCjrwKGsAyfQZW2LAawAACB0hXXLCAAAsB7BCAAAsBTBCAAAsBTBCAAAsBTBCAAAsFRYByMrV65UamqqYmNjlZGRoR07dlidJdvLz8/XmWeeqe7du6tv376aNGmSPvroI5c0xhjdfvvt6t+/vzp37qzs7Gx98MEHFuU4NOTn58vhcGj+/PnObZSzbx08eFBXXnmlevXqpS5dumjEiBEqKipy/p3y9o26ujotXrxYqamp6ty5swYPHqylS5eqoaHBmYay9s4rr7yiiy++WP3795fD4dAzzzzj8nd3yrWmpkZz585V79691bVrV/3kJz9RWVlZxzNnwtSTTz5pOnXqZB5++GHz4Ycfmnnz5pmuXbua/fv3W501W8vNzTWPPvqoef/9901JSYmZOHGiGThwoPn666+daZYtW2a6d+9uNm3aZN577z0zZcoU069fP1NdXW1hzu3rrbfeMoMGDTLDhw838+bNc26nnH3nq6++MikpKebqq682b775ptm7d6958cUXzSeffOJMQ3n7xp133ml69eplnn32WbN3717z17/+1XTr1s2sWLHCmYay9s6WLVvMokWLzKZNm4wk87e//c3l7+6U66xZs8yAAQNMYWGheeedd8z5559vTj/9dFNXV9ehvIVtMHLWWWeZWbNmuWwbOnSoufXWWy3KUWiqrKw0ksz27duNMcY0NDSYxMREs2zZMmea48ePm/j4ePPQQw9ZlU3bOnLkiElLSzOFhYVm7NixzmCEcvatW265xZx77rlt/p3y9p2JEyeaX/ziFy7bJk+ebK688kpjDGXtK82DEXfK9T//+Y/p1KmTefLJJ51pDh48aCIiIsxzzz3XofyEZTdNbW2tioqKlJOT47I9JydHO3futChXoamqqkqS1LNnT0nS3r17VVFR4VL2MTExGjt2LGXvhdmzZ2vixIm68MILXbZTzr61efNmZWZm6n//93/Vt29fnXHGGXr44Yedf6e8fefcc8/VSy+9pI8//liS9O677+rVV1/VhAkTJFHW/uJOuRYVFenbb791SdO/f38NGzasw2Vvi7v2+tqhQ4dUX1+vhIQEl+0JCQmqqKiwKFehxxijBQsW6Nxzz9WwYcMkyVm+rZX9/v37A55HO3vyySf1zjvv6O23327xN8rZtz777DOtWrVKCxYs0K9+9Su99dZbuuGGGxQTE6Pp06dT3j50yy23qKqqSkOHDlVkZKTq6+t111136fLLL5fEZ9tf3CnXiooKRUdH6wc/+EGLNB09d4ZlMNLE4XC4PDfGtNgG782ZM0f/+te/9Oqrr7b4G2XfMQcOHNC8efP0wgsvKDY2ts10lLNvNDQ0KDMzU7/97W8lSWeccYY++OADrVq1StOnT3emo7w7buPGjXrsscf0xBNP6NRTT1VJSYnmz5+v/v3766qrrnKmo6z9w5ty9UXZh2U3Te/evRUZGdkikqusrGwRFcI7c+fO1ebNm7Vt2zYlJSU5tycmJkoSZd9BRUVFqqysVEZGhqKiohQVFaXt27frD3/4g6KiopxlSTn7Rr9+/XTKKae4bEtPT1dpaakkPte+9Mtf/lK33nqrpk6dqtNOO03Tpk3TjTfeqPz8fEmUtb+4U66JiYmqra3V//t//6/NNN4Ky2AkOjpaGRkZKiwsdNleWFio0aNHW5Sr0GCM0Zw5c/T0009r69atSk1Ndfl7amqqEhMTXcq+trZW27dvp+w9cMEFF+i9995TSUmJ85GZmamf/exnKikp0eDBgylnHzrnnHNaTFH/+OOPlZKSIonPtS998803iohwPTVFRkY6p/ZS1v7hTrlmZGSoU6dOLmnKy8v1/vvvd7zsOzT81caapvYWFBSYDz/80MyfP9907drV7Nu3z+qs2dp1111n4uPjzcsvv2zKy8udj2+++caZZtmyZSY+Pt48/fTT5r333jOXX3450/J84PuzaYyhnH3prbfeMlFRUeauu+4ye/bsMY8//rjp0qWLeeyxx5xpKG/fuOqqq8yAAQOcU3uffvpp07t3b3PzzTc701DW3jly5IgpLi42xcXFRpJZvny5KS4udi5p4U65zpo1yyQlJZkXX3zRvPPOO2bcuHFM7e2oBx980KSkpJjo6GgzcuRI5/RTeE9Sq49HH33UmaahocEsWbLEJCYmmpiYGHPeeeeZ9957z7pMh4jmwQjl7Ft///vfzbBhw0xMTIwZOnSoWbNmjcvfKW/fqK6uNvPmzTMDBw40sbGxZvDgwWbRokWmpqbGmYay9s62bdtarZ+vuuoqY4x75Xrs2DEzZ84c07NnT9O5c2fz4x//2JSWlnY4bw5jjOlY2woAAID3wnLMCAAACB4EIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFIEIwAAwFL/H+Ou4p97zkbzAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(y_test[:100],'bo',markersize=3)\n", + "plt.plot(y_bar*np.ones((100,)), 'r*',markersize=3)\n", + "plt.legend(['true','predicted'],loc='upper right')\n", + "plt.title('Baseline model')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e8e12366-4e6e-412a-ab2e-6bc9a40eccd4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R squared on test set: 0.1100957393030294\n", + "Intercept: 0.11164309822134315\n", + "Coefficients: [ 4.82630044e-02 -1.51712311e-01 1.93476860e-03 1.55072413e-06\n", + " 3.06501066e-06]\n" + ] + } + ], + "source": [ + "#Linear Regression\n", + "lin_reg=LinearRegression().fit(X_train,y_train)\n", + "r_sq=lin_reg.score(X_test,y_test)\n", + "print(\"R squared on test set:\", r_sq)\n", + "print(\"Intercept:\", lin_reg.intercept_)\n", + "print(\"Coefficients:\", lin_reg.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "62de0aae-4bbf-4659-a0fe-0822fd297dbd", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred=lin_reg.intercept_+np.sum(lin_reg.coef_*X_test,axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "e040808e-1800-4976-923f-d1f0d8de2db3", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE for test data: 0.014699348657340645\n", + "MAE for test data: 0.09811802278034978\n" + ] + } + ], + "source": [ + "MSE=0\n", + "MAE=0\n", + "for i in range(len(y_test)):\n", + " MSE += (y_test[i]-y_pred[i])**2\n", + " MAE += abs(y_test[i]-y_pred[i])\n", + "MAE=MAE/len(y_test)\n", + "MSE=MSE/len(y_test)\n", + "print(\"MSE for test data:\", MSE)\n", + "print(\"MAE for test data:\", MAE)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "bbb18511-4532-432f-ada9-6eefd790b0a5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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LlwIi8WidlEMj9vas7i9PYfb2nO4rT3H09taFx1YiYiIyLi8OjNCRERE6mMwQkRERKpiMEJERESqYjBCREREqmIwQkRERKry6mBk1apViImJQUBAABISErB37161i6R7mZmZ+M1vfoO2bduiU6dOGDVqFL7//nuHdYQQWLRoEbp06YLAwEAMHToUR44cUanExpCZmQmTyYSMjAz7Mm5nZZ0+fRqPPPII2rdvj6CgIPTt2xd5eXn2/3N7K+Pq1atYsGABYmJiEBgYiO7du2PJkiWwWq32dbit5dmzZw/uvfdedOnSBSaTCf/4xz8c/i9lu9bU1GDatGno0KEDgoOD8bvf/Q6lpaWuF054qbffflv4+fmJdevWiaNHj4oZM2aI4OBgcerUKbWLpmupqani9ddfF99++60oKCgQd999t+jatau4cOGCfZ2lS5eKtm3biq1bt4rDhw+LsWPHis6dO4uqqioVS65fX375pejWrZvo06ePmDFjhn05t7Nyfv75ZxEdHS0mTZokvvjiC1FYWCg+/fRTcfLkSfs63N7KeO6550T79u3FRx99JAoLC8W7774r2rRpI1asWGFfh9tanu3bt4v58+eLrVu3CgDi/fffd/i/lO2anp4urr/+epGdnS2+/vprcccdd4hbbrlFXL161aWyeW0w0r9/f5Genu6wrFevXmLu3LkqlciYKioqBACxe/duIYQQVqtVREREiKVLl9rXuXz5sggNDRWvvfaaWsXUrerqahEbGyuys7NFcnKyPRjhdlbWnDlzxO23397s/7m9lXP33XeLRx991GHZ6NGjxSOPPCKE4LZWSsNgRMp2PX/+vPDz8xNvv/22fZ3Tp08LHx8f8c9//tOl8nhlM01tbS3y8vKQkpLisDwlJQW5ubkqlcqYKisrAQDt2rUDABQWFqK8vNxh21ssFiQnJ3Pby/DEE0/g7rvvxp133umwnNtZWR988AESExPx+9//Hp06dcKtt96KdevW2f/P7a2c22+/HZ999hmOHz8OADh06BD27duHkSNHAuC2dhcp2zUvLw9XrlxxWKdLly6Ij493edvr4qq9Sjt79izq6uoQHh7usDw8PBzl5eUqlcp4hBCYOXMmbr/9dsTHxwOAffs2te1PnTrl8TLq2dtvv42vv/4aX331VaP/cTsr64cffsDq1asxc+ZMPP300/jyyy8xffp0WCwWTJgwgdtbQXPmzEFlZSV69eoFs9mMuro6PP/88xg3bhwA/rbdRcp2LS8vh7+/P6677rpG67h67PTKYKSeyWRyeCyEaLSM5Js6dSq++eYb7Nu3r9H/uO1dU1JSghkzZmDHjh0ICAhodj1uZ2VYrVYkJibihRdeAADceuutOHLkCFavXo0JEybY1+P2dt2WLVvw5ptvYtOmTbjppptQUFCAjIwMdOnSBRMnTrSvx23tHnK2qxLb3iubaTp06ACz2dwokquoqGgUFZI806ZNwwcffICcnBxERkbal0dERAAAt72L8vLyUFFRgYSEBPj6+sLX1xe7d+/Gq6++Cl9fX/u25HZWRufOndG7d2+HZXFxcSguLgbA37WS/vSnP2Hu3Ll46KGHcPPNN2P8+PF48sknkZmZCYDb2l2kbNeIiAjU1tbi3//+d7PryOWVwYi/vz8SEhKQnZ3tsDw7OxsDBw5UqVTGIITA1KlTsW3bNuzcuRMxMTEO/4+JiUFERITDtq+trcXu3bu57Z0wfPhwHD58GAUFBfZbYmIi/uu//gsFBQXo3r07t7OCBg0a1GiI+vHjxxEdHQ2Av2slXbx4ET4+jocms9lsH9rLbe0eUrZrQkIC/Pz8HNYpKyvDt99+6/q2d6n7q47VD+3NysoSR48eFRkZGSI4OFgUFRWpXTRde/zxx0VoaKjYtWuXKCsrs98uXrxoX2fp0qUiNDRUbNu2TRw+fFiMGzeOw/IUcO1oGiG4nZX05ZdfCl9fX/H888+LEydOiLfeeksEBQWJN998074Ot7cyJk6cKK6//nr70N5t27aJDh06iNmzZ9vX4baWp7q6WuTn54v8/HwBQCxfvlzk5+fbp7SQsl3T09NFZGSk+PTTT8XXX38thg0bxqG9rlq5cqWIjo4W/v7+ol+/fvbhpyQfgCZvr7/+un0dq9UqFi5cKCIiIoTFYhFDhgwRhw8fVq/QBtEwGOF2VtaHH34o4uPjhcViEb169RJr1651+D+3tzKqqqrEjBkzRNeuXUVAQIDo3r27mD9/vqipqbGvw20tT05OTpP188SJE4UQ0rbrpUuXxNSpU0W7du1EYGCguOeee0RxcbHLZTMJIYRruRUiIiIi+byyzwgRERFpB4MRIiIiUhWDESIiIlIVgxEiIiJSFYMRIiIiUhWDESIiIlIVgxEiIiJSFYMRIiIiUhWDESIiIlIVgxEiIiJSFYMRIiIiUtX/B9WAVA65LUzjAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(y_test[:100],'bo',markersize=3)\n", + "plt.plot(y_pred[:100], 'r*',markersize=3)\n", + "plt.legend(['true','predicted'],loc='upper right')\n", + "plt.title('Linear Regression')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ad14da90-4d4b-4c7d-b2e1-1079a72b1dbd", + "metadata": {}, + "outputs": [], + "source": [ + "#Polynomial Regression, d=2\n", + "X_train2=PolynomialFeatures(degree=2,include_bias=False).fit_transform(X_train)\n", + "X_test2=PolynomialFeatures(degree=2,include_bias=False).fit_transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e53b6e8d-688d-4672-9144-ce708f0e4aaf", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R squared on test set: 0.27590125893584405\n", + "Number of parameters: 21\n", + "Intercept: -0.06682331717498041\n", + "Coefficients: [ 2.64761936e-01 -3.68484985e-01 1.98222192e-03 3.49081805e-08\n", + " -2.11007545e-05 5.18185781e-02 -6.50491717e-01 -8.39355649e-04\n", + " 3.53009628e-06 -1.87802540e-06 1.04755036e+00 8.00918631e-03\n", + " -1.17843565e-05 1.49267806e-05 -3.71225082e-05 -7.21465016e-08\n", + " -2.60640620e-08 9.40777227e-10 1.35524373e-08 4.81669732e-08]\n" + ] + } + ], + "source": [ + "pol_reg2=LinearRegression().fit(X_train2,y_train)\n", + "print(\"R squared on test set:\", pol_reg2.score(X_test2,y_test))\n", + "print(\"Number of parameters:\", len(pol_reg2.coef_)+1)\n", + "print(\"Intercept:\", pol_reg2.intercept_)\n", + "print(\"Coefficients:\", pol_reg2.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "6ef45f92-8495-45ef-8d16-ebfed26cd02e", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred2=pol_reg2.predict(X_test2)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "c3710a93-8fe2-4337-b680-4b560bd69cd5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE for test data: 0.011960589837953305\n", + "MAE for test data: 0.08473643514764896\n" + ] + } + ], + "source": [ + "MSE=0\n", + "MAE=0\n", + "for i in range(len(y_test)):\n", + " MSE += (y_test[i]-y_pred2[i])**2\n", + " MAE += abs(y_test[i]-y_pred2[i])\n", + "MAE=MAE/len(y_test)\n", + "MSE=MSE/len(y_test)\n", + "print(\"MSE for test data:\", MSE)\n", + "print(\"MAE for test data:\", MAE)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "38dc8afc-a400-43b6-965b-b2da89e2ba2c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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s11LSkrg6+uLpk2b1lqnoddOTQYj1XQ6ncVzIUStZeS8KVOm4LvvvsMXX3xR62/c9g1TWFiIadOmYffu3fD397e5HrezNIxGIxISEvDqq68CALp3747jx49j+fLlGD9+vHk9bu+G27JlCzZu3IhNmzahS5cuOHr0KNLT09G6dWukpqaa1+O2dg1ntqsU216TzTShoaHQ6/W1IrkLFy7UigrJOVOnTsX27duRnZ2NiIgI8/Lw8HAA4LZvoJycHFy4cAHx8fHw9vaGt7c39u3bh7feegve3t7mbcntLI1WrVqhc+fOFstiY2NRUFAAgPu1lP7617/iueeewyOPPII77rgD48aNw/Tp05GRkQGA29pV7Nmu4eHhqKysxK+//mpzHWdpMhjx9fVFfHw8DAaDxXKDwYDevXvLVCrPIITAlClTsG3bNuzZswfR0dEWf4+OjkZ4eLjFtq+srMS+ffu47R0wcOBAfP/99zh69Kj5kZCQgD/96U84evQo2rVrx+0soXvuuadWF/XTp08jKioKAPdrKV29ehVeXpaXJr1eb+7ay23tGvZs1/j4ePj4+FisU1xcjGPHjjV82zco/VXFqrv2ZmZmihMnToj09HQRGBgozp49K3fRVO2JJ54QISEhYu/evaK4uNj8uHr1qnmdBQsWiJCQELFt2zbx/fffizFjxrBbngRu7U0jBLezlL7++mvh7e0tXnnlFZGXlyfeffdd0ahRI7Fx40bzOtze0khNTRVt2rQxd+3dtm2bCA0NFc8++6x5HW5r55SXl4vc3FyRm5srAIg33nhD5Obmmoe0sGe7Tp48WURERIh///vf4siRI2LAgAHs2ttQS5cuFVFRUcLX11f06NHD3P2UnAfA6mPt2rXmdYxGo5g7d64IDw8Xfn5+om/fvuL777+Xr9AeomYwwu0srY8//ljExcUJPz8/0alTJ7Fy5UqLv3N7S6OsrExMmzZN3HbbbcLf31+0a9dOzJ49W1RUVJjX4bZ2TnZ2ttXzc2pqqhDCvu167do1MWXKFNGsWTMREBAg7r//flFQUNDgsumEEKJhdStEREREztNkzggREREpB4MRIiIikhWDESIiIpIVgxEiIiKSFYMRIiIikhWDESIiIpIVgxEiIiKSFYMRIiIikhWDESIiIpIVgxEiIiKSFYMRIiIiktX/B2L5roWvUa65AAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(y_test[:100],'bo',markersize=3)\n", + "plt.plot(y_pred2[:100], 'r*',markersize=3)\n", + "plt.legend(['true','predicted'],loc='upper right')\n", + "plt.title('Polynomial Regression, d=2')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ca6fc0f5-e6f0-4d55-a2ba-40acdbbf4151", + "metadata": {}, + "outputs": [], + "source": [ + "#Polynomial Regression, d=3\n", + "X_train3=PolynomialFeatures(degree=3,include_bias=False).fit_transform(X_train)\n", + "X_test3=PolynomialFeatures(degree=3,include_bias=False).fit_transform(X_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "acbe7bca-3b74-4099-acbe-e1349f988f50", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "R squared on test set: 0.408933403538129\n", + "Number of parameters: 56\n", + "Intercept: -0.0642778564287125\n", + "Coefficients: [-4.85030431e-01 2.35254231e+00 2.56156230e-03 -1.73008136e-04\n", + " 1.36437760e-04 6.12894758e-01 -2.20816518e+00 -1.05639652e-03\n", + " 2.00183667e-05 5.91435833e-04 -1.08031099e+00 8.96710234e-03\n", + " 4.86786144e-05 -2.75426884e-03 -5.23946253e-05 3.06615778e-07\n", + " 7.22203296e-07 3.07131064e-07 1.02830028e-06 -5.00502751e-07\n", + " 1.14320320e-02 -9.19801964e-01 1.26268262e-04 2.32567799e-06\n", + " 3.17366059e-06 4.04507073e+00 -1.47748622e-03 -2.59277724e-05\n", + " -1.10312486e-05 9.63613516e-06 1.17647833e-07 1.74207575e-07\n", + " -2.33445282e-08 -3.45841003e-08 -1.66442399e-06 -2.61561493e+00\n", + " 6.85840566e-03 2.45631773e-05 -3.37029852e-05 -9.50305201e-05\n", + " -5.05909782e-07 5.99063352e-08 -7.11912397e-08 -3.32265493e-10\n", + " 7.80788118e-06 3.42736622e-07 -3.37940292e-09 -4.19296109e-09\n", + " 5.19863930e-10 -1.59982882e-09 -1.38488071e-09 2.34894881e-11\n", + " -1.37425749e-09 -1.11708820e-09 -4.76537004e-11]\n" + ] + } + ], + "source": [ + "pol_reg3=LinearRegression().fit(X_train3,y_train)\n", + "print(\"R squared on test set:\", pol_reg3.score(X_test3,y_test))\n", + "print(\"Number of parameters:\", len(pol_reg3.coef_)+1)\n", + "print(\"Intercept:\", pol_reg3.intercept_)\n", + "print(\"Coefficients:\", pol_reg3.coef_)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "dc28385e-5d15-4286-aa18-50ce4a37b29d", + "metadata": {}, + "outputs": [], + "source": [ + "y_pred3=pol_reg3.predict(X_test3)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "52c51b93-7d1b-48d2-a530-2e7b4131706f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE for test data: 0.009763178315716749\n", + "MAE for test data: 0.07445845502584257\n" + ] + } + ], + "source": [ + "MSE=0\n", + "MAE=0\n", + "for i in range(len(y_test)):\n", + " MSE += (y_test[i]-y_pred3[i])**2\n", + " MAE += abs(y_test[i]-y_pred3[i])\n", + "MAE=MAE/len(y_test)\n", + "MSE=MSE/len(y_test)\n", + "print(\"MSE for test data:\", MSE)\n", + "print(\"MAE for test data:\", MAE)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "40e6b8a7-4b46-4e10-99b9-2187b84fcb7a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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fHx8kJiYCAB48MEHjXVsmjZtivPnz2PhwoWIjIystaCbsz7ncePGYe3atcjLy0Pr1q1rXe/vf/877r//fgwcOBDPPvssqqqq8OabbyIgIMAsC9a+fXub27Fjxw6sWLECDz30ECIjI3Hjxg0cPnwYCxcuRNu2bTF+/Hibn5MIAGfTkDpVz2KoOWuipmvXrokZM2aIyMhI4ePjI5o3by6efPJJk9keQpjPprndq6++apy5U1P1rJJPPvnEZHleXp4AIFavXm2yfOXKlaJz587C19dXBAcHi4cffths9khKSooICAgwe63ExETRqVMns+WRkZFiyJAhZm26ffZJYWGhGD58uLjjjjtEYGCguP/++8WxY8dEZGSkyWwJW2fT1Hzf1bp37y7uuOMO42yVvLw88fjjj4uWLVsKHx8f0bRpU9GjRw/x2muvmTzu2LFjYsCAAcLPz080btxYpKamirVr1woA4ocffqh3WwghxOXLl8Xs2bNF+/btjdv5zjvvFNOmTRPFxcVCCCF27NghBg0aJFq2bCl8fX1Fs2bNxODBg8X+/fuNz/POO++IHj16iJCQEOHr6ytatWolUlNTxblz54zr1JxNU82Rz3nOnDlmM1+GDx8u/P39zb63lmzfvt342q1atRLz58+3+Jz2OHnypBgxYoSIjIwUfn5+ws/PT3To0EE8//zz4tKlSw4/P3kujRBWjGAi8mDx8fHQaDT47rvv5G6KR5owYQI2btyIS5cueWyp8bCwMIwZMwZvv/223E0hcgp20xBZUFZWhmPHjmHHjh3IycnBp59+KneTPMK8efPQokULtGnTBpcvX8aOHTuwcuVKzJ4922MDkePHj+Pq1auYMWOG3E0hchoGI0QWfP/99+jbty+aNGmCOXPmYOjQoXI3ySP4+Pjg7bffRmFhIW7evIno6Gi8++67mDp1qtxNk02nTp2sqnFCpGbspiEiIiJZsQIrERERyYrBCBEREcmKwQgRERHJShUDWPV6PX755RcEBgZaLAFNREREyiOEQHl5OVq0aFFn4UJVBCO//PILIiIi5G4GERER2aGgoADh4eG1/r8qgpHAwEAAhjcTFBQkc2uIiIjIGmVlZYiIiDAex2ujimCkumsmKCiIwQgREZHK1DfEggNYiYiISFYMRoiIiEhWDEaIiIhIVqoYM0JERO5HCIGbN2+iqqpK7qaQnbRaLby9vR0uu8FghIiIXK6yshJFRUW4evWq3E0hBzVo0ADNmzd36MraDEaIiMil9Ho98vLyoNVq0aJFC/j6+rKgpQoJIVBZWYlff/0VeXl5iI6OrrOwWV0YjBARkUtVVlZCr9cjIiICDRo0kLs55AB/f3/4+Pjg/PnzqKyshJ+fn13PwwGsREQkC3vPoklZpPgc+U0gIiIiWTEYISIiIlkxGCEiSRUWAllZhr9ERNZgMEJEksnIACIjgX79DH8zMuRuEZG0+vTpg7S0NLmb4XYYjBCRJAoLgQkTAL3ecF+vByZOZIaEnEtpmbjqQm5kGwYjRCSJM2duBSLVqqqAs2flaQ+5P1dn4saNG4fs7GwsWrQIGo0GGo0Ga9asgUajwZdffon4+HjodDrs378f48aNw9ChQ00en5aWhj59+hjvCyHw1ltvoU2bNvD398ddd92FLVu2OPdNKBTrjBCRJKKjAS8v04BEqwXatpWvTeS+asvEJScD4eHOec1Fixbh9OnTiI2Nxbx58wAAx48fBwC88MILWLBgAdq0aYNGjRpZ9XyzZ8/Gtm3bsHTpUkRHR2Pfvn147LHH0LRpUyQmJjrnTSgUgxEikkR4OLB8ueGAUFVlCESWLXPegYE8W12ZOGd954KDg+Hr64sGDRogLCwMAPDTTz8BAObNm4eBAwda/VxXrlzBu+++iz179iAhIQEA0KZNGxw4cADLli1jMEJEZK/UVMOZ6dmzhowIAxFyFqVl4uLj421a/8SJE7h+/bpZAFNZWYmuXbtK2TRVYDBCRJIKD2cQQs6ntExcQECAyX0vLy8IIUyW3bhxw/hv/f+iqJ07d6Jly5Ym6+l0Oie1UrkYjBARkSrJkYnz9fVFVVVVves1bdoUx44dM1l25MgR+Pj4AAA6duwInU6H/Px8j+uSsYTBCBERqZarM3GtW7fGt99+i3PnzqFhw4bGDEdN/fr1w9tvv41169YhISEB69evx7Fjx4xdMIGBgXjuuecwbdo06PV63HfffSgrK8PBgwfRsGFDpKSkuO5NKQCn9hIREVnpueeeg1arRceOHdG0aVPk5+dbXC85ORkvv/wyXnjhBdx9990oLy/H2LFjTdb5+9//jldeeQXp6emIiYlBcnIyPv/8c0RFRbnirSiKRtTs1FKgsrIyBAcHo7S0FEFBQXI3h4iIHHD9+nXk5eUhKirK7kvOk3LU9Xlae/xmZoSIiIhkxWCEiIiIZMVghIiIiGTFYISIiIhkxWCEiIiIZMVghIiIiGTFYISIiIhkxWCEiIiIZMVghIiIiGTFYISIiEhhWrdujYULFxrvazQafPbZZy5vx6uvvoouXbo4/XUYjBARESlcUVERBg0aZNW6rgogpMSr9hIRETlBZWUlfH19JXmusLAwSZ5HqZgZISIi9crMBDQaw18n69OnDyZPnozJkyejUaNGaNKkCWbPno3q6822bt0ar732GsaNG4fg4GA88cQTAICDBw+id+/e8Pf3R0REBJ555hlcuXLF+LwlJSV48MEH4e/vj6ioKHz00Udmr12zm6awsBCPPvooGjdujICAAMTHx+Pbb7/FmjVrMHfuXPzwww/QaDTQaDRYs2YNAKC0tBQTJkxAs2bNEBQUhH79+uGHH34weZ358+cjNDQUgYGBSE1NxfXr1yXeipYxGCEiInUaMQJISjL8OynJcN/J1q5dC29vb3z77bd4//338d5772HlypXG/3/77bcRGxuLnJwcvPzyy/jxxx+RnJyMYcOG4ejRo9i8eTMOHDiAyZMnGx8zbtw4nDt3Dnv27MGWLVuwZMkSlJSU1NqGy5cvIzExEb/88gu2b9+OH374AS+88AL0ej1GjhyJZ599Fp06dUJRURGKioowcuRICCEwZMgQFBcXY9euXcjJyUG3bt3Qv39//PbbbwCAjz/+GHPmzMHrr7+Ow4cPo3nz5liyZInzNubthAqUlpYKAKK0tFTuphARkYOuXbsmTpw4Ia5du+bYE0VHCwHcukVHS9PAWiQmJoqYmBih1+uNy2bMmCFiYmKEEEJERkaKoUOHmjxmzJgxYsKECSbL9u/fL7y8vMS1a9fEqVOnBADxzTffGP//5MmTAoB47733jMsAiE8//VQIIcSyZctEYGCguHTpksV2zpkzR9x1110my7766isRFBQkrl+/brL8T3/6k1i2bJkQQoiEhAQxadIkk//v3r272XPVVNfnae3xm5kRIiJSpxUr6r7vBPfeey80Go3xfkJCAs6cOYOqqioAQHx8vMn6OTk5WLNmDRo2bGi8JScnQ6/XIy8vDydPnoS3t7fJ4zp06IBGjRrV2oYjR46ga9euaNy4sdXtzsnJweXLl9GkSROTtuTl5eH//u//AAAnT55EQkKCyeNq3ncW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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(y_test[:100],'bo',markersize=3)\n", + "plt.plot(y_pred3[:100], 'r*',markersize=3)\n", + "plt.legend(['true','predicted'],loc='upper right')\n", + "plt.title('Polynomial Regression, d=3')\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.9.19" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}