diff --git a/doc/src/Splines/GradientMethods.ipynb b/doc/src/Splines/GradientMethods.ipynb deleted file mode 100644 index 29d304921..000000000 --- a/doc/src/Splines/GradientMethods.ipynb +++ /dev/null @@ -1,379 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Convex functions" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Gradient Descent" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Converged: True\n" - ] - }, - { - "data": { - "image/png": "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\nRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "def gradient_descent(xk,dx_f,gamma):\n", - " return xk-gamma*dx_f\n", - "def linear(a,b,x):\n", - " return a*x+b\n", - "def quadratic(a,b,c,x):\n", - " return a*x**2+b*x+c\n", - "def dx_quadratic(a,b,x):\n", - " return 2*a*x+b\n", - "def cubic(a,b,c,d,x):\n", - " return a*x**3+b*x**2+c*x+d\n", - "def dx_cubic(a,b,c,x):\n", - " return 3*a*x**2+2*b*x+c\n", - "\n", - "#One variable examples\n", - "a,b,c = 1,-2,3\n", - "x = np.linspace(-5,5,101)\n", - "quad = quadratic(a,b,c,x)\n", - "dx_quad = dx_quadratic(a,b,x)\n", - "\n", - "xk = -4\n", - "xk_vec = [xk]\n", - "fxk_vec = [quadratic(a,b,c,xk)]\n", - "gamma = 0.05\n", - "iters = 0\n", - "max_iters = 200\n", - "converged = False\n", - "\n", - "while(abs(dx_quadratic(a,b,xk)) > 1e-6 and iters < max_iters):\n", - " #print(xk, dx_quadratic(a,b,xk), iters)\n", - " xk = gradient_descent(xk,dx_quadratic(a,b,xk),gamma)\n", - " xk_vec.append(xk)\n", - " fxk_vec.append(quadratic(a,b,c,xk))\n", - " iters += 1\n", - "\n", - "if(iters < max_iters):\n", - " converged = True\n", - "\n", - "print\"Converged: %s\" % converged\n", - "\n", - "plt.figure(1)\n", - "plt.plot(x,quad)\n", - "plt.plot(xk_vec,fxk_vec,'o')\n", - "plt.legend([\"f(x)\",\"GD-iterates\"])\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n/w9csOqmL9uK0gAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "[4.77010127e-07 0.00000000e+00]\n" - ] - } - ], - "source": [ - "from mpl_toolkits.mplot3d import Axes3D\n", - "from matplotlib import cm\n", - "\n", - "#Two variable example\n", - "def Z(x,y):\n", - " return x**2+10*y**2-1\n", - "\n", - "def grad_Z(x,y):\n", - " gZ = np.zeros(2)\n", - " gZ[0] = 2*x\n", - " gZ[1] = 20*y\n", - " return gZ\n", - "\n", - "X = np.arange(-4,4,0.1)\n", - "Y = np.arange(-5,5,0.1)\n", - "\n", - "X_, Y_ = np.meshgrid(X, Y)\n", - "Z_ = Z(X_,Y_)\n", - "fig = plt.figure(2)\n", - "ax = fig.gca(projection='3d')\n", - "surf = ax.plot_surface(X_, Y_, Z_, cmap=cm.coolwarm,linewidth=0, antialiased=False)\n", - "plt.show()\n", - "plt.figure(3)\n", - "plt.contour(X_,Y_,Z_,corner_mask=0)\n", - "plt.show()\n", - "\n", - "xk = np.zeros(2)\n", - "xk[0] = 1.5\n", - "xk[1] = 2.3\n", - "\n", - "gamma = 0.05\n", - "iters = 0\n", - "max_iters = 200\n", - "converged = False\n", - "while(abs(np.linalg.norm(grad_Z(xk[0],xk[1]))) > 1e-6 and iters < max_iters):\n", - " #print(\"xk=%g, yk=%g, iters=%d\" % (xk[0],xk[1],iters))\n", - " xk = xk - gamma*grad_Z(xk[0],xk[1])\n", - " iters += 1\n", - "print(xk)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Linear regression/least squares\n", - "\n", - "\\begin{equation}\n", - "\\hat{y} = \\theta_0x_0 + \\sum_{i=1}^n \\theta_i x_i, \\ \\ \\hat{y} = \\theta^T \\cdot \\bar{x}\n", - "\\end{equation}\n", - "where $x_0 \\equiv 1$ by convention (?)\n", - "\n", - "\n", - "The normal equation\n", - "\\begin{equation}\n", - "\\hat{\\theta} = (X^TX)^{-1} X^Ty\n", - "\\end{equation}\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of iterations before convergence: 726\n", - "[2.48676635e-10 2.19639862e-10]\n", - "[4.14872228 2.86871952]\n", - "[4.14872228 2.86871952]\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "%matplotlib inline\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "\n", - "#One variable example\n", - "N = 100\n", - "x0 = np.ones(N)\n", - "x1 = 2*np.random.rand(N)\n", - "y = 4 + 3*x1 + np.random.randn(N)\n", - "\n", - "\n", - "#Compute theta and predicted y using normal equations\n", - "X = np.c_[x0,x1]\n", - "Xt_X_inv = np.linalg.inv(np.dot(X.transpose(),X))\n", - "Xt_y = np.dot(X.transpose(),y)\n", - "theta_normeqs = np.dot(Xt_X_inv,Xt_y)\n", - "\n", - "\n", - "#Compute theta using gradient descent\n", - "eta = 0.1 \n", - "max_iters = 100\n", - "theta = np.random.randn(2)\n", - "\n", - "diff = 100\n", - "iters = 0\n", - "while(diff > 1e-10):\n", - " gradient = 2.0/float(N) * np.dot(X.transpose(), np.dot(X,theta) - y)\n", - " theta = theta-eta*gradient\n", - " diff = np.linalg.norm(gradient)\n", - " iters += 1\n", - "\n", - "#Output number of iterations before convergence and compare theta computed with GD with theta computed \n", - "#using the Normal equations\n", - "print(\"Number of iterations before convergence: %d\" % iters)\n", - "print(abs(theta_normeqs-theta))\n", - "print(theta_normeqs)\n", - "print(theta)\n", - "\n", - "#Plot true y and y_predicted\n", - "plt.figure(4)\n", - "y_pred = theta[0] + theta[1]*x1\n", - "plt.plot(x1,y,'ro')\n", - "plt.plot(x1,y_pred,'-b')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Number of iterations before convergence: 1109\n", - "[4.27115232e-10 2.39355202e-10 1.45479850e-10]\n", - "[4.16442678 3.14056098 1.66992613]\n", - "[4.16442678 3.14056098 1.66992613]\n" - ] - }, - { - "data": { - "image/png": "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\nWktLiOBfXFyMwWDg999/p3///pSWlhITE8Pw4cMVmiKQUDc53HDDDeWaHO6++242bdrEjTfeqIzP\nCaI8gkHXTfyZrOi8hb59+/LDDz8oD6ru3bszZswYZFm28pVYsGCB4ishJjS3atXKqiMM3HPgClR2\naw/q8Tki+J86dYomTZrw3HPPERISQkpKCosXL7ZZ8PQnPvroowo/M3/+fD+spGojGHQp46J+++03\n5e+2uKjGjRtz7tw5GjZsiNlsJicnJ5jlughRENJCkiRq167NPffcwz333ANY+0q8++67Nn0latas\nWc6DV9vAoQ6oWulVILu2bI3PycnJUSitrVu3UrNmTQD+/ve/B2ydQXgfwV5BIDExkdOnT5OWlkZJ\nSQlr1qzhvvvus/rMgAEDWLFiBQCffvopffr0cXk/X331FW3atKFVq1a8/vrr5X6+YsUK6tatS9eu\nXenatSvvvfeeewdUDaDX62nXrh0jR45k6dKl7Nq1i3Xr1nH33Xdz5swZxo8fT79+/Rg1ahTLly/n\nxIkTVm5b+fn55OTkkJ+fT2FhIfn5+eTn52M0GomIiAhowBXZbUlJCZGRkYSGhrJ9+3buu+8+Bg0a\nxIoVK5SA6ysEr8XAIVhIu46vvvqKcePGKZKxF198kX//+98kJiZy7733UlxczLBhwzh06BBxcXGs\nWbOGZs2aOb19i8VCq1atrBQSa9assVJIrFixgtTUVObNm+eDI6x+sOcr0aFDB4WWyMrKoqioiPbt\n2yPLst8mNNuCLcOcgoICXnnlFa5cucLChQv94gYWvBb9gmAhrSL079+fEydOWP3blClTlD8bjUZF\nouYOUlJSiI+Pp2nTpgAMGTKE9evXl5OzBbli56HT6WjevDnNmzdn6NChVr4SYtjhxYsX6devH+3b\ntycxMZGuXbui1+ttFum8PShTDVvjc8S4pnHjxjF06FC/Bf/gtRhYBIOun+CMQgLg888/5/vvv6dV\nq1bMmjWLxo0b+3OZVRqSJBEWFkbPnj1555136NmzJ7Nnz6akpITk5GR27tzJrFmzrHwlunfvTosW\nLZTmCG8NylRDPT4nIiKC4uJipk6dysmTJ1m7dq3ftazBazGwCAbdSoT77ruPoUOHEhISwpIlS3js\nscf49ttvA72sKonFixdbNRHcf//93H///YC1r8Tbb7/NyZMniYiIICEhge7du5OYmEhMTIxLRTpb\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#Two variable example\n", - "N = 100\n", - "x0 = np.ones(N)\n", - "x1 = 2*np.random.rand(N)\n", - "x2 = 2*np.random.rand(N)\n", - "\n", - "noise_scale = 2\n", - "g_noise = noise_scale*np.random.randn(N)\n", - "\n", - "y = 4+3*x1+2*x2+g_noise\n", - "\n", - "#Compute theta using normal equations\n", - "X = np.c_[x0,x1,x2]\n", - "Xt_X_inv = np.linalg.inv(np.dot(X.transpose(),X))\n", - "Xt_y = np.dot(X.transpose(),y)\n", - "theta_normeqs = np.dot(Xt_X_inv,Xt_y)\n", - "\n", - "\n", - "#Compute theta using gradient descent\n", - "eta = 0.1 \n", - "max_iters = 100\n", - "theta = np.random.randn(3)\n", - "\n", - "diff = 100\n", - "iters = 0\n", - "while(diff > 1e-10):\n", - " gradient = 2.0/float(N) * np.dot(X.transpose(), np.dot(X,theta) - y)\n", - " theta = theta-eta*gradient\n", - " diff = np.linalg.norm(gradient)\n", - " iters += 1\n", - "\n", - "#Output number of iterations before convergence and compare theta computed with GD with theta computed \n", - "#using the Normal equations\n", - "print(\"Number of iterations before convergence: %d\" % iters)\n", - "print(abs(theta_normeqs-theta))\n", - "print(theta_normeqs)\n", - "print(theta)\n", - "\n", - "#Plot true y and y_predicted\n", - "y_pred = theta[0] + theta[1]*x1+theta[2]*x2\n", - "fig = plt.figure(5)\n", - "ax = fig.gca(projection='3d')\n", - "scatter1 = ax.scatter(x1, x2, y,marker='^',c='r')\n", - "scatter2 = ax.scatter(x1, x2, y_pred,marker='o',c='b')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 2", - "language": "python", - "name": "python2" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 2 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython2", - "version": "2.7.12" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -}