diff --git a/doc/HandWrittenNotes/2021/NotesSeptermber2.pdf b/doc/HandWrittenNotes/2021/NotesSeptember2.pdf similarity index 100% rename from doc/HandWrittenNotes/2021/NotesSeptermber2.pdf rename to doc/HandWrittenNotes/2021/NotesSeptember2.pdf diff --git a/doc/HandWrittenNotes/2021/NotesSeptember9.pdf b/doc/HandWrittenNotes/2021/NotesSeptember9.pdf new file mode 100644 index 000000000..f98e5e8a4 Binary files /dev/null and b/doc/HandWrittenNotes/2021/NotesSeptember9.pdf differ diff --git a/doc/pub/week36/ipynb/week36.ipynb b/doc/pub/week36/ipynb/week36.ipynb index ee2d20f06..727eb88f7 100644 --- a/doc/pub/week36/ipynb/week36.ipynb +++ b/doc/pub/week36/ipynb/week36.ipynb @@ -264,10 +264,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "Ainv = np.linlag.pinv(A)" @@ -282,12 +279,30 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[1 2 3]\n", + " [2 4 5]\n", + " [3 5 6]]\n", + "test U\n", + "[[ 2.22044605e-16 -7.77156117e-16 -5.55111512e-16]\n", + " [-7.77156117e-16 0.00000000e+00 -1.11022302e-16]\n", + " [-5.55111512e-16 -1.11022302e-16 0.00000000e+00]]\n", + "test VT\n", + "[[ 1.11022302e-16 -2.22044605e-16 1.38777878e-16]\n", + " [-2.22044605e-16 -1.11022302e-16 -1.11022302e-16]\n", + " [ 1.38777878e-16 -1.11022302e-16 0.00000000e+00]]\n", + "[[2.35367281e-12 1.70885528e-12 3.20632410e-13]\n", + " [2.17248441e-12 1.46016532e-12 2.00728323e-13]\n", + " [6.95443703e-13 4.13891144e-13 2.13162821e-14]]\n" + ] + } + ], "source": [ "import numpy as np\n", "# SVD inversion\n", @@ -355,12 +370,24 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[0.3 0.4]\n", + " [0.5 0.6]\n", + " [0.7 0.8]\n", + " [0.9 1. ]]\n", + "[[-13. -6. 1. 8. ]\n", + " [ 11.5 5.5 -0.5 -6.5]]\n", + "[[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n" + ] + } + ], "source": [ "import numpy as np\n", "# SVD inversion\n", @@ -1245,12 +1272,71 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2. 2.]\n", + "Training MSE for OLS\n", + "3.0\n", + "[1.99995 1.99980002]\n", + "[1.99991982 1.99967931]\n", + "[1.99987141 1.99948575]\n", + "[1.99979379 1.99917541]\n", + "[1.99966932 1.99867793]\n", + "[1.99946973 1.99788061]\n", + "[1.99914973 1.99660327]\n", + "[1.99863676 1.99455818]\n", + "[1.99781465 1.99128716]\n", + "[1.99649762 1.98606371]\n", + "[1.99438911 1.97774375]\n", + "[1.99101692 1.96454542]\n", + "[1.98563263 1.94374291]\n", + "[1.97705827 1.91128596]\n", + "[1.96346096 1.86143821]\n", + "[1.94204092 1.78670708]\n", + "[1.90864819 1.67862942]\n", + "[1.85742884 1.53018786]\n", + "[1.78078998 1.34013383]\n", + "[1.67026738 1.11753552]\n", + "[1.51906998 0.88246448]\n", + "[1.32649797 0.65986617]\n", + "[1.10238077 0.46981214]\n", + "[0.86736427 0.32137058]\n", + "[0.64637186 0.21329292]\n", + "[0.45887364 0.13856179]\n", + "[0.31318084 0.08871404]\n", + "[0.20751692 0.05625709]\n", + "[0.134657 0.03545458]\n", + "[0.08614899 0.02225625]\n", + "[0.05460368 0.01393629]\n", + "[0.03440174 0.00871284]\n", + "[0.02159104 0.00544182]\n", + "[0.01351804 0.00339673]\n", + "[0.00845069 0.00211939]\n", + "[0.00527783 0.00132207]\n", + "[0.00329427 0.00082459]\n", + "[0.00205542 0.00051425]\n", + "[0.00128215 0.00032069]\n", + "[0.00079968 0.00019998]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAEGCAYAAABvtY4XAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAj3klEQVR4nO3deXxV1bn/8c/DPMqMMohQBwQRLQQVcWZQURGVFhDrVbTodUB/Iq3Wex3rrV5671VpK5XiUEW0oMxIoSpqVYQwg6BWRcCCRirIIBiS5/fHOiEBQgIhO/sM3/frtV8556x9zv6G4cnK2muvbe6OiIikn0pxBxARkWiowIuIpCkVeBGRNKUCLyKSplTgRUTSVJW4AxTVuHFjb926ddwxRERSxoIFC75x9ybFtSVVgW/dujXZ2dlxxxARSRlm9sX+2jREIyKSplTgRUTSlAq8iEiaSqox+OLk5uaybt06duzYEXcUOQg1atSgZcuWVK1aNe4oIhkr6Qv8unXrqFu3Lq1bt8bM4o4jB8Dd2bhxI+vWraNNmzZxxxHJWEk/RLNjxw4aNWqk4p5CzIxGjRrpty6RmCV9gQdU3FOQ/s5E4pf0QzQiIrHasQO2bg1fd+4MW34+dOgQ2hctgi+/hNxc2LUrbDVqwGWXhfYpU2D1asjLC1t+PjRqBNddF9pHjw77Nm5c7tFV4A+AmTFo0CBeeOEFAHbt2kWzZs049dRTmTZtGl999RXXXXcda9euJTc3l9atWzNjxgxWr15Nu3btaNu27e7PuuOOO7j66qv3+PxzzjmH9evXU6NGDapVq8bo0aM5+eSTAejduzcvvvgi9evX3+M9999/P3Xq1OHOO+8s8/e1ceNGunfvDsCGDRuoXLkyTZqEC+LmzZtHtWrVSv2MOXPmUK1aNU4//fQy5xCJ1LZtsGYNfPUV/Otf8O234euwYVCpEjz1FIwfD1u2hH23bQtFes2a8P4hQ+D55/f8zIYNYePG8PjXv4ZXX92zvVWrwgL/+9/DrFl7tnfoUFjgn3kGzjhDBT4utWvXZvny5Xz//ffUrFmT2bNn06JFi93t9957Lz179uS2224DYOnSpbvbjj76aBYvXlzqMcaOHUtWVhbPPPMMw4cPZ/bs2QDMmDGjfL+ZIho1arQ7W1l/YMyZM4c6deqowEt8Nm+GxYvho49g3bqwffkljBsXCvGjj8JDD+37vp//HOrXD4V9yxaoVw+aN4fataFWLXAHM7jqKujSJfTKq1cPW+3ahZ/zX/8Fd90FVatClSrha/Xqhe0vvxx67pUr77kVePfdcJwIqMAfoN69ezN9+nT69evHuHHjGDhwIO+88w4A69evp1evXrv37dixY5mP07VrV0aMGLH7ecHyDY0bN+bhhx/mueeeo2nTphx55JF07twZgPnz53PddddRqVIlevbsyWuvvcby5cvJy8vjrrvuYs6cOezcuZObb76ZG264odQMCxYs4I477mDr1q00btyYZ599lmbNmvHEE08watQoqlSpQvv27XnkkUcYNWoUlStX5oUXXmDkyJGceeaZZf7eRUq0bRt8+CEsXw7LlsHQodC6dSjk//7vYZ9KlaBZM2jZEr77LhT4K66Adu3giCPC8wYNwteCIj1sWNj2p1evsO1Pkd/Qi7XXb9/7iPB8VeoV+HPO2fe1n/4UbroJtm+H3r33bb/mmrB98w3067dn25w5B3TYAQMG8OCDD3LxxRezdOlSBg8evLvA33zzzfTv35/f/e539OjRg2uvvZbmzZsD8Omnn+4ebgFKLYIzZ86kb9+++7y+YMECXnrpJRYvXsyuXbvo1KnT7gJ/7bXXMnr0aLp27cpdd921+z1jxoyhXr16zJ8/n507d9KtWzd69epV4tTF3Nxcbr31ViZPnkyTJk14+eWXueeee3j66ad55JFH+Pzzz6levTqbNm2ifv363HjjjYc8VCRSoqVL4YYbYN68MH4NULMmXHBBKPAXXQSvvQbt24ceeJW9ytpJJ4UtA6VegY9Jx44dWb16NePGjaP3Xj9Ezj//fD777DNmzpzJa6+9xo9//GOWL18OHPgQzaBBg/jhhx/YunVrsfu/8847XHbZZdSqVQuAPn36ALBp0ya2bNlC165dAbjyyiuZNm0aALNmzWLp0qVMmDABgM2bN/PJJ5+UWOA/+ugjli9fTs+ePQHIy8ujWbNmu/8MBg0aRN++fYv9ISRySNzhH/+A2bPDmPUll4Rx6qZNQ9vdd0PnznDiidCmTeEwx5FHhk32kXoFvqQed61aJbc3bnzAPfbi9OnThzvvvJM5c+awseAES0LDhg258sorufLKK7n44ot5++23d/ewD8TYsWPp3Lkzw4cP59Zbb+XVvU/alIG7M3LkSM4///yDes8JJ5zA+++/v0/b9OnTefvtt5k6dSoPP/wwy5YtO+SMIuTnw2OPwahR8Mkn4bXWrQuHRY44AubOjStdSkuJefDJYvDgwdx3332ceOKJe7z+xhtvsH37dgC2bNnCp59+SqtWrQ76882Mhx56iLlz57Jq1ao92s466ywmTZrE999/z5YtW5g6dSoA9evXp27dunzwwQcAvPTSS7vfc/755/Pkk0+Sm5sLwMcff8y2bdtKzNC2bVtycnJ2F/jc3FxWrFhBfn4+a9eu5dxzz+XRRx9l8+bNbN26lbp167Jly5aD/l5FWL8+fK1UKcxCOfxw+MMfQpH/7LMw7CqHJPV68DFq2bIlQ4cO3ef1BQsWcMstt1ClShXy8/O5/vrr6dKlC6tXr95nDH7w4MHFfkaBmjVrMmzYMEaMGMGYMWN2v96pUyf69+/PSSedRNOmTenSpcvutjFjxvDzn/+cSpUqcfbZZ1OvXj0Arr/+elavXk2nTp1wd5o0acKkSZNK/B6rVavGhAkTGDp0KJs3b2bXrl3cfvvtHHfccVx11VVs3rwZd2fo0KHUr1+fSy65hH79+jF58mSdZJXS5eXB1KkwcmSYPbJmTRiC+etf95yZIuXC3D3uDLtlZWX53jf8WLlyJe3atYspUWrYunUrderUAeCRRx5h/fr1PP744zGn0t+dFJGXB08+Cb/9LXzxRRgzv/lmuPHGMD1RyszMFrh7VnFt6sGngenTp/Ob3/yGXbt2cdRRR/Hss8/GHUlkT6tWwe23w+mnw//+L/Tps+9sFyl3+hNOA/3796d///5xxxDZ065dYTZM795wwgmwcGGYAaN1iipMSpxkTaZhJDkw+jvLcMuWwWmnhTnqCxeG1zp2VHGvYElf4GvUqMHGjRtVMFJIwXrwNWrUiDuKVLTcXHjwwTBffc0a+MtfoFOnuFNlrKQfomnZsiXr1q0jJycn7ihyEAru6CQZxB26d4d33oGBA+HxxyGxeJ3EI+kLfNWqVXVXIJFUYBaWFBg2DC69NO40QgoUeBFJctnZYYmBAQNg0KC400gRKvAiUnbZ2dCzZ7iBxWWX7blMrsQu0pOsZnabmS03sxVmdnuUxxKRCjZ/PvToEZbfff11FfckFFmBN7MOwM+BU4CTgIvN7JiojiciFWjevNBzb9gwLOB31FFxJ5JiRNmDbwd84O7b3X0X8BZweYTHE5GKMnt2GJaZMyfcnk6SUpQFfjlwppk1MrNaQG9gn0WbzWyImWWbWbamQookuV27wtdf/QoWLFBxT3KRFXh3Xwk8CswCZgKLgbxi9nvK3bPcPauJ5syKJK+FC+H448Mt88xKvxWdxC7Sk6zuPsbdO7v7WcC3wMdRHk9EIrJ9e5gGuXOnCnsKiXSapJk1dfevzawVYfz9tCiPJyIR+eUvw404Xn893NBaUkLU8+BfMbNGQC5ws7tvivh4IlLeZs+G3/0ObrsNzjsv7jRyECIt8O6u2/uIpLqXXw5j77/5TdxJ5CDpSlYRKdno0fD111CzZtxJ5CAl/XLBIhKTt94KS/6ahRtiS8pRgReRfW3YAFdcAYMHx51EDoEKvIjsyR2GDIFt22DkyLjTyCHQGLyI7OmZZ2DqVHjsMWjXLu40cgjUgxeRQp9/HqZDnnsu3Hpr3GnkEKnAi0ihRo3g6qtDL76SykOq0xCNiBQ67DD4/e/jTiHlRD+iRQTy8uCqq+Ddd+NOIuVIBV5E4KWXYOxY+OqruJNIOVKBF8l0eXnw619Dhw7Qt2/caaQcaQxeJNONHw+rVoU1Z3RiNa3ob1Mkk+Xnw0MPQfv20K9f3GmknKkHL5LJ8vLCVatt2qj3noZU4EUyWdWq4cImSUv6kS2SqWbNgjFjCm+kLWlHPXiRTJSfD7/4BXz/PVxzTdxpJCIq8CKZaOpUWLIEnnsOKleOO41EREM0IpnGHR54AI45Bq68Mu40EiH14EUyzfTpsGhRWFCsikpAOou0B29m/8/MVpjZcjMbZ2Y1ojyeiByAWrXgkktg0KC4k0jEIivwZtYCGApkuXsHoDIwIKrjicgBOu88mDIlTJGUtBb1GHwVoKaZVQFqAf+M+Hgisj/u8Mc/wqZNcSeRChJZgXf3L4HfAmuA9cBmd58V1fFEpBTz58ONN8K4cXEnkQoS5RBNA+BSoA3QHKhtZlcVs98QM8s2s+ycnJyo4ojI009DzZqaOZNBohyi6QF87u457p4LvAqcvvdO7v6Uu2e5e1aTJk0ijCOSwbZvDz33fv2gXr2400gFibLArwFOM7NaZmZAd2BlhMcTkf2ZOBG++w6uvTbuJFKBohyD/wCYACwEliWO9VRUxxOREixbBkcfDWefHXcSqUDm7nFn2C0rK8uzs7PjjiGSnrZvD3PgJa2Y2QJ3zyquTUsViKS7nTvDVxX3jKMCL5LO8vPhhBPgvvviTiIxUIEXSWdvvgmffgrHHx93EomBCrxIOnv6aahfH/r2jTuJxEAFXiRdbdoEr74KAweGC5wk46jAi6Srl16CHTtg8OC4k0hMtBi0SLq65JJwkrVz57iTSExU4EXSVYsWcNNNcaeQGGmIRiQdjRkTxt8lo6nAi6Sb3Fy4+24YOzbuJBIzFXiRdDN9OuTkaGExUYEXSTvPPANHHAEXXBB3EomZCrxIOtmwIfTgr74aqmgORaZTgRdJJ2vWwLHHanhGAE2TFEkvp5wCH34IZnEnkSSgHrxIuvjuu3Dlqoq7JKjAi6SLkSPh8MNh8+a4k0iSUIEXSRevvgrt2+um2rKbCrxIOvj8c1i4EK64Iu4kkkRU4EXSwcSJ4evll8ebQ5KKCrxIOnjlFTj5ZPjRj+JOIkkksmmSZtYWeLnISz8C7nX3x6I6pkjGeuyxMItGpIjICry7fwScDGBmlYEvgYlRHU8ko3XpEncCSUIVNUTTHfjU3b+ooOOJZI7/+z94//24U0gSqqgCPwAYV1yDmQ0xs2wzy87JyamgOCJp4ptvYPjwsP6MyF4iL/BmVg3oA4wvrt3dn3L3LHfPatKkSdRxRNLL5MmQl6fpkVKsiujBXwgsdPevKuBYIpnl1Vehdeswg0ZkLxVR4Aeyn+EZETkEmzfD7Nmh9671Z6QYkRZ4M6sN9AR0c0iR8vbRR9CggS5ukv2KdLlgd98GNIryGCIZ65RT4J//VO9d9kvrwYukorw8qFQJKleOO4kkMS1VIJKKJk0KJ1c//TTuJJLEVOBFUtGrr8K2bXDUUXEnkSSmAi+SanbuhGnToG9f3VhbSqQCL5JqXn89LCym2TNSChV4kVTzyitw2GHQvXvcSSTJlVjgzeyqIo+77dV2S1ShRKQE/fvDo49C9epxJ5EkV1oP/o4ij0fu1Ta4nLOIyIHo1QtuvDHuFJICSivwtp/HxT0XkajNmAErVsSdQlJEaQXe9/O4uOciEiV3GDIE/vM/404iKaK0OVbHm9lSQm/96MRjEs9180eRirRwIXz5JVx6adxJJEWUVuDbVUgKESndlClheYKLLoo7iaSIEgv83rfYM7NGwFnAGndfEGUwEdnL5MnQrRs0bhx3EkkRpU2TnGZmHRKPmwHLCbNnnjez26OPJyJAuDXfqlXQp0/cSSSFlDZE08bdlyceXwvMdverzawu8C7wWJThRCShceNQ5PPz404iKaS0WTS5RR53B2YAuPsWQP/SRCpSnTrhClaRA1RagV9rZrea2WVAJ2AmgJnVBKpGHU5EgE2bwtj7m2/GnURSTGkF/jrgBOAaoL+7b0q8fhrwTHSxRGS3mTPhvfe0NIEctNJm0XwN7HNNtLu/Cag7IVIRJk+Gpk3h1FPjTiIppsQCb2ZTSmp3d53SF4nSDz+E5Qn69dPt+eSglTaLpiuwFhgHfIDWnxGpWG+/HdZ+19WrUgaljcEfAfwK6AA8DvQEvnH3t9z9rdI+3Mzqm9kEM1tlZivNrOuhRxbJINWrw8UXQ48ecSeRFFRigXf3PHef6e7/Rjix+g9gzkGsBf84MNPdjwdOAlYeUlqRTHPmmTB1KtSqFXcSSUGl3tDRzKoDFwEDgdbAE8DEA3hfPcKyBtcAuPsPwA9ljyqSYXJywoVNhx8edxJJUaUtVfBn4H3CHPgH3L2Luz/k7l8ewGe3AXKAZ8xskZn9ycxqF3OMIWaWbWbZOTk5ZfkeRNLTk09Cixbw7bdxJ5EUZe77X9bdzPKBbYmnRXc0wN19v5fVmVkWMBfo5u4fmNnjwHfuvt/FrLOysjw7O/tg8oukr86doUYNePfduJNIEjOzBe6eVVxbaWPwldy9bmI7rMhWt6TinrAOWOfuHySeTyD8JiAipVm3Lqz/rsXF5BCUNoumzNx9A2Gpg7aJl7oDH0Z1PJG0MiVxCYqmR8ohKPUk6yG6FRhrZtWAzwgrUopIaaZMgWOPhbZtS99XZD8iLfDuvhgodmxIRErw1FOwdi2Yri2Usou6By8iZdGqVdhEDkFkY/AiUkaPPw7jx8edQtKACrxIMsnNhfvvh+nT404iaUAFXiSZ/P3v4QYfmj0j5UAFXiSZTJwYLm7q2TPuJJIGVOBFkkV+PrzyClx4Ybj/qsghUoEXSRYbNkDjxvCTn8SdRNKEpkmKJIvmzWHJEihhfSiRg6EevEgyyM+H7dvDY13cJOVEBV4kGcydG26s/c47cSeRNKICL5IMJkwIc+A7dow7iaQRFXiRuOXnhwJ//vlQr17caSSNqMCLxG3evLCwmGbPSDlTgReJ2/jxULUqXHJJ3EkkzWiapEjcrrkGOnSA+vXjTiJpRgVeJG4nnhg2kXKmIRqROE2YAH/7W9wpJE2pBy8SF3e4805o3x569Ig7jaQh9eBF4rJgAXzxhWbPSGRU4EXiMn48VKmitd8lMpEO0ZjZamALkAfscnfdgFsEwvDM+PHQvTs0bBh3GklTFTEGf667f1MBxxFJHevXw44dGp6RSOkkq0gcmjcPV6/m5cWdRNJY1GPwDswyswVmNiTiY4mkBvew/kzlylCtWtxpJI1FXeDPcPdOwIXAzWZ21t47mNkQM8s2s+ycnJyI44gkgSVLoFUreO+9uJNImou0wLv7l4mvXwMTgVOK2ecpd89y96wmTZpEGUckOYwfH27Pd+yxcSeRNBdZgTez2mZWt+Ax0AtYHtXxRFJCweyZc84BdWgkYlGeZD0cmGjh9mNVgBfdfWaExxNJfkuWwCefwLBhcSeRDBBZgXf3z4CTovp8kZQ0Zkw4sXrFFXEnkQygaZIiFemnP4W2baFx47iTSAZQgRepSGeeGTaRCqC1aEQqym9/Cx9/HHcKySDqwYtUhEWLYPjwMP5+3HFxp5EMoR68SEX44x+hRg342c/iTiIZRAVeJGpbtsDYsdC/PzRoEHcaySAq8CJRe/FF2LoVbrwx7iSSYVTgRaKWkwOnnQannhp3EskwKvAiUfuP/4B334VwVbdIhVGBF4nS2rXhayX9V5OKp391IlHZtClctfrQQ3EnkQylAi8SlRdegO+/h969404iGUoFXiQK7jBqFGRlQefOcaeRDKUrWUWi8N57sGIFjB4ddxLJYOrBi0ThmWfgsMNgwIC4k0gGU4EXicJjj8Frr0GdOnEnkQymAi8ShTp14PTT404hGU4FXqQ8ucNll8Err8SdREQFXqRcjR8PkybBjh1xJxFRgRcpNzt3wt13w4kn6uSqJAVNkxQpL6NGwWefwcyZULly3GlEou/Bm1llM1tkZtOiPpZIbL77Dh58EHr0gF694k4jAlRMD/42YCVwWAUcSyQedeuGi5qOOUarRkrSiLQHb2YtgYuAP0V5HJHYmcHll0PHjnEnEdkt6iGax4BfAPn728HMhphZtpll5+TkRBxHJAI33QSPPhp3CpF9RFbgzexi4Gt3X1DSfu7+lLtnuXtWkyZNooojEo1Fi8LJ1U2b4k4iso8oe/DdgD5mthp4CTjPzF6I8HgiFcsdhg+Hhg3hrrviTiOyj8gKvLvf7e4t3b01MAB4w92viup4IhXur3+F11+He++FevXiTiOyD13oJFIW7vDLX8LRR8ONN8adRqRYFXKhk7vPAeZUxLFEKoQZjBkDW7ZAtWpxpxEplq5kFTlY7qHAZ2XFnUSkRBqiETlYjz4K114Lu3bFnUSkRCrwIgcjOxseeCBMi6yiX4AluanAixyo9euhb184/HB46qm404iUSl0QkQOxY0e4kcemTeGG2rooT1KAevAiB2LVKvj4Y3j+ea03IylDPXiRA3HyyWGt9/r1404icsDUgxcpyYwZMGJEmBqp4i4pRgVeZH9WroSBA+HFF8Pt+ERSjAq8SHG+/Rb69IEaNWDy5PBVJMVoDF5kb7t2Qf/+8MUX8Oab0KpV3IlEykQFXmRvK1aEVSJHj4Zu3eJOI1JmKvAiBf71r7C2+0knwd//Dl27xp1I5JBoDF4E4Lnn4KijYPbs8FzFXdKACrxktq1b4d/+Da65JqwOecIJcScSKTcq8JK5li4NRf355+H+++Fvf4PmzeNOJVJuNAYvmeutt+C778IJ1XPPjTuNSLlTgZfM8f338PLL4arUa6+FW26Bq66CBg3iTiYSCQ3RSPr75BMYNgxatAiF/cUXw+tmKu6S1lTgJb09+CAcdxw88QT07Alz5sCsWXGnEqkQGqKR9LBjByxeDPPmwfz5cPvt0LkznHceVKoE118PRxwRd0qRChVZgTezGsDbQPXEcSa4+31RHU8yhDts3BiGVxo1Ckv4/vSnsGRJ4T1SmzWDfv1CgT/jjLCJZKAoe/A7gfPcfauZVQX+bmavufvcCI8pycod8vIgNzcUYjOoUye0LVsWZrNs2xa2rVvDRUdnnRX2/clPwu3y/vlP2LAhfMbw4fDf/x165Q0ahOennAJduoSxdhGJrsC7uwNbE0+rJjaP5GDLlsGAAfu+PmIE9O4NH3wAgwfv2/6HP8DZZ8Mbb8Ctt+7b/txzYZ70tGnwy1/u2z5hArRrF2ZmPPjgvu0zZoRC9fTT8D//s2/7W29B48YwciSMGrVv+/z5UKsWPPII/PnPe7aZhTVTAO69N2Qpqk6dMFwB4QTjjBl7tjdtGo4PcMMNhY898VfUpg3MnBkeDxxY+FnuYevYMayyCHD++eHvID+/cDvjDJg0KbS3bRvuhlTUpZcWtp93HnzzzZ7tgwaFAl+lSijudeuGqYzNmoXttNPCfrVqFV59KiJ7iHQM3swqAwuAY4Dfu/sHxewzBBgC0Kqsq/bVrAnt2+/7er164WutWsW3F/Qg69Ytvr1WrcLPKa69YAnZBg2Kb69WLXxt1Kj49sqVw9emTYtvr5Q4B96sGXTosGebWeHjFi32ba9Zs/DxkUfue5u5orNH2rSBzZv3/OyiF/y0bx+yFhzTDH70o8L2bt3CD7JKlQq3444rbL/hhnAv06pVC7djjilsf/758J7atQu3hg0L2+fqlz6RsjD3aDrVexzErD4wEbjV3Zfvb7+srCzPzs6OPI+ISLowswXunlVcW4VMk3T3TcCbwAUVcTwREYmwwJtZk0TPHTOrCfQEVkV1PBER2VOUY/DNgOcS4/CVgL+4+7QIjyciIkVEOYtmKfDjqD5fRERKpqUKRETSlAq8iEiaUoEXEUlTKvAiImmqQi50OlBmlgN8Uca3Nwa+KXWviqdcB0e5Do5yHZx0zHWUuzcpriGpCvyhMLPs/V3NFSflOjjKdXCU6+BkWi4N0YiIpCkVeBGRNJVOBf6puAPsh3IdHOU6OMp1cDIqV9qMwYuIyJ7SqQcvIiJFqMCLiKSptCzwZjbMzNzMGsedBcDMHjKzpWa22MxmmVnz0t8VPTMbYWarEtkmFizvHDcz+4mZrTCzfDOLdUqbmV1gZh+Z2T/M7K44sxRlZk+b2ddmtt8b6MTBzI40szfN7MPE3+FtcWcCMLMaZjbPzJYkcj0Qd6YCZlbZzBaZWbmvtpt2Bd7MjgR6AWvizlLECHfv6O4nA9OAe2POU2A20MHdOwIfA3fHnKfAcuBy4O04QySWuv49cCHQHhhoZsXcWzEWz5KcN9DZBQxz9/bAacDNSfJnthM4z91PAk4GLjCz0+KNtNttwMooPjjtCjzwf8AviOoG32Xg7t8VeVqbJMnm7rPcfVfi6VygZZx5Crj7Snf/KO4cwCnAP9z9M3f/AXgJuDTmTAC4+9vAv+LOsTd3X+/uCxOPtxAKV4t4U4EHWxNPqya22P8fmllL4CLgT1F8floVeDO7FPjS3ZfEnWVvZvawma0FBpE8PfiiBgOvxR0iybQA1hZ5vo4kKFapwsxaE+4J8UHMUYDdQyGLga+B2e6eDLkeI3RI86P48Cjv6BQJM/sbcEQxTfcAvyIMz1S4knK5+2R3vwe4x8zuBm4B7kuGXIl97iH8aj22IjIdaC5JXWZWB3gFuH2v32Bj4+55wMmJc00TzayDu8d2DsPMLga+dvcFZnZOFMdIuQLv7j2Ke93MTgTaAEvMDMJww0IzO8XdN8SVqxhjgRlUUIEvLZeZXQNcDHT3Crwo4iD+vOL0JXBkkectE69JCcysKqG4j3X3V+POszd332RmbxLOYcR5krob0MfMegM1gMPM7AV3v6q8DpA2QzTuvszdm7p7a3dvTfh1ulNFFPfSmNmxRZ5eSpLcfNzMLiD8etjH3bfHnScJzQeONbM2ZlYNGABMiTlTUrPQuxoDrHT3/407TwEza1IwS8zMagI9ifn/obvf7e4tE/VqAPBGeRZ3SKMCn+QeMbPlZraUMISUFFPHgN8BdYHZiSmco+IOBGBml5nZOqArMN3M/hpHjsQJ6FuAvxJOFv7F3VfEkWVvZjYOeB9oa2brzOy6uDMldAN+BpyX+De1ONFDjVsz4M3E/8H5hDH4cp+WmGy0VIGISJpSD15EJE2pwIuIpCkVeBGRNKUCLyKSplTgRUTSlAq8JCUz21r6Xvt97y2J1R/3WFHUgicSbUvNrFORtmYFq/mZ2TnltbKfmc05kBUxzWx1aaufmtnfzKxBeeSSzKACL+noXaAH8MVer18IHJvYhgBPFmm7AxhdIenK7nngprhDSOpQgZekluh1j0hcKLbMzPonXq9kZn9IrGc/28xmmFk/AHdf5O6ri/m4S4E/J1YWnAvUN7NmibYrgJnFHP8UM3s/sV73e2bWNvH6NWY2KXHs1YnfGu5I7DfXzBoW+ZifJS74WW5mpyTe38jCvQFWmNmfACtyzElmtiDRNqTI50wBBpb1z1Iyjwq8JLvLCet3n0TolY9IFOXLgdaEddp/RrjqtTTFrg5pZm2Ab919ZzHvWQWc6e4/JqwC+l9F2jokcnQBHga2J/Z7H7i6yH61EvcCuAl4OvHafcDf3f0EYCLQqsj+g929M5AFDDWzRgDu/i1QveC5SGlSbrExyThnAOMSKwF+ZWZvEQrqGcB4d88HNiQWjyqrZkDOftrqAc8l1hNywjriBd5MrHm+xcw2A1MTry8DOhbZbxyENdzN7LDEmihnEX444O7TzezbIvsPNbPLEo+PJAwpbUw8/xpoXuS5yH6pBy+ZZH+rQ35PWM2vOA8RCnkH4JK99iva488v8jyfPTtPe68Hst/1QRLLxvYAuibuPrRor2PWSOQVKZUKvCS7d4D+iZs1NCH0fOcRTqRekRiLPxw45wA+awpwdWJc/zRgs7uvJ9yusPV+3lOPwiWCrynj91Bw3uCMxDE3E25HeGXi9QuBgtkx9QjDRdvN7HjCbe9I7GeENfRXlzGHZBgVeEl2E4GlwBLgDeAXiSWgXyGMoX8IvAAsBDYDmNnQxGqULYGliZOYENbh/wz4B2HGzE0A7r4N+NTMjinm+P8N/MbMFlH2Ic0difePAgpWfXwAOMvMVhCGagruITwTqGJmK4FHCLdSLNAZmFvkNosiJdJqkpKyzKyOu29NnHScB3Qr6/r/iTHvzu7+H+UashyZ2ePAFHd/Pe4skhp0klVS2bTECctqwEOHcnMXd5+YArNTlqu4y8FQD15EJE1pDF5EJE2pwIuIpCkVeBGRNKUCLyKSplTgRUTS1P8HjeN/LhUCH4UAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "\n", @@ -1285,13 +1371,13 @@ "# Repeat now for Ridge regression and various values of the regularization parameter\n", "I = np.eye(2,2)\n", "# Decide which values of lambda to use\n", - "nlambdas = 100\n", + "nlambdas = 40\n", "MSEPredict = np.zeros(nlambdas)\n", "lambdas = np.logspace(-4, 4, nlambdas)\n", "for i in range(nlambdas):\n", " lmb = lambdas[i]\n", " Ridgebeta = np.linalg.inv(X.T @ X+lmb*I) @ X.T @ y\n", - "# print(Ridgebeta)\n", + " print(Ridgebeta)\n", " # and then make the prediction\n", " ypredictRidge = X @ Ridgebeta\n", " MSEPredict[i] = MSE(y,ypredictRidge)\n", @@ -1317,12 +1403,131 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[2. 2.]\n", + "Training MSE for OLS\n", + "3.0\n", + "[1.99995 1.99980002]\n", + "[1.99993978 1.99975913]\n", + "[1.99992746 1.99970988]\n", + "[1.99991263 1.99965056]\n", + "[1.99989476 1.99957911]\n", + "[1.99987324 1.99949306]\n", + "[1.99984732 1.99938942]\n", + "[1.9998161 1.99926459]\n", + "[1.99977849 1.99911427]\n", + "[1.9997332 1.99893323]\n", + "[1.99967865 1.99871521]\n", + "[1.99961294 1.99845267]\n", + "[1.99953381 1.99813653]\n", + "[1.9994385 1.99775587]\n", + "[1.9993237 1.99729756]\n", + "[1.99918546 1.9967458 ]\n", + "[1.99901896 1.99608161]\n", + "[1.99881845 1.99528218]\n", + "[1.998577 1.9943201]\n", + "[1.99828624 1.99316252]\n", + "[1.99793613 1.99176998]\n", + "[1.99751458 1.99009525]\n", + "[1.99700706 1.98808176]\n", + "[1.9963961 1.98566191]\n", + "[1.99566069 1.98275501]\n", + "[1.9947756 1.97926491]\n", + "[1.99371056 1.97507735]\n", + "[1.99242921 1.97005689]\n", + "[1.99088801 1.9640435 ]\n", + "[1.9890348 1.95684892]\n", + "[1.98680716 1.9482527 ]\n", + "[1.98413059 1.93799826]\n", + "[1.98091621 1.92578916]\n", + "[1.97705827 1.91128596]\n", + "[1.97243128 1.89410423]\n", + "[1.96688672 1.87381451]\n", + "[1.96024953 1.84994524]\n", + "[1.95231424 1.82198978]\n", + "[1.94284104 1.78941903]\n", + "[1.93155188 1.75170092]\n", + "[1.91812702 1.70832814]\n", + "[1.90220243 1.65885453]\n", + "[1.88336879 1.60293962]\n", + "[1.86117291 1.54039921]\n", + "[1.83512277 1.47125748]\n", + "[1.80469739 1.39579407]\n", + "[1.76936315 1.31457796]\n", + "[1.72859758 1.22847924]\n", + "[1.68192193 1.13865173]\n", + "[1.62894215 1.04648335]\n", + "[1.56939714 0.95351665]\n", + "[1.50321091 0.86134827]\n", + "[1.43054282 0.77152076]\n", + "[1.35182854 0.68542204]\n", + "[1.26780278 0.60420593]\n", + "[1.17949575 0.52874252]\n", + "[1.0881981 0.45960079]\n", + "[0.99539415 0.39706038]\n", + "[0.90266948 0.34114547]\n", + "[0.81160425 0.29167186]\n", + "[0.7236674 0.24829908]\n", + "[0.64012627 0.21058097]\n", + "[0.56198284 0.17801022]\n", + "[0.48994188 0.15005476]\n", + "[0.42441033 0.12618549]\n", + "[0.3655222 0.10589577]\n", + "[0.31318084 0.08871404]\n", + "[0.26710969 0.07421084]\n", + "[0.22690428 0.06200174]\n", + "[0.19207979 0.0517473 ]\n", + "[0.16211139 0.04315108]\n", + "[0.13646574 0.0359565 ]\n", + "[0.11462415 0.02994311]\n", + "[0.09609807 0.02492265]\n", + "[0.08043851 0.02073509]\n", + "[0.06724062 0.01724499]\n", + "[0.05614483 0.01433809]\n", + "[0.04683565 0.01191824]\n", + "[0.039039 0.00990475]\n", + "[0.03251863 0.00823002]\n", + "[0.02707227 0.00683748]\n", + "[0.02252765 0.0056799 ]\n", + "[0.01873869 0.00471782]\n", + "[0.01558197 0.00391839]\n", + "[0.01295356 0.0032542 ]\n", + "[0.01076611 0.00270244]\n", + "[0.00894639 0.00224413]\n", + "[0.0074331 0.00186347]\n", + "[0.00617499 0.00154733]\n", + "[0.00512927 0.00128479]\n", + "[0.00426027 0.00106677]\n", + "[0.00353823 0.00088573]\n", + "[0.00293838 0.00073541]\n", + "[0.0024401 0.00061058]\n", + "[0.00202624 0.00050694]\n", + "[0.00168251 0.00042089]\n", + "[0.00139705 0.00034944]\n", + "[0.00115999 0.00029012]\n", + "[0.00096314 0.00024087]\n", + "[0.00079968 0.00019998]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEHCAYAAACp9y31AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAqrElEQVR4nO3dd5xU1fnH8c/DUhYBQQGJCAgaRQwCwmogRLCBBSIQVLBFQMSoKLFGJUaNqESMJSY/CRpR1ODPny0EsKCBSKIoHWkWEBGDSO9ly/P748wWdgaWsrt3Z+b7fr3ua2fuc2fus4WHM+eee465OyIikj4qRZ2AiIiULxV+EZE0o8IvIpJmVPhFRNKMCr+ISJpR4RcRSTOVy+qNzexZoDvwvbu3jO07HPhfoCmwDLjY3deX9F716tXzpk2bllWqIiIpaebMmWvcvX7x/VZW4/jNrBOwBRhTpPA/DKxz9+FmdgdwmLv/uqT3ysrK8hkzZpRJniIiqcrMZrp7VvH9ZdbV4+4fAOuK7e4BPB97/DzQs6zOLyIiiZV3H38Dd18Ze/wd0GBPB5rZIDObYWYzVq9eXT7ZiYikgcgu7nroY9pjP5O7j3L3LHfPql8/rotKREQOUJld3N2DVWZ2pLuvNLMjge8P9I2ys7NZsWIFO3bsKMX0JAqZmZk0atSIKlWqRJ2KSFoo78I/DrgSGB77+vcDfaMVK1ZQq1YtmjZtipmVVn5SztydtWvXsmLFCpo1axZ1OiJpocy6esxsLPAR0NzMVpjZVYSC38XMvgDOjj0/IDt27KBu3boq+knOzKhbt64+uYmUozJr8bv7JXsInVVa51DRTw36PYqUr/Lu6hERSS55ebBzJ+zYAdu3h69mkN81OXcurFsH2dmFW+3acMYZIf73v8OaNZCbW7gddRT06hXif/kLrF8fzpO/nXACXHxx2X1P7l7ht3bt2nlxCxcujNtX3gC/7LLLCp5nZ2d7vXr1vFu3bu7u/t1333m3bt28VatW3qJFCz/vvPPc3f2rr77yzMxMb926dcH2/PPPx71/586d/fjjj/dWrVp5VlaWz549uyB23nnn+fr16+Nec8899/iIESMO6vtas2ZNQV4NGjTwhg0bFjzfuXNnia+fPn2633DDDft1zorw+5QUtX27+1dfuX/yifuECe7PP+/+l78Uxh9/3L1nT/czznA/5RT3Fi3cO3QojHft6g67byeeWBjv2DE+fuqphfFWreLjZ51VGG/WLD7es2epfOvADE9QU9XiPwg1atRg/vz5bN++nerVqzNp0iSOOuqogvhvf/tbunTpwpAhQwCYN29eQezYY49lzpw5JZ7jpZdeIisri9GjR3PbbbcxadIkACZOnFi630wRdevWLcjt3nvvpWbNmtx66627HZOTk0Plyon/fLKyssjKirtZUKRsbNwIixfDl1/CV1/B11/Dt9/C+PFQqRLccAM888zur6lWDQYNCo+XL4clS+DQQ6FuXTj6aGjYsPDY/v1D67169fC6zEyoV68w/vjjsGULVKlSuNWqVRifODG08jMyCrdq1Qrj8+eHTxAZGSFfs7CVIRX+g3T++eczYcIELrzwQsaOHcsll1zC1KlTAVi5ciVdu3YtOLZVq1YHfJ4OHTowYsSIgudNmzZlxowZ1KtXjwceeIDnn3+eI444gsaNG9OuXTsApk+fzlVXXUWlSpXo0qULb731FvPnzyc3N5c77riDKVOmsHPnTq6//nquueaaEnPo168fmZmZzJ49m44dO9K3b1+GDBnCjh07qF69OqNHj6Z58+ZMmTKFRx55hPHjx3PvvfeyfPlyli5dyvLly/nVr37FjTfeeMA/B0lju3aFIjlzZuheGTYM6tQJhffeewuPa9AAmjSBzZtDl8sVV0D79nDEEVC/fijahx8e2tZm8Ic/7P28ffvuPV5SI6dIYzChQw7Ze7wMpE7hP/30+H0XXwzXXQfbtsH558fH+/UL25o1cOGFu8emTNmn0/bt25ff/e53dO/enXnz5jFgwICCwn/99dfTp08f/vSnP3H22WfTv39/GsZaEkuWLKFNmzYF7/Pkk09y2mmn7fE8b7/9Nj179ozbP3PmTF5++WXmzJlDTk4Obdu2LSj8/fv35+mnn6ZDhw7ccccdBa/561//Su3atZk+fTo7d+6kY8eOdO3adZ+GU65YsYIPP/yQjIwMNm3axNSpU6lcuTLvvfced911F6+99lrcaxYvXszkyZPZvHkzzZs359prr9WYfdl3U6fCbbfB7Nmh+ENoUV99dSj8F18MbdvCD38ITZuGlnlRnTqFTQqkTuGPSKtWrVi2bBljx47l/GL/uZxzzjksXbqUt99+m7feeouTTz6Z+fPnA/ve1XPZZZexa9cutmzZkvD4qVOn0qtXLw6JtRouuOACADZs2MDmzZvp0KEDAJdeeinjx48H4N1332XevHm8+uqrAGzcuJEvvvhinwr/RRddREZGRsHrrrzySr744gvMjOzs7ISv6datG9WqVaNatWocccQRrFq1ikaNGpV4Lkkz7qFFP2FC6B655Rbo0QNq1oTKleHGG+GUU0ILu1mzwu6QFi3CJvssdQr/3lrohxyy93i9evvcwk/kggsu4NZbb2XKlCmsXbt2t9jhhx/OpZdeyqWXXkr37t354IMPClrk++Kll16iXbt23Hbbbdxwww28/vrrB5xnPnfnySef5Jxzztnv19aoUaPg8d13380ZZ5zBG2+8wbJlyzg90acuoFqR/syMjAxycnL2+7ySwnbsgIcfhpdfhkWLwr6TTw6jW/If//vf0eWXgrQQSykYMGAA99xzDyeddNJu+//5z3+ybds2ADZv3sySJUto0qTJfr+/mXH//fczbdo0Fi9evFusU6dOvPnmm2zfvp3Nmzfzj3/8A4A6depQq1YtPv74YwBefvnlgtecc845PPXUUwUt9M8//5ytW7fud14bN24suJj93HPP7ffrJY3t2gX5gx2qVYPnnw/973/+c7gwO2tW4XBHKXUq/KWgUaNGCS9Yzpw5k6ysLFq1akWHDh0YOHAgp5xyClDYx5+//fGPf9zrOapXr84tt9yy2wVegLZt29KnTx9at27NeeedV/D+EPryr776atq0acPWrVupXbs2AAMHDuTEE0+kbdu2tGzZkmuuueaAWuG33347d955JyeffLJa8bJvNm2C3/8+XHw988zCMfGffgr/+le4Jld0RI2UiTJbiKU0JVqIZdGiRbRQv95ebdmyhZo1awIwfPhwVq5cyRNPPBFxVonp95niNm2Cxx6DJ54INyt16QI33QTnnBOGMEqZ2NNCLKnTxy9xJkyYwEMPPUROTg5HH320umMkOrNnhyGXPXrA0KHhIq1ERoU/hfXp04c+ffpEnYakq08+gY8+giFDoHNn+OwzOP74qLMS1McvIqVtxw64807o0CF07ezcGfar6FcYKvwiUnrmzoV27WD48DDVwezZu09PIBWCunpEpHSsXx/ukK1ZE956C849N+qMZA9U+EXk4OTPeXPYYfDcc/CTn4T5cqTCUlfPQTAzLr/88oLnOTk51K9fn+7duwOwatUqunfvTuvWrTnxxBMLpnRYtmwZ1atX320c/5gxY+Le//TTT6f4MNby8MADDxTklZGRsc/3GuQbOHAgCxcuLOMspULYtAm6doX8OZp69VLRTwJq8R+E8piWOQpDhw5l6NChANSsWTMuz/w5vSvtYfz1M8WnwJXU9N13cN55YX6dK6+MOhvZD2rxH6T8aZmBgmmZ861cuXK3ycgOZlrmfMuWLeO0006jbdu2tG3blg8//LDgXJ06daJNmza0bNmSqVOnkpubS79+/WjZsiUnnXQSjz32GABz5syhffv2tGrVil69erF+/fp9Om/z5s35xS9+QcuWLfnmm2+49tprycrK4kc/+hH33HNPwbFFP6nUrFmToUOH0rp1a9q3b8+qVasO+mcgFcDSpdCxI3z+OfzjH1Dkk68kgUSrs1S0bZ9W4OrcOX77859DbOvWxPHRo0N89er42D6oUaOGz50713v37u3bt2/31q1b++TJkwtW4Hr77be9du3afvrpp/uwYcP822+/dffEK3B98MEHce/fuXNnnz59+m77tm7d6tu3b3d3988//9zzfzaPPPKIDxs2zN3dc3JyfNOmTT5jxgw/++yzC16bv2LXSSed5FOmTHF397vvvtuHDBmy1+8xP2cz848++qggtnbt2oLzde7c2efOnRuXN+Djxo1zd/fbbrvN77///oTn0QpcSWTNGvcmTdzr1nWfNi3qbGQv0ApcZaOsp2UuLjs7m8GDBzNnzhwyMjL4/PPPATjllFMYMGAA2dnZ9OzZkzZt2nDMMcewdOlSbrjhBrp160bXrl3ZuHEjGzZsoHPnzgBceeWVXHTRRft07qOPPpr27dsXPH/llVcYNWoUOTk5rFy5koULF8Z9qqlatWrBNY927doVrCAmSezww2HgQOjePcycKUkndQp/ik7LXNxjjz1GgwYNmDt3Lnl5eWRmZgJhls4PPviACRMm0K9fP26++WZ+8YtfMHfuXN555x1GjhzJK6+8UtDdcyCKTsn81Vdf8cgjjzB9+nQOO+ww+vXrx44dO+JeU6VKFSw2b7qmZE5yq1fD2rVhIfC77446GzkI6uMvBWU9LXNRGzdu5Mgjj6RSpUq88MIL5ObmAvD111/ToEEDrr76agYOHMisWbNYs2YNeXl59O7dm2HDhjFr1ixq167NYYcdVrBK2AsvvFDQ+t8fmzZtokaNGtSuXZtV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import os\n", "import numpy as np\n", @@ -1370,7 +1575,7 @@ " RegLasso = linear_model.Lasso(lmb)\n", " RegLasso.fit(X,y)\n", " ypredictLasso = RegLasso.predict(X)\n", - " print(RegLasso_coef_)\n", + "# print(RegLasso.coef_)\n", " MSELassoPredict[i] = MSE(y,ypredictLasso)\n", "# Now plot the results\n", "plt.figure()\n", @@ -1391,12 +1596,33 @@ }, { "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, - "outputs": [], + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[ 2.03099776 -0.17917768 5.18029127]\n", + "Training MSE for OLS\n", + "0.009163470508352228\n", + "Test MSE OLS\n", + "0.008675369724976777\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEKCAYAAAAVaT4rAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA4aUlEQVR4nO3dd3hUZfbA8e9JIw2SkIRQAoQmJIQQSAIEpIggIBixgh0QWFcprsrqys+ya2PX3jsgLotigaULrkZUQOkISBEIEEQ6IUBIfX9/zBDSIJTM3MzM+TxPnszc95Yzk+Tknfe+91wxxqCUUspzeFkdgFJKKefSxK+UUh5GE79SSnkYTfxKKeVhNPErpZSH0cSvlFIexmGJX0Qmish+EVlfQduDImJEJMJRx1dKKVUxR/b4JwN9yy4UkYbAVcAuBx5bKaXUWTgs8RtjFgOHK2h6GfgroFeOKaWUBXyceTARuRbYY4xZKyLnvV1ERISJiYlxWFxKKeWOVq5cedAYE1l2udMSv4gEAo9iG+Y5n/VHAiMBGjVqxIoVKxwYnVJKuR8R2VnRcmfO6mkGNAHWikgGEA2sEpG6Fa1sjHnPGJNsjEmOjCz3D0sppdRFclqP3xjzC1Dn9HN78k82xhx0VgxKKaUcO51zGrAUaCkimSJyt6OOpZRS6vw5rMdvjLmlkvaYS9l/fn4+mZmZnDp16lJ2oyzm7+9PdHQ0vr6+VoeilMdw6qyeqpSZmUnNmjWJiYnhQmYIqerDGMOhQ4fIzMykSZMmVoejlMdw2ZINp06dIjw8XJO+CxMRwsPD9VObUk7msokf0KTvBvRnqJTzuXTiV0opt5STA19/DevWOWT3mvgvgYhw++23Fz8vKCggMjKSAQMGALBv3z4GDBhA27ZtiYuL4+qrrwYgIyODgIAAEhMTi7+mTJlSbv89evSgZcuWtG3blpSUFNasWVPcdvXVV3P06NFy2zz55JO88MILl/zajh49yltvvXVR254tNqXUebj5ZggNhd694c03HXIIlz25Wx0EBQWxfv16cnJyCAgIYNGiRTRo0KC4/fHHH6d3796MHTsWgHUl/ns3a9asVCI/m6lTp5KcnMykSZMYN24cixYtAmDevHlV+2LKOJ3477333nJtBQUF+Pic/VfH0bEp5TZ27oSPP4YffoD580EE4uOhcWPo2RO6dnXIYbXHf4muvvpq5s6dC8C0adO45ZYzs1j37t1LdHR08fOEhISLPk5qaip79uwpfh4TE8PBg7Zr35555hkuu+wyLr/8cjZv3ly8zvLly0lISCAxMZFx48YRHx8PQGFhIePGjSMlJYWEhATefffdcsd75JFH2LZtW/G26enpdO3albS0NOLi4gAYOHAgSUlJtG7dmvfee69cbBkZGcTGxjJixAhat27NVVddRU5OzkW/B0q5hYIC+OwzW2KPiYHHHrMN7Zz+lPz44/D889CvH3sLvcktKKzyENyix//32RvY+PuxKt1nXP1aPHFN60rXGzx4MP/4xz8YMGAA69atY9iwYXz//fcA3HfffQwaNIg33niDXr16MXToUOrXrw9QnFRPe/311+l6jv/uCxYsYODAgeWWr1y5kk8++YQ1a9ZQUFBA+/btSUpKAmDo0KG8//77pKam8sgjjxRv8+GHHxISEsLy5cvJzc2lS5cuXHXVVaWmVE6YMIH169cXfypJT09n1apVrF+/vni9iRMnUrt2bXJyckhJSeGGG24gPDy8VHxbt25l2rRpvP/++9x888188cUXpYbHlPI4M2fahnOaNIF//APuuMP2DwA4diqf77ccZMm2gyzZdogdB08wdXhHujSv2luXuEXit1JCQgIZGRlMmzateAz/tD59+rB9+3YWLFjA/PnzadeuHevX2+5Lc75DPbfddht5eXkcP368wvW///57rrvuOgIDAwFIS0sDbEM12dnZpKamAnDrrbcyZ84cABYuXMi6dev4/PPPAcjKymLr1q2VzqXv0KFDqXVee+01ZsyYAcDu3bvZunVrucTfpEmT4n9wSUlJZGRkVPqalXIrOTm2sfpatWDkSLj2Wpg9G/r1A29vDmTnMn9pBos27mPptkMUFBmCa/jQsUltbuvYiKaRQVUeklsk/vPpmTtSWloaDz30EOnp6Rw6dKhUW+3atbn11lu59dZbGTBgAIsXLy7ukZ+PqVOnkpSUxLhx4xg9ejRffvnlJcdrjOH111+nT58+F7RdUNCZX8D09HS+/vprli5dSmBgID169KhwPn6NGjWKH3t7e+tQj/IcxsCUKTB+POzZA7feakv8vr7k9u3H1xv288WqTL7bcoDCIkPTyCDu7tqE3rFRJDYMxcfbcSPxOsZfBYYNG8YTTzxBmzZtSi3/5ptvOHnyJADZ2dls27aNRo0aXfD+RYSnnnqKZcuWsWnTplJt3bp1Y+bMmeTk5JCdnc3s2bMBCA0NpWbNmvz0008AfPLJJ8Xb9OnTh7fffpv8/HwAtmzZwokTJ0rtt2bNmmRnZ581pqysLMLCwggMDGTTpk0sW7bsgl+XUm5ryxbbGP6QIRAdDenpMHUqh47n8tr/tnL5P7/lvv+sYuPvxxjRtSkL/9KNbx7swd/6xZIcU9uhSR/cpMdvtejoaMaMGVNu+cqVKxk1ahQ+Pj4UFRUxfPhwUlJSyMjIKDfGP2zYsAr3cVpAQAAPPvggzz//PB9++GHx8vbt2zNo0CDatm1LnTp1SElJKW778MMPGTFiBF5eXnTv3p2QkBAAhg8fTkZGBu3bt8cYQ2RkJDNnzix1vPDwcLp06UJ8fDz9+vWjf//+pdr79u3LO++8Q2xsLC1btqRTp04X8pYp5d5+/x3WroX33oO772b/iTze/O96pi3fTV5BEd0vi2TojTF0bRGJt5fzL2IUY6r/HRCTk5NN2Rux/Prrr8TGxloUkWs4fvw4wcHBgO1k7d69e3n11Vctjqo8/Vkqt7B3r+2iqzvusD3PzibLx593v9vGpB8zyCss4sb20Yzo1oTmdWo6JSQRWWmMSS67XHv8bmzu3Lk899xzFBQU0LhxYyZPnmx1SEq5p6+/to3h5+RA376YiAhmbTvGU3OWcehEHmlt6/OXXpcRE1H1J2ovhiZ+NzZo0CAGDRpkdRhKubf334c//xlatYLp09npFcj4D3/mh98O0rZhKJOHdiC+QYjVUZaiiV8ppS7WY4/B009D374wfTozfzvG+Fe/x0uEp65tza0dG1syhl8ZTfxKKXWxoqJg5EhOvvwqT8zdzGcrM0mJCePVwe2oHxpgdXRnpYlfKaUuRGEhbN4McXEwahS/HznJsPd+ZvO+bEb3bM7YK1s4fDrmpdLEr5RS56uoCP70J5g2DTZsYL1vGMMmLycnr5CPhnag22WRVkd4Xqr3v6Vqzl3LMh86dKg4rrp169KgQYPi53l5eee1j/T0dJYsWXJJcShVrRgDo0fDhx/CAw/wbW4gN7+7FB8v4fM/d3aZpA/a478k7lqWOTw8vDi2J598kuDgYB566KEL2kd6ejrBwcF07tzZAREqZYFXXoG33oKHHuJ/t9zHPVNWcFlUTSYNSaFOLX+ro7sgDuvxi8hEEdkvIutLLHteRDaJyDoRmSEioY46vrO4a1nmiqxcuZLu3buTlJREnz592Lt3L2Ar1hYXF0dCQgKDBw8mIyODd955h5dffpnExMTiaqVKuawlS+Chh+CGG0gf9iB/nrqa2Hq1mDayk8slfXBsj38y8AZQcgxjEfA3Y0yBiPwT+BvwcJUcrUeP8stuvhnuvRdOnoQylTMBWx2NIUPg4EG48cbSbenp53VYdy3LXFZ+fj6jR4/mv//9L5GRkXz66aeMHz+eiRMnMmHCBHbs2EGNGjU4evQooaGh3HPPPRf1SUGpaqlDB5gwgR+vuomRU1fTIiqYj4d1pJa/r9WRXRSHJX5jzGIRiSmzbGGJp8uAMtnW9XhKWebNmzezfv16evfuDdg+NdSrV6/4PbjtttsYOHBghf+clHJZWVmQnw8REWy4bSTD315K04gg/n13R0ICXTPpg7Vj/MOAT8/WKCIjgZHA+VW0PFcPPTDw3O0REefdw6+IJ5RlNsbQunVrli5dWq5t7ty5LF68mNmzZ/PMM8/wyy+/XHKMSlnOGLjnHliyhP0/r2b4R6sJDfRlyrAOhAX5WR3dJbFkVo+IjAcKgKlnW8cY854xJtkYkxwZWb3PlrtjWeayWrZsyYEDB4oTf35+Phs2bKCoqIjdu3dzxRVX8M9//pOsrCyOHz9eaVlnpaq9jz+GTz4h/+7hjPj8V46ezOf9O5Ndcky/LKcnfhEZAgwAbjOuUBr0PJyrLHNycjIJCQmkpqYWl2WGM2P8p79ee+21cx6jZFnmkkqWZe7Xr1+FZZkTExM5ceJEqbLMcXFxtG/fnvj4eP70pz9RUFBwzuP7+fnx+eef8/DDD9O2bVsSExNZsmQJhYWF3H777bRp04Z27doxZswYQkNDueaaa5gxY4ae3FWu6bff4L77MN2781CzfqzLPMorgxOrXc2di+XQssz2Mf45xph4+/O+wEtAd2PMgfPdj5Zlvjhallmpi1BQAF26wNatzJw8j/uXHGJcn5bcd0VzqyO7YE4vyywi04AeQISIZAJPYJvFUwNYJCIAy4wx9zgqBk+nZZmVugjZ2RAVxd677+WR5Ufo2iKCP3dvZnVUVcqRs3puqWDxhxUsUw6iZZmVughhYZz6/EuGvvkjgX55vHhTW7yqYYXNS6ElG5RS6rSnn4Zt2/jnV5vZtO84L9yU4BYnc8vSkg1KKQUwcyY89hi7jhcwiRTuSm1Mz1ZRVkflEJr4lVLqxAkYPZqi+DYMr3050caLh/u1sjoqh9GhHqWUeuklyMzky+GPsuVwLk8NjCfQz337xZr4L4EzyjKXncbqLDNnzmTjxo0XvN2sWbOYMGGCAyJSykH274d//YsT/a/h0QMh9E+oxxUt61gdlUO57780J3BGWWarzJw5kwEDBhAXF1euraCgAB+fin910tLSiusFKeUS/PwwI0bwZO1O1Mj34okB5X/n3Y32+C+Rs8oyn5aRkUHXrl1p37497du3L77Zyd69e+nWrRuJiYnEx8fz/fffU1hYyJAhQ4iPj6dNmza8/PLLAKxZs4ZOnTqRkJDAddddx5EjR0odY8mSJcyaNYtx48aRmJjItm3b6NGjB/fffz/Jycm8+uqrzJ49m44dO9KuXTt69erFvn37AJg8eTKjRo0CYMiQIYwZM4bOnTvTtGnT4qJwSlUroaEsvPuvfHY8iHF9W7rlLJ6y3KPHP/8R+KOKC4PVbQP9Kh+ycFZZ5tPq1KnDokWL8Pf3Z+vWrdxyyy2sWLGC//znP/Tp04fx48dTWFjIyZMnWbNmDXv27CmuCHr6jl133nknr7/+Ot27d+fxxx/n73//O6+88krxMTp37kxaWhoDBgzgxhLlqvPy8oqHno4cOcKyZcsQET744AP+9a9/8eKLL5aLd+/evfzwww9s2rSJtLS0UvtTynKPP05h1278c50PzSKDuLXDhdfSckXukfgt5OiyzGXl5+czatQo1qxZg7e3N1u2bAEgJSWFYcOGkZ+fz8CBA0lMTKRp06Zs376d0aNH079/f6666iqysrI4evQo3bt3B+Cuu+7ipptuOq9jl7wYLDMzk0GDBrF3717y8vLOWtJ54MCBeHl5ERcXV/ypQKlqYfVqeOopNg4bw/bIq3j/zuRqf5P0quIeif88euaO5MiyzGW9/PLLREVFsXbtWoqKivD3t30s7datG4sXL2bu3LkMGTKEBx54gDvvvJO1a9fy1Vdf8c477zB9+vTi4Z6LERQUVPx49OjRPPDAA6SlpZGens6TTz5Z4TY1atQofuwmNfmUu3jmGUxICKPq9SQlOoxese59Qrckz/j35mCOLstcUlZWFvXq1cPLy4uPP/6YwsJCAHbu3ElUVBQjRoxg+PDhrFq1ioMHD1JUVMQNN9zA008/zapVqwgJCSEsLKx4OOrjjz8u7v2XVFlZ5aysrOIT2R999NElvSalnO7XX+HLL1ne/1Z2Fvjwt6tjsdcP8wju0eO32LnKMo8aNQofHx+KioqKyzJnZGSUG+MfNmxYhfvo378/vr62O/2kpqby7LPPcsMNNzBlyhT69u1b3AtPT0/n+eefx9fXl+DgYKZMmcKePXsYOnQoRUVFADz33HOALVHfc889nDx5kqZNmzJp0qRyxx08eDAjRozgtddeq/Ck7JNPPslNN91EWFgYPXv2ZMeOHRf+xilllQkTMAEB3F+vO/3i69K+UZjVETmVQ8syVxUty+ze9GepnO6tt0hfsY2hUT1Z9JfuNK8TbHVEDuH0ssxKKVVdZQ0Zwah933B1y0i3TfrnoolfKeU5/vgD5szh4+hUjucWcF8P17u5SlXQk7tKKc/x9tuYkSP5av7P9IqtQ1z9WlZHZAlN/Eopz5CbC+++y+5OPfgloI5L3kqxqmjiV0p5hs8+g337eP6y3nRpHk47D5vJU5KO8SulPMPrr3OsUVPmRMUz1UPH9k/THv8lcNeyzM8880xxXN7e3sWPX3vttfPex7PPPuvACJW6QEePYgoKmJp8DS3rhZDaLNzqiCzlsB6/iEwEBgD7jTHx9mW1gU+BGCADuNkYc+Rs+6ju3LUs8/jx4xk/fjwAwcHBFxXns88+y6OPPlrFkSl1kUJDWf7ZQp5/50ee7RzjUVfpVsSRPf7JQN8yyx4B/meMaQH8z/7cpbljWeaKFBYWMm7cOFJSUkhISODdd98963EfeeQRcnJySExM5Lbbbrvk16zUJcnKgqNHmbw0g1rB/lyb2KDybdydMcZhX9h69utLPN8M1LM/rgdsPp/9JCUlmbI2btxYekH37uW/3nzT1nbiRMXtkybZ2g8cKN92HoKCgszatWvNDTfcYHJyckzbtm3Nt99+a/r372+MMWbBggUmJCTE9OjRwzz99NNmz549xhhjduzYYfz9/U3btm2LvxYvXlxu/927dzfLly8vtezEiRMmJyfHGGPMli1bzOn35oUXXjBPP/20McaYgoICc+zYMbNixQrTq1ev4m2PHDlijDGmTZs2Jj093RhjzGOPPWbGjh17ztdojDHvvvuueeqpp4wxxpw6dcokJSWZ7du3V3jcktudj3I/S6Wq0oQJpjAoyCSN/Y95dp5n/a4BK0wFOdXZJ3ejjDF77Y//AFz+FvaeUpZ54cKFrFu3rrhuT1ZWFlu3bq3wuEpVG8bAxInsadKKwwG1uKNTY6sjqhYsm9VjjDEictZCQSIyEhgJnF9Fy/T0s7cFBp67PSLi3O2V8ISyzMYYXn/9dfr06VOuraLjKlUt/PgjbNnC+wMfpHdcFNFhgVZHVC04e1bPPhGpB2D/vv9sKxpj3jPGJBtjkiMjI50W4MVwx7LMZfXp04e3336b/Px8ALZs2cKJEycqPC6Ar69v8bpKWWbiRPIDg/i8SSfu6hxjdTTVhrN7/LOAu4AJ9u//dfLxHcIdyzKXNXz4cDIyMmjfvj3GGCIjI5k5c2aFxwUYOXIkCQkJtG/fnqlTp17YG6pUVTh5EqZPZ3G7nkTVjyC1qWdP4SzJYWWZRWQa0AOIAPYBTwAzgelAI2Antumchyvbl5Zldm/6s1SOkvnjCm6bsppBt1zBvR540ZbTyzIbY245S9OVjjqmUkqV9J/sYDLDG3Bj++jKV/YgeuWuUsr9bN5M0eDBLFm0nB6XRVKnlr/VEVUrLp34HTVMpZxHf4bKIaZMgc8/Z0+ucHNKQ6ujqXZcNvH7+/tz6NAhTRwuzBjDoUOHiqekKlUljIFp0/g1NgVTN4qerepYHVG147LVOaOjo8nMzOTAgQNWh6Iugb+/f6myFkpdsp9+gh07mNx/INe3j8bX22X7tw7jsonf19eXJk2aWB2GUqq6+c9/KPDzY36LVGYkaaeiIvqvUCnlXho0YH7qNTRpWo8WUTWtjqZactkev1JKVWT7sPsYfeQ7/i+xvtWhVFua+JVS7mPDBmZnCiIwIEET/9noUI9Syj2cOoXp3JnG/xhPpybh1A3R2WJno4lfKeUe5s1Djh3js4bJXKvDPOekiV8p5R6mT+d4aDgrmiTQL76e1dFUa5r4lVKuLycHM3cuC1t0oltsPUICfa2OqFrTxK+Ucn1ff40cP86XTToxUO+pWymd1aOUcn39+vHB3z9gXW4UH8RqiYbKaOJXSrm8Qi9v3pZGdGsdjr+vt9XhVHs61KOUcm2LF7NvxH3kHzrM1W30pO750MSvlHJtU6ZQe9oUTEAAPVpW7/tzVxea+JVSrqugADNzJuktOtIlrgGBfjp6fT408SulXNfixcihQ8xo2ol+bepaHY3L0MSvlHJdX35Jvp8/S1sk6w1XLoAmfqWUyzI1avBVmx50aB1NTX+9aOt8WTIgJiJ/AYYDBvgFGGqMOWVFLEop17Xu/scY5fsjL2iJhgvi9B6/iDQAxgDJxph4wBsY7Ow4lFIu7uhR5q//Ax8voXdslNXRuBSrToH7AAEikg8EAr9bFIdSylX17EkKYay/91mtzXOBnN7jN8bsAV4AdgF7gSxjzEJnx6GUcmG7dsHq1fwU0pjecdrbv1BWDPWEAdcCTYD6QJCI3F7BeiNFZIWIrDhw4ICzw1RKVWezZwPwdfOO9NLEf8GsmNXTC9hhjDlgjMkHvgQ6l13JGPOeMSbZGJMcGalX4ymlSpg1iz1RjQhoE0eD0ACro3E5ViT+XUAnEQkUEQGuBH61IA6llCvKysJ8+y1zYpJ1mOciOf3krjHmJxH5HFgFFACrgfecHYdSykX5+bHsiZf5bIcXr+hsnotiyaweY8wTwBNWHFsp5eICApjYsCM53sdoXb+W1dG4JL1yVynlOgoKyHvhJX5bsYFesXWwjRarC6WJXynlOpYtw2/cg8Tu2kTvOC3KdrE08SulXMfcuRR6+7C6ZQodmtS2OhqXpYlfKeUyzJw5rGoUT1LbGPx8NH1dLH3nlFKuYedOZP16FsQkcaXeUP2SaOJXSrmGlSsp8vImvXkK3S/TxH8pzpn4S5ZSEJEuZdpGOSoopZQq5/rrueW5OYQmxlM7yM/qaFxaZT3+B0o8fr1M27AqjkUppc5q37FT/HS4kJ560dYlqyzxy1keV/RcKaUcY/585IorqHfsgI7vV4HKEr85y+OKniullGP897/U2rgOv/r1aBlV0+poXF5lJRtaicg6bL37ZvbH2J83dWhkSikFYAxm3jx+aNyWrvH19WrdKlBZ4o91ShRKKXU269cju3ezqO9A+rbS8f2qcM6hHmPMzpJfwHGgPRBhf66UUo41bx4ASy9LIbVZuMXBuIfKpnPOEZF4++N6wHpss3k+FpH7HR+eUsrTmSZNmNWhPy3atcLf19vqcNxCZSd3mxhj1tsfDwUWGWOuATqi0zmVUk6wrUc/xlzxZ65opbN5qkpliT+/xOMrgXkAxphsoMhRQSmlFAC7d7Pk560AmvirUGWJf7eIjBaR67CN7S8AEJEAwNfRwSmlPNzjj3Ptrb1oFRmk99atQpUl/ruB1sAQYJAx5qh9eSdgkuPCUkp5vKIiiubPZ3F0G3po7f0qdc7pnMaY/cA9FSz/FvjWUUEppRSrV+O1bx/fJN/G4JaRVkfjVs6Z+EVk1rnajTFpVRuOUkrZzZtHkQirYjvwfOMwq6NxK5VdwJUK7AamAT+h9XmUUk5i5s5lY4OWxLdrgY+3VpCvSpW9m3WBR4F44FWgN3DQGPOdMea7iz2oiISKyOcisklEfhWR1Ivdl1LKPW19/k0e6zGcni11Nk9Vq+zK3UJjzAJjzF3YTuj+BqRXQS3+V4EFxphWQFvg10vcn1LKzSzIq8Wa6FZ01/H9KlfZUA8iUgPoD9wCxACvATMu9oAiEgJ0wzZTCGNMHpB3sftTSrmhN9/k+LpsEtpcTkRwDaujcTuVndydgm2YZx7w9xJX8V6KJsABYJKItAVWAmONMSfKHHskMBKgUaNGVXBYpZRLKCig6LHHaBGdROBN11sdjVuqbIz/dqAFMBZYIiLH7F/ZInLsIo/pg+1isLeNMe2AE8AjZVcyxrxnjEk2xiRHRupHPaU8xrJleB05wjdNk+mpV+s6RGXz+B1xKj0TyDTG/GR//jkVJH6llIeaN49CL282xncivn6I1dG4JafPkTLG/IGtFERL+6IrgY3OjkMpVT2ZuXNZ1TCODm1j8PLSGeSOUOnJXQcZDUwVET9gO7bKn0opT3fiBKeOn2RRk646zONAliR+Y8waINmKYyulqrGgIF55YxYfLf6N0S0irI7GbenlcEqp6sMYvt20n6SmkdT01wLAjqKJXylVPZw6RUF0QxIXfqnDPA6miV8pVT2kp+Pz+x72B9emh5ZpcChN/Eqp6mH2bHL9/MlM7ESzyCCro3FrmviVUtYzhqI5c/g+JpHL20QjotM4HUkTv1LKer/8gteuXSxqmsKVsTrM42ia+JVS1qtVi8Vpd/FTbCc6Ngm3Ohq3Z9UFXEopVayoUWMe6nA7yTFh+Plof9TRNPErpax15Ag7Fv3A4aNFXNmqldXReAT916qUstasWTQblEbswQyu0Pn7TqGJXyllrdmzORgSQY2UZGoH+VkdjUfQxK+Usk5uLkULF7IwJokr4+paHY3H0MSvlLLO//6HV3Y2C1t0opdO43QaTfxKKessWECOfxC726XSvE6w1dF4DJ3Vo5SyzInn/sVNua3pGq9X6zqT9viVUpb5bvsRNoZF06e1ju87k/b4lVLWePFFfL/fQFj7waTEhFkdjUfRHr9SyvmMwbz9NgEbfqFXbBQ+3pqKnEnfbaWU823YgGzbxrxmHXWYxwKa+JVSzjdjBkUi/BDXmcv13rpOZ1niFxFvEVktInOsikEpZQ0zcybro2OJT2qJv6+31eF4HCtP7o4FfgVqWRiDUsrZ8vM5HNOc6eHhOsxjEUt6/CISDfQHPrDi+EopC/n68u7dT/JpygAtymYRq4Z6XgH+ChRZdHyllEXMli18teEPUptFUMvf1+pwPJLTE7+IDAD2G2NWVrLeSBFZISIrDhw44KTolFIOtWUL0rIlHb6dSb94HeaxihU9/i5AmohkAJ8APUXk32VXMsa8Z4xJNsYkR0ZGOjtGpZQjTJ8OwNKmSfTV8X3LOD3xG2P+ZoyJNsbEAIOBb4wxtzs7DqWU85lPP2VtTDzNk1oRprX3LaPz+JVSzrFxI7J+PV8278KAhPpWR+PRLE38xph0Y8wAK2NQSjnJ9OkYEb6O68pVraOsjsajaZE2pZRTFN7/F/6SUYO4pJY6m8diOtSjlHKK5YcLmFU3gWva6jCP1bTHr5RyvJde4sCmQ/hHXc6VetGW5bTHr5RyrLw8zLPP4r/kB66MjSKohvY3raaJXynlWHPnIocOMTX2CtJ0mKda0MSvlHKsyZPJCglnY+tO9NRhnmpBE79SynH278fMm8f02B4MSGqEr95pq1rQn4JSynEOHWJv2w5Mj+vJTcnRVkej7PQsi1LKcWJjGXHnBGoIxNbTW29UF9rjV0o5xu7dbFm9hQ2/H+OmpIZWR6NK0MSvlHKMxx+nYbcUgkyhzuapZjTxK6Wq3sGDmGnTmB3Xne4JDbQSZzWjiV8pVfU++ADJzeW9Nv24OVmHeaobTfxKqapVUABvv826y5IobBVLtxZ6I6XqRhO/UqpqrViByczkzdZ9uDO1MV5eYnVEqgydzqmUqlqdOvH0a7NZutfwQpLO3a+ONPErpapOfj4Hc4v4+Hfhlg6NqKl196slHepRSlWdIUM4fM315BUUcmfnGKujUWehiV8pVTW2bMF88gnLCoPp1rIOzSKDrY5InYUmfqVU1Xj2WQp9/Xi1bRpDtbdfrWniV0pduu3bMf/+NzM6DCCqeSN6tNQpnNWZ00/uikhDYAoQBRjgPWPMq86OQyl+/x1yc0sv8/KCxo1tj/ftg5MnS7f7+EBD+wVJe/fCqVOl2/38oEGDs++/Rg2oby9fkJkJ+fml2wMCoG5d2+Ndu6CwsHR7YCBERdke79wJRUWl24ODIdKedHfsKP+aa9WC8HDbdjt3lm8PCYHatW3H3bWrfHtYGISG2uLOzDyz/IknKPLy5q2WvXj4yhZIXp7t9ZcVEQE1a9ret717y7fXqQNBQbb3fd++8u1169reoxMnYP/+8u316oG/P2Rnw8GD5dsbNLD9jLKy4PDh8u0NG9p+xkePwpEj5dsbNQJvb9u2WVnl22NiQMR27Ozs0m0itnaAAwfg+PHS7RX97p3+eVQ1Y4xTv4B6QHv745rAFiDuXNskJSUZparUgQPG9OljDJT+iog4s87AgeXbmzQ5096rV/n2hIQz7R07lm/v3PlMe1xc+fY+fc60N2xYvv3GG8+0h4aWbx869Ey7j0/59jFjbG05OeXbwJhHH7W1799fcftzz9nat22rsP2NG+43hYVFxqxZU/H2H31k2/6HHypu//JLW/v8+RW3L1xoa58+veL2pUtt7R9+WHH7+vW29ldeqbh9505b+9NPV9x++LCt/eGHK27Py7O133tv+bYaNc78bO644/x+9x5+2FwKYIWpIKc6vcdvjNkL7LU/zhaRX4EGwEZnx6I8WEQEfPAB/O9/pZfXqHHm8ZgxMHBg6fbgEicsx42D228v3R4WdubxY4+V73VGlhgCeeaZ8r3G+iWKmb30kq1nW9LpHiHAW29BXl7p9ubNzzz+8ENbSikpNtb23dcXJk+mnDZtbN9r1qy4vX37M6/jdHtREat2ZzH1p11ce+dA2wVbDRtWvH2XLrbvLVqce/9t2lTc3rq17XtKSsXtzZrZvnftWnH76U9jvXtX3H66d33NNRBdwTUIgYG27zfddOa9LMnb2/b9jjugQ4fSbV4lRtZHjIArryzdXtHvXnx8+WNUATFlfzGcSERigMVAvDHmWJm2kcBIgEaNGiXtrOhjqVIX48gR28fo00lAXbxlyzAjRzKk/1/5o04j5o/tqlfqViMistIYk1x2uWUnd0UkGPgCuL9s0gcwxrxnjEk2xiRHRuqJIlWF3n/fNla7Z4/Vkbi2oiIYO5ZTe/exPNef0Vc216TvIixJ/CLiiy3pTzXGfGlFDMpDGQMTJ0Jqqvb4L9XUqfDzz/yr2120aFaPq+PrWR2ROk9WzOoR4EPgV2PMS84+vvJwy5bB5s0wagR8NgQK8irdRFWgsAD+9zU5d0eRWm8FYwO24/Xpm1ZH5Z66/xXqJ1bpLq2o1dMFuAP4RUTW2Jc9aoyZZ0EsytNMmmQ7QVf/d/hlFtSJszoi13RgP/jnsS8sgtZBWYTm5kFu5Zupi1BwqvJ1LpAVs3p+AHQgUDlfXh58/jnccB1s+QziroWbJlkdlWsqKODFh99ikl9LvrmvO9T0tzoidQH0yl3lOfz8YP16uLkdnMqCDiOsjsj1HDsGBw+yaMshXvdtxpgrm1NHk77L0cSvPENRke3Ebr16kDnTNsTTKNXqqFzP/fdTmNCWv//nJ1rVrcmQzk2sjkhdBE38yjN88AFccQVsTIc/1kHK3bZL6NX5++ILmDSJ+Ul92I8vrw5uh5+PphBXpD815f5yc+Hpp23fN00Dv5qQMMjqqFzL2rVw110cjGvLX1ql8UjfVrSsW9PqqNRF0sSv3N/778Pu3fDoQ7BxBrQdDDU0aZ23ffsgLY2CkFCu7/1XOrWqxxAtu+zS9NaLyr3l5MCzz9pqt/ivg8I82zCPOn8BAeQlJTO6UR+ya0fw/I1t9QpdF6eJX7m3Dz6wlf9990VYNgYSBkOdCoprqfLy8+HkSXKDgrmjz0Os2XWUqXcmUzdEZ/G4Ok38yr3dfbetfvyJOeDlC72etDoi15CXB4MGYfbsYfzYN/l5x2FeGZRISowDasMrp9MxfuW+CgttV+l2joZNc6Dbg1BL68lUKjcXbrwRZs5kUVJvPv9lP/f3asHAdlrbyF1o4lfuadUqaNUKVq+CBY9AWAx0us/qqKq/gwehXz+YPZs5I8czMqQzt3ZsxNgrW1gdmapCOtSj3I8xMHas7SYn+76CA5tg0FTw1bHpSt15J2bJEqaNeppHgxIZ0bUJj14di+g1D25FE79yP1Onwg8/wD8fhZ9fgNhroFV/q6OqvoyxDe/4+5P93PO8/MUKJuZFcH+vFoy9soUmfTekiV+5l1Wr4E9/gk4dwGsG1GoAaW/oVbpnk5kJ99wDoaGsm/AG9y7Yx77CSJ66No47UmOsjk45iI7xK/fy3nu2++neEQU5B+DmjyAg1Oqoqp/8fHj7bWjdGvPNNyyr3YQb31pCUZHh0z+latJ3c9rjV+7ljTdg+jjYMhGufgHqt7M6oupn1Sq45RbYsoXjqZfzl16jWJQXzBUtInjx5kRqB/lZHaFyME38yvUdOQL/93/w8F9h7cuwZRIkDYWU4VZHVn3k5dlKLzRsCA0akFszhE8feZUnTFMiavjz+g1xDEiop+P5HkITv3JtmzZBWhpkZIDPOghbB10fhJ6P6bg+wM6dMGUKvPMOxMSwa9Yi3vphH59f9SQicFfHxjxw1WXU8ve1OlLlRJr4lWsyBmbMgGHDwMcLxrSC4HXQ5zlIvdfq6Kw3fz7885/w3XcAHEztxuQO1/Hm89/g6+3NrR0bcU/3ZtQPDbA4UGUFTfzKNb3+um2uftMoSMuBurnQfyrEDrA6MufLzYXly+Gbb+DPf4bISPI3byF/ZyY/DL6PV+t1ZINfbeqF+DM2pSGDUxppvR0Pp4lfuQZj4McfwdsbYqOh/i5IC4OEHOh4N/R6AvxDrI7Sefbssf3z+/lnWLoUTp3CiLDQty7T6iay6kAzjt38CsH+vvRsVYcHEuvTo2UdvLWqpsKixC8ifYFXAW/gA2PMBCviUNVcURGsXg0LF8JHk2DzVmhbF67LBQzcdg10HgvRSVZHWvUKC233B962DX77DbZuhQ0bYMgQsm4fys4dB2j94kvsa9yCFalpLAhvyY/148jKqkkzv5OkpTSmZ6s6dGkeQQ0fb6tfjapmnJ74RcQbeBPoDWQCy0VkljFmo7NjUdVIYaHtYqLt26FjWzi8HQYPgx9/sbVHe0OaP6SGQdKNthk7oY2sjfl8FRbC8eO2EhJeXhAdbVs+ZQr88QccOAB//EHR3r3kXN6dPX++n8OHj9OxXTvEGACya4WxIyqGaQu3M237QjAGv7HT8Qn0p3X9WrSNDuWphqF0iKmtwziqUlb0+DsAvxljtgOIyCfAtYAmfldljC255efbxpsD/YFC2P8HZGyH7KNwLAuOHITDB6H/5WByYOZXMPsH2HsQ9mdDYREI8Lea4CsQnQ+DIuDyDtC2J1zWz1ZLv+RsHWNsnwwKC4u/TFCQLaQjRyg6fhzy8inMz6coPx9TBPmXtaSwyCC/boT9+ynKzcPk52Py8ijy8yO7R28KiwxBC+fhvXsXJi8Pyc3F5OWRFxbOnluGUlhkaPjGCwRkbENOncLrVA5ep05xJKYFS//yJPmFhmvuuZ7aO7bid+pkcbi/JHXnjbEvcDKvkFcfeIDaxw6R6+PH/uDa7A8M5euCbbx9ajEAva8bz+81I9gX2YDgOuE0rB1Io9qBPBoeSPM6wbSoU5MGoQF6UxR1waxI/A2A3SWeZwIdHXGgpRP/SodnXsXraEGp5QUNarD3xhhbMB9sxetEUan2vCb+7EtrDED021uQPAPmTHtuywD297P1NqNf24IUmVLbn4oP5kCvBkh+IdFv/lYurpx2NTnYvT7eJ/Kp//72cu0nO4ZwKLUufodPETVlZ7n2413DONo+khr7ThL5SWa59mM9wznWJpyA3ccJ/+L3cu1Z/SI50TKEoG3HCPnv/hItttdxbGAdcprWJHjDEYLmHT7TZP86cVs4BdH+BKzMwm9eNlJU5gD3BkGkNyzNhYW55Y7PgXchxAtW5GH25WNqCaauL0U1hEIfHyYziN+8m9Du2Cqu/m4RMut7vMxivMzjeBcVkvrIlxSKN3+b9ya3rphdatenfPxo9eCXALw050Wu3/BtqfaDgSEkj54KwHtfPs1VW5eVat8ZWpc+f/oAgH9/MoHLd64t1b4+qhl35rQG4P2vvqPFwd3kefuS41uDUz5+bOAo/5ht68McC4+nZnBTTvkHkhsQyKmAYPbXbcTOQycJ8PPmiccnIyGh+NYMJiTQj5AAX+oG+vJ6kB/hQX6EB3ejbi1/agX46Px6VaWq7cldERkJjARo1OjiPtL7hDbgVM0gfE3p5JNTsyYHgi4DILLW73j75JduDwopbq9TKxOv/EIAjP1v70Rw7eL2qNBdtl5nCafbvfIKqBNWPjFnB0dwIOgyfEwOEWHlE/OxoDocCLoM/1PHCAvbV649K7Au+4JbEJR9mJCwg+Xbg+qxP7gptYL2UTP8SLn2w0HRHApuRFjw7wTUyba/tjOJZV9wU47UbEB46C6iG+TZXvfpdhG2hySSFVqPqKhtNGi9CSNgvASDF8ZLWBvRhyOR9YhuuoGGnTdQ6OVDkZcPBd6+5HvV4OumwzkUFk2jk2tplb0ExAtEMAh4eZEZezc+AYEUHQ9iE76AYLy9wUsw4sX17RqAjy/epg/fN2+A8fEBL2+MtzfG19deWAwkYgjf7r0S4+0Fvr7g60thjQCe7BaHt5eQH/843xzLAj9f8PVD/PwoCgzgzSYt8PaC/Gv+w2IM4u+P1PDDy68G3j7efOEteIngO3ohp7wFHy8hxMuLcG8hxtuL67y98PXxws+7H77eoklbVTtiyiQthx9QJBV40hjTx/78bwDGmOfOtk1ycrJZsWKFkyJUSin3ICIrjTHJZZdbUaRtOdBCRJqIiB8wGJhlQRxKKeWRnD7UY4wpEJFRwFfYpnNONMZscHYcSinlqSwZ4zfGzAPmWXFspZTydFqPXymlPIwmfqWU8jCa+JVSysNo4ldKKQ+jiV8ppTyM0y/guhgicgAoX7vg/EQA5S9vtZ7GdWE0rgujcV2Y6hoXXFpsjY0xkWUXukTivxQisqKiK9espnFdGI3rwmhcF6a6xgWOiU2HepRSysNo4ldKKQ/jCYn/PasDOAuN68JoXBdG47ow1TUucEBsbj/Gr5RSqjRP6PErpZQqwaMSv4g8KCJGRCKsjgVARJ4SkXUiskZEFopIfatjAhCR50Vkkz22GSISanVMACJyk4hsEJEiEbF8BoaI9BWRzSLym4g8YnU8ACIyUUT2i8h6q2MpSUQaisi3IrLR/jMca3VMACLiLyI/i8hae1x/tzqmkkTEW0RWi8icqtyvxyR+EWkIXAXssjqWEp43xiQYYxKBOcDjFsdz2iIg3hiTAGwB/mZxPKetB64HFlsdiIh4A28C/YA44BYRibM2KgAmA32tDqICBcCDxpg4oBNwXzV5v3KBnsaYtkAi0FdEOlkbUiljgV+reqcek/iBl4G/UuruudYyxhwr8TSIahKbMWahMeb0jYqXAdFWxnOaMeZXY8xmq+Ow6wD8ZozZbozJAz4BrrU4Jowxi4HDVsdRljFmrzFmlf1xNrZk1sDaqMDYHLc/9bV/VYu/QxGJBvoDH1T1vj0i8YvItcAeY8zaSld2MhF5RkR2A7dRfXr8JQ0D5lsdRDXUANhd4nkm1SCRuQIRiQHaAT9ZHApQPJyyBtgPLDLGVIu4gFewdVaLqnrH1fZm6xdKRL4G6lbQNB54FNswj9OdKy5jzH+NMeOB8fZ7D48CnqgOcdnXGY/tI/pUZ8R0vnEp1yUiwcAXwP1lPvFaxhhTCCTaz2XNEJF4Y4yl50hEZACw3xizUkR6VPX+3SbxG2N6VbRcRNoATYC1IgK2YYtVItLBGPOHVXFVYCq2u5I5JfFXFpeIDAEGAFcaJ875vYD3y2p7gIYlnkfbl6mzEBFfbEl/qjHmS6vjKcsYc1REvsV2jsTqk+NdgDQRuRrwB2qJyL+NMbdXxc7dfqjHGPOLMaaOMSbGGBOD7SN5e2ck/cqISIsST68FNlkVS0ki0hfbR8w0Y8xJq+OpppYDLUSkiYj4AYOBWRbHVG2Jrdf1IfCrMeYlq+M5TUQiT89aE5EAoDfV4O/QGPM3Y0y0PWcNBr6pqqQPHpD4q7kJIrJeRNZhG4qqFlPcgDeAmsAi+1TTd6wOCEBErhORTCAVmCsiX1kVi/3k9yjgK2wnKqcbYzZYFc9pIjINWAq0FJFMEbnb6pjsugB3AD3tv1Nr7L1Zq9UDvrX/DS7HNsZfpVMnqyO9clcppTyM9viVUsrDaOJXSikPo4lfKaU8jCZ+pZTyMJr4lVLKw2jiVy5HRI5XvtZZtx1lr6ZZqkqr2Lxmb1snIu1LtNU7XR1RRHpUVaVEEUk/nyqjIpJRWUVZEflaRMKqIi7l/jTxK0/zI9AL2FlmeT+ghf1rJPB2ibYHgPedEt3F+xi41+oglGvQxK9clr2X/rz9IrhfRGSQfbmXiLxlv6fAIhGZJyI3AhhjVhtjMirY3bXAFHu1xmVAqIjUs7fdACyo4PgdRGSpvV76EhFpaV8+RERm2o+dYf+U8YB9vWUiUrvEbu6wX8y0XkQ62LcPF9v9GTaIyAeAlDjmTBFZaW8bWWI/s4BbLva9VJ5FE79yZddjq6HeFlsv/nl7sr4eiMFWJ/8ObFf6VqbCapsi0gQ4YozJrWCbTUBXY0w7bJVVny3RFm+PIwV4BjhpX28pcGeJ9QLt92O4F5hoX/YE8IMxpjUwA2hUYv1hxpgkIBkYIyLhAMaYI0CN08+VOhe3KdKmPNLlwDR7dcV9IvIdtkR7OfCZMaYI+MNeeOti1QMOnKUtBPjIXnPJYKvlftq39rrz2SKSBcy2L/8FSCix3jSw1dEXkVr2ujHdsP3TwBgzV0SOlFh/jIhcZ3/cENvQ1CH78/1A/RLPlaqQ9viVsjlbtc0cbNURK/IUtgQfD1xTZr2SnxCKSjwvonSHq2zNlLPWULGX5+0FpNrvGLW6zDH97fEqdU6a+JUr+x4YZL+RRiS2nvLP2E7g3mAf648CepzHvmYBd9rPG3QCsowxe7HdejLmLNuEcKYU85CLfA2nz0tcbj9mFrZbS95qX94POD1bJwTbsNNJEWmF7RaG2NcTbPcxyLjIOJQH0cSvXNkMYB2wFvgG+Ku93PYX2MboNwL/BlYBWQAiMsZe4TMaWGc/eQq2eyFsB37DNoPnXgBjzAlgm4g0r+D4/wKeE5HVXPyw6Sn79u8Apytp/h3oJiIbsA35nL5P9ALAR0R+BSZguy3maUnAshK3zFTqrLQ6p3JLIhJsjDluP9n5M9DlYu/BYB9TTzLG/F+VBlmFRORVYJYx5n9Wx6KqPz25q9zVHPuJUj/gqUu58Y4xZoYLzJZZr0lfnS/t8SullIfRMX6llPIwmviVUsrDaOJXSikPo4lfKaU8jCZ+pZTyMJr4lVLKw/w/y8f9sS3i/8EAAAAASUVORK5CYII=\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "import os\n", "import numpy as np\n", @@ -2198,10 +2424,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "from numpy import *\n", @@ -2342,10 +2565,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "from numpy import *\n", @@ -2491,10 +2711,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -2723,10 +2940,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -2795,10 +3009,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", @@ -2897,10 +3108,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "\"\"\"\n", @@ -2986,10 +3194,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# Common imports\n", @@ -3083,10 +3288,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "# Common imports\n", @@ -3168,10 +3370,7 @@ { "cell_type": "code", "execution_count": null, - "metadata": { - "collapsed": false, - "editable": true - }, + "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", @@ -3212,7 +3411,25 @@ ] } ], - "metadata": {}, + "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.8.5" + } + }, "nbformat": 4, "nbformat_minor": 4 }