{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Populating the interactive namespace from numpy and matplotlib\n" ] } ], "source": [ "%pylab inline\n", "import numpy as np\n", "import csv\n", "\n", "from scipy import linalg\n", "import matplotlib.pyplot as plt\n", "from numpy.polynomial.polynomial import polyval" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def least_squares(A, b):\n", " return np.linalg.solve(A.T.dot(A),(A.T).dot(b))" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "center = np.array([2,3])\n", "x_dia = 2;\n", "y_dia = 3;\n", "ang = pi/7;\n", "spn = 3*pi/4;\n", "\n", "number_of_points = 20;\n", "init_points = np.repeat(center, number_of_points).reshape([2,number_of_points])\n", "theta = np.linspace(-spn,spn,number_of_points)\n", "points = np.zeros([2,number_of_points])\n", "points[0,:] = init_points[0,:] + x_dia*cos(theta)\n", "points[1,:] = init_points[1,:] + y_dia*sin(theta)\n", "\n", "rotation_matrix = np.array([[cos(ang), -sin(ang)] , [sin(ang), cos(ang)]])\n", "rot_points = np.dot(rotation_matrix, points)\n", "\n", "validation_num_points = 2000\n", "init_vpoints = np.repeat(center, validation_num_points).reshape([2,validation_num_points])\n", "vtheta = np.linspace(-spn,spn,validation_num_points)\n", "\n", "vpoints = np.zeros([2,validation_num_points])\n", "\n", "vpoints[0,:] = init_vpoints[0,:] + x_dia*cos(vtheta)\n", "vpoints[1,:] = init_vpoints[1,:] + y_dia*sin(vtheta)\n", "rotvpoints = np.dot(rotation_matrix, vpoints)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "noisy_points = rot_points.T + np.random.normal(0,0.1,[2,number_of_points]).T\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(noisy_points[:,0], noisy_points[:,1], 'ro')\n", "plt.plot(rot_points.T[:,0], rot_points.T[:,1], 'bo')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "A = (np.vstack((noisy_points[:,0]**2, noisy_points[:,0]*noisy_points[:,1], noisy_points[:,1]**2, noisy_points[:,0], noisy_points[:,1]))).T" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "b = np.ones([number_of_points,1])\n", "x = least_squares(A, b)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "a_1 = x[0]\n", "b_1 = x[1]\n", "c_1 = x[2]\n", "d_1 = x[3]\n", "e_1 = x[4]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.96059958],\n", " [0.92447613],\n", " [0.97835761],\n", " [1.00802371],\n", " [1.00606581],\n", " [1.05964152],\n", " [0.94836546],\n", " [1.05061844],\n", " [0.94195669],\n", " [1.12332922],\n", " [0.87748446],\n", " [1.04749339],\n", " [0.98434304],\n", " [1.00258981],\n", " [1.05336833],\n", " [0.98692051],\n", " [0.91195913],\n", " [1.04513654],\n", " [1.06302616],\n", " [0.9547048 ]])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.dot(A,x)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/gireeja/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:3: RuntimeWarning: invalid value encountered in sqrt\n", " This is separate from the ipykernel package so we can avoid doing imports until\n", "/Users/gireeja/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:4: RuntimeWarning: invalid value encountered in sqrt\n", " after removing the cwd from sys.path.\n" ] } ], "source": [ "no_points_curve = 1000\n", "x_range = linspace(-3, 3, no_points_curve)\n", "y_range_1 = (-(e_1 + b_1*x_range) + np.sqrt((b_1**2 - 4*a_1*c_1)*x_range**2 + (2*e_1*b_1 - 4*c_1*d_1)*x_range + (e_1**2 + 4*c_1)))/(2*c_1)\n", "y_range_2 = (-(e_1 + b_1*x_range) - np.sqrt((b_1**2 - 4*a_1*c_1)*x_range**2 + (2*e_1*b_1 - 4*c_1*d_1)*x_range + (e_1**2 + 4*c_1)))/(2*c_1)\n", "x_range_no_nan = x_range[~isnan(y_range_1)]\n", "y_range_1_no_nan = y_range_1[~isnan(y_range_1)]\n", "y_range_2_no_nan = y_range_2[~isnan(y_range_1)]" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(noisy_points[:,0], noisy_points[:,1], 'ro')\n", "plt.plot(x_range_no_nan, y_range_1_no_nan, 'g')\n", "plt.plot(x_range_no_nan, y_range_2_no_nan, 'g')\n", "plt.plot(rot_points.T[:,0], rot_points.T[:,1], 'bo')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "# Fitting polynomials" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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ZOM/WCKYx/udeoSnmmV2796NIUOGMLEHhKrinXfewdChQ90OJfBycpK3hogYU+Y6iT1gssu3vWWY2IODf8vsSee2dOkM/7dSln3Xvclzyd1NDQ0NKC0tRWlpKS644AL079+/9fnJkyddi6u5uRnnnXeeK+9dW1uLOXPmdFpm06ZNmDRpUpYiomSsdjFM5/6tVsvyfqcepaquPEaPHq2J/vGPf7Rb15lVq1QLC1VFjJ+rVqW1e6fmzZunixYtare+paVFT58+bd8bWXDq1Cnt3bt3Vt8zHS+99JJOnDgx6bZ0/6aUOSv/D4WFsTt+tH0UFmZedtUq1by8tmXy8uz9f6QzAETVQo71bc09ozvIZ2jv3r0YMWIEZs+ejVGjRuHgwYNtatJr1qzBD35g3BP8448/xk033YSysjKMGTMGW7dubfd6K1aswLe//W1UVFTgkksuwa9+9avWbQ888ABGjBiBESNG4KGHHmq377Rp0/Diiy+2Pv/Od76DdevWYcWKFbj55ptRUVGBwYMH4+c//3lrmVWrVqG4uBgjRozAPffcA+DMt4G77roLo0aNQkVFBWpra3HVVVfhoosuwrp16wC0rZVv3boVl19+OUaOHImxY8diz549XTmsZDMrt6VLpwnFaln2XfcoK58ATjy6WnNPpwaSifia+549e1REdNu2baravia9evVqnTVrlqqqTpkyRbds2aKqqh988IEOHz683WsvX75cL7zwQj18+LA2Njbq0KFD9e9//7vW1tZqSUmJfvbZZ3r8+HEdMmSI7tixo837bdq0SSdPnqyqqocPH9ZBgwZpc3OzLl++XC+++GI9fvy4NjU1aUFBgR46dEgPHjyohYWFWl9frydPntRx48bp888/r6dOnVIAunHjRlVVveGGG7SyslJPnTql0WhUY3+f+Fr50aNHtbm5WVVV169fr1OmTGlXJhFr7t7iRM09Y/Pm2fRC4QKLNXdPdYVMR7Yv4nz1q1/FZZddlrLcpk2b8O6777Y+P3LkCE6cOIGzzz67TbmKigr06dMHADBp0iS8/vrr+OKLLzB58mTkmY2nsfXDhg1r3e+aa67B7bffjoaGBqxevRpTpkxBt27dAADXXnstzjnnHADAkCFDcODAARw6dAjXXHMN+vbtCwCYPn06Nm/ejMrKSpx99tn4xje+AQAoLi5G79690b17dxQX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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_points = 30;\n", "x = linspace(0,2,number_of_points)\n", "#np.random.shuffle(x)\n", "\n", "c = [1,7,-11,4]; # 4x^3 -11 x^2 +7 x + 1\n", "true_y = polyval(x,c)\n", "\n", "\n", "#c = [1,-3,3,-.75];\n", "\n", "#true_y = sin(2*x)\n", "y = true_y + np.random.normal(0,0.3,[number_of_points])\n", "\n", "plt.plot(x,true_y,'bo')\n", "plt.plot(x,y,'r+')\n", "\n", "plt.legend(['True polynomial', 'Noisy data'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated coefficients [ 1.05354669 6.76495586 -10.76133968 3.92046363]\n" ] }, { "data": { "image/png": "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nbS0NH73u98B318NPPjggwwZMoSxY8eyfv16srOzueiii3jrrbeAumflRUVFjBw5kszMTC6//HJ27tzZlt0a1VbdsorF4xeT0TWDxeMX12mC8ChK2tmND6lqsz/AT3G0pX8JzHIumwtc73z8B2ArsAlYA/RrbptZWVla3+eff95gWWNSU1UdYb3uT2qq15to0uzZs3XBggWqqrpz504VEf3oo49UVbWyslI7derkKvvyyy/r9OnTVVV10qRJ+uGHH6qq6p49e3TgwIENtv3ss89qt27d9MiRI3ry5Ent37+/fvrpp7p+/XodNGiQnjp1So8fP679+vXTTZs21Xm/1atX680336yqqkeOHNELL7xQq6qq9Nlnn9U+ffro8ePH9fTp09qjRw89cOCA7tu3T1NTU/Xw4cN69uxZHT16tL7++utaWVmpgL777ruqqnrdddfpuHHjtLKyUouLi7X27/PPf/5Tb7jhBlVVPXr0qFZVVamq6ttvv62TJk1qUCZSteTY1Nmzffa+L73kOKZFHL9feslnmw6aSPxMgQQUqxdx26tBTKr6FvBWvWWPuD1+GHi4/nr+1Fi3MX91J7v44osZNmxYs+VWr17Njh07XM+//fZbzpw5Q0JC3Z4QY8eO5dxzzwXgxhtvZN26dXz33XfcfPPNJCYm1lk+YMAA13pXXXUV//Ef/0F5eTkvv/wykyZNIjY2FoCrr76ajh07AtCvXz/27t3LgQMHuOqqqzj//PMBmDx5MmvXrmXcuHEkJCRwzTXXAJCenk6nTp2Ii4sjPT2drzx0uD569Ch33HEHX375pbe7LTrNmeOTM+1IzK8SiZ8pVIVt+oFGOts0urytzjnnHNfjmJiY2isagDrd5FSVjz76yNVWf+DAgQaBHRr2wBCROttsjIiQk5PD//zP//DCCy9w5513ul7r0KGD63FsbCxVVVVNbrP2PkLtZ6pdPyYmhqqqqgblZ82axdixY9myZQuvvfaaDTbzs0jMr+L6TG7C/TOFqrAN7vPmgfME1yUx0bHc32JiYjj33HPZuXMnNTU1vPrqq67Xrr76ahYv/r7b1saNGz1u49133+Xo0aOcPn2av//971x++eWMHj2aV199lTNnznDy5En+/ve/c8UVVzRY984772TBggXEx8fTt2/fJus6YsQI1qxZQ3l5OVVVVSxfvpzs7OxWfe5j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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Train error: 2.698457826215875\n", "True error 0.0441121712372342\n" ] } ], "source": [ "A3 = (np.vstack((x**0,x**1,x**2,x**3))).T\n", "\n", "est = least_squares(A3,y)\n", "print('Estimated coefficients', est)\n", "\n", "recon_t = polyval(x,est)\n", "#true points\n", "plt.plot(x,true_y,'bo')\n", "#noisy points\n", "plt.plot(x,y,'r+')\n", "#reconstructed points\n", "plt.plot(x,recon_t,'g*')\n", "plt.legend(['True polynomial', 'Noisy data', 'Reconstructed polynomial'])\n", "plt.show()\n", "print('Train error:', sum((y - recon_t)**2))\n", "print('True error', sum((true_y - recon_t)**2))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def makeA(d,x):\n", " return (np.vstack([x**i for i in range(d+1)])).T" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Estimated coefficients: [ 9.34291813e-01 -9.72070831e+00 2.38745211e+02 -1.24129158e+03\n", " 3.07096531e+03 -4.35357984e+03 3.79980953e+03 -2.09044795e+03\n", " 7.12641866e+02 -1.38871075e+02 1.19442944e+01]\n" ] }, { "data": { "image/png": "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nDlz6NKlCwDnnnsuRx55JACnnXYaO3bsYPfu3UyePJnjjjsOgMsvv5w1a9Ywbdo0Dj/8cM477zwA8vLy6NWrF127diUvL4/tETpc19TUcNVVV7F161anuy0zLV7c7pm20+6Afsyv4sfPlKrStuE40SPYevbs2fI4Kyur+YoGoFU3OVXlrbfeYt26daxbt47du3e3CezQtgeGiLTaZjQiQmFhIf/93//Nb3/7W6655pqWdd27d2953KVLFxoaGtrd5mGHHdbqMzW/Pisri4aGhjbli4uLmTp1Khs3buRPf/qTDTbrIKfdAf2YX8WPnylVpW1wd9ydzANZWVn07t2bzZs309TUxNNPP92y7txzz2Xp0qUtz5tv0IZbtWoVNTU11NXV8ec//5kJEyYwceJEnn76aQ4cOMD+/fv585//zNlnn93mtddccw133303PXr0YMiQIe3Wdfz48axevZrq6moaGhpYuXIlkyZN6tDnrq2tpV+/QC/YRx55pEPb8K04+qQ77Q6YloOdYtwbSMvPlKbSNrgnuzvZL37xC6ZNm8aUKVPo379/y/KlS5fyt7/9jfz8fIYOHcry5csjvv7b3/42l19+OSNHjmTu3LkUFBQwbtw45s6dy9ixYxk/fjzXX389eXl5bV574okncuqpp7Y6a4+mf//+3HHHHZxzzjkUFBQwfvx4Lrroog595p/85CcsWrSICRMmdOj1vhZHn/RW3QGVqN0B0zK/yuLF7a5Oy8+Urpw0zHvx09kbquls+fLletNNN3X49fv379dBgwbp3r17XayVaU9cxya4UnbFCtXs7NYdBrKzU/wGZIzPnpafKcXg8IZq2p65Z6oXX3yR008/nZtvvrnl5qlJMbH6pDtswkn21aljcTRJpc1n8oGUmkN106ZNnH766UmpjzHt8ezYdDHbo9uD+jrEJ9krU5nNoWpMBknkoL5IFiyroOuiXLJKoOuiXBYsy6DZR1KUBXdjksmltALJ7GK4YFkFy3YX0XhEFSrQeEQVy3YXWYBPMgvuxiSTS2kFktnFsHxbMXQL+2bpVhdYbpLGgrsxPhBPF8N45m91UraxZ+RvkGjLTWJYcA8jItxyyy0tz++55x5KY5xdPfDAAzz66KOu1iM3N5fPP/+83TL/9V//5ep7mvTldFBfPG3zTst2+SryN0u05SYx/BHcXcyY1717d556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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Train error: 1.3311185351626473\n", "True error: 1.4116042581871908\n" ] } ], "source": [ "Aprime = makeA(10,x)\n", "\n", "est = least_squares(Aprime,y)\n", "print('Estimated coefficients:', est)\n", "\n", "recon_t = polyval(x,est)\n", "plt.plot(x,true_y,'bo')\n", "plt.plot(x,y,'r+')\n", "plt.plot(x,recon_t,'go')\n", "plt.legend(['True polynomial', 'Noisy data', 'Reconstructed polynomial'])\n", "plt.show()\n", "print('Train error:', sum((y - recon_t)**2))\n", "print('True error:', sum((true_y - recon_t)**2))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "train_error = [np.average((y - polyval(x,least_squares(makeA(i,x),y)))**2) for i in range(15)]\n", "true_error_on_points = [np.average((true_y - polyval(x,least_squares(makeA(i,x),y)))**2) for i in range(15)]\n", "plt.plot(train_error,'ro')\n", "plt.plot(true_error_on_points,'bo')\n", "plt.legend(['Training error', 'True error'])\n", "plt.xlabel('Degree of fit')\n", "plt.yscale('log')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## What if we get bigger x " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try the same thing, except let's move the x over further. Between 100 and 102. " ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAEDCAYAAADZUdTgAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHghJREFUeJzt3X90VOW97/H3lx8aYq0iUotGE1utghATCBh/FCtiSY89lqqlIpTW6qV0dbluudZVW1cPwWp/iPfa0us9FbW6WhHvaU+trcoRaPGgvQiGFiioLfXUQLxnVYxGL8YfRL73j9kThhCSPcnsmb1nf15rzWLPnmfvPE8mfLLzzHeeMXdHRETSYUipOyAiIsWj0BcRSRGFvohIiij0RURSRKEvIpIiCn0RkRSJbeib2U/M7GUz2xai7e1mtjm4/cXMOorRRxGRpLG41umb2VRgD/BTdx+fx3HXAvXu/sXIOiciklCxvdJ393XAq7n7zOzDZvZvZrbJzJ40s9N7OXQ2sKIonRQRSZhhpe5AnpYBC9x9h5mdBfwvYFr2QTOrBk4Gflei/omIxFpiQt/M3gecA/zczLK7D+/R7ArgF+7+XjH7JiKSFIkJfTJTUR3uXtdHmyuArxSpPyIiiRPbOf2e3P0N4G9m9hkAyzgz+7iZnQaMBNaXqIsiIrEX29A3sxVkAvw0M2szs6uBOcDVZrYF2A58KueQ2cCDHtdyJBGRGIhtyaaIiBRebK/0RUSk8GL3Qu6xxx7rNTU1pe6GiEiibNq06RV3H91fu9iFfk1NDS0tLaXuhohIophZa5h2mt4REUkRhb6ISIoo9EVEUiR2c/q92bt3L21tbbz99tul7ooUQEVFBVVVVQwfPrzUXRFJnUSEfltbG0ceeSQ1NTXkrLsjCeTutLe309bWxsknn1zq7oikTiKmd95++21GjRqlwC8DZsaoUaP0V5tIjuXLoaYGFlszNTWZ+1FJROgDCvwyoudSZL/ly2H+fGhthUUsprU1cz+q4E9M6IuIlKMbb4TOzgP3dXZm9kdBoR9Ce3s7dXV11NXV8cEPfpATTjih+/67775bsn51dXVx9NFHl+Rrb9iwgYULF/bZZs2aNcycObNIPRJJpqtam3EMJ/MXcHb7qtbmSL5eWYZ+dn5syBAKMj82atQoNm/ezObNm1mwYAELFy7svn/YYYcBmRco9+3bN+i+J8VZZ53F7bffXupuiCTevdXNQcxnFr/Mbt9b3RzJ1yu70M+dH3Mn0vmxv/71r4wfP54FCxYwceJEdu3adcCV94MPPsg111wDwN///ncuvfRSGhoamDJlCk8//fRB57v77rv59Kc/zYwZMzjttNO4+eabux+79dZbGT9+POPHj+dHP/rRQcfOnj2bRx99tPv+Zz/7WR577DHuvvtuLr/8cmbMmMGpp57KN77xje42999/PxMmTGD8+PF885vfBPb/9XD99dczceJEZsyYwYYNGzj//PP50Ic+xGOPPQYceBX/9NNPc/bZZ1NfX8+5557Ljh07BvNtFUmVW26BysoD91VWZvZHwt1jdZs0aZL39Oyzzx6071Cqq90zcX/grbo69Cn6tGjRIl+yZIm7u+/YscPNzDdu3Oju7nv37vWjjjqqu+2KFSv86quvdnf3WbNm+fr1693d/W9/+5ufccYZB537rrvu8uOPP95fffVV37Nnj48dO9b/+Mc/+oYNG7y2ttbffPNNf+ONN/z000/3LVu2HPD11qxZ45dddpm7u7/66qt+8skne1dXl991111+yimn+BtvvOGdnZ1eVVXlL730ku/atcurq6t99+7d/u677/rUqVP9N7/5je/du9cBX7Vqlbu7f/KTn/Smpibfu3evt7S0ePb5Wb16tX/qU59yd/eOjg7v6upyd/eVK1f6rFmzDmrTUz7PqUi5u//+TEY1s8irqzP38wW0eIiMTUSdfj527sxv/2B9+MMfZvLkyf22W7NmDX/+85+777/22mu89dZbjBgx4oB2M2bMYOTIkQDMnDmTp556infeeYfLLruMyuByILt/3Lhx3cdNmzaNa6+9lvb2dlasWMGsWbMYOnQoANOnT+fII48E4PTTT2fnzp289NJLTJs2jWOPPRaAK6+8knXr1tHU1MSIESO46KKLAJgwYQJHHXUUw4YNY8KECbz44osHja2jo4N58+bxwgsvhP22iaTC8uWZF2Svam3m3upmbrkF5sw5uN2cOdn9zSyKuE9lN71z0kn57R+sI444ont7yJAheM6H0uTWors7Gzdu7H4t4KWXXjoo8OHgckYzO+Cch2JmzJkzhwceeIB7772Xq666qvuxww/f//nxQ4cOpaurq89zZl+nyI4pe/yQIUPo6uo6qP2N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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "number_of_points = 30;\n", "x = linspace(200,201,number_of_points)\n", "#c = [1,-3,3,-.75];\n", "c = [1,7,-11,4];\n", "true_y = polyval(x,c);\n", "y = true_y + np.random.normal(0,.2,[number_of_points])\n", "\n", "plt.plot(x,true_y,'bo')\n", "plt.plot(x,y,'r+')\n", "plt.legend(['True polynomial', 'Noisy data'])\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "(30, 4)\n", "(30,)\n", "train error: 1.0061028848949072\n", "true error: 0.19854414782526936\n", "Estimated coef: [ 2.73846827e+07 -4.09772115e+05 2.03294869e+03 6.01649225e-01]\n" ] } ], "source": [ "Aprime = makeA(3,x)\n", "est = least_squares(Aprime,y)\n", "recon_t = polyval(x,est)\n", "plt.plot(x,true_y,'bo')\n", "plt.plot(x,y,'r+')\n", "plt.plot(x,recon_t,'go')\n", "plt.legend(['True polynomial', 'Noisy data', 'Reconstructed polynomial'])\n", "plt.show()\n", "print(Aprime.shape)\n", "print(y.shape)\n", "print(\"train error:\", sum((y - recon_t)**2))\n", "print(\"true error:\",sum((true_y - recon_t)**2))\n", "print('Estimated coef:', est)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "train error: [20353475050.351295, 36283.99065456034, 0.03568923528817138, 0.03353676282983024, 0.04149512387154169, 0.039402724507278934, 0.06119564309408286, 0.03314517463559398, 3.321980306165038, 0.0411476034779059, 0.040358885055155364, 0.049637924477603255, 0.061413860126542354, 0.042248955459492386, 0.12682264628440607]\n", "true error: [20353465440.9358, 36292.28731827264, 0.010265100128834435, 0.006618138260842312, 0.012852397192103458, 0.013357639988467084, 0.031820419361225524, 0.005133429961282165, 3.273415080318211, 0.015127976690144275, 0.014296194139068236, 0.0239907158459615, 0.03617302409812825, 0.016280233155454602, 0.09602136306949612]\n" ] } ], "source": [ "train_error = [np.average((y - polyval(x,least_squares(makeA(i,x),y)))**2) for i in range(15)]\n", "true_error_on_points = [np.average((true_y - polyval(x,least_squares(makeA(i,x),y)))**2) for i in range(15)]\n", "plt.plot(train_error,'ro')\n", "plt.plot(true_error_on_points,'bo')\n", "plt.yscale('log')\n", "plt.xlabel('Degree of fit')\n", "plt.show()\n", "print(\"train error:\", train_error)\n", "print(\"true error:\",true_error_on_points)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([4.41485432e+07, 3.27774825e+02, 2.17306700e-03, 1.41048988e-08])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U, s, V = svd(Aprime)\n", "s" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Condition number 3130014894877123.5\n" ] } ], "source": [ "cn = s[0]/s[-1]\n", "print('Condition number', cn)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need to add a penalty against huge values coming from these small singular values. " ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "## The big hack\n", "\n", "def least_squares_r(A, b, llambda):\n", " return np.linalg.solve(A.T.dot(A) + llambda * np.identity(A.shape[1]), A.T.dot(b))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-8.17454896e-04, -1.09196946e-01, -1.09290646e+01, 3.99982317e+00])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lambda1 = 5\n", "lsr = least_squares_r(Aprime,y,lambda1)\n", "lsr" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1.24101134e+04, 9.62368503e+02, 1.62476230e+02, 8.80813817e+00,\n", " 6.29868221e+00])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U, s, V = svd(A.T.dot(A) + lambda1*np.identity(A.shape[1]))\n", "s " ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Condition number 1970.2714030797936\n" ] } ], "source": [ "cn = s[0]/s[-1]\n", "print('Condition number', cn)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "train error: [20657924716523.777, 9087463518.824606, 978133744.4641464, 0.03060991880240267, 0.7678702955082376, 0.03134238060653341, 0.03041279587552839, 0.03789140642862141, 0.5695494904033584, 0.45759553702411254, 0.03948006576889798, 0.4142568982794296, 0.6211695307695227, 0.16716372965142054, 0.31014930810390345]\n", "true error: [20657924875748.363, 9087457100.264437, 978131637.2066163, 0.0003581447831980245, 0.7027118132882267, 0.005994099657990657, 0.00334236821267106, 0.009855130390417579, 0.5332975379069889, 0.4226382001898973, 0.013158532181284934, 0.37990124741459597, 0.5851009796593548, 0.14411257438757144, 0.2768482986088348]\n" ] } ], "source": [ "train_error = [np.average((y - polyval(x,least_squares_r(makeA(i,x),y, 5)))**2) for i in range(15)]\n", "true_error_on_points = [np.average((true_y - polyval(x,least_squares_r(makeA(i,x),y, 5)))**2) for i in range(15)]\n", "plt.plot(train_error,'ro')\n", "plt.plot(true_error_on_points,'bo')\n", "plt.yscale('log')\n", "plt.xlabel('Degree of fit')\n", "plt.show()\n", "print(\"train error:\", train_error)\n", "print(\"true error:\",true_error_on_points)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEKCAYAAAAb7IIBAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3XucFPWZ7/HPw8gIqAECqAsE8JZsBsRRR1YjR11hDdnEaExMNBCjISKSGE1iNm40Fz3rmsTzylUwIahEnYU1ukbxJMcA0UWNiiASBOJCVBQhyrKKQVAYec4fVYNN0zNTPd3Vdenv+/Wa13TV1OVXVT3PU/X7Vf3K3B0REak/PZIugIiIJEMJQESkTikBiIjUKSUAEZE6pQQgIlKnlABEROqUEoCISJ1SAhARqVNKACIidWqfpAtQipmdDpx+wAEHXPje97436eKIiGTG0qVL/9vdB0WZ1tLcFURLS4svWbIk6WKIiGSGmS1195Yo06oKSESkTikBiIjUKSUAEZE6lcpG4M7s3LmT9evX8+abbyZdFImgV69eDB06lJ49eyZdFBEpkrkEsH79eg444ABGjBiBmSVdHOmEu7N582bWr1/PIYccknRxRKRIKquAzOx0M5u5ZcuWvf725ptvMmDAAAX/DDAzBgwYoKs1kSjMSv/EKJUJwN3nufuUvn37lvy7gn926FiJFCk30Mf4P5S5KiARkUzIwMlPKq8A0mzz5s00NzfT3NzMwQcfzJAhQ3YP79ixI9IyLrjgAp555plOp5k+fTqtra3VKLKIxCmBqptqyf8VQGsrXHklvPACDBsG114LEyd2e3EDBgzgqaeeAuA73/kO+++/P5dffvke07g77k6PHqXz6y233NLler7whS90u4zd0dbWxj777BN5OOpyRHJj/HhYuDDpUlRVvv9TW1thyhTYti0YXrcuGIaKkkApa9eu5cwzz2Ts2LE8/vjj3HfffVx99dU8+eSTbN++nU996lN861vfAmDs2LHccMMNjBo1ioEDBzJ16lR++9vf0qdPH+655x4OPPBArrrqKgYOHMhll13G2LFjGTt2LL///e/ZsmULt9xyCx/4wAd44403OO+881i7di1NTU2sWbOGWbNm0dzcvEfZnnjiCS6//HK2bt3KgQceyOzZsznooIMYO3YsJ598Mg899BBnnXUWS5Ys4aCDDuLJJ5/kuOOOo7GxkU2bNvHss89y8MEHM3PmTKZOncqTTz5Jz549+dGPfsRJJ53ErFmzWLBgAVu3buWtt95i/vz5Vd23IjWXkTP4SuW7CujKK98J/u22bQvGx2DVqlVMnjyZZcuWMWTIEL773e+yZMkSli9fzvz581m1atVe82zZsoWTTz6Z5cuXc8IJJ3DzzTeXXLa7s3jxYq6//nquueYaAH76059y8MEHs3z5cq644gqWLVu213xvvfUWl156KXfddRdLly5l0qRJfPOb39z999dff51FixZx2WWXAfDnP/+ZhQsX8v3vfx+AZcuWMW/ePG677TZ+8pOf0NjYyIoVK7jtttv4zGc+s7va69FHH+W2225T8JdsyUL1TYz9teX7CuCFF8obX6HDDjuM4447bvfwnDlzuOmmm2hra2PDhg2sWrWKpqamPebp3bs3H/rQhwA49thjeeihh0ou+6yzzto9zfPPPw/Aww8/zNe//nUAjjrqKEaOHLnXfKtXr2blypWMHz8egLfffpuhQ4fu/vs555yzx/Rnn332HlVXZ5xxBr169dq9vq997WsAjBw5ksGDB7N27VoATjvtNPr379/Z7hFJVtoCe1d69oSI7Yrdle8EMGxYUO1TanwM9ttvv92f16xZw49//GMWL15Mv379mDRpUsn74RsbG3d/bmhooK2treSy9913372midKTq7szevToDhNLYZm7Gu5sfcXziSQma4EeYj3L70y+q4CuvRb69NlzXJ8+wfiYvf766xxwwAG8613vYuPGjdx///1VX8fYsWO54447AFixYkXJKqampiZeeuklFi9eDMCOHTtYuXJlt9Z30kkn7b4zafXq1WzcuJHDDz+8m6UXqdC0aemvvinmXvonIam8Amh/IUzFwaW9obeKdwFFdcwxx9DU1MSoUaM49NBDOfHEE6u+jksuuYTzzjuP0aNHc8wxxzBq1CiKH57bd999ufPOO/nSl77EX//6V9ra2vjqV79asrooyvouuugijjzySHr27Mmtt966xxWMSGzSHtiLpfg9K4Uy90KY1atX8/73vz+hEqVLW1sbbW1t9OrVizVr1nDaaaexZs2a1N2GqWMmZclSsE9h/CznhTDpihRSlq1btzJu3Dja2tpwd37+85+nLviLdChLgb53773vKMwBRYsM69ev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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#l = linspace(0.0001,5000,100)\n", "l = linspace(0,50,10000)\n", "#train_error = [sum((y - polyval(x,least_squares_r(makeA(3,x),y,i*0.1)))**2) for i in l]\n", "#true_error = [sum((true_y - polyval(x,least_squares_r(makeA(3,x),y,i*0.1)))**2) for i in l]\n", "\n", "train_error = [sum((y - polyval(x,least_squares_r(makeA(3,x),y,i)))**2) for i in l]\n", "true_error = [sum((true_y - polyval(x,least_squares_r(makeA(3,x),y,i)))**2) for i in l]\n", "\n", "plt.plot(l,train_error,'ro')\n", "plt.plot(l,true_error,'bo')\n", "plt.legend(['Training errror', 'True error'])\n", "plt.yscale('log')\n", "plt.xlabel('Value of regularization hymerparameter')\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(l,true_error,'bo')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(l,train_error,'ro')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.6.5" } }, "nbformat": 4, "nbformat_minor": 1 }