From 729b921cff74f2c9edd8c9ff46a701aeb0f5ca72 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Sun, 5 Apr 2020 20:17:06 +0530 Subject: [PATCH 1/9] Add files via upload --- edit_assignment.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 edit_assignment.py diff --git a/edit_assignment.py b/edit_assignment.py new file mode 100644 index 000000000..0b2b5e2d6 --- /dev/null +++ b/edit_assignment.py @@ -0,0 +1,33 @@ +import pandas as pd + +from matplotlib import pyplot as plt + +df=pd.read_csv('data.txt',delimiter='\t') + +plt.rcParams['figure.figsize']=(20,10) + +fig,ax=plt.subplots(nrows=5,ncols=9) + +r=c=0 + +list=[[0,0],[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[1,0],[1,1],[1,2],[1,3],[1,4],[1,5],[1,6],[1,7],[1,8],[2,0],[2,1],[2,2],[2,3],[2,4],[2,5],[2,6],[2,7],[2,8],[3,0],[3,1],[3,2],[3,3],[3,4],[3,5],[3,6],[3,7],[3,8],[4,0],[4,1],[4,2],[4,3],[4,4],[4,5],[4,6],[4,7],[4,8]] + +flag=-1 + +for i in range(1,10): + for j in range(i+1,11): + flag=flag+1 + r=list[flag][0] + c=list[flag][1] + for k in range(999): + if df['Label'][k]==1: + ax[r][c].scatter(df[str(i)][k],df[str(j)][k],color='r') + elif df['Label'][k]==2: + ax[r][c].scatter(df[str(i)][k],df[str(j)][k],color='b') + + ax[r][c].set_xlabel('feature '+str(i)) + ax[r][c].set_ylabel('feature '+str(j)) + ax[0][4].set_title('My Plot') + +# print(plt.rcParams['figure.figsize']) +plt.show() \ No newline at end of file From 070a8e61951c3935045dd7d3788b858e695235e0 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 8 Apr 2020 16:36:12 +0530 Subject: [PATCH 2/9] Add files via upload --- ex1data1.txt | 97 ++++++++ ex1data2.txt | 47 ++++ gradientdescentMulti.ipynb | 456 +++++++++++++++++++++++++++++++++++ gradientdescentSingle.ipynb | 388 +++++++++++++++++++++++++++++ introduction_to_matrix.ipynb | 102 ++++++++ plotData.ipynb | 136 +++++++++++ 6 files changed, 1226 insertions(+) create mode 100644 ex1data1.txt create mode 100644 ex1data2.txt create mode 100644 gradientdescentMulti.ipynb create mode 100644 gradientdescentSingle.ipynb create mode 100644 introduction_to_matrix.ipynb create mode 100644 plotData.ipynb diff --git a/ex1data1.txt b/ex1data1.txt new file mode 100644 index 000000000..0f88ccb61 --- /dev/null +++ b/ex1data1.txt @@ -0,0 +1,97 @@ +6.1101,17.592 +5.5277,9.1302 +8.5186,13.662 +7.0032,11.854 +5.8598,6.8233 +8.3829,11.886 +7.4764,4.3483 +8.5781,12 +6.4862,6.5987 +5.0546,3.8166 +5.7107,3.2522 +14.164,15.505 +5.734,3.1551 +8.4084,7.2258 +5.6407,0.71618 +5.3794,3.5129 +6.3654,5.3048 +5.1301,0.56077 +6.4296,3.6518 +7.0708,5.3893 +6.1891,3.1386 +20.27,21.767 +5.4901,4.263 +6.3261,5.1875 +5.5649,3.0825 +18.945,22.638 +12.828,13.501 +10.957,7.0467 +13.176,14.692 +22.203,24.147 +5.2524,-1.22 +6.5894,5.9966 +9.2482,12.134 +5.8918,1.8495 +8.2111,6.5426 +7.9334,4.5623 +8.0959,4.1164 +5.6063,3.3928 +12.836,10.117 +6.3534,5.4974 +5.4069,0.55657 +6.8825,3.9115 +11.708,5.3854 +5.7737,2.4406 +7.8247,6.7318 +7.0931,1.0463 +5.0702,5.1337 +5.8014,1.844 +11.7,8.0043 +5.5416,1.0179 +7.5402,6.7504 +5.3077,1.8396 +7.4239,4.2885 +7.6031,4.9981 +6.3328,1.4233 +6.3589,-1.4211 +6.2742,2.4756 +5.6397,4.6042 +9.3102,3.9624 +9.4536,5.4141 +8.8254,5.1694 +5.1793,-0.74279 +21.279,17.929 +14.908,12.054 +18.959,17.054 +7.2182,4.8852 +8.2951,5.7442 +10.236,7.7754 +5.4994,1.0173 +20.341,20.992 +10.136,6.6799 +7.3345,4.0259 +6.0062,1.2784 +7.2259,3.3411 +5.0269,-2.6807 +6.5479,0.29678 +7.5386,3.8845 +5.0365,5.7014 +10.274,6.7526 +5.1077,2.0576 +5.7292,0.47953 +5.1884,0.20421 +6.3557,0.67861 +9.7687,7.5435 +6.5159,5.3436 +8.5172,4.2415 +9.1802,6.7981 +6.002,0.92695 +5.5204,0.152 +5.0594,2.8214 +5.7077,1.8451 +7.6366,4.2959 +5.8707,7.2029 +5.3054,1.9869 +8.2934,0.14454 +13.394,9.0551 +5.4369,0.61705 diff --git a/ex1data2.txt b/ex1data2.txt new file mode 100644 index 000000000..79e9a807e --- /dev/null +++ b/ex1data2.txt @@ -0,0 +1,47 @@ +2104,3,399900 +1600,3,329900 +2400,3,369000 +1416,2,232000 +3000,4,539900 +1985,4,299900 +1534,3,314900 +1427,3,198999 +1380,3,212000 +1494,3,242500 +1940,4,239999 +2000,3,347000 +1890,3,329999 +4478,5,699900 +1268,3,259900 +2300,4,449900 +1320,2,299900 +1236,3,199900 +2609,4,499998 +3031,4,599000 +1767,3,252900 +1888,2,255000 +1604,3,242900 +1962,4,259900 +3890,3,573900 +1100,3,249900 +1458,3,464500 +2526,3,469000 +2200,3,475000 +2637,3,299900 +1839,2,349900 +1000,1,169900 +2040,4,314900 +3137,3,579900 +1811,4,285900 +1437,3,249900 +1239,3,229900 +2132,4,345000 +4215,4,549000 +2162,4,287000 +1664,2,368500 +2238,3,329900 +2567,4,314000 +1200,3,299000 +852,2,179900 +1852,4,299900 +1203,3,239500 diff --git a/gradientdescentMulti.ipynb b/gradientdescentMulti.ipynb new file mode 100644 index 000000000..755bcf1fc --- /dev/null +++ b/gradientdescentMulti.ipynb @@ -0,0 +1,456 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 177, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "from mpl_toolkits.mplot3d import Axes3D # needed to plot 3-D surfaces\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils \n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 178, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " X[:,0] X[:, 1] y\n", + "--------------------------\n", + " 2104 3 399900\n", + " 1600 3 329900\n", + " 2400 3 369000\n", + " 1416 2 232000\n", + " 3000 4 539900\n", + " 1985 4 299900\n", + " 1534 3 314900\n", + " 1427 3 198999\n", + " 1380 3 212000\n", + " 1494 3 242500\n" + ] + } + ], + "source": [ + "# Load data\n", + "data = np.loadtxt('ex1data2.txt', delimiter=',')\n", + "X = data[:, :2]\n", + "y = data[:, 2]\n", + "m = y.size\n", + "\n", + "# print out some data points\n", + "print('{:>8s}{:>8s}{:>10s}'.format('X[:,0]', 'X[:, 1]', 'y'))\n", + "print('-'*26)\n", + "for i in range(10):\n", + " print('{:8.0f}{:8.0f}{:10.0f}'.format(X[i, 0], X[i, 1], y[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 179, + "metadata": {}, + "outputs": [], + "source": [ + "def featureNormalize(X):\n", + " \"\"\"\n", + " Normalizes the features in X. returns a normalized version of X where\n", + " the mean value of each feature is 0 and the standard deviation\n", + " is 1. This is often a good preprocessing step to do when working with\n", + " learning algorithms.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset of shape (m x n).\n", + " \n", + " Returns\n", + " -------\n", + " X_norm : array_like\n", + " The normalized dataset of shape (m x n).\n", + " \n", + " Instructions\n", + " ------------\n", + " First, for each feature dimension, compute the mean of the feature\n", + " and subtract it from the dataset, storing the mean value in mu. \n", + " Next, compute the standard deviation of each feature and divide\n", + " each feature by it's standard deviation, storing the standard deviation \n", + " in sigma. \n", + " \n", + " Note that X is a matrix where each column is a feature and each row is\n", + " an example. You needto perform the normalization separately for each feature. \n", + " \n", + " Hint\n", + " ----\n", + " You might find the 'np.mean' and 'np.std' functions useful.\n", + " \"\"\"\n", + " # You need to set these values correctly\n", + " X_norm = X.copy()\n", + " mu = np.zeros(X.shape[1])\n", + " sigma = np.zeros(X.shape[1])\n", + "\n", + " # =========================== YOUR CODE HERE =====================\n", + " for i in range(X.shape[1]):\n", + " sigma[i]=np.std(X[:,i])\n", + " mu[i]=np.sum(X[:,i])/X.shape[0]\n", + " \n", + " for j in range(X.shape[0]):\n", + " for k in range(X.shape[1]):\n", + " X_norm[j][k]=(X[j][k]-mu[k])/sigma[k]\n", + "\n", + " # ================================================================\n", + " return X_norm, mu, sigma" + ] + }, + { + "cell_type": "code", + "execution_count": 180, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Computed mean: [2000.68085106 3.17021277]\n", + "Computed standard deviation: [7.86202619e+02 7.52842809e-01]\n" + ] + } + ], + "source": [ + "# call featureNormalize on the loaded data\n", + "X_norm, mu, sigma = featureNormalize(X)\n", + "\n", + "print('Computed mean:', mu)\n", + "print('Computed standard deviation:', sigma)" + ] + }, + { + "cell_type": "code", + "execution_count": 181, + "metadata": {}, + "outputs": [], + "source": [ + "# Add intercept term to X\n", + "X = np.concatenate([np.ones((m, 1)), X_norm], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 182, + "metadata": {}, + "outputs": [], + "source": [ + "def computeCostMulti(X, y, theta):\n", + " \"\"\"\n", + " Compute cost for linear regression with multiple variables.\n", + " Computes the cost of using theta as the parameter for linear regression to fit the data points in X and y.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset of shape (m x n+1).\n", + " \n", + " y : array_like\n", + " A vector of shape (m, ) for the values at a given data point.\n", + " \n", + " theta : array_like\n", + " The linear regression parameters. A vector of shape (n+1, )\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The value of the cost function. \n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost of a particular choice of theta. You should set J to the cost.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.shape[0] # number of training examples\n", + " \n", + " # You need to return the following variable correctly\n", + " J = 0\n", + " \n", + " # ======================= YOUR CODE HERE ===========================\n", + " H=theta.dot(X.transpose())\n", + " sum=0\n", + " for element in range(len(H.transpose()-y)):\n", + " sum=sum+((H.transpose()-y)[element]*(H.transpose()-y)[element])\n", + " \n", + " J=sum/(2*m) \n", + " \n", + " \n", + " # ==================================================================\n", + " return J" + ] + }, + { + "cell_type": "code", + "execution_count": 183, + "metadata": {}, + "outputs": [], + "source": [ + "def gradientDescentMulti(X, y, theta, alpha, num_iters):\n", + " \"\"\"\n", + " Performs gradient descent to learn theta.\n", + " Updates theta by taking num_iters gradient steps with learning rate alpha.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset of shape (m x n+1).\n", + " \n", + " y : array_like\n", + " A vector of shape (m, ) for the values at a given data point.\n", + " \n", + " theta : array_like\n", + " The linear regression parameters. A vector of shape (n+1, )\n", + " \n", + " alpha : float\n", + " The learning rate for gradient descent. \n", + " \n", + " num_iters : int\n", + " The number of iterations to run gradient descent. \n", + " \n", + " Returns\n", + " -------\n", + " theta : array_like\n", + " The learned linear regression parameters. A vector of shape (n+1, ).\n", + " \n", + " J_history : list\n", + " A python list for the values of the cost function after each iteration.\n", + " \n", + " Instructions\n", + " ------------\n", + " Peform a single gradient step on the parameter vector theta.\n", + "\n", + " While debugging, it can be useful to print out the values of \n", + " the cost function (computeCost) and gradient here.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.shape[0] # number of training examples\n", + " \n", + " # make a copy of theta, which will be updated by gradient descent\n", + " theta = theta.copy()\n", + " \n", + " J_history = []\n", + " \n", + " for i in range(num_iters):\n", + " # ======================= YOUR CODE HERE ==========================\n", + " H=theta.dot(X.transpose())\n", + " \n", + " for j in range(theta.size):\n", + " theta[j]-=(alpha/m)*((H.transpose()-y).transpose()).dot(X[:,j])\n", + " \n", + " # =================================================================\n", + " \n", + " # save the cost J in every iteration\n", + " J_history.append(computeCostMulti(X, y, theta))\n", + " \n", + " return theta, J_history" + ] + }, + { + "cell_type": "code", + "execution_count": 184, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[340412.56301439 109370.05670466 -6500.61509507]\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXgAAAERCAYAAABxZrw0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAeZklEQVR4nO3de5gddZ3n8fen77l3QjrkRghBuYkQtEFQBpFRcBhWRhcUHkZxZJZ1dFgdd3YGlmfHGX1mRocdF/Vx1Kx3RUZF8MI8gIhc1OWWAIZbYiAECElI5965drr7u39Une6TTnenO93V53TV5/U8/fQ5VXXq9011zqd//auq31FEYGZm+VNT6QLMzCwbDngzs5xywJuZ5ZQD3swspxzwZmY55YA3M8upqgt4Sd+QtFHSU0PY9hxJj0nqlHRJn3VXSlqVfl2ZXcVmZtWp6gIe+BbwziFu+xLwQeD75QslzQA+CbwJOAP4pKTpo1eimVn1q7qAj4gHgC3lyyQdK+lOScsk/VrSCem2ayJiOdDdZzcXAHdHxJaI2ArczdB/aZiZ5UJdpQsYoiXAhyNilaQ3Af8GnDfI9vOAl8uer02XmZkVRtUHvKTJwJuBH0kqLW481Mv6WeY5GcysUKo+4EmGkbZFxOJhvGYtcG7Z8/nAfaNYk5lZ1au6Mfi+ImIH8IKkSwGUOPUQL7sLOF/S9PTk6vnpMjOzwqi6gJd0M/AgcLyktZKuAq4ArpL0O+Bp4OJ029MlrQUuBb4q6WmAiNgCfBp4NP36VLrMzKww5OmCzczyqep68GZmNjqq6iTrzJkzY+HChZUuw8xs3Fi2bNmmiGjpb11VBfzChQtZunRppcswMxs3JL040DoP0ZiZ5ZQD3swspxzwZmY55YA3M8spB7yZWU454M3McsoBb2aWU+M+4FduaOeyJQ9y3a3LK12KmVlVqaobnQ7H/q5uHlq9hR17OitdiplZVRn3PfjJjcnvqF0dDngzs3LjPuAnpQG/c68D3sys3LgP+ClNScC373PAm5mVG/cB31hXQ12N6OjspqOzu9LlmJlVjXEf8JKYnPbid7kXb2bWY9wHPMCkhnQc3gFvZtYjFwHfMw7vE61mZj1yEfC+VNLM7GC5CHhfKmlmdrBcBPxkXyppZnaQTANeUrOkWyStkPSspLOyaGeKe/BmZgfJei6azwN3RsQlkhqAiVk00jMG7x68mVmPzAJe0lTgHOCDABHRAXRk0VZpDN5DNGZmvbIcolkEtAHflPS4pK9JmtR3I0lXS1oqaWlbW9thNVS6TNJDNGZmvbIM+DrgDcCXI+I0YBdwbd+NImJJRLRGRGtLS8thNVQaotm5b//hV2tmljNZBvxaYG1EPJw+v4Uk8Edd71QFXVns3sxsXMos4CNiA/CypOPTRX8IPJNFWx6DNzM7WNZX0VwD3JReQbMa+LMsGum9TNJDNGZmJZkGfEQ8AbRm2Qb0DtF4sjEzs165uJO1NJukx+DNzHrlIuB7Z5P0EI2ZWUkuAr5nsrF9nUREhasxM6sOuQj4+toamupr6A7Yu98f22dmBjkJeOi92andNzuZmQE5DHhPV2BmlshPwPtj+8zMDpCbgJ/SWA/4Wngzs5LcBPzUCUkPfscej8GbmUGeAr4p6cHv8LXwZmZAngJ+QhrwezxEY2YGeQp49+DNzA6Qn4D3GLyZ2QHyE/A9PXgP0ZiZQZ4CvmcM3j14MzPIU8CnNzp5DN7MLJGfgPdVNGZmB8hfwLsHb2YG5Cngm3wVjZlZudwE/KSGOmoEuzq66OzynPBmZrkJ+Joa9c4J70slzczyE/DQOw7vgDczg7osdy5pDdAOdAGdEdGaZXvJzU57fKLVzIyMAz71tojYNAbteLoCM7My+Rqi8YRjZmY9sg74AH4haZmkqzNuyzc7mZmVyXqI5i0RsU7SLOBuSSsi4oHyDdLgvxpgwYIFI2rMPXgzs16Z9uAjYl36fSNwG3BGP9ssiYjWiGhtaWkZUXsegzcz65VZwEuaJGlK6TFwPvBUVu2Bpww2MyuX5RDNkcBtkkrtfD8i7sywvZ4x+O3uwZuZZRfwEbEaODWr/fenOQ34bbs7xrJZM7OqlKvLJJsnpgHvHryZWd4CvgGAbbsd8GZmOQt4D9GYmZXkK+DLTrJ2d0eFqzEzq6xcBXxdbQ1TGuvoDs8oaWaWq4AHaJ6U9OK3epjGzAoufwE/IT3R6itpzKzg8hfwE92DNzODXAZ80oPf7kslzazg8hfwvpvVzAzIYcBP7xmicQ/ezIotdwE/rTRE45OsZlZwuQv46T7JamYG5DDge6crcA/ezIothwFfmnDMPXgzK7b8BfwETxlsZgZ5DPi0B791l3vwZlZsuQv4aRN6P5e1yzNKmlmB5S7ga2vUE/IehzezIstdwAMcMSkZptniYRozK7B8BvzkJOA3O+DNrMByGfAz0h785p0OeDMrrpwGfCMAW3btq3AlZmaVk3nAS6qV9Lik27Nuq2Smh2jMzMakB/8x4NkxaKeHh2jMzDIOeEnzgT8GvpZlO33N8FU0ZmaZ9+BvBP4G6B5oA0lXS1oqaWlbW9uoNDpzcjIGv9lj8GZWYJkFvKSLgI0RsWyw7SJiSUS0RkRrS0vLqLTtHryZWbY9+LcA75K0Bvh34DxJ38uwvR4918F7DN7MCiyzgI+I6yJifkQsBC4DfhURf5pVe+WmlyYc291Bt+ejMbOCyuV18PW1NUybUE93eNpgMyuuMQn4iLgvIi4ai7ZKeodpfKLVzIoplz146J1wzDc7mVlR5TjgS9MVOODNrJhyG/AzPERjZgWX24CfmQ7RbPKlkmZWUHUDrZA0Y5DX7YuIXRnUM2papiRDNBvb3YM3s2IaMOCBZUAA6u91kgCujYibsihspFqmNAHQ5oA3s4IaMOAj4pjBXiipBbgfqMqAnzU16cG3te+tcCVmZpVx2GPwEdEG/O0o1jKqWiZ7iMbMim1EJ1kj4uejVchoK43Bt7Xv83QFZlZIub2Kpqm+lmkT6unsDk9XYGaFdMiAl/TdoSyrRr1X0ngc3syKZyg9+NeVP5FUC7wxm3JG16xSwO/wOLyZFc+AAS/pOkntwCmSdqRf7cBG4KdjVuEIzCobhzczK5oBAz4i/jkipgA3RMTU9GtKRBwREdeNYY2HzTc7mVmRDWWI5nZJkwAk/amkz0k6OuO6RsWs9GYnj8GbWRENJeC/DOyWdCrJB2i/CHwn06pGSelmJ/fgzayIhhLwnRERwMXA5yPi88CUbMsaHaWbnTwGb2ZFNNhcNCXtkq4D3g/8QXoVTX22ZY2O3ukKHPBmVjxD6cG/D9gHfCgiNgDzgBsyrWqUzJqajMFv2L6X5I8QM7PiOGTAp6F+EzBN0kXA3ogYF2PwU5vqmdxYx579XWz33axmVjBDuZP1vcAjwKXAe4GHJV2SdWGjZc60pBe/bpuvpDGzYhnKGPz1wOkRsRF6pgn+JXBLloWNljnNE1i1cScbduzhpLlTK12OmdmYGcoYfE0p3FObh/i6qjBnqnvwZlZMQ+nB3ynpLuDm9Pn7gDsO9SJJTcADQGPazi0R8cnDLfRwzWlOAn799j1j3bSZWUUdMuAj4n9Ieg9wNsnH9y2JiNuGsO99wHkRsVNSPfAbSXdExEMjK3l45k6bAMB69+DNrGAG+9Dt1wBHRsRvI+JW4NZ0+TmSjo2I5wfbcXpz1M70aX36NebXKpZ68OvcgzezghlsLP1GoL2f5bvTdYckqVbSEyQzUN4dEQ/3s83VkpZKWtrW1jaU3Q7LnLQHv2G7e/BmViyDBfzCiFjed2FELAUWDmXnEdEVEYuB+cAZkk7uZ5slEdEaEa0tLS1DLHvoSpdJrvfNTmZWMIMFfNMg6yYMp5GI2AbcB7xzOK8bDZMa65jaVMe+zm627OoY6+bNzCpmsIB/VNJ/6btQ0lXAskPtWFKLpOb08QTg7cCKwy10JOY2pydaPUxjZgUy2FU0Hwduk3QFvYHeCjQA7x7CvucA304nJ6sBfhgRt4+k2MM1Z1oTKza0s27bHk6eN60SJZiZjbkBAz4iXgXeLOltQGns/D8i4ldD2XE6fn/ayEscuTlpD37DDvfgzaw4hnId/L3AvWNQS2bmpidaX9nqSyXNrDjGzZQDI3HUjIkAvLx1d4UrMTMbO4UK+Je2OODNrDgKEfBHlwJ+swPezIqjEAE/Y1IDkxpq2bG3k+27/cEfZlYMhQh4SR6mMbPCKUTAAyxwwJtZwTjgzcxyqjgBf4QD3syKpTAB33MtvAPezAqiMAHvIRozK5rCBPy85glI8Mq2PXR2dVe6HDOzzBUm4Jvqa5k9tYmu7mCdP5/VzAqgMAEPcMzMSQCs3rTzEFuamY1/hQr4Y1smA/B8264KV2Jmlr2CBXzSg3++zT14M8u/YgX8rLQHv9EBb2b5V6yA7xmiccCbWf4VKuBnT21iYkMtm3Z2sG13R6XLMTPLVKECvqZGLOoZh/eJVjPLt0IFPHiYxsyKwwFvZpZTxQ14X0ljZjmXWcBLOkrSvZKelfS0pI9l1dZwvCa9VHLlq+0VrsTMLFtZ9uA7gf8eEScCZwIflXRShu0NyaKWSTTU1vDylj207/Xns5pZfmUW8BGxPiIeSx+3A88C87Jqb6jqa2s4bnbSi1+xwb14M8uvMRmDl7QQOA14uJ91V0taKmlpW1vbWJTDibOnAvDs+h1j0p6ZWSVkHvCSJgM/Bj4eEQclakQsiYjWiGhtaWnJuhwATpyTBPwz6xzwZpZfmQa8pHqScL8pIm7Nsq3hKAW8e/BmlmdZXkUj4OvAsxHxuazaORwnpQG/8tV2urqjwtWYmWUjyx78W4D3A+dJeiL9ujDD9oZs2sR65jVPYO/+bl7Y5CkLzCyf6rLacUT8BlBW+x+pE+dM4ZVte3hm/Y6ea+PNzPKkcHeylpw8bxoAy1/eVuFKzMyyUdiAX3xUMwCPO+DNLKcKH/BPvrKdjs7uCldjZjb6ChvwzRMbWDRzEh2d3azY4MslzSx/ChvwAIsXpMM0L3mYxszyp9ABf1o6TPOEx+HNLIeKHfALpgPw+EtbK1yJmdnoK3TAHz97Ck31NazZvJu29n2VLsfMbFQVOuDra2s4feEMAB5avbnC1ZiZja5CBzzAmYuOAOBBB7yZ5UzhA/7Nx6YB/7wD3szypfAB//p505jcWMcLm3axYfveSpdjZjZqCh/wdbU1nHFMMg7/4OpNFa7GzGz0FD7gAc5Kx+F/s8rDNGaWHw544Jzjko8KvP/3G+n2B4CYWU444IHjjpzM/OkT2LSzgyfW+q5WM8sHBzwgibefeCQA9zz7aoWrMTMbHQ741HknzALgnmc3VrgSM7PR4YBPvWnRDCY11LJiQzsvb9ld6XLMzEbMAZ9qrKvl3OOTXvwdT62vcDVmZiPngC/zn06dC8BPn1hX4UrMzEbOAV/m3ONbmNJUx9PrdvDcxvZKl2NmNiKZBbykb0jaKOmprNoYbU31tVx48hzAvXgzG/+y7MF/C3hnhvvPxMWLk2Ga2x5/xTc9mdm4llnAR8QDwJas9p+VNy06gnnNE1i7dQ8PrGqrdDlmZofNY/B91NaIK85cAMD3HnqxwtWYmR2+ige8pKslLZW0tK2tOnrM7209iobaGu5ZsdHXxJvZuFXxgI+IJRHRGhGtLS0tlS4HgJmTG7nw9bOJgO88uKbS5ZiZHZaKB3y1uursRQDc9PBLbNnVUeFqzMyGL8vLJG8GHgSOl7RW0lVZtZWF18+fxrnHt7C7o4tv/OaFSpdjZjZsWV5Fc3lEzImI+oiYHxFfz6qtrFxz3msB+Pb/W8NW9+LNbJzxEM0g3nj0dP7gtTNp39fJ5+9ZVelyzMyGxQF/CNf/8YnUCL770IuevsDMxhUH/CGcMHsql5+xgK7u4JM/e5oI391qZuODA34IPvGO45g+sZ7fPreZmx95udLlmJkNiQN+CI6Y3MinLj4ZgH/8j2d885OZjQsO+CG66JQ5XPj62ezq6OLD31vG3v1dlS7JzGxQDvghksQ/v/sUFsyYyNPrdvA/b3vS4/FmVtUc8MMwbWI9X33/G5lQX8utj73C/7n795UuycxsQA74YTpxzlRuvGwxtTXiC796jq/c/3ylSzIz65cD/jBc8LrZ3HDJKQB85o4VfPbOFR6uMbOq44A/TO95w3xuuOQUamvEl+97nmtufpyd+zorXZaZWQ8H/Ahc2noUX7+ylYkNtdy+fD0XfeHXLF+7rdJlmZkBDvgRO/f4WfzsL8/mhNlTWLN5N3/ypd/yyZ8+xfY9+ytdmpkVnAN+FLxm1mR+8tG38OdnH4Mkvv3gi7z1hnv54j2r2LHXQW9mlaFqOjnY2toaS5curXQZI/LMuh38/c+f5pEXks8bn9JYx8WnzeWy0xdw8rxpFa7OzPJG0rKIaO13nQN+9EUED67ezBfuWcVDq7f0LF/UMol3nHQk5590JKfMb6a+1n9AmdnIOOAraOWGdm5+5CV+8sQrbNvdO1wzob6WU4+axukLZ/C6udM47sjJHH3EJGprVMFqzWy8ccBXgf1d3Ty6Zgt3P/Mq969sY/WmXQdt01hXw6KWycyfPoF5zROY29zE3OYJzJzcyIxJDTRPrGf6xAb3/M2shwO+Cm3auY9lL27lsRe3smJDO79/tZ312/cO6bVTGuuYNrGeSQ11TGysZWJDLRPq65jYkD5uqKWpvpb6GlFXW0N9bQ31taK+toa6WlFfU0N9nairSdbV1ogaQY2E0u/JVzIHT42gpqb8+WDbl1fa+6S0vHy1yjZWn+2SZQe//oC9l2+bPtFA69M1By7rt9RcUU7/Yf39fxjvmifUU3cYnbfBAr5uxFXZYZk5uZELXjebC143u2fZjr37Wd22i/Xb9vBK+rVu2x427+xg6+4Otu3ez9bdHbTv66TdN1WZ5covP/FWXjNr8qju0wFfRaY21bP4qGYWH9U84Dbd3UH73k627elg174u9uzvZHdHF7s7utiTft/d0cm+zm72d3XT2RXs7+pmf1fQ2d3d87i0rqOrm+7uoDuCALojOUncHUF3N8nySL4nX6X19HkedHX3/jV4wN+FcfCy8r8co2dZ+UvK1sfB6w/YfbriwP0fvK8Dl/W/bb7k8x+W159XFuffHPDjTE2NmDaxnmkT6ytdiplVOZ+tMzPLqUwDXtI7Ja2U9Jyka7Nsy8zMDpRZwEuqBb4E/BFwEnC5pJOyas/MzA6UZQ/+DOC5iFgdER3AvwMXZ9iemZmVyTLg5wEvlz1fmy47gKSrJS2VtLStrS3DcszMiiXLgO/vmp+DLnCKiCUR0RoRrS0tLRmWY2ZWLFkG/FrgqLLn84F1GbZnZmZlsgz4R4HXSjpGUgNwGfCzDNszM7Mymc5FI+lC4EagFvhGRPzjIbZvA148zOZmApsO87VjodrrA9c4Gqq9Pqj+Gqu9PqiuGo+OiH7Ht6tqsrGRkLR0oAl3qkG11weucTRUe31Q/TVWe30wPmoE38lqZpZbDngzs5zKU8AvqXQBh1Dt9YFrHA3VXh9Uf43VXh+MjxrzMwZvZmYHylMP3szMyjjgzcxyatwHfLVMSSzpKEn3SnpW0tOSPpYunyHpbkmr0u/T0+WS9IW07uWS3jBGddZKelzS7enzYyQ9nNb3g/SmNCQ1ps+fS9cvHKP6miXdImlFeizPqqZjKOmv0p/vU5JultRU6WMo6RuSNkp6qmzZsI+ZpCvT7VdJunIMarwh/Tkvl3SbpOayddelNa6UdEHZ8sze7/3VWLburyWFpJnp84ocx2GLiHH7RXID1fPAIqAB+B1wUoVqmQO8IX08Bfg9yTTJ/wJcmy6/Fvhs+vhC4A6SOXvOBB4eozo/AXwfuD19/kPgsvTxV4C/SB9/BPhK+vgy4AdjVN+3gT9PHzcAzdVyDEkmy3sBmFB27D5Y6WMInAO8AXiqbNmwjhkwA1idfp+ePp6ecY3nA3Xp48+W1XhS+l5uBI5J3+O1Wb/f+6sxXX4UcBfJTZgzK3kch/1vqlTDo/QDOQu4q+z5dcB1la4rreWnwDuAlcCcdNkcYGX6+KvA5WXb92yXYU3zgXuA84Db0/+cm8reZD3HM/0PfVb6uC7dThnXNzUNUPVZXhXHkN4ZUmekx+R24IJqOIbAwj7hOaxjBlwOfLVs+QHbZVFjn3XvBm5KHx/wPi4dx7F4v/dXI3ALcCqwht6Ar9hxHM7XeB+iGdKUxGMt/VP8NOBh4MiIWA+Qfp+VblaJ2m8E/gboTp8fAWyLiM5+auipL12/Pd0+S4uANuCb6TDS1yRNokqOYUS8Avxv4CVgPckxWUZ1HcOS4R6zSr+XPkTSI2aQWsa8RknvAl6JiN/1WVU1NQ5mvAf8kKYkHkuSJgM/Bj4eETsG27SfZZnVLukiYGNELBtiDZU4tnUkfyJ/OSJOA3aRDC8MZKyP4XSSD605BpgLTCL5xLKBaqi6/58MXFPFapV0PdAJ3FRaNEAtY/3znghcD/xdf6sHqKWqfubjPeCrakpiSfUk4X5TRNyaLn5V0px0/RxgY7p8rGt/C/AuSWtIPl3rPJIefbOkun5q6KkvXT8N2JJhfaU210bEw+nzW0gCv1qO4duBFyKiLSL2A7cCb6a6jmHJcI9ZRd5L6UnIi4ArIh3TqKIajyX5Zf679H0zH3hM0uwqqnFQ4z3gq2ZKYkkCvg48GxGfK1v1M6B0Jv1KkrH50vIPpGfjzwS2l/6kzkJEXBcR8yNiIclx+lVEXAHcC1wyQH2lui9Jt8+0JxIRG4CXJR2fLvpD4Bmq5BiSDM2cKWli+vMu1Vc1x7DMcI/ZXcD5kqanf6mcny7LjKR3An8LvCsidvep/bL0KqRjgNcCjzDG7/eIeDIiZkXEwvR9s5bkQooNVNFxHFSlBv9H8aTIhSRXrDwPXF/BOs4m+VNsOfBE+nUhyZjrPcCq9PuMdHuRfCj588CTQOsY1nouvVfRLCJ58zwH/AhoTJc3pc+fS9cvGqPaFgNL0+P4E5IrEarmGAL/AKwAngK+S3KlR0WPIXAzyTmB/SQhdNXhHDOScfDn0q8/G4ManyMZry69X75Stv31aY0rgT8qW57Z+72/GvusX0PvSdaKHMfhfnmqAjOznBrvQzRmZjYAB7yZWU454M3McsoBb2aWUw54M7OccsBbZtLZ9/617PlfS/r7Udr3tyRdcugtR9zOpUpmtby3z/K5km5JHy+WdOEottks6SP9tWU2HA54y9I+4D2lKVarhaTaYWx+FfCRiHhb+cKIWBcRpV8wi0muzx5ODXWDrG4mmYmyv7bMhswBb1nqJPnsyr/qu6JvD1zSzvT7uZLul/RDSb+X9BlJV0h6RNKTko4t283bJf063e6i9PW1SuYZfzSdp/u/lu33XknfJ7kxpW89l6f7f0rSZ9Nlf0dyA9tXJN3QZ/uF6bYNwKeA90l6QtL7JE1SMrf4o+mkaRenr/mgpB9J+jnwC0mTJd0j6bG07YvT3X8GODbd3w2lttJ9NEn6Zrr945LeVrbvWyXdqWQe8n8pOx7fSmt9UtJBPwvLr8F6EWaj4UvA8lLgDNGpwIkk87asBr4WEWco+RCVa4CPp9stBN5KMmfIvZJeA3yA5Lbx0yU1Ar+V9It0+zOAkyPihfLGJM0lmY/8jcBWkvD9k4j4lKTzgL+OiKX9FRoRHekvgtaI+Mt0f/9EMi3Bh5R8iMUjkn6ZvuQs4JSI2JL24t8dETvSv3IekvQzkgnWTo6Ixen+FpY1+dG03ddLOiGt9bh03WKSWUz3ASslfZFkFsl5EXFyuq9mrDDcg7dMRTKj5neA/zaMlz0aEesjYh/JreClgH6SJNRLfhgR3RGxiuQXwQkkc398QNITJNM1H0EylwnAI33DPXU6cF8kk4iVZjU8Zxj19nU+cG1aw30kUxYsSNfdHRGlCccE/JOk5cAvSaaVPfIQ+z6bZIoEImIFyYdQlAL+nojYHhF7SebIOZrkuCyS9MV07pfBZji1nHEP3sbCjcBjwDfLlnWSdjAkieQTekr2lT3uLnvezYH/Z/vOs1GarvWaiDhggidJ55JMP9yf/qZ4HQkB/zkiVvap4U19argCaAHeGBH7lcxY2DSEfQ+k/Lh1kXwIyVZJp5J8MMlHgfeSzJViBeAevGUu7bH+kOSEZckakiERSOZYrz+MXV8qqSYdl19EMjHVXcBfKJm6GUnHKfnQkME8DLxV0sz0BOzlwP3DqKOd5GMaS+4Crkl/cSHptAFeN41kjv796Vj60QPsr9wDJL8YSIdmFpD8u/uVDv3URMSPgf9FMv2yFYQD3sbKvwLlV9P8X5JQfQTo27MdqpUkQXwH8OF0aOJrJMMTj6UnJr/KIf5SjWSa1+tIpv39HfBYRPx0sNf0cS9wUukkK/Bpkl9Yy9MaPj3A624CWiUtJQntFWk9m0nOHTzV9+Qu8G9AraQngR8AH0yHsgYyD7gvHS76VvrvtILwbJJmZjnlHryZWU454M3McsoBb2aWUw54M7OccsCbmeWUA97MLKcc8GZmOfX/AaPrhvpfop3KAAAAAElFTkSuQmCC\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "theta=np.zeros(X.shape[1])\n", + "alpha=0.01\n", + "num_iters=1500\n", + "theta,J_history=gradientDescentMulti(X, y, theta, alpha, num_iters)\n", + "print(theta)\n", + "pyplot.plot(np.arange(len(J_history)), J_history, lw=2) \n", + "pyplot.xlabel('Number of iterations')\n", + "pyplot.ylabel('Cost J')\n", + "pyplot.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 185, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Predicted price of a 1650 sq-ft, 3 br house (using gradient descent): $293098\n" + ] + } + ], + "source": [ + "# Estimate the price of a 1650 sq-ft, 3 br house\n", + "# ======================= YOUR CODE HERE ===========================\n", + "# Recall that the first column of X is all-ones. \n", + "# Thus, it does not need to be normalized.\n", + "sqft=1650\n", + "numhouse=3\n", + "\n", + "price = 0 # You should change this\n", + "\n", + "norm_sqft=(sqft-mu[0])/sigma[0]\n", + "norm_numhouse=(numhouse-mu[1])/sigma[1]\n", + "\n", + "price = theta[0] + (theta[1]*norm_sqft) + (theta[2]*norm_numhouse)\n", + "\n", + "# ===================================================================\n", + "\n", + "print('Predicted price of a 1650 sq-ft, 3 br house (using gradient descent): ${:.0f}'.format(price))" + ] + }, + { + "cell_type": "code", + "execution_count": 186, + "metadata": {}, + "outputs": [], + "source": [ + "# Load data\n", + "data = np.loadtxt('ex1data2.txt', delimiter=',')\n", + "X = data[:, :2]\n", + "y = data[:, 2]\n", + "m = y.size\n", + "X = np.concatenate([np.ones((m, 1)), X], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 187, + "metadata": {}, + "outputs": [], + "source": [ + "def normalEqn(X, y):\n", + " \"\"\"\n", + " Computes the closed-form solution to linear regression using the normal equations.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset of shape (m x n+1).\n", + " \n", + " y : array_like\n", + " The value at each data point. A vector of shape (m, ).\n", + " \n", + " Returns\n", + " -------\n", + " theta : array_like\n", + " Estimated linear regression parameters. A vector of shape (n+1, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the code to compute the closed form solution to linear\n", + " regression and put the result in theta.\n", + " \n", + " Hint\n", + " ----\n", + " Look up the function `np.linalg.pinv` for computing matrix inverse.\n", + " \"\"\"\n", + " theta = np.zeros(X.shape[1])\n", + " \n", + " # ===================== YOUR CODE HERE ============================\n", + " \n", + " theta=((np.linalg.inv(((X.transpose()).dot(X)))).dot(X.transpose())).dot(y)\n", + "\n", + " \n", + " # =================================================================\n", + " return theta" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Theta computed from the normal equations: [89597.9095428 139.21067402 -8738.01911233]\n", + "Predicted price of a 1650 sq-ft, 3 br house (using normal equations): $293081\n" + ] + } + ], + "source": [ + "# Calculate the parameters from the normal equation\n", + "theta = normalEqn(X, y);\n", + "\n", + "# Display normal equation's result\n", + "print('Theta computed from the normal equations: {:s}'.format(str(theta)));\n", + "\n", + "# Estimate the price of a 1650 sq-ft, 3 br house\n", + "# ====================== YOUR CODE HERE ======================\n", + "\n", + "price = 0 # You should change this\n", + "\n", + "sqft=1650\n", + "numhouse=3\n", + "\n", + "price = theta[0] + (theta[1]*sqft) + (theta[2]*numhouse)\n", + "\n", + "# ============================================================\n", + "\n", + "print('Predicted price of a 1650 sq-ft, 3 br house (using normal equations): ${:.0f}'.format(price))" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/gradientdescentSingle.ipynb b/gradientdescentSingle.ipynb new file mode 100644 index 000000000..6530ab445 --- /dev/null +++ b/gradientdescentSingle.ipynb @@ -0,0 +1,388 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "from mpl_toolkits.mplot3d import Axes3D # needed to plot 3-D surfaces\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils \n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Read comma separated data\n", + "data = np.loadtxt('ex1data1.txt', delimiter=',')\n", + "X, y = data[:, 0], data[:, 1]\n", + "m = y.size # number of training examples" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "# Add a column of ones to X. The numpy function stack joins arrays along a given axis. \n", + "# The first axis (axis=0) refers to rows (training examples) \n", + "# and second axis (axis=1) refers to columns (features).\n", + "X = np.stack([np.ones(m), X], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def computeCost(X, y, theta):\n", + " \"\"\"\n", + " Compute cost for linear regression. Computes the cost of using theta as the\n", + " parameter for linear regression to fit the data points in X and y.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The input dataset of shape (m x n+1), where m is the number of examples,\n", + " and n is the number of features. We assume a vector of one's already \n", + " appended to the features so we have n+1 columns.\n", + " \n", + " y : array_like\n", + " The values of the function at each data point. This is a vector of\n", + " shape (m, ).\n", + " \n", + " theta : array_like\n", + " The parameters for the regression function. This is a vector of \n", + " shape (n+1, ).\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The value of the regression cost function.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost of a particular choice of theta. \n", + " You should set J to the cost.\n", + " \"\"\"\n", + " \n", + " # initialize some useful values\n", + " m = y.size # number of training examples\n", + "\n", + " # You need to return the following variables correctly\n", + " J = 0\n", + "\n", + " # ====================== YOUR CODE HERE =====================\n", + " H=theta.dot(X.transpose())\n", + " sum=0\n", + " for element in range(len(H.transpose()-y)):\n", + " sum=sum+((H.transpose()-y)[element]*(H.transpose()-y)[element])\n", + " \n", + " J=sum/(2*m) \n", + "\n", + " # ===========================================================\n", + " return J\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "# J = computeCost(X, y, theta=np.array([0.0, 0.0]))\n", + "# print('With theta = [0, 0] \\nCost computed = %.2f' % J)\n", + "# print('Expected cost value (approximately) 32.07\\n')\n", + "\n", + "# # further testing of the cost function\n", + "# J = computeCost(X, y, theta=np.array([-1, 2]))\n", + "# print('With theta = [-1, 2]\\nCost computed = %.2f' % J)\n", + "# print('Expected cost value (approximately) 54.24')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "def gradientDescent(X, y, theta, alpha, num_iters):\n", + " \"\"\"\n", + " Performs gradient descent to learn `theta`. Updates theta by taking `num_iters`\n", + " gradient steps with learning rate `alpha`.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The input dataset of shape (m x n+1).\n", + " \n", + " y : arra_like\n", + " Value at given features. A vector of shape (m, ).\n", + " \n", + " theta : array_like\n", + " Initial values for the linear regression parameters. \n", + " A vector of shape (n+1, ).\n", + " \n", + " alpha : float\n", + " The learning rate.\n", + " \n", + " num_iters : int\n", + " The number of iterations for gradient descent. \n", + " \n", + " Returns\n", + " -------\n", + " theta : array_like\n", + " The learned linear regression parameters. A vector of shape (n+1, ).\n", + " \n", + " J_history : list\n", + " A python list for the values of the cost function after each iteration.\n", + " \n", + " Instructions\n", + " ------------\n", + " Peform a single gradient step on the parameter vector theta.\n", + "\n", + " While debugging, it can be useful to print out the values of \n", + " the cost function (computeCost) and gradient here.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.shape[0] # number of training examples\n", + " \n", + " # make a copy of theta, to avoid changing the original array, since numpy arrays\n", + " # are passed by reference to functions\n", + " theta = theta.copy()\n", + " \n", + " J_history = [] # Use a python list to save cost in every iteration\n", + " \n", + " for i in range(num_iters):\n", + " # ==================== YOUR CODE HERE =================================\n", + " H=theta.dot(X.transpose())\n", + " temp1=(alpha/m)*((H.transpose()-y).transpose()).dot(X[:,0])\n", + " temp2=(alpha/m)*((H.transpose()-y).transpose()).dot(X[:,1])\n", + " theta[0]-=temp1\n", + " theta[1]-=temp2\n", + " # =====================================================================\n", + " \n", + " # save the cost J in every iteration\n", + " J_history.append(computeCost(X, y, theta))\n", + " \n", + " return theta, J_history" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Theta found by gradient descent: -3.6303, 1.1664\n", + "Expected theta values (approximately): [-3.6303, 1.1664]\n" + ] + } + ], + "source": [ + "# initialize fitting parameters\n", + "theta = np.zeros(2)\n", + "\n", + "# some gradient descent settings\n", + "iterations = 1500\n", + "alpha = 0.01\n", + "\n", + "theta, J_history = gradientDescent(X ,y, theta, alpha, iterations)\n", + "print('Theta found by gradient descent: {:.4f}, {:.4f}'.format(*theta))\n", + "print('Expected theta values (approximately): [-3.6303, 1.1664]')" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def plotData(x, y):\n", + " \"\"\"\n", + " Plots the data points x and y into a new figure. Plots the data \n", + " points and gives the figure axes labels of population and profit.\n", + " \n", + " Parameters\n", + " ----------\n", + " x : array_like\n", + " Data point values for x-axis.\n", + "\n", + " y : array_like\n", + " Data point values for y-axis. Note x and y should have the same size.\n", + " \n", + " Instructions\n", + " ------------\n", + " Plot the training data into a figure using the \"figure\" and \"plot\"\n", + " functions. Set the axes labels using the \"xlabel\" and \"ylabel\" functions.\n", + " Assume the population and revenue data have been passed in as the x\n", + " and y arguments of this function. \n", + " \n", + " Hint\n", + " ----\n", + " You can use the 'ro' option with plot to have the markers\n", + " appear as red circles. Furthermore, you can make the markers larger by\n", + " using plot(..., 'ro', ms=10), where `ms` refers to marker size. You \n", + " can also set the marker edge color using the `mec` property.\n", + " \"\"\"\n", + " fig = pyplot.figure() # open a new figure\n", + " \n", + " # ====================== YOUR CODE HERE ======================= \n", + " pyplot.plot(x, y, 'ro',ms=10, mec='k')\n", + " pyplot.ylabel('Profit in $10,000')\n", + " pyplot.xlabel('Population of City in 10,000s')\n", + "\n", + " # =============================================================" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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gJUqYty4cQBs3bqVfv36kZeXR79+/fj0008BuPLKK/nDH/7A6aefzrHHHsuSJUti86MoKUMsUiTEexcugMqqA1z5yDv84rayGuV/em4bNt/VnxfG942L8ocUGQH85YUP2PjF7qjes/PPXfx5sH9WzfpSVVXFO++8Q2lpKX/5y194+eWXmTNnDocddhj/+9//qKyspE+fPpxzzjkcffTRPPvss7hcLnbs2EGvXr1qetEffvghjzzyCA888EDAdlq2bMlbb70FQL9+/Zg1axbHHXccb7/9NoWFhbzyyitcf/31XH/99QwdOpRZs2bVuv6dd97h/fff55hjjmHTpk088cQT/Pe//8XhcFBYWMiiRYs46aST+Pzzz3n//fcBKzsowJQpU/jkk09o0aJFTZkv48aNY+TIkVxxxRXMnTuXP/zhDzz33HMAbN++nbfeeovNmzczZMgQ8vPzG/2dK0p9qOti6gZmAIuBHUA2cBnwjU9erIay76cqhpe8zdpPD/6fnHtSe+4f2p1DMuLfH08JA5DMBErf/J///If169fX9Hh37drFli1b6NChA7feeitvvPEGaWlpfP7553z11VcAdOrUiV69egVt59JLLwWsUcSKFSu4+OKLa85VVlYCsHLlyhrFO2zYsFo7mJ122mkcc8wxACxfvpw1a9bUpLTev38/7dq1Y/DgwXz88ceMHz+egQMHcs455wCQl5fH5ZdfzgUXXBBwm8mVK1fyzDPPADBixAhuueWWmnMXXHABaWlpdO7cueazKko88d2FqwwYCVwDrAA6AVuBEqClCGVlZQ3KHrBrv4eLHlxB+dcH4xTye3Rg6kV5pKcFztIbD1LCAESjpx4rgqVvvv/++zn33HNr1X300Uf55ptvWLNmDQ6Hg5ycnJqUy74ppgPhPV9dXU3r1q0D7ggWyfVe+a644gomT57sV2/dunW89NJLzJw5kyeffJK5c+eybNky3njjDZYuXcpdd93FBx98ELIt37TU3u/H266ixJthw4czp6SEUR4PI4Gl4LeF7GRgCNR7C9kdeysZ9K+3+HL3wdTpV/XJ4U+DOgdNzx5PdA0gAZx77rk8+OCDeOx5x48++ogffviBXbt20a5dOxwOB6+++ipbt4YLffHH5XJxzDHH8NRTTwGWUl23bh0AvXr14umnnwbg8ccfD3qPfv36sWTJkpptKb/9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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# plot the linear fit\n", + "plotData(X[:, 1], y)\n", + "pyplot.plot(X[:, 1], np.dot(X, theta), '-')\n", + "pyplot.legend(['Training data', 'Linear regression']);" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For population = 35,000, we predict a profit of 4519.77\n", + "\n", + "For population = 70,000, we predict a profit of 45342.45\n", + "\n" + ] + } + ], + "source": [ + "# Predict values for population sizes of 35,000 and 70,000\n", + "predict1 = np.dot([1, 3.5], theta)\n", + "print('For population = 35,000, we predict a profit of {:.2f}\\n'.format(predict1*10000))\n", + "\n", + "predict2 = np.dot([1, 7], theta)\n", + "print('For population = 70,000, we predict a profit of {:.2f}\\n'.format(predict2*10000))" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# grid over which we will calculate J\n", + "theta0_vals = np.linspace(-10, 10, 100)\n", + "theta1_vals = np.linspace(-1, 4, 100)\n", + "\n", + "# initialize J_vals to a matrix of 0's\n", + "J_vals = np.zeros((theta0_vals.shape[0], theta1_vals.shape[0]))\n", + "\n", + "# Fill out J_vals\n", + "for i, theta0 in enumerate(theta0_vals):\n", + " for j, theta1 in enumerate(theta1_vals):\n", + " J_vals[i][j] = computeCost(X, y, np.array([theta0, theta1]))\n", + " \n", + "# Because of the way meshgrids work in the surf command, we need to\n", + "# transpose J_vals before calling surf, or else the axes will be flipped\n", + "J_vals = J_vals.T\n", + "\n", + "# surface plot\n", + "fig = pyplot.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(121, projection='3d')\n", + "ax.plot_surface(theta0_vals, theta1_vals, J_vals, cmap='viridis')\n", + "pyplot.xlabel('theta0')\n", + "pyplot.ylabel('theta1')\n", + "pyplot.title('Surface')\n", + "\n", + "# contour plot\n", + "# Plot J_vals as 15 contours spaced logarithmically between 0.01 and 100\n", + "ax = pyplot.subplot(122)\n", + "pyplot.contour(theta0_vals, theta1_vals, J_vals, linewidths=2, cmap='viridis', levels=np.logspace(-2, 3, 20))\n", + "pyplot.xlabel('theta0')\n", + "pyplot.ylabel('theta1')\n", + "pyplot.plot(theta[0], theta[1], 'ro', ms=10, lw=2)\n", + "pyplot.title('Contour, showing minimum')\n", + "pass" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/introduction_to_matrix.ipynb b/introduction_to_matrix.ipynb new file mode 100644 index 000000000..f92f097c1 --- /dev/null +++ b/introduction_to_matrix.ipynb @@ -0,0 +1,102 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "from mpl_toolkits.mplot3d import Axes3D # needed to plot 3-D surfaces\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils \n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def warmUpExercise():\n", + " \"\"\"\n", + " Example function in Python which computes the identity matrix.\n", + " \n", + " Returns\n", + " -------\n", + " A : array_like\n", + " The 5x5 identity matrix.\n", + " \n", + " Instructions\n", + " ------------\n", + " Return the 5x5 identity matrix.\n", + " \"\"\" \n", + " # ======== YOUR CODE HERE ======\n", + " A = [] # modify this line\n", + " A=np.eye(5)\n", + " \n", + " # ==============================\n", + " return A" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[1., 0., 0., 0., 0.],\n", + " [0., 1., 0., 0., 0.],\n", + " [0., 0., 1., 0., 0.],\n", + " [0., 0., 0., 1., 0.],\n", + " [0., 0., 0., 0., 1.]])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "warmUpExercise()" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/plotData.ipynb b/plotData.ipynb new file mode 100644 index 000000000..c4f11e1cb --- /dev/null +++ b/plotData.ipynb @@ -0,0 +1,136 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "from mpl_toolkits.mplot3d import Axes3D # needed to plot 3-D surfaces\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils \n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline\n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "# Read comma separated data\n", + "data = np.loadtxt('ex1data1.txt', delimiter=',')\n", + "X, y = data[:, 0], data[:, 1]\n", + "\n", + "m = y.size # number of training examples" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def plotData(x, y):\n", + " \"\"\"\n", + " Plots the data points x and y into a new figure. Plots the data \n", + " points and gives the figure axes labels of population and profit.\n", + " \n", + " Parameters\n", + " ----------\n", + " x : array_like\n", + " Data point values for x-axis.\n", + "\n", + " y : array_like\n", + " Data point values for y-axis. Note x and y should have the same size.\n", + " \n", + " Instructions\n", + " ------------\n", + " Plot the training data into a figure using the \"figure\" and \"plot\"\n", + " functions. Set the axes labels using the \"xlabel\" and \"ylabel\" functions.\n", + " Assume the population and revenue data have been passed in as the x\n", + " and y arguments of this function. \n", + " \n", + " Hint\n", + " ----\n", + " You can use the 'ro' option with plot to have the markers\n", + " appear as red circles. Furthermore, you can make the markers larger by\n", + " using plot(..., 'ro', ms=10), where `ms` refers to marker size. You \n", + " can also set the marker edge color using the `mec` property.\n", + " \"\"\"\n", + " fig = pyplot.figure() # open a new figure\n", + " \n", + " # ====================== YOUR CODE HERE ======================= \n", + " pyplot.plot(x, y, 'ro',ms=10, mec='k')\n", + " pyplot.ylabel('Profit in $10,000')\n", + " pyplot.xlabel('Population of City in 10,000s')\n", + "\n", + " # =============================================================" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plotData(X, y)" + ] + }, + { + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 7ddb6f6c20ba0b9e430d62da219b744a3815faf3 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Tue, 14 Apr 2020 19:40:17 +0530 Subject: [PATCH 3/9] Add files via upload --- LogisticRegression.ipynb | 484 ++++++++++++++++++++++++++++ ex2data1.txt | 100 ++++++ ex2data2.txt | 118 +++++++ regularisedLogisticRegression.ipynb | 440 +++++++++++++++++++++++++ 4 files changed, 1142 insertions(+) create mode 100644 LogisticRegression.ipynb create mode 100644 ex2data1.txt create mode 100644 ex2data2.txt create mode 100644 regularisedLogisticRegression.ipynb diff --git a/LogisticRegression.ipynb b/LogisticRegression.ipynb new file mode 100644 index 000000000..2d8c1ee4c --- /dev/null +++ b/LogisticRegression.ipynb @@ -0,0 +1,484 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# used for mathematical operations of elements\n", + "import math\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils\n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Load data\n", + "# The first two columns contains the exam scores and the third column\n", + "# contains the label.\n", + "data = np.loadtxt('ex2data1.txt', delimiter=',')\n", + "X, y = data[:, 0:2], data[:, 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def plotData(X, y):\n", + " \"\"\"\n", + " Plots the data points X and y into a new figure. Plots the data \n", + " points with * for the positive examples and o for the negative examples.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " An Mx2 matrix representing the dataset. \n", + " \n", + " y : array_like\n", + " Label values for the dataset. A vector of size (M, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Plot the positive and negative examples on a 2D plot, using the\n", + " option 'k*' for the positive examples and 'ko' for the negative examples. \n", + " \"\"\"\n", + " # Create New Figure\n", + " fig = pyplot.figure()\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " # Find Indices of Positive and Negative Examples\n", + " pos = y == 1\n", + " neg = y == 0\n", + " \n", + " pyplot.plot(X[neg,0],X[neg,1],'ko', mfc='y', ms=8, mec='k', mew=1)\n", + "\n", + " pyplot.plot(X[pos,0],X[pos,1],'k*', lw=2, ms=10)\n", + "\n", + " \n", + " # ============================================================" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "image/png": "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pOu7CdKgrZE6MRfM/ff748JKlc4OkgfRsgiUpaCq/6mqA1V1EDAZWKuqVwLrgC+5b5sKLMu0LGHS3sZRgjRoa6ROstkFgkZnB8mDMIO8MwRpnsL3cAad/w70AxZl8mKZzP8iIsyYMaN5fd68efzwhz9s95ja2lo2bdrU7ntGjBjBlClTEu7funUrZ511zDBMu1RWVrJ69WoA7r77bvbt29e870c/+lGnzgWwePFivv3tb3f6uM7g5Uxkw2hLZzslYXN3+qoUVHW9qk5wX/9DVT+tqkNV9QpVPZDJa2dSe/fs2ZPf/OY37N69O+ljOlIKmzdv5siRI2zYsIF//etfKcvWltmzZzdXr0qHUvCCMPujjfDT2U5J2MJvg2QpeEomtXe3bt2YNm0ad9111zH73nrrLcrLyxk+fDjl5eVs27aNZ555huXLl3PLLbcwcuRI3njjjWOO+9WvfsVVV13FxRdfzPLly5u3b9y4kREjRnD++efzP//zP83bFy9ezKRJk7jssssYPHgwP/vZz5g/fz4lJSWcd955vP/++wBcc801PProo9xzzz1s376dsrIyysrK+P73v89HH33EyJEjufLKKwH4xS9+wac//WlGjhzJN77xDQ4fdvz2Dz74IKeddhpjxozh6aefTvm+JYsN2hp+0tlOSejcnYlKsoWhxSvHuWnTpg4K0Tl0pjRnZznuuOO0oaFBTz31VK2vr9e5c+fqrFmzVFV1woQJunjxYlVVXbRokU6cOFFVVadOnaqPPPJIwnMOGzZMt27dqn/4wx/0sssua95+9tln6/r161VV9eabb9YzzzxTVVUffPBBHTJkiH744Ye6c+dOPf744/W+++5TVdXp06frXXfddcx1Tz31VN21a1erzxFj06ZNOmHCBD148KCqqt5www360EMP6fbt27W4uFh37typBw4c0M9+9rN64403xv0MyX43hhF0YqVEi4uLNC8vosXFRQnLuLZX2nfs2KhWVVV6Lj9WjvNYMq29jz/+eK6++mruueeeVtufffZZvvpVZ47eVVddxR//+McOz/Xcc89RVFTEqaeeSnl5Oc8//zwffPABDQ0N1NfXM2bMmObztaSsrIzevXtTVFREYWEhl112GQBnn302W7du7dTnWbNmDRs3buTcc89l5MiRrFmzhn/84x/8+c9/prS0lKKiInr06MFXvvKVTp3XMMJIZwbJw+buzFml4MVg5fTp01m0aFG7YwDJzKeoqanhtddeY9CgQQwZMoQPP/yQX//616hqu8f37Nmz+XUkEmlej0QiNDU1deKTOBbl1KlTeeGFF3jhhRd4/fXXmwfPvZgTYpFiRlgJm7szZ5WCF9q7b9++fPnLX2bRoqOBVJ/97Gd5+OGHAfjlL3/JBRdcAEDv3r3Zu3fvMec4cuQIjzzyCC+99BJbt25l69atLFu2jJqaGvr06UNhYWGztfHLX/6yS/K2laF79+4cOnQIgPLych599FF2usWp33//fd566y0+85nPsH79evbs2cOhQ4d45JFHuiRDPIJQKcwwukKYwm9zVil4pb1nzJjRKgrpnnvu4cEHH2T48OFUV1fz05/+FIDJkyczd+5cSkpKWg00b9iwgZNPPpmTTz65eduFF17Ipk2b2LFjBw8++CA33ngj559/Pr169eqSrNOmTePSSy+lrKyseX348OFceeWVnHHGGcyZM4eLL76Y4cOHc9FFF7Fjxw5OOukkfvjDH3L++eczbtw4zjnnnC7JEI+wxXkbRpjJuiI7NqM5uKT63ViaZcNIL4Ga0WwYnSVscd6GEWZMKRiBJ3Rx3oYRYkwpGIHH0loYhneYUjACT9jivA0jzJhSABoaGrj88stpaGjwWxQjDmGL8zaMMGNKAVi+fDm1tbWsWLHCb1GMBIQpztswwowpBeCBBx5otUwHv/3tbxERXnvttbj7Y4nokmX79u186UtOuYkXXniBJ554onnf+vXreeaZZzot46BBgzqVydUwjOwnJ5XCuHHjEJHmFnugPv300622x1JKp0JNTQ0XXHBB8+zlrjJgwIBmJZIupWAYhtGWnFQKt956K/n5+c3rBw8ebLUEyM/PZ+bMmSmdv7GxkaeffppFixY1KwVV5dvf/jZnnHEGn//855vTRYDTY//BD37A+eefz+jRo3n++ee55JJLGDJkCD//+c+BowV0Dh48SGVlJUuXLmXkyJHccccd/PznP+euu+5i5MiRPPXUU+zatYsvfvGLnHvuuZx77rnN6az37NnDxRdfTElJCd/4xjcI88RFwzAyQze/BfCDsrIyHnvsMSZMmNCqqEyM/Px8Hn/8cUpLS1M6f21tLePHj+e0006jb9++PP/882zdupXXX3+dl19+mffee48zzjiDf//3f28+pri4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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plotData(X,y)\n", + "pyplot.xlabel('Exam 1 Score')\n", + "pyplot.ylabel('Exam 2 Score')\n", + "pyplot.legend(['Not Admitted','Admitted'])\n", + "pass" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " \"\"\"\n", + " Compute sigmoid function given the input z.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array_like\n", + " The input to the sigmoid function. This can be a 1-D vector \n", + " or a 2-D matrix. \n", + " \n", + " Returns\n", + " -------\n", + " g : array_like\n", + " The computed sigmoid function. g has the same shape as z, since\n", + " the sigmoid is computed element-wise on z.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the sigmoid of each value of z (z can be a matrix, vector or scalar).\n", + " \"\"\"\n", + " # convert input to a numpy array\n", + " z = np.array(z)\n", + " \n", + " # You need to return the following variables correctly \n", + " g = np.zeros(z.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " g = 1/(1+np.exp((-z)))\n", + " \n", + " # =============================================================\n", + " return g" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "g( [0, 100] ) = [0.5 1. ]\n" + ] + } + ], + "source": [ + "# Test the implementation of sigmoid function here\n", + "z = [0,100]\n", + "g = sigmoid(z)\n", + "\n", + "print('g(', z, ') = ', g)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Setup the data matrix appropriately, and add ones for the intercept term\n", + "m, n = X.shape\n", + "\n", + "# Add intercept term to X\n", + "X = np.concatenate([np.ones((m, 1)), X], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def costFunction(theta, X, y):\n", + " \"\"\"\n", + " Compute cost and gradient for logistic regression. \n", + " \n", + " Parameters\n", + " ----------\n", + " theta : array_like\n", + " The parameters for logistic regression. This a vector\n", + " of shape (n+1, ).\n", + " \n", + " X : array_like\n", + " The input dataset of shape (m x n+1) where m is the total number\n", + " of data points and n is the number of features. We assume the \n", + " intercept has already been added to the input.\n", + " \n", + " y : arra_like\n", + " Labels for the input. This is a vector of shape (m, ).\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed value for the cost function. \n", + " \n", + " grad : array_like\n", + " A vector of shape (n+1, ) which is the gradient of the cost\n", + " function with respect to theta, at the current values of theta.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost of a particular choice of theta. You should set J to \n", + " the cost. Compute the partial derivatives and set grad to the partial\n", + " derivatives of the cost w.r.t. each parameter in theta.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.size # number of training examples\n", + "\n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " z=theta.dot(X.transpose())\n", + " h=sigmoid(z)\n", + " \n", + " for i in range(m):\n", + " J=J+((-1*(y[i]*math.log(h[i])+(1-y[i])*math.log(1-h[i])))/m)\n", + " \n", + " for i in range(theta.shape[0]):\n", + " grad[i]=((h-y).dot(X[:,i]))/m\n", + "\n", + " # =============================================================\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at initial theta (zeros): 0.693\n", + "Expected cost (approx): 0.693\n", + "\n", + "Gradient at initial theta (zeros):\n", + "\t[-0.1000, -12.0092, -11.2628]\n", + "Expected gradients (approx):\n", + "\t[-0.1000, -12.0092, -11.2628]\n", + "\n", + "Cost at test theta: 0.218\n", + "Expected cost (approx): 0.218\n", + "\n", + "Gradient at test theta:\n", + "\t[0.043, 2.566, 2.647]\n", + "Expected gradients (approx):\n", + "\t[0.043, 2.566, 2.647]\n" + ] + } + ], + "source": [ + "# Initialize fitting parameters\n", + "initial_theta = np.zeros(n+1)\n", + "\n", + "cost, grad = costFunction(initial_theta, X, y)\n", + "\n", + "print('Cost at initial theta (zeros): {:.3f}'.format(cost))\n", + "print('Expected cost (approx): 0.693\\n')\n", + "\n", + "print('Gradient at initial theta (zeros):')\n", + "print('\\t[{:.4f}, {:.4f}, {:.4f}]'.format(*grad))\n", + "print('Expected gradients (approx):\\n\\t[-0.1000, -12.0092, -11.2628]\\n')\n", + "\n", + "# Compute and display cost and gradient with non-zero theta\n", + "test_theta = np.array([-24, 0.2, 0.2])\n", + "cost, grad = costFunction(test_theta, X, y)\n", + "\n", + "print('Cost at test theta: {:.3f}'.format(cost))\n", + "print('Expected cost (approx): 0.218\\n')\n", + "\n", + "print('Gradient at test theta:')\n", + "print('\\t[{:.3f}, {:.3f}, {:.3f}]'.format(*grad))\n", + "print('Expected gradients (approx):\\n\\t[0.043, 2.566, 2.647]')" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at theta found by optimize.minimize: 0.203\n", + "Expected cost (approx): 0.203\n", + "\n", + "theta:\n", + "\t[-25.161, 0.206, 0.201]\n", + "Expected theta (approx):\n", + "\t[-25.161, 0.206, 0.201]\n" + ] + } + ], + "source": [ + "# set options for optimize.minimize\n", + "options= {'maxiter': 400}\n", + "\n", + "# see documention for scipy's optimize.minimize for description about\n", + "# the different parameters\n", + "# The function returns an object `OptimizeResult`\n", + "# We use truncated Newton algorithm for optimization which is \n", + "# equivalent to MATLAB's fminunc\n", + "# See https://stackoverflow.com/questions/18801002/fminunc-alternate-in-numpy\n", + "res = optimize.minimize(costFunction,\n", + " initial_theta,\n", + " (X, y),\n", + " jac=True,\n", + " method='TNC',\n", + " options=options)\n", + "\n", + "# the fun property of `OptimizeResult` object returns\n", + "# the value of costFunction at optimized theta\n", + "cost = res.fun\n", + "\n", + "# the optimized theta is in the x property\n", + "theta = res.x\n", + "\n", + "# Print theta to screen\n", + "print('Cost at theta found by optimize.minimize: {:.3f}'.format(cost))\n", + "print('Expected cost (approx): 0.203\\n');\n", + "\n", + "print('theta:')\n", + "print('\\t[{:.3f}, {:.3f}, {:.3f}]'.format(*theta))\n", + "print('Expected theta (approx):\\n\\t[-25.161, 0.206, 0.201]')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Plot Boundary\n", + "utils.plotDecisionBoundary(plotData, theta, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(theta, X):\n", + " \"\"\"\n", + " Predict whether the label is 0 or 1 using learned logistic regression.\n", + " Computes the predictions for X using a threshold at 0.5 \n", + " (i.e., if sigmoid(theta.T*x) >= 0.5, predict 1)\n", + " \n", + " Parameters\n", + " ----------\n", + " theta : array_like\n", + " Parameters for logistic regression. A vector of shape (n+1, ).\n", + " \n", + " X : array_like\n", + " The data to use for computing predictions. The rows is the number \n", + " of points to compute predictions, and columns is the number of\n", + " features.\n", + "\n", + " Returns\n", + " -------\n", + " p : array_like\n", + " Predictions and 0 or 1 for each row in X. \n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned \n", + " logistic regression parameters.You should set p to a vector of 0's and 1's \n", + " \"\"\"\n", + " m = X.shape[0] # Number of training examples\n", + "\n", + " # You need to return the following variables correctly\n", + " p = np.zeros(m)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " for i in range(m):\n", + " if sigmoid(theta.dot(X.transpose()))[i]>=0.5 :\n", + " p[i]=1\n", + " else :\n", + " p[i]=0\n", + "\n", + " \n", + " # ============================================================\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "For a student with scores 45 and 85,we predict an admission probability of 0.776\n", + "Expected value: 0.775 +/- 0.002\n", + "\n", + "Train Accuracy: 89.00 %\n", + "Expected accuracy (approx): 89.00 %\n" + ] + } + ], + "source": [ + "# Predict probability for a student with score 45 on exam 1 \n", + "# and score 85 on exam 2 \n", + "prob = sigmoid(np.dot([1, 45, 85], theta))\n", + "print('For a student with scores 45 and 85,'\n", + " 'we predict an admission probability of {:.3f}'.format(prob))\n", + "print('Expected value: 0.775 +/- 0.002\\n')\n", + "\n", + "# Compute accuracy on our training set\n", + "p = predict(theta, X)\n", + "print('Train Accuracy: {:.2f} %'.format(np.mean(p == y) * 100))\n", + "print('Expected accuracy (approx): 89.00 %')\n" + ] + }, + { + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/ex2data1.txt b/ex2data1.txt new file mode 100644 index 000000000..3a5f95245 --- /dev/null +++ b/ex2data1.txt @@ -0,0 +1,100 @@ +34.62365962451697,78.0246928153624,0 +30.28671076822607,43.89499752400101,0 +35.84740876993872,72.90219802708364,0 +60.18259938620976,86.30855209546826,1 +79.0327360507101,75.3443764369103,1 +45.08327747668339,56.3163717815305,0 +61.10666453684766,96.51142588489624,1 +75.02474556738889,46.55401354116538,1 +76.09878670226257,87.42056971926803,1 +84.43281996120035,43.53339331072109,1 +95.86155507093572,38.22527805795094,0 +75.01365838958247,30.60326323428011,0 +82.30705337399482,76.48196330235604,1 +69.36458875970939,97.71869196188608,1 +39.53833914367223,76.03681085115882,0 +53.9710521485623,89.20735013750205,1 +69.07014406283025,52.74046973016765,1 +67.94685547711617,46.67857410673128,0 +70.66150955499435,92.92713789364831,1 +76.97878372747498,47.57596364975532,1 +67.37202754570876,42.83843832029179,0 +89.67677575072079,65.79936592745237,1 +50.534788289883,48.85581152764205,0 +34.21206097786789,44.20952859866288,0 +77.9240914545704,68.9723599933059,1 +62.27101367004632,69.95445795447587,1 +80.1901807509566,44.82162893218353,1 +93.114388797442,38.80067033713209,0 +61.83020602312595,50.25610789244621,0 +38.78580379679423,64.99568095539578,0 +61.379289447425,72.80788731317097,1 +85.40451939411645,57.05198397627122,1 +52.10797973193984,63.12762376881715,0 +52.04540476831827,69.43286012045222,1 +40.23689373545111,71.16774802184875,0 +54.63510555424817,52.21388588061123,0 +33.91550010906887,98.86943574220611,0 +64.17698887494485,80.90806058670817,1 +74.78925295941542,41.57341522824434,0 +34.1836400264419,75.2377203360134,0 +83.90239366249155,56.30804621605327,1 +51.54772026906181,46.85629026349976,0 +94.44336776917852,65.56892160559052,1 +82.36875375713919,40.61825515970618,0 +51.04775177128865,45.82270145776001,0 +62.22267576120188,52.06099194836679,0 +77.19303492601364,70.45820000180959,1 +97.77159928000232,86.7278223300282,1 +62.07306379667647,96.76882412413983,1 +91.56497449807442,88.69629254546599,1 +79.94481794066932,74.16311935043758,1 +99.2725269292572,60.99903099844988,1 +90.54671411399852,43.39060180650027,1 +34.52451385320009,60.39634245837173,0 +50.2864961189907,49.80453881323059,0 +49.58667721632031,59.80895099453265,0 +97.64563396007767,68.86157272420604,1 +32.57720016809309,95.59854761387875,0 +74.24869136721598,69.82457122657193,1 +71.79646205863379,78.45356224515052,1 +75.3956114656803,85.75993667331619,1 +35.28611281526193,47.02051394723416,0 +56.25381749711624,39.26147251058019,0 +30.05882244669796,49.59297386723685,0 +44.66826172480893,66.45008614558913,0 +66.56089447242954,41.09209807936973,0 +40.45755098375164,97.53518548909936,1 +49.07256321908844,51.88321182073966,0 +80.27957401466998,92.11606081344084,1 +66.74671856944039,60.99139402740988,1 +32.72283304060323,43.30717306430063,0 +64.0393204150601,78.03168802018232,1 +72.34649422579923,96.22759296761404,1 +60.45788573918959,73.09499809758037,1 +58.84095621726802,75.85844831279042,1 +99.82785779692128,72.36925193383885,1 +47.26426910848174,88.47586499559782,1 +50.45815980285988,75.80985952982456,1 +60.45555629271532,42.50840943572217,0 +82.22666157785568,42.71987853716458,0 +88.9138964166533,69.80378889835472,1 +94.83450672430196,45.69430680250754,1 +67.31925746917527,66.58935317747915,1 +57.23870631569862,59.51428198012956,1 +80.36675600171273,90.96014789746954,1 +68.46852178591112,85.59430710452014,1 +42.0754545384731,78.84478600148043,0 +75.47770200533905,90.42453899753964,1 +78.63542434898018,96.64742716885644,1 +52.34800398794107,60.76950525602592,0 +94.09433112516793,77.15910509073893,1 +90.44855097096364,87.50879176484702,1 +55.48216114069585,35.57070347228866,0 +74.49269241843041,84.84513684930135,1 +89.84580670720979,45.35828361091658,1 +83.48916274498238,48.38028579728175,1 +42.2617008099817,87.10385094025457,1 +99.31500880510394,68.77540947206617,1 +55.34001756003703,64.9319380069486,1 +74.77589300092767,89.52981289513276,1 diff --git a/ex2data2.txt b/ex2data2.txt new file mode 100644 index 000000000..a88899234 --- /dev/null +++ b/ex2data2.txt @@ -0,0 +1,118 @@ +0.051267,0.69956,1 +-0.092742,0.68494,1 +-0.21371,0.69225,1 +-0.375,0.50219,1 +-0.51325,0.46564,1 +-0.52477,0.2098,1 +-0.39804,0.034357,1 +-0.30588,-0.19225,1 +0.016705,-0.40424,1 +0.13191,-0.51389,1 +0.38537,-0.56506,1 +0.52938,-0.5212,1 +0.63882,-0.24342,1 +0.73675,-0.18494,1 +0.54666,0.48757,1 +0.322,0.5826,1 +0.16647,0.53874,1 +-0.046659,0.81652,1 +-0.17339,0.69956,1 +-0.47869,0.63377,1 +-0.60541,0.59722,1 +-0.62846,0.33406,1 +-0.59389,0.005117,1 +-0.42108,-0.27266,1 +-0.11578,-0.39693,1 +0.20104,-0.60161,1 +0.46601,-0.53582,1 +0.67339,-0.53582,1 +-0.13882,0.54605,1 +-0.29435,0.77997,1 +-0.26555,0.96272,1 +-0.16187,0.8019,1 +-0.17339,0.64839,1 +-0.28283,0.47295,1 +-0.36348,0.31213,1 +-0.30012,0.027047,1 +-0.23675,-0.21418,1 +-0.06394,-0.18494,1 +0.062788,-0.16301,1 +0.22984,-0.41155,1 +0.2932,-0.2288,1 +0.48329,-0.18494,1 +0.64459,-0.14108,1 +0.46025,0.012427,1 +0.6273,0.15863,1 +0.57546,0.26827,1 +0.72523,0.44371,1 +0.22408,0.52412,1 +0.44297,0.67032,1 +0.322,0.69225,1 +0.13767,0.57529,1 +-0.0063364,0.39985,1 +-0.092742,0.55336,1 +-0.20795,0.35599,1 +-0.20795,0.17325,1 +-0.43836,0.21711,1 +-0.21947,-0.016813,1 +-0.13882,-0.27266,1 +0.18376,0.93348,0 +0.22408,0.77997,0 +0.29896,0.61915,0 +0.50634,0.75804,0 +0.61578,0.7288,0 +0.60426,0.59722,0 +0.76555,0.50219,0 +0.92684,0.3633,0 +0.82316,0.27558,0 +0.96141,0.085526,0 +0.93836,0.012427,0 +0.86348,-0.082602,0 +0.89804,-0.20687,0 +0.85196,-0.36769,0 +0.82892,-0.5212,0 +0.79435,-0.55775,0 +0.59274,-0.7405,0 +0.51786,-0.5943,0 +0.46601,-0.41886,0 +0.35081,-0.57968,0 +0.28744,-0.76974,0 +0.085829,-0.75512,0 +0.14919,-0.57968,0 +-0.13306,-0.4481,0 +-0.40956,-0.41155,0 +-0.39228,-0.25804,0 +-0.74366,-0.25804,0 +-0.69758,0.041667,0 +-0.75518,0.2902,0 +-0.69758,0.68494,0 +-0.4038,0.70687,0 +-0.38076,0.91886,0 +-0.50749,0.90424,0 +-0.54781,0.70687,0 +0.10311,0.77997,0 +0.057028,0.91886,0 +-0.10426,0.99196,0 +-0.081221,1.1089,0 +0.28744,1.087,0 +0.39689,0.82383,0 +0.63882,0.88962,0 +0.82316,0.66301,0 +0.67339,0.64108,0 +1.0709,0.10015,0 +-0.046659,-0.57968,0 +-0.23675,-0.63816,0 +-0.15035,-0.36769,0 +-0.49021,-0.3019,0 +-0.46717,-0.13377,0 +-0.28859,-0.060673,0 +-0.61118,-0.067982,0 +-0.66302,-0.21418,0 +-0.59965,-0.41886,0 +-0.72638,-0.082602,0 +-0.83007,0.31213,0 +-0.72062,0.53874,0 +-0.59389,0.49488,0 +-0.48445,0.99927,0 +-0.0063364,0.99927,0 +0.63265,-0.030612,0 diff --git a/regularisedLogisticRegression.ipynb b/regularisedLogisticRegression.ipynb new file mode 100644 index 000000000..29006e75c --- /dev/null +++ b/regularisedLogisticRegression.ipynb @@ -0,0 +1,440 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# used for mathematical operations of elements\n", + "import math\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils\n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Load Data\n", + "# The first two columns contains the X values and the third column\n", + "# contains the label (y).\n", + "data = np.loadtxt('ex2data2.txt', delimiter=',')\n", + "X = data[:, :2]\n", + "y = data[:, 2]" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " \"\"\"\n", + " Compute sigmoid function given the input z.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array_like\n", + " The input to the sigmoid function. This can be a 1-D vector \n", + " or a 2-D matrix. \n", + " \n", + " Returns\n", + " -------\n", + " g : array_like\n", + " The computed sigmoid function. g has the same shape as z, since\n", + " the sigmoid is computed element-wise on z.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the sigmoid of each value of z (z can be a matrix, vector or scalar).\n", + " \"\"\"\n", + " # convert input to a numpy array\n", + " z = np.array(z)\n", + " \n", + " # You need to return the following variables correctly \n", + " g = np.zeros(z.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " g = 1/(1+np.exp((-z)))\n", + " \n", + " # =============================================================\n", + " return g" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "def plotData(X, y):\n", + " \"\"\"\n", + " Plots the data points X and y into a new figure. Plots the data \n", + " points with * for the positive examples and o for the negative examples.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " An Mx2 matrix representing the dataset. \n", + " \n", + " y : array_like\n", + " Label values for the dataset. A vector of size (M, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Plot the positive and negative examples on a 2D plot, using the\n", + " option 'k*' for the positive examples and 'ko' for the negative examples. \n", + " \"\"\"\n", + " # Create New Figure\n", + " fig = pyplot.figure()\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " # Find Indices of Positive and Negative Examples\n", + " pos = y == 1\n", + " neg = y == 0\n", + " \n", + " pyplot.plot(X[neg,0],X[neg,1],'ko',mfc='y', ms=8, mec='k', mew=1)\n", + "\n", + " pyplot.plot(X[pos,0],X[pos,1],'k*',lw=2, ms=10)\n", + "\n", + " \n", + " # ============================================================" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plotData(X, y)\n", + "# Labels and Legend\n", + "pyplot.xlabel('Microchip Test 1')\n", + "pyplot.ylabel('Microchip Test 2')\n", + "\n", + "# Specified in plot order\n", + "pyplot.legend(['y = 1', 'y = 0'], loc='upper right')\n", + "pass" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "# Note that mapFeature also adds a column of ones for us, so the intercept\n", + "# term is handled\n", + "X = utils.mapFeature(X[:, 0], X[:, 1])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def costFunctionReg(theta, X, y, lambda_):\n", + " \"\"\"\n", + " Compute cost and gradient for logistic regression with regularization.\n", + " \n", + " Parameters\n", + " ----------\n", + " theta : array_like\n", + " Logistic regression parameters. A vector with shape (n, ). n is \n", + " the number of features including any intercept. If we have mapped\n", + " our initial features into polynomial features, then n is the total \n", + " number of polynomial features. \n", + " \n", + " X : array_like\n", + " The data set with shape (m x n). m is the number of examples, and\n", + " n is the number of features (after feature mapping).\n", + " \n", + " y : array_like\n", + " The data labels. A vector with shape (m, ).\n", + " \n", + " lambda_ : float\n", + " The regularization parameter. \n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed value for the regularized cost function. \n", + " \n", + " grad : array_like\n", + " A vector of shape (n, ) which is the gradient of the cost\n", + " function with respect to theta, at the current values of theta.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost `J` of a particular choice of theta.\n", + " Compute the partial derivatives and set `grad` to the partial\n", + " derivatives of the cost w.r.t. each parameter in theta.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.size # number of training examples\n", + "\n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + "\n", + " # ===================== YOUR CODE HERE ======================\n", + " z=theta.dot(X.transpose())\n", + " h=sigmoid(z)\n", + " \n", + " for i in range(m):\n", + " J=J+((-1*(y[i]*math.log(h[i])+(1-y[i])*math.log(1-h[i])))/m)\n", + " \n", + " for i in range(1,theta.shape[0]):\n", + " J=J+(lambda_*theta[i]*theta[i])/(2*m)\n", + " \n", + " \n", + " for i in range(theta.shape[0]):\n", + " grad[i]=(((h-y).dot(X[:,i]))/m) \n", + " \n", + " for i in range(1,theta.shape[0]):\n", + " grad[i]=grad[i]+(lambda_*theta[i])/m\n", + " \n", + " # =============================================================\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at initial theta (zeros): 0.693\n", + "Expected cost (approx) : 0.693\n", + "\n", + "Gradient at initial theta (zeros) - first five values only:\n", + "\t[0.0085, 0.0188, 0.0001, 0.0503, 0.0115]\n", + "Expected gradients (approx) - first five values only:\n", + "\t[0.0085, 0.0188, 0.0001, 0.0503, 0.0115]\n", + "\n", + "------------------------------\n", + "\n", + "Cost at test theta : 3.16\n", + "Expected cost (approx): 3.16\n", + "\n", + "Gradient at initial theta (zeros) - first five values only:\n", + "\t[0.3460, 0.1614, 0.1948, 0.2269, 0.0922]\n", + "Expected gradients (approx) - first five values only:\n", + "\t[0.3460, 0.1614, 0.1948, 0.2269, 0.0922]\n" + ] + } + ], + "source": [ + "# Initialize fitting parameters\n", + "initial_theta = np.zeros(X.shape[1])\n", + "\n", + "# Set regularization parameter lambda to 1\n", + "# DO NOT use `lambda` as a variable name in python\n", + "# because it is a python keyword\n", + "lambda_ = 1\n", + "\n", + "# Compute and display initial cost and gradient for regularized logistic\n", + "# regression\n", + "cost, grad = costFunctionReg(initial_theta, X, y, lambda_)\n", + "\n", + "print('Cost at initial theta (zeros): {:.3f}'.format(cost))\n", + "print('Expected cost (approx) : 0.693\\n')\n", + "\n", + "print('Gradient at initial theta (zeros) - first five values only:')\n", + "print('\\t[{:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}]'.format(*grad[:5]))\n", + "print('Expected gradients (approx) - first five values only:')\n", + "print('\\t[0.0085, 0.0188, 0.0001, 0.0503, 0.0115]\\n')\n", + "\n", + "\n", + "# Compute and display cost and gradient\n", + "# with all-ones theta and lambda = 10\n", + "test_theta = np.ones(X.shape[1])\n", + "cost, grad = costFunctionReg(test_theta, X, y, 10)\n", + "\n", + "print('------------------------------\\n')\n", + "print('Cost at test theta : {:.2f}'.format(cost))\n", + "print('Expected cost (approx): 3.16\\n')\n", + "\n", + "print('Gradient at initial theta (zeros) - first five values only:')\n", + "print('\\t[{:.4f}, {:.4f}, {:.4f}, {:.4f}, {:.4f}]'.format(*grad[:5]))\n", + "print('Expected gradients (approx) - first five values only:')\n", + "print('\\t[0.3460, 0.1614, 0.1948, 0.2269, 0.0922]')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(theta, X):\n", + " \"\"\"\n", + " Predict whether the label is 0 or 1 using learned logistic regression.\n", + " Computes the predictions for X using a threshold at 0.5 \n", + " (i.e., if sigmoid(theta.T*x) >= 0.5, predict 1)\n", + " \n", + " Parameters\n", + " ----------\n", + " theta : array_like\n", + " Parameters for logistic regression. A vector of shape (n+1, ).\n", + " \n", + " X : array_like\n", + " The data to use for computing predictions. The rows is the number \n", + " of points to compute predictions, and columns is the number of\n", + " features.\n", + "\n", + " Returns\n", + " -------\n", + " p : array_like\n", + " Predictions and 0 or 1 for each row in X. \n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned \n", + " logistic regression parameters.You should set p to a vector of 0's and 1's \n", + " \"\"\"\n", + " m = X.shape[0] # Number of training examples\n", + "\n", + " # You need to return the following variables correctly\n", + " p = np.zeros(m)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " for i in range(m):\n", + " if sigmoid(theta.dot(X.transpose()))[i]>=0.5 :\n", + " p[i]=1\n", + " else :\n", + " p[i]=0\n", + "\n", + " \n", + " # ============================================================\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train Accuracy: 83.1 %\n", + "Expected accuracy (with lambda = 1): 83.1 % (approx)\n", + "\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Initialize fitting parameters\n", + "initial_theta = np.zeros(X.shape[1])\n", + "\n", + "# Set regularization parameter lambda to 1 (you should vary this)\n", + "lambda_ = 1\n", + "\n", + "# set options for optimize.minimize\n", + "options= {'maxiter': 100}\n", + "\n", + "res = optimize.minimize(costFunctionReg,\n", + " initial_theta,\n", + " (X, y, lambda_),\n", + " jac=True,\n", + " method='TNC',\n", + " options=options)\n", + "\n", + "# the fun property of OptimizeResult object returns\n", + "# the value of costFunction at optimized theta\n", + "cost = res.fun\n", + "\n", + "# the optimized theta is in the x property of the result\n", + "theta = res.x\n", + "\n", + "utils.plotDecisionBoundary(plotData, theta, X, y)\n", + "pyplot.xlabel('Microchip Test 1')\n", + "pyplot.ylabel('Microchip Test 2')\n", + "pyplot.legend(['y = 1', 'y = 0'])\n", + "pyplot.grid(False)\n", + "pyplot.title('lambda = %0.2f' % lambda_)\n", + "\n", + "# Compute accuracy on our training set\n", + "p = predict(theta, X)\n", + "\n", + "print('Train Accuracy: %.1f %%' % (np.mean(p == y) * 100))\n", + "print('Expected accuracy (with lambda = 1): 83.1 % (approx)\\n')" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 6b14d88a2050aa313524176b45209fd86e18f108 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 22 Apr 2020 10:57:41 +0530 Subject: [PATCH 4/9] Week 4 Assignment --- IntroToNeuralNetworks.ipynb | 666 ++++++++++++++++++++++++++++++++++++ 1 file changed, 666 insertions(+) create mode 100644 IntroToNeuralNetworks.ipynb diff --git a/IntroToNeuralNetworks.ipynb b/IntroToNeuralNetworks.ipynb new file mode 100644 index 000000000..7b861aa55 --- /dev/null +++ b/IntroToNeuralNetworks.ipynb @@ -0,0 +1,666 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 132, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# will be used to load MATLAB mat datafile format\n", + "from scipy.io import loadmat\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils\n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 133, + "metadata": {}, + "outputs": [], + "source": [ + "# 20x20 Input Images of Digits\n", + "input_layer_size = 400\n", + "\n", + "# 10 labels, from 1 to 10 (note that we have mapped \"0\" to label 10)\n", + "num_labels = 10\n", + "\n", + "# training data stored in arrays X, y\n", + "data = loadmat('ex3data1.mat')\n", + "X, y = data['X'], data['y'].ravel()\n", + "\n", + "# set the zero digit to 0, rather than its mapped 10 in this dataset\n", + "# This is an artifact due to the fact that this dataset was used in \n", + "# MATLAB where there is no index 0\n", + "y[y == 10] = 0\n", + "\n", + "m = y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 134, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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++4LmX2X1l133dDpXlVL16JaSLvXNEzgzDPPDPmhhx4CAOywww6hU9cVA5erfZ6yEnSuueYaAMAll1wSuptvvjnkDz/8EACw/vrrh26uueYKuSnjtkXHGGOMMTWLH3SMMcYYU7NUzHWVZga//fbbQ6cR5nSjfPrpp6FT02rHjh0BJLMG1I2lJvs8zXt67M8++yzkWWaZpc7f1dx/2223AUiO+cILLwy5f//+AJLXLI9xaO2GRx99NHFu037/3nvvHfKNN94IAOjUqVPoajHrSK/PV199FfK2224LANhxxx1Dd91111XuxFJIc1ece+65IW+yySYh0/Wr98l3330X8tdff11Ht9pqq4XMedc5L9qMrm4o7gvvv/9+6PRe++GHHwAAQ4YMCd3cc88dcjW65hoD5+Kuu+4K3Z577hlymzZtAACPPfZY6NZYY42Q87yXs9yleq/x/2TNQ311yngvZLle08bX1CrDDSXNjfP888+HjnsqAKywwgoAgJNPPjl0/M0DSms973NuLuouHjt2bMgM7ejVq1fohg8fHvJ5550HALj66qtDt+uuu4bclJAJW3SMMcYYU7PkatHRJ059CjvnnHMAJAPkevfuHfIee+wBIFm7Rd8uDznkEADAmDFjQtevX79ynXaD0bcEffr8/PPPASSDqTWY9frrrweQDPY9+OCDQ/79998BAHvttVd5T3ga9M2GtX203o9a3F544YWQGRh3ww03hI5WLKDlvxGTtP4zQKnmw0cffRS6n3/+OWQGzuV9HdLe6B544IGQL7roopCvvfbakNu1a1fn8xoYyZpVWrtqlVVWCfnyyy8HACyyyCKhq5RFJ+ucV1xxxZBpXaXlAgAWXHDBkGmdU4swx9RSUescrVeDBg0K3RxzzBEy1zLXQV6kWW/UMq/rS+vIsD6anrOO7++//waQ/E3Re+37778HkLRuqkVErXeVQtct94pTTz01dDq+E088EQCw8MILh0736mq35PD8OE8AcOCBB4b8yy+/AEhaVKdMmRLysGHDAAAffPBB6Jqb+GKLjjHGGGNqFj/oGGOMMaZmqZjr6r333guZLiu6cIBSozKgZPLMcn2tt956AIDlllsudBrMVkRgrH4/gz2XWGKJ0KlpdYMNNgAAHHPMMaG79957Q6ZJc6eddgqdmpnL5SbQ48w888wAgKOOOip0I0aMCJm1jYCSG0sDcNX1xnkrOkC1qaTVWVE3K+dCA5S1AR/nrZIuPJ7rZZddlvp3NSP/+eefALLvE65ldf28/PLLIZ9wwgkAkgGU6toroo7VFltsEfICCywAAFhppZVCt/TSS4fMYMhbb701dOpGYZ2Zal+/Wfvjk08+CSBZYl/3j0UXXRQA0LVr19DlsVb1/LjWXnzxxdDp/nLHHXeEPP/88wNI1vnROlV0+dMFoscHSq131B12yimnhKwuvXKT5e7W8+O+qaENW265Zcirr756nePW1zS66HCBtMQZ1ssBgNdffz1k7h9LLrlk6PT+Y5023XP07035LbRFxxhjjDE1ix90jDHGGFOzVMx19e6774b866+/AgDmnHPO1M+llajX+i4dOnQAUKo3AxRvuktrQZF1TswA0dom6rqim0HrLNBdB+TjmuMx1d2mrkWtY8D5Gzx4cOhobgZKdWaqqc5KU9Bzfuutt0JO6xo8++yzp36u0mimoroz1Nw7zzzzAEjWsdB7kVkhTzzxROg0w4mm5SKyP/TaagZPWgaLupNVZoagZnq0xPWp61DdICNHjgSQzOTR+T///PMBlNzVQD77p54faxpp7SnWMwKS9w/X2pVXXhm6tJo4enxmqgKluV5++eVDp/tnnvXJsu4JtnUASvWtdP3qXqqdvInef3RJ6ud1LnWtVwr9ToY2qLtwm222CfmII46o8xm9bhyXZiqr651ZeYBdV8YYY4wxftAxxhhjTO2Sq+tKzUqdO3cOmWY4LcuuJcpZyEuLn6np74ILLgCQNMe2pBYEPNcssxv/rkXo8obnouZgZocBwIABA0Km6VWvP8t267HYpR1oWd2RaUbVIpXjx48PmabzffbZJ3R5uxbrg2ZgZhQBwOjRo0NeaKGFQu7WrRuApLtR55Ld2bVFgLo2eKwiMq2yUDM4z1XPSd1ULCjI7COglGk17eeqEV53dWdod2tmA84000yhY5FVoNRiIG/UHcHimnptNdNo5513DpmhCVnuNO4luj7PPvvsOt+rLRRWXXXVkNNc6uVyw+o98fHHH4c8cODAkJktpt3JmSkIlNayfl6zYR988EEAyft3v/32C1mL89HNk8ea1rF++eWXIe+7776J7waAww47LOS0rEbNqqJrji52AJhtttlCdvdyY4wxxhihYhYdfaJmHv1ZZ50VOn3KZulufSPV+iB80ivaipNV24ByVlM5PgmnBbUCpSfhlVdeOXSVesvU79Fg1qOPPjpktjjQFgOvvfZayGxd0aNHj9D95z//CbnoeasPztubb74ZOrb10L9vvPHGodOaM5UaX1qJfa0tpXKa9UU/r4F/bBfx22+/hU6DHVknKu+ms40h7ft1zGqd476iVsii63DVh15rWrw1WFfrlJCePXuGfOihh4bMseadwKHXkfeKtg1ZfPHFQ9YWMmno+Pn2r7XZtJ0H9x+tw5M1p+UOqNc1p3Vg2JYCKCV86JyodY776lVXXRW6b7/9NmSOT+ecbZWAZOAvr3e57lICaVAAACAASURBVM+s2k1sW6HnqnV0tEUL50KD5dV7wXtVa+vp/23KurVFxxhjjDE1ix90jDHGGFOzVMx1paZh1lkZPnx46DRYi8FoWhZcg7Wa28m0Oeg4NMBRg6lYZ0b/Pu+884bMYCyt/ZBWH6RTp06pf68U+p3a8Xf//fcHAIwbNy50N998c8iseaAtLm666aaQq7FFhJqc2SJBA+DV9E3Tqc550WOp7/vT7hkNENd2Fgx21L9r92dNLGjo9xeBmtk//PDDkNlOYP311w9d0XW46kPnYsyYMQCS7gLdl1inS90Z+vkiXKv8fg2E1r/XFyCs42N9sUcffTR03bt3D5mBuxoMq+s/j/pP3D++/vrr0LELN5B0zbE+2TLLLBO6K664IuTTTz8dALDbbruFjrVngJKbbrPNNgudXlfdq/OsE6QtVHSsDHPo27dv6NLuL9Wl1dlT12tz58wWHWOMMcbULH7QMcYYY0zNUrEWECozg0UzWdR0SdObdjct2rTM81d3zSWXXBKydsp95513ACSzVrQjLd1YGjWvplm6RN54443QaQaNRqBXymWgpl+2GTjttNNCp25Iuuw0a05rIm266aYAqqsOi8K1ppkAOn7OX1qp9qJpzHXU/6tjpV4zWdQ0PsccczT6u4pA52zo0KEh0/WWlfVYLeieqW7wp59+GkB2HRK2a9EMpyL2z6Z22U7LWn322WdDPu644wAk99c11lgjZK5P/U3Ju10JM4XpdgJK9aiAUqYUUGpN8dJLL4VOP8fxMUQASNacY1aW/haxthmQrDlTLjclf59YgwpItl3R/eGggw4CkLy/dN55LA3d0JpHzErj78S0n28K1X2nG2OMMcY0g4pZdLQpIisnagPJI488MmQ2nVOLidZxqRR6/qxzoBUqH3nkkZDVyqIy0cBWkvVGyWCsY489NnS33357yNoArwj4lqCVK4cMGRIy53LChAmh0/NnxeWmNGfLC51rNiDUOh06V6ussgqAZFBu0effGDhWbZSnNTv4xqVjYoIAUAosrdYxc3w//vhj6EaNGhUyrY9aDbnIBIcsdM29+uqrId9www0AkvuMBhuvttpqdf6uFqFqRNcSx60WRU1mGDt2LABgnXXWCd3uu++eeqw80T3jk08+AZBMoNFq5FpFnckOtNwAyTpVnCsNRr7vvvtCpnVfv0sb9JbLipNWu4ldCYBkbSo9l7Q6d7qWaX2k5QdIJgvQU6C/c7boGGOMMcZk4AcdY4wxxtQsZXddqYmKLgAgmVPP/HgtYa5m5McffxxAMre+6GA61hnRAFttmpcW7KYmVG0RoCZZklZfQgPs0poWZn1vpdDxadlxXiN17Wk59GeeeQZAsoVC0eh1/OKLLwAkG3kyABso1ezQNduSoEtD65Coa5XXQmvnaDAlP190gkAWvFe0RYnWLOnTpw+A6mz1kMWFF14YMl1yumb1/uNekrbPVCs6Fs4LXXQAcPfdd4fcu3dvAMlronXK6Ias5N7I3yy6pYDknq6Bt2eeeSaAZDiHMnjwYABJ1+MBBxwQ8qBBgwCUWvEASddrWmuYpqC/5TxXdXHrOTHAGijtC/qbpdflpJNOApB0d2nNNbr5yumCtEXHGGOMMTWLH3SMMcYYU7OUzXVFM5d2YdUS5Go6pklZ65CoGZxdbVkvAkiaYekGqmTWB6Pi1YXx008/1TknoGRGVHOiujnYAoP1LoBkJ1+a/PS79PjV4jLQ89AWHTRpau0LdQOxPoSaLrWEe6VcCmkdkQHglVdeAZA03er63XrrrQFUf8drRcdCN6x2F1Y4Fs0qm3/++UOuxmwrHR/dBOqOUzdpu3btAFRnppWuyeeeey5kdf3SpaH/d4899giZe0217BMNQe+lDz74AEDS9ajzu8suuwBIrs9K1cxJyw4DSu403ed1/nT9MatKM+WUnXbaCUAyK6lLly4hc/6z1m9zxp/mQgSAG2+8EUD6Pg+U7img9AygmVSaVf3kk08CKM3jtH/ndSnn+rVFxxhjjDE1S9ksOnwSfPvtt0PH5oBAMoiJTfX0iU2tI6y+qMG4+qRcqTeVtDoiW265Zei0kZnW7OBTr1ppzjjjjJC7du0KINnoLe0tWcdZ7W9n+vS/9tprA0hWtn7xxRdDZn0dWk4AoEePHnmfYh307YWVTYHSG4f+XRussnJ3tQd76vnr2+fIkSMBAI899ljo1HrI+1OrCesbWzWuRR3fm2++CaAUVA4ABx98cMjVaH2jRUMrrGtlXN1fOK9aObZbt24hV6PFLQ1dn2lVcrUOF2urAcCAAQMAFDNOPWe9D1ZeeWUAwNlnnx06tcLpmuNc65xpMO+KK64IIFlbJ63pabmCjhW9j7799tuQuSdq0Ltad7TmGBs8X3zxxaHT/YP14bSRd977iy06xhhjjKlZ/KBjjDHGmJqlbK4rmptGjBgROrYyAJKBSWzmqeau448/vs4x1VxZBGmBZyeccELo+vfvH7I2O2NrCzXtsdGcHqsagyGbSpoZde+99w6duobYzLTIGkDTosHedC0yaBdItitpKa4BRd1svP+yajsx8FGbQrYk2AxX6wDR3Vjt6D2hAbrq2qH7/Lzzzgud1lypRtdiGjrWH374IWQmoahrX5sa83NF1xPTfYBzpXseWx1loeevx6Je78m08eU95jQXr9be0v1Ra6ZxLNtvv33oNHCZ+0tWbbg8sEXHGGOMMTWLH3SMMcYYU7OUzXVFc5VmN+y5554hq5mN0eTsAg0A999/f8jMANGo82oxx84222whr7rqqiFr1hDPNStrqiW6PhoDx6qmy8033zxkds3OyiqoFDon2s6DWR1qTt9qq61SP1fN6D2nbtKPP/4YQNKdqCy99NIAknU+WtKapUlcuytPnDgxZHUjVwtcU9ol/vTTTw9Z2x2wvoqOo6W7wXV9cS9YaqmlQqcZrLxWRbu+075f97Hm7mlFjE/PWV2/o0aNApCsN6b7oGZo0o2qv5WaNc3vqOQ+aouOMcYYY2oWP+gYY4wxpmYpe/dydQFkFcSjPOOMM4ZOzXT8ezW6CFpSEb+i0TnVtUDXZFqmQVGoyXajjTYCkCzb3hLnXa+vmo6PPvpoAMlMMnUjsihYJbMimoueX9++fQEk51QLklUjnCu9ZzbccMOQuSb1/7Z0d1UWHN96660XOl2/pjJo8cA555yz0Z/X/afotWqLjjHGGGNqlrJbdNKCyhryf03tkWbFawlUu/WioWRdfzYoXWGFFVL/zrevlnQd0hrMalNEfaOs5rXYUu+Z5qLzt9BCCwFIJgCodaElrctaoaVfc1t0jDHGGFOz+EHHGGOMMTVLq3+TedQYY4wx/y6mG6MzefLkmnwKatu2bSug9sf3zz//1OT4ZphhhlYAMGXKlJocX5s2bf4V67PWxzd16tSaHF/r1q3/Ffefx9cy4fgUu66MMcYYU7OUPevKpKP1MdJKe7ekbAuef1aJ8pYeoV8faeOv9TG3JOrr9Ey5muo4NQaet2Yipf29GtFza+qeWHTrB9M8OH+6fvO+F23RMcYYY0zNYotOjrC5GQBMmjQp5F9//RVA8ik2raJ0Nb2Z6VjYDPK3334LnVaeZcVrrazb0tG3j2+++QZAqcIwAJxyyikhL7LIIgCq10rAsWTND9ed1sGqprWYRpp1YOrUqaHTsbCprN5zWnm3WueNcHy6p0yZMiVk7h9FWz7S1ozuI3rOnBOgtJfonOj9x3m1laflkGb9/uWXX0KX9vtRzj3HFh1jjDHG1Cx+0DHGGGNMzVI1ris1bdFMmRVsR7IaLRZhZk8zzb333nuhGzp0aMg33XQTgKTrYKmllgr5jDPOAACsv/76oSvadfDSSy+FfP755wMAhg8fHjptEHnxxRcDANZaa63QFX3+TUHX35dffhnyHnvsASBpem/Tpk3lTqwJ6FjoOv3oo49C9+OPP4a8+OKLAwA6d+6c+vlqmcusYNZ33nkHAHDVVVeFTs3kI0eOBFBq/gkA55xzTsjt27cHUL0uLO4bl1xySejuvffekB9++GEAwBxzzBG6IsaSNj8//PBD6PSajx49OuSePXsCAFZaaaXQ0R2ser3ndHxFurHSfsemlUlWAC711XKfNZWs+/Ppp58GAPTr1y906vofOHAggOT+2lxs0THGGGNMzeIHHWOMMcbULIW4rtLMeL///nvIL7/8MoCkOVaj8mkGU9eOymqyra+DernQ73n88ccBAIccckjounXrFjJN58yOAICzzz47ZLpGXn311dB16NAh5EqZNG+44YaQjzzyyJB5/eniAIAvvvgiZLoMevToETqNqq92kyzHp+6cfffdN2S68XR+FlxwwZArtebqQ12jb7zxRshcl19//XXounTpEjKzebbddtvQ7b333rmdZ1NRc7juHzvvvDMA4JNPPgndcsstF/J+++1X51h//vlnyHRdVRN6z3D/VNfjTz/9FDLnT+df12QRrh26Zk4//fTQXXPNNSFrhtW7774LALjiiitCN9tss4U8YMAAAMCpp54aOt1f+F15jzPNTTV58uTQaejCQw89FDKzVldYYYXQ9enTJ+S55567zvGr1Y06PfT89brccsstAJJZg8y0ygtbdIwxxhhTs1TMopMWDDlixIjQXXjhhSG/9dZbAJJWnDnnnDNkPr2rxWeNNdYI+fLLLw+ZlpA8rAj//PNPyLTCAKWn92uvvTZ0m266acgMotOaEgcccEDIjzzyCADg9ddfD93GG28cch4WAz5965wcc8wxIWtNkosuuggAsMoqq4ROA4/59F7tlpsseC1GjRoVOpUZWK4B2NVixdG3qD/++CPk3XbbLeTll18eAHD77beHTt+ouRZPOumk0G2wwQYhMzC06DHrWPXtkJacbbbZJnS6J7Ru3RpA9vqsxrdnHSuDNH/++efQLbPMMiHTkvPBBx+EbtFFFw2Z466kxePTTz8FANx5552h0zpGc801V8gLLLAAgJLlA0iO5cYbbwQAdOrUKXQHHnhg6vdWClrUDjrooNA9+uijIev4uP6uvvrq0KnFaq+99gKQHNOss84actH3XUPReRg/fnzIY8aMAVCaZwBYc801Q85jfLboGGOMMaZm8YOOMcYYY2qWXF1XabUtAOCoo44CkHQHqBmrf//+AIBll102dL179w6ZrQd23HHH0DHAF0i6XK688koASTdRc9AxqetKg4XvvvtuAMDaa6+degya5vRYGoxFN0I56wjUB83199xzT+jUND548OCQt99+ewDAbbfdFrqJEyeGzDoXLSkAWV2r3333HQDgvPPOC13Hjh1DXnfddet8plrcHXpOGmw888wzh8zAdx2TBvPy/2bVqUpralr0/KYFhqq7Rl1zpOjaW41BA4vff/99AMk99frrrw/5qaeeApCsI8QEiWmPlSc6J9wfNClDww222GKLkOnmUdfVySefHPJdd90FoLTPAsBOO+0U8uyzzw4gnznVa6f3F929zz33XOi0RYy6UflbxFYyQDLxg2PVYHrWLgNKbqxq2XOmhfOu56cuS9Yk0zpJmsyRx7zZomOMMcaYmsUPOsYYY4ypWcruulIXkZb1VtMizZhbbrll6I4//viQF1tsMQDJEt+fffZZyMy2UnO7ur40A6q+DIvGosdRczjbNgCla9CY70zrFD3PPPOkfm+eaA0irZ2iNYFosmX21bSfo0k6q45HNaJmdpr5Wc8JALbeeuuQudaqcUy6TjSr5fvvvw/5tddeA5DM5NPaMazp8corr4RO1zpde6x3AgDrrLNOyEVfF84lszuBZAsPZhAuvPDCoatGN2QWrFmldZ7mnXfekJnhpK4VdS3TNZT3nqLXkXWM1IWhWYFvv/12yAw3UHfWQgstFDLPmyEMQDLrLk90T9M6WpwT3TN0faWFTmhbi5VXXjlkhmyo60v/zjpQ1eQ6Vnhe6np87LHHQuY13GWXXUKXd1aZLTrGGGOMqVn8oGOMMcaYmqVsrqs0c5Vm5ahp8dxzzwWQzJrSDB2aWdnldNpj0bWwww47hG7PPfcMWUtr54maDtU02VAzopp2tTs4s620IF2lTJPMiAOSmWA6Pyzd/uabb4bu0EMPDbl79+4Aqt8FoOi5qkuAaIl2FveqZFZcQ9Fx/Oc//wlZO3UfdthhAJKm9aWXXjrkzTffHACw6qqrhk4zJO+77z4AwBFHHFGmsy4vdFdrJsull14aMrMlNZPw4IMPDrlaslp0f9F9lS5jbduhGXR0o2hWaNFj4ZyoC3HQoEEh615PdM/Xa8GQhqzu2HmibhXuc0DpntB7Sq+5zkUaGqax++67A0gWnB03blydcyiyS/u0pLWrYHYcAIwdOzZkhmSouztvbNExxhhjTM1SNosOg/kmTJgQOrYyAIANN9ww5F133RVAeolwoPTGok3d9EmZ9U369esXOn0iTgvszZvGfA/HrVauhx9+OGS+XWuAaN7j4DllNTTUt5O0OhzatC2tqV41BculoePj27Na6bQ1BuvodO7cOXRFB+Cmodf8hBNOCJkBk9ttt13o2GgPKLVb0bYszzzzTMgsXd+zZ8/Q1ffGWgSrrbZayNrOgvOqSQvaFFgtWZVG50zvM7bFAYDnn38eAHDzzTeHTi2un3/+eZ3P69+5V2dZefJsl3PssceGTu8pDUZlsLRaVtPOVe/PtEbROo4s6w//T0PHrPe5WtF4zMbsA3rOOldMHNBGs7169QqZv3XVZFFOa7A7bNiw0On+MHDgQADZ1q88sEXHGGOMMTWLH3SMMcYYU7OUzXVF09N8880XuvXWWy9kDUKje0vbNhx33HEh0/yn5nbWDgBK7hU1NxbhOlBznZoe08yoaaa5F198MWQN9kxrW1G0C07HxGBVdmkHkoFzLL2v3XeLGEtj0PHRjK46ltUHgE022QRAsjaEBv4WHfhJ9DzojgJKJmV1/W622WYh8/7SOk7aYoBd64t21+n4ZplllpDpMteO3toCg/PKel1AKUECKLnm1J2S95zyntA1p3XCGEAOlO6/jTbaKPVYaXWCdH/icfU+1PszrV1GU9DvHD58OIDkPqffqa5F1s+54447QnfKKaeEzPPWFh/a/TutO7vOn7p8ONamBPbWtybS2pKorHWA2P0cAIYMGQIg+Vuqc51naECWiy9trFnXjIHlWmdI3dxsIaTXJO+9xBYdY4wxxtQsftAxxhhjTM1SNtcVTWca3b/pppuGrHUqaDJ/7733QqclrmmmVHNXfWa0vKGZTU2EWmJeu9ayJo6a5pZccsmQ6dLTjrQskQ6UTNPVlLWk15wmce2OvPPOO4fMrDhtQbDbbruFXO62HE1Fr6+as7ku9fw1A4nj1rYl1113Xchprstqgm4czbDTTtj8u7qrtAQ/XSNFo+tHaz6xvolmeug506WirnXtjv3LL78ASF6fvPccrkU9Z11z2lpg/vnnr/N31s4BgGeffbbO8fX+5HVTd57Wz1KXX3PuUb0PnnjiCQBJd43WUdOaaDyvDTbYIHTaYodzyewyAPj7779D5n2rc3b//feH/MADD4RMl5m6npuDjlmzatk2BQA+/PBDAMmsJJ3f8ePHAwDWWmut0Gknc7rptOO3ugl13A2dv7T1py060rJxdf/UsTIbUN1Ruv7oRq+k67u6d2RjjDHGmGZQ9qaeij6969Mh35j1iZRWAABYccUVASSf+IoO8GRNh7POOit0fEsBkm//fGL96KOPQqdPv6eddhqAZKNSDfxkxVB9i6lkTZ364FxoMODpp58ecv/+/QEk3xK1JgQbhFZTZU9dXwzW1GBJWtmA0rxqU1O1iKSt3yLQt0u9/9isVedEGwgyGF5rYmnT3GpBx6fJDpwLbVqqc5EWDKqfp0VHmy7mDe8FtSzyzR4AFl988ZDZrJMV4oFkAPG3334LADjggANCxwB6oGSRVYtOHvtLWrCzWgzY/BdIegK++uorAKV1CCSvC+eP45z2/7JZpNbhGTp0aMhqPVl++eUBNL/KNy0q+p3aCHnMmDEhc3/RYHOdPzb1VFgtGSh5EnT/Peigg0JWS1iaJ6KhpNVLy0LvJTZoVSsrExiKwhYdY4wxxtQsftAxxhhjTM1S9hYQasJX076amRlMpU3ROnXqFDLNzEW4aNSdomZWNq18/fXXQ6futt69e4dMk7AGQLKOBFAyrWoA3k477RRyhw4dACRrgxTtrlJ4jdTdo+Nns0R1h+i1Yk2Irl27hq5oN49+P10DigbO03Wl60PN0NXiktPzUNM9z//BBx8M3dxzzx0ya508+eSToevWrVtu59lUdHya7MD9RZsGqmuZLiFtMaOuubQ6XXnD71JzvwYba7Atg/nV3aHtdugm2X///UOnNYPSwgCyAljLtZbTklV0T2SALlCqw/Lxxx+HTn8/eE7adkbrILH+jjZC1cQRddnpHtsceE46Dq0DpC2KiDafVjcjk3X0Wn3zzTchswXIJZdcEjpt56JBznS517e/cn7UXaV1pNLuBV0bGgDPwGttSq2hGUX8ltmiY4wxxpiaxQ86xhhjjKlZyua6omlMzcGMvgaSpjW6bDQr57bbbgt53333LddpNRo1q6m5lPo111wzdH379g1ZTYOUtdz54YcfHjLNiRdffHHoZp999jqfLzrTTNFroWZUQncbUCrhftNNN4WOtYWAZLnzakFNtqwZox2jBwwYEDJdW9r9WrMKinbDpaGdrpkVp5k86mZlTSt1x1U7Wofr0ksvBQDcfvvtqX9niX1dx+ecc07IdKNX0zyq6417kbpOH3300ZB79OgBINlCQMdSn+sgD9crz1/vM81EGj16dJ3PaNajuqboZqWLHAA+/fTTkLWmUNqx9F7mHq7Xkq7BxsBrqpl62267bcjqhqKbX38/1LUz7TGBZGgHv0PX9FZbbRWy1vTSbNHG0hgXk/7WcS9hiAaQbEFj15UxxhhjTBlplkUnrTKiNqpcaaWVQtanb75Jah0PrcPCispajbWItyt9C9h1110BJOsZDBw4MGQNrOabpNa52GeffULmtdC3tGqpNqvo/GpNIAZ+amC2PrHzumkdkHnnnTdktV4VSVZlXVY81sqrulZZ0VUb0eobWzVZ4ohe87FjxwLItqwx8Fors1YjOn8ajHznnXcCSDbC1HuNtU5o2QKSiQFpwfZFU99bsAbm0uJRdIVu3bNZG0wtT7o/6F7DKvFaB0ktFrzXdM+95ZZbQmaQvVqZtbaMHovWm+bONcfasWPH0KlFW6FVK6vaf9pcp9WU02BfbTqsa6FSa1gtdWmB9UVji44xxhhjahY/6BhjjDGmZilbMDJrFowbNy5022+/fcgaTMUS6/fdd1/otES9BoYViZoL+/TpAyBZalwDGLUmBIPE7rrrrtCpG4BmvmoyjaehplU1Of/www8AkoFu7777bsh0jajrkaZrAOjSpQuA6gr21LmgSVjN4erGZJCnBi1W41yqCVwbkNKNqkH/Otd0PzNot1rR8WnNj1tvvRVAcs1pfRO2cVE3tLq2qnEu60Nd32xQqeuziABQ/U4G29KtCCRr/+iez3nRFkH6d+4brJcEJGsG8XdHa+RoHZvGBGY3hyzXIb+zqeuMn9dxaB0spVJrWQOvb7jhBgDAyJEjQ8fQD6BxrSXKhS06xhhjjKlZ/KBjjDHGmJql1fRMd5MnT56uXU/N3SxRrrnzr776asjrrbdeyKxz8MYbb4TumGOOCZmdWPMqpd+2bdtWQP3jU9LOhZlmQNJ0zNLsWZk4eZuROb5//vmnbF+k3YM5VjUH6/i5FrREvUbgN9d0OcMMM7T6/+eU64XMOk/OZV7z2KZNm0avzzSysjro2tF6G5qVxXL0ae5WoPnjbsr9Vx86VsraNkEzUThW/Uw53agc39SpU3NdnzoPmhVIN6vuP+WkdevWDbr/0lpJqAs4K9OUay1rTnisrFYVaX9vTFsL3n957y9FUa7xZd0/EydOBJB03bGtSiXg+BRbdIwxxhhTs/hBxxhjjDE1S7NcVwrNVF999VXoNGslreDRuuuuGzotoU/TZV6ugXKZztPMpUDpvIvqOJ6H66o+03DW/yXljP6vlOuqKMrlulJ0ThpaSC4vd2seriuFY81yUeR9f1bKdaXUd8+VMwygoa6rNBriQuL/ySt0oT7sumo8afuLznUlMxntujLGGGPMv4qyWXSIvi1q4FkaaY0wK0Heb5RFk4dFp5qwRadl82+5/ypp0akkzbHotARs0WnZ2KJjjDHGmH8VftAxxhhjTM0yXdeVMcYYY0xLxhYdY4wxxtQs040WdjBdy4TBWJ6/fEgrf1DO9Ml/S7DgpEmTanJ87dq1+1fMn8fXMvm33H+KLTrGGGOMqVmmn/9tjAGQtN689NJLAIBOnTqFbt555039v6bypBUMrGTBsnJRX0G9WkdLlWT1rTLFkVUwt6FU8p60RccYY4wxNYstOgXAN5W0thEq+82lWHR+HnjggZD32WcfAMD1118fuo033jhkz1vl0bf/jz76CABwxRVXhO7YY48Nea655gJQ/fOU1cKhvhYsLR2O+9dffw1dmzZtQp5pppkqfk7/drjmfv7559Bdd911If/xxx91PqNFgP/zn/+EvOaaawIAFl544dC1a9cu9XPlwhYdY4wxxtQsftAxxhhjTM1i11WOqLlZ+379/fffAIDx48eHrn379iHPNttsdT5fi2bqrI7aRXW9nRY9v1deeSXkFVZYAQCw9tprh67o+al1d0YaumYmTpwY8v777w8AWGCBBUKnro9q5oUXXgj58ccfD7l169Yhb7755gBK6xDIr9N8pWDJBgB48cUXAQCbbbZZ6DbddNOQ6ZLUOW1JY+a9qus3bf9TF061jG/GGWcMecEFFwz5rrvuCpluKL3/XnvttZAvuOACAEDPnj1Dp67lRRddFEB5935bdIwxxhhTs/hBxxhjePFTjQAAIABJREFUjDE1SyGuqzTTnTJ16lQASXOd/t+m5OznTZobZvLkyaG75pprQh4xYgQA4M033wzd3HPPHfLNN98MAOjcuXPo8ohEbwxp42uquTzt+rz88sshL7LIIiHT/FlJ0y3N6F999VXobrrpppAvv/xyAEkzbhEutrRMHHUBZNWRoVwt5vDGoGOiCxgABg4cGPI333wDALjxxhtDN/vss4f8zz//NPq78r5WvCd47gBw5plnpp4LMwCPOeaY0PXr16/O/22J8wuU1qeuZXXz8/ehbdu2oav2sepYmE126623hm7kyJEhr7zyygBK2Z0AMMccc4RcxF7D66vZUdttt13Iffv2DZljzcqk+vjjjwEAO+ywQ+jobgaA2267DUByzM2dX1t0jDHGGFOzVMyio8G4fJPXp/Rnn302ZD7R/fLLL6GjFQSonsDCrGDaL774AgBw5JFHhu6hhx4KeYsttgAAnHXWWaG79tprQ2ZgFi07QPKNoFJvLzq+CRMmhMw6Jd27dw9dfYGBadaFRx55JHRDhgwJea211gr5oosuyjxmOdHzmzJlCgDg5JNPDt1WW20V8oYbbljn8zo/eVpM9Hu+/fbbkBm4ykA+oFQvJkvWe7IlVg6+8847Q9Z75eyzzwaQDJasz4qj1zXtM1nB8uVmo402CnnAgAEh61j5RrzXXnuFTq0bDNwt2grcVOaZZx4AwKyzzhq6LEtlNaPnzN8EANh6660B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/vrQqRvpr7/+Cnm33XYDAGy22Wb1nldD0HN7/vnnQ37jjTdCXmSRRQAAgwYNCt1MM80UctEm8eZy5513AgB22WWX0Gn3ZJqRq8mNkuZuGzJkSMhjx44NeZ111gEALLTQQqFr06ZNyPfeey8A4PXXXw/d6aefHnIRY03LxFTTf9HXP290rJzj4447LnRPPvlkyH/++ScAYN555w0d5xwo7Rm9evUKXaXcsLq/6J6oY/nqq68AALPMMkvo9PyY7XnGGWeETt08/Fy1rgnO5bhx40K37777hszQjTPPPDN0rVu3DjmP/dUWHWOMMcbULLladPSNUIPJGPj54Ycfhk6tHwzi1WDed999N+Srr74aADDzzDOHLu+nW/blGD16dOh23HHHkKdMmRIyA8d69OgRurfffjvkYcOGAQAeeeSR0LG2AADcfPPNAIDVV189dHnUidD5oXVG3yL0yTrNoqXX4scffwyZbzX6eZ1Lvl2rjgF4ANCtW7eQO3fuDKD588vzV8vRbbfdlvp/Wd+hQ4cOoavGwNz60LdLtZjuuuuuAJIWnZdeeinkgw8+GAAwdOjQ0KlFslJvkmnnv/3224euf//+IZ9//vkhzz777HU+r311evfuDaC0jwDFvB3r+fHt98QTTwzdrbfeGnJaskJj0Ps37f4sAj2nN998M2RaF9XKQyskACy66KIAgPvuuy90KnNd33///aHr2rVryHneyzqn+vtGKyJQWot333136JjAAgBHHXUUgOSe+vHHH4e80korAaiuPUnnir8leq+q9f/BBx8EACy44IKh09+CPLBFxxhjjDE1ix90jDHGGFOzVMx1ddppp4X82muvAUgGCKrpmGYwDVB6+umnQ2Z9jMUWWyx0eZhh1dzNwMXBgwen/v2kk04KmcFwGlT722+/hUyX26RJk0KndRZ4rdS0vsACC4RcLpOlmhvpLtMA4awAMX6/jj+tQaYGW6+xxhohL7HEEgCSwYJaAl3dWFwX+v1Z9YumB89P19FDDz0Uspq26RJRM3S1Bv41FG2gd+SRRwJI3pOsHQSUAv+19sXaa68dchGuK7oh1LW68cYbp36O61PXpN5/55xzDoBkAHbRgddc0+rOPuyww0I+5phjQp577rkB1H+eev0YwAuU3CBMetDvzxs9J60jM2DAgJAZRH7JJZeEjnsGUBr3IYccEjo2ggRK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+eWXGFPpY6+99gIA9O/fP8Y0g6Be3Hw6f5XZeHzfffddjH3yySdh03W+wAILxFgR0o66G7/66quwTzjhBADAc889F2O6ljPPPDOAksQFAAsvvHDYTz75JIDyrum8yXINp2V7qOufdtFyaZprWPdJNV3n+llFyoxZ7vDff/897AMPPBAA8MQTT8TYZZddFna3bt0AADfeeGOM3XrrrWGfeeaZAIB//vknxuhuB5J7Oe28Vwudn0pvAwcOBFCS6IDk/uX+TJOrgFI21v/+978YO+qoo8LOU1LOuqfsuOOOYR988MEAgAEDBsSYHn/a78rNN98cdteuXQEAK620Uow1J4MrDR73W2+9FWOnn3562IsvvjiApHTVks8HgI8//hhAUtpZZ511wq5HmT8tE0rX6b777gub193nn38eY7qX+bu4xhprxNjdd98dNs81MP33OHt0jDHGGNOwVN2jk/UWqE90tF977bUYmzBhQth8+tY3C32ip8dHA5j0jU09IUV6CvQt4u233w77wQcfBAAMGTIkxn777bewt956awDAHXfcEWPqEcrziV7XT99i9Y3vqaeeAgAst9xyMbb//vuHveGGGwIABg8eHGPPPPNM2Pfeey8A4MQTT6zWYU83uiefffbZsNWj+OqrrwJIBmWut956YR966KEAgM6dO8cYvVh5o29+uv8ZYNupU6cYm2+++VI/I+0tSPcXa8689957MUYvIwDMMcccAIp/s9Sg4j59+oTN9Rs+fHiMqceAng4du/jii8Pmdfvnn3/GGL0MQNITtNBCCwHI51yox1cDX3l8q622WozpupeDf7/RRhvFmNYUynNd1cv05ptvhq3JKOq9T4P3KNYLAoAzzjgj7Pvvvz/x/1UTDQDXa7HSOkR6/fH4r7322hi7/PLLw952222b/H3R12LauVbv17HHHhv2vPPOCwBYZpllYuz5558Pe/311wdQUg6A0j0HaNlc7dExxhhjTMPiBx1jjDHGNCxVk67oulK3OF3IQFKmYJ48XVQAsO+++4a95pprAki6Ni+55JKw6ebT2hf6veqGZuBg3oGj6sZkrQUGDQLJwOmNN94YQFLuufTSS8OmJFF0ALJKFy+88ELYm2yyCYDkMbdv3z5syjiTJ0+OsTFjxoS96KKLAsgup54nI0aMCFvlDspRQEmm02D4gw46KGxKb7q/O3bs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vtbj/PT8//zzzwCAl156KcauuOKKsJ9++mkASTly2WWXDXvDDTcEABx00EExpvfXPNFzTwkVAK699tqw+Vumx6TSOJseK2eccUbY++67L4Dkb0ql16w9OsYYY4xpWPygY4wxxpiGJdfu5epOfv7558Omm0qlqw8++CBsZhvosWlU9lprrQUAOOmkk2Js9dVXD1uj1dPml0fl0rSsKnXXDRs2LOybb74ZQEnCm/o46XJWF59mvZRz401v5dK0qHh1Qb7wwgthT5gwIeyvvvoKQMkFCyTXul27dgCAQw45JMY0Q4RZBy11MedRGTlNZiyX1ZB1/JW6WSupjKzzmDhxYthDhw4N+7LLLgOQXFN1Ey+00EIAgO233z7GdC1XXnllAC2XU1ty/XFemon0ySefhH3PPfeEPX78eADA+uuvH2MbbLBB2JRUdX2rKWdV6/6StZa8v+lY7969m/y/N9xwQ4yptFXpXCupjJyVaaoZSGnSf9pa6V5I+9xK7y+VVkbWY3r//ffD7tWrF4BkuEKHDh3C3nzzzQEAc845Z4z9/vvvYT/44IOJ/wLAwgsvHHa5eVdSGVmzo/k7AACbbLJJ2N98802T41AZdeeddwaQPH4NjTjxxBMBAH369Imx5sjkroxsjDHGmBmKXD06+vT39ddfh7300ksDyK7HwSBjPTYNzOUbiwbzrrTSSmE//vjjYfOpWN9i8njj0s9/4oknAAADBgyIMWrSQ+4AACAASURBVH37/O9//wsAOOKII2Lsl19+CZtPvFtttVWMDR48OOxygb0t8ejwjWqnnXaKMQalAqU1A4A999wTANC1a9cY41M8UPIY6FvIAw88EDaD7FpaJ6haHh09jxpYR0/bTz/9lPp3c801V5O/1zdSvr20tI5JJR4d1tgAgIcffjhsBvgBwL///gsA6Ny5c+q/b7vttgBKnjkg/Y26pW/M03v96f78888/AQD7779/jI0ZMybsSZMmhc37jnox9F509NFHA0h6Gdu2bRt2pcGseXiM07yLOif17jBYnEHLAHDyySc3+ftK1685Hh2upa4T9yEAzDfffE2OT+ek1yLv70OGDImxQYMGhc1g3UrvLy3x6KTtWQDo1q1b2PSE6D19yy23DJvrqmuudXZ69OgBAOjfv3+MrbjiimGX89hV4tHRY9I14W8aUEpy4DoAQL9+/cJebbXV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O12zstZZZx0AyUwzzXoZPnw4AODII4+MsYUXXjjsal2Lun6UObKuvzRpQP8+TaZ68cUXw1599dWrcMSVo8esLQQuu+yysLl+2tbhtNNOC/u+++4DkJT2tOYT17cIaVz37GqrrRb2tddeGzb3ov67ynTMsNPfDM3gLSIrl9+ZVUcuTabXPau/hbzXqPRY7+hcGB6g0jfDHQBgq622ApDManX3cmOMMcaYFuIHHWOMMcY0LBWlHaS5m9RdpyXYjznmmGn+vZaLpszx7rvvxpi68ShpLbrooi057OlGXbt03WtH7ptuuilszeChZDfXXHOlfhazXVT6y8P1XynqjlSZp0+fPgCAQw89NMZU+uDxM1MGADbbbLOwKdNdccUVMcZMJiC9RUal0GX+6KOPpv77brvtFjYlKy1oNmzYsLC5bpSwgJIcC5QkubylAZVjKL2wfcXUx6TSTFrWm0oDO+64I4DkNXnKKaeETfmollkts88+O4DkMavre4455gibWUVahE73b9rf17tcrDCz55prrokxylVASRJXOTatHUERbRN0/eacc86we/To0eT/1d8SXT/Kz8xuBZIZvEW2g5iee3fauqr0T+mK2Y3T+7lFor8VzID84osvYkyvNYY21LKFhz06xhhjjGlYqlZIIu2JszlPaRpYzMBJDYZkbQig9CadRwl3fUvWOg8s4c23xan/nbUPgNKTarn5a50gfeOul/o5uqZaU4Zv19r2Qd++GEQ5YMCAGNO3E5ZG1xL9Ws5fPV3VepPhWuia6VqnNRDU79a15PpqgPJzzz0X9pprrgkgPRi6muhn0qOmnhl63oCkx4PBqNpiRYN8Oa4e1WeffTZs1uHRN/I80HO+1157AUi2Sll55ZXD3meffcLm270eP9siAKUWF88880yMac0hzqvIoFYgWYdKW+gwCFePX2vKzD333ACSbU00cL7oBpikXB2ttBYnQOleoo1m693jkYZeq+rR4X01qw5ZvZDVooT3Ct1zG220UdjaAJk4GNkYY4wxpoX4QccYY4wxDUvd1EBX1xXddBrMpDVX6BLLw92lbl3tPsuaFOy8CpSXPhR187GmgAaz5lFHpiWoBPXCCy+Erd2tr7/+egDAEkssEWMqfZx11llNPkuDgC+66CIAJQkMSEqXebjWKTdpALtKT2yhAJT2l3bf1dYmaXUwNNiuVuie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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Randomly select 100 data points to display\n", + "rand_indices = np.random.choice(m, 100, replace=False)\n", + "sel = X[rand_indices, :]\n", + "\n", + "utils.displayData(sel)" + ] + }, + { + "cell_type": "code", + "execution_count": 135, + "metadata": {}, + "outputs": [], + "source": [ + "# test values for the parameters theta\n", + "theta_t = np.array([-2, -1, 1, 2], dtype=float)\n", + "\n", + "# test values for the inputs\n", + "X_t = np.concatenate([np.ones((5, 1)), np.arange(1, 16).reshape(5, 3, order='F')/10.0], axis=1)\n", + "\n", + "# test values for the labels\n", + "y_t = np.array([1, 0, 1, 0, 1])\n", + "\n", + "# test value for the regularization parameter\n", + "lambda_t = 3" + ] + }, + { + "cell_type": "code", + "execution_count": 136, + "metadata": {}, + "outputs": [], + "source": [ + "def lrCostFunction(theta, X, y, lambda_):\n", + " \"\"\"\n", + " Computes the cost of using theta as the parameter for regularized\n", + " logistic regression and the gradient of the cost w.r.t. to the parameters.\n", + " \n", + " Parameters\n", + " ----------\n", + " theta : array_like\n", + " Logistic regression parameters. A vector with shape (n, ). n is \n", + " the number of features including any intercept. \n", + " \n", + " X : array_like\n", + " The data set with shape (m x n). m is the number of examples, and\n", + " n is the number of features (including intercept).\n", + " \n", + " y : array_like\n", + " The data labels. A vector with shape (m, ).\n", + " \n", + " lambda_ : float\n", + " The regularization parameter. \n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed value for the regularized cost function. \n", + " \n", + " grad : array_like\n", + " A vector of shape (n, ) which is the gradient of the cost\n", + " function with respect to theta, at the current values of theta.\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost of a particular choice of theta. You should set J to the cost.\n", + " Compute the partial derivatives and set grad to the partial\n", + " derivatives of the cost w.r.t. each parameter in theta\n", + " \n", + " Hint 1\n", + " ------\n", + " The computation of the cost function and gradients can be efficiently\n", + " vectorized. For example, consider the computation\n", + " \n", + " sigmoid(X * theta)\n", + " \n", + " Each row of the resulting matrix will contain the value of the prediction\n", + " for that example. You can make use of this to vectorize the cost function\n", + " and gradient computations. \n", + " \n", + " Hint 2\n", + " ------\n", + " When computing the gradient of the regularized cost function, there are\n", + " many possible vectorized solutions, but one solution looks like:\n", + " \n", + " grad = (unregularized gradient for logistic regression)\n", + " temp = theta \n", + " temp[0] = 0 # because we don't add anything for j = 0\n", + " grad = grad + YOUR_CODE_HERE (using the temp variable)\n", + " \n", + " Hint 3\n", + " ------\n", + " We have provided the implementatation of the sigmoid function within \n", + " the file `utils.py`. At the start of the notebook, we imported this file\n", + " as a module. Thus to access the sigmoid function within that file, you can\n", + " do the following: `utils.sigmoid(z)`.\n", + " \n", + " \"\"\"\n", + " #Initialize some useful values\n", + " m = y.size\n", + " \n", + " # convert labels to ints if their type is bool\n", + " if y.dtype == bool:\n", + " y = y.astype(int)\n", + " \n", + " # You need to return the following variables correctly\n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + " \n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " z = np.array(theta.dot(X.transpose())) \n", + " H = np.array(utils.sigmoid(z))\n", + " \n", + " J += ((-1 / m) * ((np.log(H)).dot(y.transpose()) + (np.log(1 - H)).dot((1 - y).transpose())))\n", + " J += (lambda_ / (2 * m)) * (theta[1:]).dot(theta[1:].transpose())\n", + " \n", + " grad = (1 / m) * (H - y).dot(X) \n", + " grad[1:] += ((lambda_ / m) * theta[1:])\n", + " \n", + " # =============================================================\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 137, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost : 2.534819\n", + "Expected cost: 2.534819\n", + "-----------------------\n", + "Gradients:\n", + " [0.146561, -0.548558, 0.724722, 1.398003]\n", + "Expected gradients:\n", + " [0.146561, -0.548558, 0.724722, 1.398003]\n" + ] + } + ], + "source": [ + "J, grad = lrCostFunction(theta_t, X_t, y_t, lambda_t)\n", + "\n", + "print('Cost : {:.6f}'.format(J))\n", + "print('Expected cost: 2.534819')\n", + "print('-----------------------')\n", + "print('Gradients:')\n", + "print(' [{:.6f}, {:.6f}, {:.6f}, {:.6f}]'.format(*grad))\n", + "print('Expected gradients:')\n", + "print(' [0.146561, -0.548558, 0.724722, 1.398003]');" + ] + }, + { + "cell_type": "code", + "execution_count": 138, + "metadata": {}, + "outputs": [], + "source": [ + "def oneVsAll(X, y, num_labels, lambda_):\n", + " \"\"\"\n", + " Trains num_labels logistic regression classifiers and returns\n", + " each of these classifiers in a matrix all_theta, where the i-th\n", + " row of all_theta corresponds to the classifier for label i.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The input dataset of shape (m x n). m is the number of \n", + " data points, and n is the number of features. Note that we \n", + " do not assume that the intercept term (or bias) is in X, however\n", + " we provide the code below to add the bias term to X. \n", + " \n", + " y : array_like\n", + " The data labels. A vector of shape (m, ).\n", + " \n", + " num_labels : int\n", + " Number of possible labels.\n", + " \n", + " lambda_ : float\n", + " The logistic regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " all_theta : array_like\n", + " The trained parameters for logistic regression for each class.\n", + " This is a matrix of shape (K x n+1) where K is number of classes\n", + " (ie. `numlabels`) and n is number of features without the bias.\n", + " \n", + " Instructions\n", + " ------------\n", + " You should complete the following code to train `num_labels`\n", + " logistic regression classifiers with regularization parameter `lambda_`. \n", + " \n", + " Hint\n", + " ----\n", + " You can use y == c to obtain a vector of 1's and 0's that tell you\n", + " whether the ground truth is true/false for this class.\n", + " \n", + " Note\n", + " ----\n", + " For this assignment, we recommend using `scipy.optimize.minimize(method='CG')`\n", + " to optimize the cost function. It is okay to use a for-loop \n", + " (`for c in range(num_labels):`) to loop over the different classes.\n", + " \n", + " Example Code\n", + " ------------\n", + " \n", + " # Set Initial theta\n", + " initial_theta = np.zeros(n + 1)\n", + " \n", + " # Set options for minimize\n", + " options = {'maxiter': 50}\n", + " \n", + " # Run minimize to obtain the optimal theta. This function will \n", + " # return a class object where theta is in `res.x` and cost in `res.fun`\n", + " res = optimize.minimize(lrCostFunction, \n", + " initial_theta, \n", + " (X, (y == c), lambda_), \n", + " jac=True, \n", + " method='TNC',\n", + " options=options) \n", + " \"\"\"\n", + " # Some useful variables\n", + " m, n = X.shape\n", + " \n", + " # You need to return the following variables correctly \n", + " all_theta = np.zeros((num_labels, n + 1))\n", + "\n", + " # Add ones to the X data matrix\n", + " X = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " for i in range(num_labels):\n", + " initial_theta = np.zeros(n + 1)\n", + " options = {'maxiter': 50}\n", + " res = optimize.minimize(lrCostFunction, \n", + " initial_theta, \n", + " (X, (y == i), lambda_), \n", + " jac=True, \n", + " method='TNC',\n", + " options=options) \n", + " all_theta[i,:] = res.x\n", + "\n", + " # ============================================================\n", + " return all_theta" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "metadata": {}, + "outputs": [], + "source": [ + "lambda_ = 0.1\n", + "all_theta = oneVsAll(X, y, num_labels, lambda_)" + ] + }, + { + "cell_type": "code", + "execution_count": 140, + "metadata": {}, + "outputs": [], + "source": [ + "def predictOneVsAll(all_theta, X):\n", + " \"\"\"\n", + " Return a vector of predictions for each example in the matrix X. \n", + " Note that X contains the examples in rows. all_theta is a matrix where\n", + " the i-th row is a trained logistic regression theta vector for the \n", + " i-th class. You should set p to a vector of values from 0..K-1 \n", + " (e.g., p = [0, 2, 0, 1] predicts classes 0, 2, 0, 1 for 4 examples) .\n", + " \n", + " Parameters\n", + " ----------\n", + " all_theta : array_like\n", + " The trained parameters for logistic regression for each class.\n", + " This is a matrix of shape (K x n+1) where K is number of classes\n", + " and n is number of features without the bias.\n", + " \n", + " X : array_like\n", + " Data points to predict their labels. This is a matrix of shape \n", + " (m x n) where m is number of data points to predict, and n is number \n", + " of features without the bias term. Note we add the bias term for X in \n", + " this function. \n", + " \n", + " Returns\n", + " -------\n", + " p : array_like\n", + " The predictions for each data point in X. This is a vector of shape (m, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned logistic\n", + " regression parameters (one-vs-all). You should set p to a vector of predictions\n", + " (from 0 to num_labels-1).\n", + " \n", + " Hint\n", + " ----\n", + " This code can be done all vectorized using the numpy argmax function.\n", + " In particular, the argmax function returns the index of the max element,\n", + " for more information see '?np.argmax' or search online. If your examples\n", + " are in rows, then, you can use np.argmax(A, axis=1) to obtain the index \n", + " of the max for each row.\n", + " \"\"\"\n", + " m = X.shape[0];\n", + " num_labels = all_theta.shape[0]\n", + "\n", + " # You need to return the following variables correctly \n", + " p = np.zeros(m)\n", + "\n", + " # Add ones to the X data matrix\n", + " X = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " for i in range(m):\n", + " p[i] = np.argmax(all_theta.dot(X.transpose())[:, i])\n", + "\n", + " # ============================================================\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 141, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training Set Accuracy: 95.20%\n" + ] + } + ], + "source": [ + "pred = predictOneVsAll(all_theta, X)\n", + "print('Training Set Accuracy: {:.2f}%'.format(np.mean(pred == y) * 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 142, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rVolvsspPHp+eV9ftWqV6XT/5P7D5smr/70iVJ6dzHEcx3Ecp5z4g47jOI7jOJklNa4rNS2+9dZbAICTTz7ZdF27djX5pptuAhBsapcm1wFdH2p6DnMDRJX4TrppZhga2BfW2kLHUlnMwDomPdfLly8HkDOBA7lGdQDQqlUrALnmdEDQzBr2nWmC41Z3VcuWLU0eNWoUAOCAAw4wXVrmVOdMXVPff/+9ybNnzwYQbIrYoEEDk6tWrQogOgA7LfOmx/TII4+Y/NJLLwEAJkyYYLrdd9/d5CwG2+q8L1y4EEDwnDz00EMm//DDDwBy1zEA7LnnnianZS1HERZEHXb/SPs88zoDcnMCAO3btweQa1UCBMd30kknAQAGDRpkunybmrpFx3Ecx3GczOIPOo7jOI7jZJZEXVdqovvnn39Mvu+++wAAs2bNMp2awdJiWlbU9LZ48WIAwJtvvmm6J554wmSa0ffYYw/TtW7d2uSGDRuW+M4kxqy//+uvv5rMbAbNiqO5EQia0Uka50yPaerUqSYPHToUAPDZZ5+Z7ueffza5SZMmAIJzdvjhh5t88MEHAwiaW9NoZlYX5JIlS0weMGAAAGC33XYzHTMhgGTmknuFzolm1bzxxhsmc66aNWtmum222cZkurT23Xdf06nrLsk6NHrNLViwwOSBAwea/J///AdAzoUKRFdJrszoudDr76qrrgIAPP7446H/t3HjxgCAm2++2XTt2rUzmZlWQPHmWI8vzDWlx8H502ty8uTJJjdq1AhA8PpMU505rsW3337bdGFzoZly77zzjslPP/00AOC0004zXdRYy4pbdBzHcRzHySypsehoMNmTTz4JANh7771Nd+WVV5pM605anlwB4IsvvjC5Z8+eAID33nvPdPrG+PHHHwMI1nPQN+aHH34YAHDggQearlhj1TcPDVZVi81RRx0FANhhhx1Md+utt5p8xRVXAAi+cSZdk4VrTWs3DBs2LFSmRU7nhFYcAPj3338BAK+++qrpXnnlFZMZRH/dddeZLt9gumJC62oaLQNaT6ZevXoma7ICz6++Eat1ePTo0QCAu+++23Q613379gUAnHrqqaaLqrJbKMK+n/sgAMyZM8fkgw46CEDQyp32ANvywHOxYsUK011++eUm87zontqlSxeTzz77bADA5ptvbjq95oq1rqMspkxy+Pvvv003Y8YMkx988EEAuX0GAH766SeTW7RoAQAYMmSI6XbeeefQ301ir2EyEes5AcGxvPzyywCC5+TYY481md4DXf+0YlYUt+g4juM4jpNZ/EHHcRzHcZzMkojriqbJ33//3XRjxowxmW4OrVOywQYbmJykST3KtaOmVbqmbrjhBtOdcsopJT6n5srbbrvNZAZW7r///qaLqvkSJzonGgzWvXt3AECNGjVMp6b/W265BUDQtXD99debzGDApF04WttBA+MYDE4XBhB00/G4P/roI9P169fPZAbT161b13TXXHONyWrGTQtq7ub8brjhhqZLeq7omlETtgbz6/Gzfoqa+0eOHGnyL7/8AgD4448/TMdGmQAwYsQIAMAJJ5xgumrVquV1/KXB61uTMjTAer311jOZrlGt3aRrit9VmrstTQGsCvdYBqUCwAsvvGBy586dAeSSBoCga5lrJYnrTNehri+9P7AOkt4/tCZcWJ2nsDAJddeq610TI7gG4pjfqMD5888/H0AwgWWzzTYzmceyyy67mE5DI5gM8cknn5hOa+7ofaWsLlu36DiO4ziOk1n8QcdxHMdxnMySqOtKXQdfffWVyTSJpbF2jprrNPdf5UsuuQQA0KNHD9OpaZKmN80K+PLLL02mab2YcFzqwmH0PADceOONJnNe1DSspmNmuIwfP9507LgM5DKQijmnNP3qmtOsKXXD0TXA7DIg3HWx/fbbm6zZQBdffDGAYM0XzSBJS+sSdZOwdgwA7LPPPgCCaz3pDCzuGWH1RgBg4sSJJl977bUAgnWeNMNl6623BgCceOKJptN2F6yzo/tPsdAx6TFvscUWJjObUf9vWJ2WZcuWmU7nmi4vrSeThGtc0WuC1426ezSMgS4rziMQzKZMAh6/ukA16+jdd981eauttgIQnD9d1xyLzp/C/6t/Z6YZENyLmY1VqDnVdaLnvH///ibTZawupgsuuMBkbcdC6tevbzLX8syZM02ndZQ22mgjk9115TiO4zjOWo8/6DiO4ziOk1kSLRiokeRh8llnnVX0YyoNNd2p6VBNgzTNqbtD3TzM1qGLAwi6Th599FEAxS3rznFpkUM9JnVt0Fyo5nI1YzKbQE2USRTM07miG0OLNGpWhB4fzdA6prB2HDo/hx56qMksfvn666+bjpkWAHDIIYeU+K5iwrFoJouONaw7fRrRc6fr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tbZ06VLTzZ4922TV06U6Y8YM002aNMlk3ku4DoHg/jllyhQAuRAHoHzXXxyVkcuTocr/q667U0891eRPPvkEAPDFF1+YTtdHaSRdGZnj++2330x35JFHmkw39AsvvGC68ozPKyM7juM4jrNWEWswsj656tvx8OHDAQTfIrXmRZMmTQDk6kEAwJdffmkyn/432GCD0N9Kmnnz5gEANt10U9Pp2yefaPv27Wu6E044wWS+kSZdJyHqLeSRRx4BEAzAHTZsWOjniI7/xx9/BBC02Olca02FONG3PA12vPzyywHkgnYBYMsttzSZQXTffvut6V566SWT+aaqFp0kUIuF1plhkD97QgHBOjPt2rUDELTCfvfddyZfffXVAIDnnnvOdPr2rcHkxULHyutP15FaHCsLes1onaPLLrsMQLAatNbRYWBu0skaug/QYqtWKL1+dKx8o9c5bdasmck8F+uuu67pNFi3T58+AHL71OrfX6x7RVQvNq7LqOMIs+hwzwRy1suoysFpuhcSPSbOBa31QND6GMd9zy06juM4juNkFn/QcRzHcRwnsxTcR6BBQ59//rnJ119/vcnNmzcHANx2222mU9fFn3/+CQCoVq2a6aIagCVJlGny3XffBQAceOCBpgsrl6+1PzbffHOT02J61LnUOjI9evQAEAyADCs3r3O2YsUKk+k60WDCXXfd1WStiVHoc6HHpKZ/dd3QpdOtWzfTXXvttSZz/V555ZWmW7Jkicl//fVXAY+44ui503NKl6muX3UT8HNqTp4/f77JDILUOiVatj0J1wBrqwA517YGqKqbg8cXVXskLdefHt/EiRNLyFqHRGuqJN2OIwzudfvvv7/pWO8GCNZh2mGHHUp8XgPf1aVKzj//fJM//PBDAMHzUKz7R5iLHgAeeughkzlvpV0zuqdo4oqGbKSZ0lxrmoykyQKsU1bI2kDpe3pwHMdxHMcpEP6g4ziO4zhOZim460rNTWyFAACbbbaZybfeeiuAoLtKzYzLly8HEHQHpbHEtR4TjxnItTZgPZnV/y/HpbVjWNsDSNb0rC6277//3mS6q4CcG+Smm24ynboGwqLm1fTK+ibaVqB79+4mq8us0Jkjak6tVauWyVtvvbXJLD1+4403mk7rPDEbYs6cOaZTc3IaM3zCujvreQ7L8FFz8imnnGIy1zpLtQNBN0SxsgX1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9sNYacmCacniWdANW7QLNis0+vzzzwMoVREGgPnnnz/sWh+fxpI1Zr/99hsAYOzYsdH2008/hc3zstxyy+V9iBVD+1quOnZLq3u3hMZcU7x+mlK9XMOQJO+aQ2lon3755Zewr7rqqrBfeuklAMDLL78cbVOmTAl72WWXBQDsuuuu0bbvvvuGvfDCCwNI73NrYNq0aQBK5wEAVltttbDnmWceALW/DmVdc5yXadfc9HbFjqXi32iMMcYYUyP4QccYY4wxdcsMa10VpQxJl+OLL74YbT169Aj76quvBgDst99+0ab9KOfSy0MZWV1zv/76KwBgt912i7bRo0eHPd988wEA3nvvvWjr0KFD2C113eWhzKr9o8v7q6++irZXX301bI4bXbBA0o0+YMAAAEl3bFP6XCllZO3TN998E/bSSy8NADjnnHOi7ZhjjmnJTzWJPJRL01zHX3/9dbRp6OD1118HAHz22WfRNn78+LDPOussAMDAgQNTf6vc9ZeHMnJayEfDkR9++GHYDzzwAIDk/O3cuXPYu+++O4Dkrs7mzM+m9I/HzB1HAPDxxx+HrWvFDjvsAACYc845o03PeZrO2C233BI2dy317du3wWem/640mqOMzO/XENQJJ5wQ9pVXXhn2TjvtBADYdttto02vz4kTJwIA7rrrrmhbZJFFwub9oWPHjtHWlPFrrDKyXlNMU3jmmWeiTa+PcmHCtLVok002iTbt69prrw2g+bseK7W+ZKWL8Li++OKLaHviiSfC5rliCA4ADj/88LCXWWYZAM3XybMysjHGGGNmKmomGTlNU0HfqOedd96wN954YwDpXoZqosesv3/uuecCSHpxFlpoobD1raaW0WS+77//PuxTTz0VAPDggw9GmyaO83P6xK7JrCussAKAZLJvEehbgiYb77LLLgCSyeI777xz2EyGrHUdGb0+VJPk7rvvBgBceuml0ca3fKD0JrnSSitF20MPPRR29+7dAWTroFSLtARdoOSRuuSSS6Ltzz//DHvJJZcEAKy11loNPgMAjz32GADgxhtvjDZ6YYF8k0D1Oho8eHDY+kbM62rHHXdM/RzPi3q0tC9M1v3Xv/7V4DN5wbmonil6XgBgww03DHvIkCEAgAUWWCDadHz5Xd26dYs2euEAYNiwYYnvASrXP/0ePecXXnhh4tha8pv0hOs9Tz3+tZKE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o02L3urxf/nllwCS97e999477P/85z8A0u/5eWGPjjHGGGPqFj/oGGOMMaZuqXi2mlYsVYl/rV5Nlx6l2oFkklMtQne1uug08fPAAw8MmyUE1N09adKksK+//noASW2ctMTdvN3++psssaF6B5pYronTt99+O4BkYvY555wTNpPo1J1cK8nIWajrlOHJ2267Ldr0vBxwwAEAktV31bWcpxtW599rr70WNrVFBgwYEG0aWm1xMp+EEZj4qiEqdbPr7zZ2DtM1rr+TpUNVjrRkaXWTEw0zaHV3fl4TfKtFVkX23377LWymAWifNIzAqtlaYqc1wbmgCchaDmKTTTYBkExwLafTlXcaBMdNw1E9e/YMW0M+TNbX60RDyyNHjgQAnHjiidH2+++/h52mo5P3vYLfr+UXttpqq7D1/s01SkO/uhmC81Y3vuRdosQeHWOMMcbULX7QMcYYY0zdMsuM3ERTp05tsg9Jd3SoNoy65hjGUtebVv/mbp7VV1892rQiakvDIG3btp0FAKZNm9YiH5m6KVXzYumllwaQdPONHj06bIZGKrX7ZXratGkzy/99f6P7x3CLHpNWP1bXPneN6U4CnUcsHcHseiBdZ6e5zDrrrBUZv3KoTg3LcgClEhibbrpptOkOC+oPNXeecvymTJnSoH+6q0pLHHCHgx6nuvabE07T61OhG1r7rOVctNJ9WsisXbt2swDA33//Hf3jDk1W5gaSoVG6+Zvr4taxZGhHdaC0hAl3LY0aNSraVl555bDLjevss88+C9C89VP7p+FuvZYYulI9Hb1Wf/rpJwDJ0LruwKuV9VPRfjMkyyryAPDggw+GzZD/RhttFG16r6B+lKZRNGWu8PpLG7+sa6LcOdWx5Pqga2La/z366KOjTUso8V6o4fSmjCnHrynzM60EhPZJr3Nea48++mi06VzkPUbHtEePHmG3NPTP/in26BhjjDGmbqm4jo4+pXbq1CnsWlTJbQ76RM83PyBZ7PPdd98FAJx//vnRpto6bM87AaspMIFMk13pmQKSybYscKkJqJosSEVs6u0AycS1IpVLm4LOU3175JuWegTGjRsX9lprrVWFo0vOH46bqhI3d07xjUzHidpCQKnorhbtbU4yth4/E381AXPy5MlhH3LIIQCSekZZ109a4ikTPIHSZgD1sup1TeVk3SxQretT5xwVyAHg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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# training data stored in arrays X, y\n", + "data = loadmat('ex3data1.mat')\n", + "X, y = data['X'], data['y'].ravel()\n", + "\n", + "# set the zero digit to 0, rather than its mapped 10 in this dataset\n", + "# This is an artifact due to the fact that this dataset was used in \n", + "# MATLAB where there is no index 0\n", + "y[y == 10] = 0\n", + "\n", + "# get number of examples in dataset\n", + "m = y.size\n", + "\n", + "# randomly permute examples, to be used for visualizing one \n", + "# picture at a time\n", + "indices = np.random.permutation(m)\n", + "\n", + "# Randomly select 100 data points to display\n", + "rand_indices = np.random.choice(m, 100, replace=False)\n", + "sel = X[rand_indices, :]\n", + "\n", + "utils.displayData(sel)" + ] + }, + { + "cell_type": "code", + "execution_count": 143, + "metadata": {}, + "outputs": [], + "source": [ + "# Setup the parameters you will use for this exercise\n", + "input_layer_size = 400 # 20x20 Input Images of Digits\n", + "hidden_layer_size = 25 # 25 hidden units\n", + "num_labels = 10 # 10 labels, from 0 to 9\n", + "\n", + "# Load the .mat file, which returns a dictionary \n", + "weights = loadmat('ex3weights.mat')\n", + "\n", + "# get the model weights from the dictionary\n", + "# Theta1 has size 25 x 401\n", + "# Theta2 has size 10 x 26\n", + "Theta1, Theta2 = weights['Theta1'], weights['Theta2']\n", + "\n", + "# swap first and last columns of Theta2, due to legacy from MATLAB indexing, \n", + "# since the weight file ex3weights.mat was saved based on MATLAB indexing\n", + "Theta2 = np.roll(Theta2, 1, axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 144, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(Theta1, Theta2, X):\n", + " \"\"\"\n", + " Predict the label of an input given a trained neural network.\n", + " \n", + " Parameters\n", + " ----------\n", + " Theta1 : array_like\n", + " Weights for the first layer in the neural network.\n", + " It has shape (2nd hidden layer size x input size)\n", + " \n", + " Theta2: array_like\n", + " Weights for the second layer in the neural network. \n", + " It has shape (output layer size x 2nd hidden layer size)\n", + " \n", + " X : array_like\n", + " The image inputs having shape (number of examples x image dimensions).\n", + " \n", + " Return \n", + " ------\n", + " p : array_like\n", + " Predictions vector containing the predicted label for each example.\n", + " It has a length equal to the number of examples.\n", + " \n", + " Instructions\n", + " ------------\n", + " Complete the following code to make predictions using your learned neural\n", + " network. You should set p to a vector containing labels \n", + " between 0 to (num_labels-1).\n", + " \n", + " Hint\n", + " ----\n", + " This code can be done all vectorized using the numpy argmax function.\n", + " In particular, the argmax function returns the index of the max element,\n", + " for more information see '?np.argmax' or search online. If your examples\n", + " are in rows, then, you can use np.argmax(A, axis=1) to obtain the index\n", + " of the max for each row.\n", + " \n", + " Note\n", + " ----\n", + " Remember, we have supplied the `sigmoid` function in the `utils.py` file. \n", + " You can use this function by calling `utils.sigmoid(z)`, where you can \n", + " replace `z` by the required input variable to sigmoid.\n", + " \"\"\"\n", + " # Make sure the input has two dimensions\n", + " if X.ndim == 1:\n", + " X = X[None] # promote to 2-dimensions\n", + " \n", + " # useful variables\n", + " m = X.shape[0]\n", + " num_labels = Theta2.shape[0]\n", + "\n", + " # You need to return the following variables correctly \n", + " p = np.zeros(X.shape[0])\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " X = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + " \n", + " A2 = utils.sigmoid((Theta1.dot(X.transpose())).transpose())\n", + " A2 = np.concatenate([np.ones((A2.shape[0], 1)), A2], axis=1)\n", + " \n", + " H = utils.sigmoid(Theta2.dot(A2.transpose()))\n", + " \n", + " for i in range(m):\n", + " p[i] = np.argmax(H[:, i])\n", + " \n", + " # =============================================================\n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 145, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training Set Accuracy: 97.5%\n" + ] + } + ], + "source": [ + "pred = predict(Theta1, Theta2, X)\n", + "print('Training Set Accuracy: {:.1f}%'.format(np.mean(pred == y) * 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 160, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Neural Network Prediction: 8.0\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "if indices.size > 0:\n", + " i, indices = indices[0], indices[1:]\n", + " utils.displayData(X[i, :], figsize=(4, 4))\n", + " pred = predict(Theta1, Theta2, X[i, :])\n", + " print('Neural Network Prediction: {}'.format(*pred))\n", + "else:\n", + " print('No more images to display!')" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Submitting Solutions | Programming Exercise multi-class-classification-and-neural-networks\n", + "\n", + "Use token from last successful submission (rohitramesh4547@gmail.com)? (Y/n): Y\n", + " Part Name | Score | Feedback\n", + " --------- | ----- | --------\n", + " Regularized Logistic Regression | 30 / 30 | Nice work!\n", + " One-vs-All Classifier Training | 20 / 20 | Nice work!\n", + " One-vs-All Classifier Prediction | 20 / 20 | Nice work!\n", + " Neural Network Prediction Function | 30 / 30 | Nice work!\n", + " --------------------------------\n", + " | 100 / 100 | \n", + "\n" + ] + } + ], + "source": [ + "grader[1] = lrCostFunction\n", + "grader.grade()" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 303617c853230cee48a8293850a2238be3b69536 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 22 Apr 2020 19:32:14 +0530 Subject: [PATCH 5/9] Delete ex1data1.txt --- ex1data1.txt | 97 ---------------------------------------------------- 1 file changed, 97 deletions(-) delete mode 100644 ex1data1.txt diff --git a/ex1data1.txt b/ex1data1.txt deleted file mode 100644 index 0f88ccb61..000000000 --- a/ex1data1.txt +++ /dev/null @@ -1,97 +0,0 @@ -6.1101,17.592 -5.5277,9.1302 -8.5186,13.662 -7.0032,11.854 -5.8598,6.8233 -8.3829,11.886 -7.4764,4.3483 -8.5781,12 -6.4862,6.5987 -5.0546,3.8166 -5.7107,3.2522 -14.164,15.505 -5.734,3.1551 -8.4084,7.2258 -5.6407,0.71618 -5.3794,3.5129 -6.3654,5.3048 -5.1301,0.56077 -6.4296,3.6518 -7.0708,5.3893 -6.1891,3.1386 -20.27,21.767 -5.4901,4.263 -6.3261,5.1875 -5.5649,3.0825 -18.945,22.638 -12.828,13.501 -10.957,7.0467 -13.176,14.692 -22.203,24.147 -5.2524,-1.22 -6.5894,5.9966 -9.2482,12.134 -5.8918,1.8495 -8.2111,6.5426 -7.9334,4.5623 -8.0959,4.1164 -5.6063,3.3928 -12.836,10.117 -6.3534,5.4974 -5.4069,0.55657 -6.8825,3.9115 -11.708,5.3854 -5.7737,2.4406 -7.8247,6.7318 -7.0931,1.0463 -5.0702,5.1337 -5.8014,1.844 -11.7,8.0043 -5.5416,1.0179 -7.5402,6.7504 -5.3077,1.8396 -7.4239,4.2885 -7.6031,4.9981 -6.3328,1.4233 -6.3589,-1.4211 -6.2742,2.4756 -5.6397,4.6042 -9.3102,3.9624 -9.4536,5.4141 -8.8254,5.1694 -5.1793,-0.74279 -21.279,17.929 -14.908,12.054 -18.959,17.054 -7.2182,4.8852 -8.2951,5.7442 -10.236,7.7754 -5.4994,1.0173 -20.341,20.992 -10.136,6.6799 -7.3345,4.0259 -6.0062,1.2784 -7.2259,3.3411 -5.0269,-2.6807 -6.5479,0.29678 -7.5386,3.8845 -5.0365,5.7014 -10.274,6.7526 -5.1077,2.0576 -5.7292,0.47953 -5.1884,0.20421 -6.3557,0.67861 -9.7687,7.5435 -6.5159,5.3436 -8.5172,4.2415 -9.1802,6.7981 -6.002,0.92695 -5.5204,0.152 -5.0594,2.8214 -5.7077,1.8451 -7.6366,4.2959 -5.8707,7.2029 -5.3054,1.9869 -8.2934,0.14454 -13.394,9.0551 -5.4369,0.61705 From 2d86b49ae5b6a7cde56d4eade6f1f6351e34e1ab Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 22 Apr 2020 19:32:29 +0530 Subject: [PATCH 6/9] Delete ex1data2.txt --- ex1data2.txt | 47 ----------------------------------------------- 1 file changed, 47 deletions(-) delete mode 100644 ex1data2.txt diff --git a/ex1data2.txt b/ex1data2.txt deleted file mode 100644 index 79e9a807e..000000000 --- a/ex1data2.txt +++ /dev/null @@ -1,47 +0,0 @@ -2104,3,399900 -1600,3,329900 -2400,3,369000 -1416,2,232000 -3000,4,539900 -1985,4,299900 -1534,3,314900 -1427,3,198999 -1380,3,212000 -1494,3,242500 -1940,4,239999 -2000,3,347000 -1890,3,329999 -4478,5,699900 -1268,3,259900 -2300,4,449900 -1320,2,299900 -1236,3,199900 -2609,4,499998 -3031,4,599000 -1767,3,252900 -1888,2,255000 -1604,3,242900 -1962,4,259900 -3890,3,573900 -1100,3,249900 -1458,3,464500 -2526,3,469000 -2200,3,475000 -2637,3,299900 -1839,2,349900 -1000,1,169900 -2040,4,314900 -3137,3,579900 -1811,4,285900 -1437,3,249900 -1239,3,229900 -2132,4,345000 -4215,4,549000 -2162,4,287000 -1664,2,368500 -2238,3,329900 -2567,4,314000 -1200,3,299000 -852,2,179900 -1852,4,299900 -1203,3,239500 From 9aa9edc22cad1c7f31b2f3ef77a3d7d820292312 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 22 Apr 2020 19:32:46 +0530 Subject: [PATCH 7/9] Delete ex2data1.txt --- ex2data1.txt | 100 --------------------------------------------------- 1 file changed, 100 deletions(-) delete mode 100644 ex2data1.txt diff --git a/ex2data1.txt b/ex2data1.txt deleted file mode 100644 index 3a5f95245..000000000 --- a/ex2data1.txt +++ /dev/null @@ -1,100 +0,0 @@ -34.62365962451697,78.0246928153624,0 -30.28671076822607,43.89499752400101,0 -35.84740876993872,72.90219802708364,0 -60.18259938620976,86.30855209546826,1 -79.0327360507101,75.3443764369103,1 -45.08327747668339,56.3163717815305,0 -61.10666453684766,96.51142588489624,1 -75.02474556738889,46.55401354116538,1 -76.09878670226257,87.42056971926803,1 -84.43281996120035,43.53339331072109,1 -95.86155507093572,38.22527805795094,0 -75.01365838958247,30.60326323428011,0 -82.30705337399482,76.48196330235604,1 -69.36458875970939,97.71869196188608,1 -39.53833914367223,76.03681085115882,0 -53.9710521485623,89.20735013750205,1 -69.07014406283025,52.74046973016765,1 -67.94685547711617,46.67857410673128,0 -70.66150955499435,92.92713789364831,1 -76.97878372747498,47.57596364975532,1 -67.37202754570876,42.83843832029179,0 -89.67677575072079,65.79936592745237,1 -50.534788289883,48.85581152764205,0 -34.21206097786789,44.20952859866288,0 -77.9240914545704,68.9723599933059,1 -62.27101367004632,69.95445795447587,1 -80.1901807509566,44.82162893218353,1 -93.114388797442,38.80067033713209,0 -61.83020602312595,50.25610789244621,0 -38.78580379679423,64.99568095539578,0 -61.379289447425,72.80788731317097,1 -85.40451939411645,57.05198397627122,1 -52.10797973193984,63.12762376881715,0 -52.04540476831827,69.43286012045222,1 -40.23689373545111,71.16774802184875,0 -54.63510555424817,52.21388588061123,0 -33.91550010906887,98.86943574220611,0 -64.17698887494485,80.90806058670817,1 -74.78925295941542,41.57341522824434,0 -34.1836400264419,75.2377203360134,0 -83.90239366249155,56.30804621605327,1 -51.54772026906181,46.85629026349976,0 -94.44336776917852,65.56892160559052,1 -82.36875375713919,40.61825515970618,0 -51.04775177128865,45.82270145776001,0 -62.22267576120188,52.06099194836679,0 -77.19303492601364,70.45820000180959,1 -97.77159928000232,86.7278223300282,1 -62.07306379667647,96.76882412413983,1 -91.56497449807442,88.69629254546599,1 -79.94481794066932,74.16311935043758,1 -99.2725269292572,60.99903099844988,1 -90.54671411399852,43.39060180650027,1 -34.52451385320009,60.39634245837173,0 -50.2864961189907,49.80453881323059,0 -49.58667721632031,59.80895099453265,0 -97.64563396007767,68.86157272420604,1 -32.57720016809309,95.59854761387875,0 -74.24869136721598,69.82457122657193,1 -71.79646205863379,78.45356224515052,1 -75.3956114656803,85.75993667331619,1 -35.28611281526193,47.02051394723416,0 -56.25381749711624,39.26147251058019,0 -30.05882244669796,49.59297386723685,0 -44.66826172480893,66.45008614558913,0 -66.56089447242954,41.09209807936973,0 -40.45755098375164,97.53518548909936,1 -49.07256321908844,51.88321182073966,0 -80.27957401466998,92.11606081344084,1 -66.74671856944039,60.99139402740988,1 -32.72283304060323,43.30717306430063,0 -64.0393204150601,78.03168802018232,1 -72.34649422579923,96.22759296761404,1 -60.45788573918959,73.09499809758037,1 -58.84095621726802,75.85844831279042,1 -99.82785779692128,72.36925193383885,1 -47.26426910848174,88.47586499559782,1 -50.45815980285988,75.80985952982456,1 -60.45555629271532,42.50840943572217,0 -82.22666157785568,42.71987853716458,0 -88.9138964166533,69.80378889835472,1 -94.83450672430196,45.69430680250754,1 -67.31925746917527,66.58935317747915,1 -57.23870631569862,59.51428198012956,1 -80.36675600171273,90.96014789746954,1 -68.46852178591112,85.59430710452014,1 -42.0754545384731,78.84478600148043,0 -75.47770200533905,90.42453899753964,1 -78.63542434898018,96.64742716885644,1 -52.34800398794107,60.76950525602592,0 -94.09433112516793,77.15910509073893,1 -90.44855097096364,87.50879176484702,1 -55.48216114069585,35.57070347228866,0 -74.49269241843041,84.84513684930135,1 -89.84580670720979,45.35828361091658,1 -83.48916274498238,48.38028579728175,1 -42.2617008099817,87.10385094025457,1 -99.31500880510394,68.77540947206617,1 -55.34001756003703,64.9319380069486,1 -74.77589300092767,89.52981289513276,1 From eefdb5b492293425327204109c740b38f5c36288 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Wed, 22 Apr 2020 19:32:58 +0530 Subject: [PATCH 8/9] Delete ex2data2.txt --- ex2data2.txt | 118 --------------------------------------------------- 1 file changed, 118 deletions(-) delete mode 100644 ex2data2.txt diff --git a/ex2data2.txt b/ex2data2.txt deleted file mode 100644 index a88899234..000000000 --- a/ex2data2.txt +++ /dev/null @@ -1,118 +0,0 @@ -0.051267,0.69956,1 --0.092742,0.68494,1 --0.21371,0.69225,1 --0.375,0.50219,1 --0.51325,0.46564,1 --0.52477,0.2098,1 --0.39804,0.034357,1 --0.30588,-0.19225,1 -0.016705,-0.40424,1 -0.13191,-0.51389,1 -0.38537,-0.56506,1 -0.52938,-0.5212,1 -0.63882,-0.24342,1 -0.73675,-0.18494,1 -0.54666,0.48757,1 -0.322,0.5826,1 -0.16647,0.53874,1 --0.046659,0.81652,1 --0.17339,0.69956,1 --0.47869,0.63377,1 --0.60541,0.59722,1 --0.62846,0.33406,1 --0.59389,0.005117,1 --0.42108,-0.27266,1 --0.11578,-0.39693,1 -0.20104,-0.60161,1 -0.46601,-0.53582,1 -0.67339,-0.53582,1 --0.13882,0.54605,1 --0.29435,0.77997,1 --0.26555,0.96272,1 --0.16187,0.8019,1 --0.17339,0.64839,1 --0.28283,0.47295,1 --0.36348,0.31213,1 --0.30012,0.027047,1 --0.23675,-0.21418,1 --0.06394,-0.18494,1 -0.062788,-0.16301,1 -0.22984,-0.41155,1 -0.2932,-0.2288,1 -0.48329,-0.18494,1 -0.64459,-0.14108,1 -0.46025,0.012427,1 -0.6273,0.15863,1 -0.57546,0.26827,1 -0.72523,0.44371,1 -0.22408,0.52412,1 -0.44297,0.67032,1 -0.322,0.69225,1 -0.13767,0.57529,1 --0.0063364,0.39985,1 --0.092742,0.55336,1 --0.20795,0.35599,1 --0.20795,0.17325,1 --0.43836,0.21711,1 --0.21947,-0.016813,1 --0.13882,-0.27266,1 -0.18376,0.93348,0 -0.22408,0.77997,0 -0.29896,0.61915,0 -0.50634,0.75804,0 -0.61578,0.7288,0 -0.60426,0.59722,0 -0.76555,0.50219,0 -0.92684,0.3633,0 -0.82316,0.27558,0 -0.96141,0.085526,0 -0.93836,0.012427,0 -0.86348,-0.082602,0 -0.89804,-0.20687,0 -0.85196,-0.36769,0 -0.82892,-0.5212,0 -0.79435,-0.55775,0 -0.59274,-0.7405,0 -0.51786,-0.5943,0 -0.46601,-0.41886,0 -0.35081,-0.57968,0 -0.28744,-0.76974,0 -0.085829,-0.75512,0 -0.14919,-0.57968,0 --0.13306,-0.4481,0 --0.40956,-0.41155,0 --0.39228,-0.25804,0 --0.74366,-0.25804,0 --0.69758,0.041667,0 --0.75518,0.2902,0 --0.69758,0.68494,0 --0.4038,0.70687,0 --0.38076,0.91886,0 --0.50749,0.90424,0 --0.54781,0.70687,0 -0.10311,0.77997,0 -0.057028,0.91886,0 --0.10426,0.99196,0 --0.081221,1.1089,0 -0.28744,1.087,0 -0.39689,0.82383,0 -0.63882,0.88962,0 -0.82316,0.66301,0 -0.67339,0.64108,0 -1.0709,0.10015,0 --0.046659,-0.57968,0 --0.23675,-0.63816,0 --0.15035,-0.36769,0 --0.49021,-0.3019,0 --0.46717,-0.13377,0 --0.28859,-0.060673,0 --0.61118,-0.067982,0 --0.66302,-0.21418,0 --0.59965,-0.41886,0 --0.72638,-0.082602,0 --0.83007,0.31213,0 --0.72062,0.53874,0 --0.59389,0.49488,0 --0.48445,0.99927,0 --0.0063364,0.99927,0 -0.63265,-0.030612,0 From e7517a7d1925bc480866c7acb8aae622ecf49238 Mon Sep 17 00:00:00 2001 From: rohitr45 <62831615+rohitr45@users.noreply.github.com> Date: Sun, 3 May 2020 15:05:14 +0530 Subject: [PATCH 9/9] Add files via upload --- BiasVariance.ipynb | 686 ++++++++++++++++++++++++++++++ NeuralNetworkImplementation.ipynb | 686 ++++++++++++++++++++++++++++++ 2 files changed, 1372 insertions(+) create mode 100644 BiasVariance.ipynb create mode 100644 NeuralNetworkImplementation.ipynb diff --git a/BiasVariance.ipynb b/BiasVariance.ipynb new file mode 100644 index 000000000..1416fc29e --- /dev/null +++ b/BiasVariance.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 91, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# will be used to load MATLAB mat datafile format\n", + "from scipy.io import loadmat\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils\n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 92, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Load from ex5data1.mat, where all variables will be store in a dictionary\n", + "data = loadmat('ex5data1.mat')\n", + "\n", + "# Extract train, test, validation data from dictionary\n", + "# and also convert y's form 2-D matrix (MATLAB format) to a numpy vector\n", + "X, y = data['X'], data['y'][:, 0]\n", + "Xtest, ytest = data['Xtest'], data['ytest'][:, 0]\n", + "Xval, yval = data['Xval'], data['yval'][:, 0]\n", + "\n", + "# m = Number of examples\n", + "m = y.size\n", + "\n", + "# Plot training data\n", + "pyplot.plot(X, y, 'ro', ms=10, mec='k', mew=1)\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)');" + ] + }, + { + "cell_type": "code", + "execution_count": 93, + "metadata": {}, + "outputs": [], + "source": [ + "def linearRegCostFunction(X, y, theta, lambda_):\n", + " \"\"\"\n", + " Compute cost and gradient for regularized linear regression \n", + " with multiple variables. Computes the cost of using theta as\n", + " the parameter for linear regression to fit the data points in X and y. \n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The dataset. Matrix with shape (m x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " y : array_like\n", + " The functions values at each datapoint. A vector of\n", + " shape (m, ).\n", + " \n", + " theta : array_like\n", + " The parameters for linear regression. A vector of shape (n+1,).\n", + " \n", + " lambda_ : float, optional\n", + " The regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed cost function. \n", + " \n", + " grad : array_like\n", + " The value of the cost function gradient w.r.t theta. \n", + " A vector of shape (n+1, ).\n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the cost and gradient of regularized linear regression for\n", + " a particular choice of theta.\n", + " You should set J to the cost and grad to the gradient.\n", + " \"\"\"\n", + " # Initialize some useful values\n", + " m = y.size # number of training examples\n", + "\n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " grad = np.zeros(theta.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " H = theta.dot(X.transpose())\n", + " \n", + " J = J + ((1/(2*m)) * sum((H-y) * (H-y))) + ((lambda_/m) * sum(theta[1:]*theta[1:]))\n", + " \n", + " grad = (1/m) * (H-y).dot(X)\n", + " grad[1:] += (lambda_/m)*(theta[1:])\n", + "\n", + " # ============================================================\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 94, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at theta = [1, 1]:\t 304.034859 \n", + "This value should be about 303.993192)\n", + "\n" + ] + } + ], + "source": [ + "theta = np.array([1, 1])\n", + "J, _ = linearRegCostFunction(np.concatenate([np.ones((m, 1)), X], axis=1), y, theta, 1)\n", + "\n", + "print('Cost at theta = [1, 1]:\\t %f ' % J)\n", + "print('This value should be about 303.993192)\\n' % J)" + ] + }, + { + "cell_type": "code", + "execution_count": 95, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gradient at theta = [1, 1]: [-15.303016, 598.250744] \n", + " (this value should be about [-15.303016, 598.250744])\n", + "\n" + ] + } + ], + "source": [ + "theta = np.array([1, 1])\n", + "J, grad = linearRegCostFunction(np.concatenate([np.ones((m, 1)), X], axis=1), y, theta, 1)\n", + "\n", + "print('Gradient at theta = [1, 1]: [{:.6f}, {:.6f}] '.format(*grad))\n", + "print(' (this value should be about [-15.303016, 598.250744])\\n')" + ] + }, + { + "cell_type": "code", + "execution_count": 96, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# add a columns of ones for the y-intercept\n", + "X_aug = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "theta = utils.trainLinearReg(linearRegCostFunction, X_aug, y, lambda_=0)\n", + "\n", + "# Plot fit over the data\n", + "pyplot.plot(X, y, 'ro', ms=10, mec='k', mew=1.5)\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)')\n", + "pyplot.plot(X, np.dot(X_aug, theta), '--', lw=2);" + ] + }, + { + "cell_type": "code", + "execution_count": 97, + "metadata": {}, + "outputs": [], + "source": [ + "def learningCurve(X, y, Xval, yval, lambda_):\n", + " \"\"\"\n", + " Generates the train and cross validation set errors needed to plot a learning curve\n", + " returns the train and cross validation set errors for a learning curve. \n", + " \n", + " In this function, you will compute the train and test errors for\n", + " dataset sizes from 1 up to m. In practice, when working with larger\n", + " datasets, you might want to do this in larger intervals.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The training dataset. Matrix with shape (m x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " y : array_like\n", + " The functions values at each training datapoint. A vector of\n", + " shape (m, ).\n", + " \n", + " Xval : array_like\n", + " The validation dataset. Matrix with shape (m_val x n + 1) where m is the \n", + " total number of examples, and n is the number of features \n", + " before adding the bias term.\n", + " \n", + " yval : array_like\n", + " The functions values at each validation datapoint. A vector of\n", + " shape (m_val, ).\n", + " \n", + " lambda_ : float, optional\n", + " The regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " error_train : array_like\n", + " A vector of shape m. error_train[i] contains the training error for\n", + " i examples.\n", + " error_val : array_like\n", + " A vecotr of shape m. error_val[i] contains the validation error for\n", + " i training examples.\n", + " \n", + " Instructions\n", + " ------------\n", + " Fill in this function to return training errors in error_train and the\n", + " cross validation errors in error_val. i.e., error_train[i] and \n", + " error_val[i] should give you the errors obtained after training on i examples.\n", + " \n", + " Notes\n", + " -----\n", + " - You should evaluate the training error on the first i training\n", + " examples (i.e., X[:i, :] and y[:i]).\n", + " \n", + " For the cross-validation error, you should instead evaluate on\n", + " the _entire_ cross validation set (Xval and yval).\n", + " \n", + " - If you are using your cost function (linearRegCostFunction) to compute\n", + " the training and cross validation error, you should call the function with\n", + " the lambda argument set to 0. Do note that you will still need to use\n", + " lambda when running the training to obtain the theta parameters.\n", + " \n", + " Hint\n", + " ----\n", + " You can loop over the examples with the following:\n", + " \n", + " for i in range(1, m+1):\n", + " # Compute train/cross validation errors using training examples \n", + " # X[:i, :] and y[:i], storing the result in \n", + " # error_train[i-1] and error_val[i-1]\n", + " .... \n", + " \"\"\"\n", + " # Number of training examples\n", + " m = y.size\n", + "\n", + " # You need to return these values correctly\n", + " error_train = np.zeros(m)\n", + " error_val = np.zeros(m)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " for i in range(1, m+1):\n", + " theta = utils.trainLinearReg(linearRegCostFunction, X[:i, :], y[:i], lambda_)\n", + " error_train[i-1], _ = linearRegCostFunction(X[:i, :], y[:i], theta, 0)\n", + " error_val[i-1], _ = linearRegCostFunction(Xval, yval, theta, 0)\n", + " \n", + " # =============================================================\n", + " return error_train, error_val" + ] + }, + { + "cell_type": "code", + "execution_count": 98, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "# Training Examples\tTrain Error\tCross Validation Error\n", + " \t1\t\t0.000000\t205.121096\n", + " \t2\t\t0.000000\t110.302641\n", + " \t3\t\t3.286595\t45.010231\n", + " \t4\t\t2.842678\t48.368910\n", + " \t5\t\t13.154049\t35.865165\n", + " \t6\t\t19.443963\t33.829962\n", + " \t7\t\t20.098522\t31.970986\n", + " \t8\t\t18.172859\t30.862446\n", + " \t9\t\t22.609405\t31.135998\n", + " \t10\t\t23.261462\t28.936207\n", + " \t11\t\t24.317250\t29.551432\n", + " \t12\t\t22.373906\t29.433818\n" + ] + }, + { + "data": { + "image/png": "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PfdcAHbt2sX555/PmDFjOPbYY1m6dGlof1dccQWTJk1i8ODBXZZErJOdWEoPQN9hsG2561vBmtE28Wxmryhtt6LFWcuWLWPixIktzl+4cCHLli1j0KBBLF68mAcffJD33nsPVeWYY47h5JNPZu3atQwYMICXXnJNf1dUVLBr1y6eeeYZVq5ciYiwe/fug7b9rW99i/Hjx/PHP/6RtLQ0nnjiCZ566inA9dHw7rvvIiLcd999/O53v+O2225rMc7LL7+cP/7xj5x88sn87Gc/C03v168fc+bMIRAIsHr1aqZOncqiRYuYNWsWt956Ky+++CIA8+bNC61z4403Mn78eJ599lneeOMNLr300lBHRCtXrmTu3LlUVVUxbNgwrrnmGtLT01uMqz3sSiHWQvUKS/2Nw5gEdPTRRzNo0CAAFixYwDe+8Q169uxJdnY23/zmN5k/fz6jR4/mtdde4/rrr2f+/Pn06tWL3NxcAoEAV111FX//+9/Jyso6aNsFBQWMHDmS119/nSVLlpCenh6qCygrK+OMM85g9OjR3HLLLXzyySctxlhRUcHu3bs5+eSTAbjkkktC8+rq6vjud7/L6NGjueiiiyI2993cggULQts49dRT2blzJxUVLrGec845ZGZmkp+fT79+/SJewXSUXSnEWsFoWPqE1SuY+NfKL/poGTlyJE8//XSL88Obz26p3bYvfelLLF68mJdffpkbbriBr33ta/zyl79k4cKFvP766zz++OP86U9/4o033jho3WARUv/+/UNFRwA/+MEP+OlPf8p5553HvHnzmDlzZosxqirNugYIueOOO+jfvz8fffQRjY2NBAKBFrfT2nEGt5+ZmRma1lVNg9uVQqzZHUjGtOjUU0+lpqaGe++9NzTt/fff58033zxo2ZNOOolnn32Wffv2sXfvXp555hlOPPFENm/eTFZWFhdffDHXXXcdH3zwAXv27KGiooKzzz6bO++8M1T80twFF1zAyy+/zBNPPMGUKVNC0ysqKigqKgLgoYceavUY8vLy6NWrFwsWLADgkUceabKdwsJCUlJS+Otf/xqqMM/JyaGqqiri9k466aTQNubNm0d+fj65ubmtxnAo7Eoh1vo361shJdXfeIyJIyLCM888w49//GNmzZpFIBCgpKSEO++8k02bNjVZdsKECUybNi10d9BVV13F+PHjeeWV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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X_aug = np.concatenate([np.ones((m, 1)), X], axis=1)\n", + "Xval_aug = np.concatenate([np.ones((yval.size, 1)), Xval], axis=1)\n", + "error_train, error_val = learningCurve(X_aug, y, Xval_aug, yval, lambda_=0)\n", + "\n", + "pyplot.plot(np.arange(1, m+1), error_train, np.arange(1, m+1), error_val, lw=2)\n", + "pyplot.title('Learning curve for linear regression')\n", + "pyplot.legend(['Train', 'Cross Validation'])\n", + "pyplot.xlabel('Number of training examples')\n", + "pyplot.ylabel('Error')\n", + "pyplot.axis([0, 13, 0, 150])\n", + "\n", + "print('# Training Examples\\tTrain Error\\tCross Validation Error')\n", + "for i in range(m):\n", + " print(' \\t%d\\t\\t%f\\t%f' % (i+1, error_train[i], error_val[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 99, + "metadata": {}, + "outputs": [], + "source": [ + "def polyFeatures(X, p):\n", + " \"\"\"\n", + " Maps X (1D vector) into the p-th power.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " A data vector of size m, where m is the number of examples.\n", + " \n", + " p : int\n", + " The polynomial power to map the features. \n", + " \n", + " Returns \n", + " -------\n", + " X_poly : array_like\n", + " A matrix of shape (m x p) where p is the polynomial \n", + " power and m is the number of examples. That is:\n", + " \n", + " X_poly[i, :] = [X[i], X[i]**2, X[i]**3 ... X[i]**p]\n", + " \n", + " Instructions\n", + " ------------\n", + " Given a vector X, return a matrix X_poly where the p-th column of\n", + " X contains the values of X to the p-th power.\n", + " \"\"\"\n", + " # You need to return the following variables correctly.\n", + " X_poly = np.zeros((X.shape[0], p))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " for j in range(p):\n", + " X_poly[:, j] = X[:, 0] ** (j+1)\n", + "\n", + " # ============================================================\n", + " return X_poly" + ] + }, + { + "cell_type": "code", + "execution_count": 100, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Normalized Training Example 1:\n" + ] + }, + { + "data": { + "text/plain": [ + "array([ 1. , -0.36214078, -0.75508669, 0.18222588, -0.70618991,\n", + " 0.30661792, -0.59087767, 0.3445158 , -0.50848117])" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "p = 8\n", + "\n", + "# Map X onto Polynomial Features and Normalize\n", + "X_poly = polyFeatures(X, p)\n", + "X_poly, mu, sigma = utils.featureNormalize(X_poly)\n", + "X_poly = np.concatenate([np.ones((m, 1)), X_poly], axis=1)\n", + "\n", + "# Map X_poly_test and normalize (using mu and sigma)\n", + "X_poly_test = polyFeatures(Xtest, p)\n", + "X_poly_test -= mu\n", + "X_poly_test /= sigma\n", + "X_poly_test = np.concatenate([np.ones((ytest.size, 1)), X_poly_test], axis=1)\n", + "\n", + "# Map X_poly_val and normalize (using mu and sigma)\n", + "X_poly_val = polyFeatures(Xval, p)\n", + "X_poly_val -= mu\n", + "X_poly_val /= sigma\n", + "X_poly_val = np.concatenate([np.ones((yval.size, 1)), X_poly_val], axis=1)\n", + "\n", + "print('Normalized Training Example 1:')\n", + "X_poly[0, :]" + ] + }, + { + "cell_type": "code", + "execution_count": 101, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Polynomial Regression (lambda = 1.000000)\n", + "\n", + "# Training Examples\tTrain Error\tCross Validation Error\n", + " \t1\t\t0.000000\t138.846778\n", + " \t2\t\t0.045773\t143.528011\n", + " \t3\t\t3.189087\t5.389235\n", + " \t4\t\t1.501203\t6.606905\n", + " \t5\t\t1.199212\t6.634039\n", + " \t6\t\t0.926558\t8.282183\n", + " \t7\t\t1.541362\t5.735726\n", + " \t8\t\t1.424085\t5.512725\n", + " \t9\t\t1.666735\t6.224943\n", + " \t10\t\t2.221758\t6.826967\n", + " \t11\t\t1.423558\t6.192597\n", + " \t12\t\t2.390004\t5.334547\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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zNKlSzn88MP58Ic/zD777APA9773PWbOnMnMmTNZvHgxAI2Njbzvfe9j9uzZzJw5kxtuuAGAiy++mBkzZjBr1qwdnrECsHDhQq6//vpU//XXX8/ChQsBuOOOO9h///2ZO3cuRx111A4JDsLzW7773e8CsHz58lST+T/+8Y9T06xevZqDDz441ajlX/7yl1RsDz/8MHPmzOHyyy9n6dKlHHfccQCsX7+eE088kVmzZnHAAQfw1FNPpT7v7LPP5rDDDmP69Ok5kYD8dut8k6iFDcOodQAXnz9cDK8/PbjLnLAPHLOo29HPPPMM8+fP73b8Y489xjPPPMO0adNYvnw5S5Ys4dFHH8XM2H///Tn00EN56aWXmDRpEnfddRcQmrBfv349t9xyC88//zyS2Lhx4w7L/tCHPsTcuXP54Q9/SElJCTfccAM33ngjEJ6x8re//Q1JXHnllXz729/msssu6zbOs846ix/+8IcceuihXHjhhanhu+yyC/fddx/l5eWsWrWKhQsXsmzZMhYtWsR3v/td7rzzTgCWLl2amudrX/sac+fO5dZbb+WBBx7g9NNPTz2E7Pnnn+fBBx9k8+bNvPOd7+STn/wkpaWl3cY11LyEkm+8yssNY/vttx/Tpk0D4JFHHuEDH/gAiUSCkSNH8sEPfpCHH36YffbZhz/96U9cdNFFPPzww4wZM4bRo0dTXl7OOeecw80330xlZeUOy54wYQJ77703999/PytWrKC0tDR17qOuro73vOc97LPPPnznO9/h2Wef7TbGhoYGNm7cyKGHHgrARz/60dS41tZWPv7xj7PPPvtwyimnZGxyv6tHHnkktYwjjjiC+vp6GhoaAHjf+97HiBEjqKmpYZdddslYcsomL6Hkm0QNtGyG1q1QWhF3NK6Q9VCSGCp77703N910U7fj05uw764dwne84x0sX76cu+++m6985SscffTRfPWrX+Wxxx7j/vvv5/rrr+dHP/oRDzzwwA7zJqu9xo8fn6ruAvjsZz/L+eefz/HHH8/SpUu55JJLuo3RzJCUcdzll1/O+PHjefLJJ+no6KC8vLzb5fS0nsnljxgxIjUsF5rn9xJKvvF7UVwBO+KII2hubuYXv/hFatjjjz/OQw89tMO0hxxyCLfeeitNTU00NjZyyy23cPDBB7NmzRoqKys57bTTuOCCC3jiiSfYsmUL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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "lambda_ = 1\n", + "theta = utils.trainLinearReg(linearRegCostFunction, X_poly, y,\n", + " lambda_=lambda_, maxiter=55)\n", + "\n", + "# Plot training data and fit\n", + "pyplot.plot(X, y, 'ro', ms=10, mew=1.5, mec='k')\n", + "\n", + "utils.plotFit(polyFeatures, np.min(X), np.max(X), mu, sigma, theta, p)\n", + "\n", + "pyplot.xlabel('Change in water level (x)')\n", + "pyplot.ylabel('Water flowing out of the dam (y)')\n", + "pyplot.title('Polynomial Regression Fit (lambda = %f)' % lambda_)\n", + "pyplot.ylim([-20, 50])\n", + "\n", + "pyplot.figure()\n", + "error_train, error_val = learningCurve(X_poly, y, X_poly_val, yval, lambda_)\n", + "pyplot.plot(np.arange(1, 1+m), error_train, np.arange(1, 1+m), error_val)\n", + "\n", + "pyplot.title('Polynomial Regression Learning Curve (lambda = %f)' % lambda_)\n", + "pyplot.xlabel('Number of training examples')\n", + "pyplot.ylabel('Error')\n", + "pyplot.axis([0, 13, 0, 100])\n", + "pyplot.legend(['Train', 'Cross Validation'])\n", + "\n", + "print('Polynomial Regression (lambda = %f)\\n' % lambda_)\n", + "print('# Training Examples\\tTrain Error\\tCross Validation Error')\n", + "for i in range(m):\n", + " print(' \\t%d\\t\\t%f\\t%f' % (i+1, error_train[i], error_val[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 102, + "metadata": {}, + "outputs": [], + "source": [ + "def validationCurve(X, y, Xval, yval):\n", + " \"\"\"\n", + " Generate the train and validation errors needed to plot a validation\n", + " curve that we can use to select lambda_.\n", + " \n", + " Parameters\n", + " ----------\n", + " X : array_like\n", + " The training dataset. Matrix with shape (m x n) where m is the \n", + " total number of training examples, and n is the number of features \n", + " including any polynomial features.\n", + " \n", + " y : array_like\n", + " The functions values at each training datapoint. A vector of\n", + " shape (m, ).\n", + " \n", + " Xval : array_like\n", + " The validation dataset. Matrix with shape (m_val x n) where m is the \n", + " total number of validation examples, and n is the number of features \n", + " including any polynomial features.\n", + " \n", + " yval : array_like\n", + " The functions values at each validation datapoint. A vector of\n", + " shape (m_val, ).\n", + " \n", + " Returns\n", + " -------\n", + " lambda_vec : list\n", + " The values of the regularization parameters which were used in \n", + " cross validation.\n", + " \n", + " error_train : list\n", + " The training error computed at each value for the regularization\n", + " parameter.\n", + " \n", + " error_val : list\n", + " The validation error computed at each value for the regularization\n", + " parameter.\n", + " \n", + " Instructions\n", + " ------------\n", + " Fill in this function to return training errors in `error_train` and\n", + " the validation errors in `error_val`. The vector `lambda_vec` contains\n", + " the different lambda parameters to use for each calculation of the\n", + " errors, i.e, `error_train[i]`, and `error_val[i]` should give you the\n", + " errors obtained after training with `lambda_ = lambda_vec[i]`.\n", + "\n", + " Note\n", + " ----\n", + " You can loop over lambda_vec with the following:\n", + " \n", + " for i in range(len(lambda_vec))\n", + " lambda = lambda_vec[i]\n", + " # Compute train / val errors when training linear \n", + " # regression with regularization parameter lambda_\n", + " # You should store the result in error_train[i]\n", + " # and error_val[i]\n", + " ....\n", + " \"\"\"\n", + " # Selected values of lambda (you should not change this)\n", + " lambda_vec = [0, 0.001, 0.003, 0.01, 0.03, 0.1, 0.3, 1, 3, 10]\n", + "\n", + " # You need to return these variables correctly.\n", + " error_train = np.zeros(len(lambda_vec))\n", + " error_val = np.zeros(len(lambda_vec))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " for i in range(len(lambda_vec)):\n", + " lambda_ = lambda_vec[i]\n", + " theta = utils.trainLinearReg(linearRegCostFunction, X, y, lambda_) \n", + " error_train[i], _ = linearRegCostFunction(X, y, theta, 0) \n", + " error_val[i], _ = linearRegCostFunction(Xval, yval, theta, 0) \n", + "\n", + " # ============================================================\n", + " return lambda_vec, error_train, error_val\n" + ] + }, + { + "cell_type": "code", + "execution_count": 103, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "lambda\t\tTrain Error\tValidation Error\n", + " 0.000000\t0.029686\t43.849641\n", + " 0.001000\t0.177741\t28.266217\n", + " 0.003000\t0.198758\t24.778315\n", + " 0.010000\t0.240446\t16.361630\n", + " 0.030000\t0.319694\t10.785885\n", + " 0.100000\t0.487281\t7.105010\n", + " 0.300000\t0.936121\t4.573757\n", + " 1.000000\t2.390004\t5.334547\n", + " 3.000000\t4.940808\t3.815123\n", + " 10.000000\t21.189035\t15.830258\n" + ] + }, + { + "data": { + "image/png": "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uPjii1m8eDEHDhzA6XTyxhtWWemWlhaOHDnCq6++yu7duxERmpubB+z71ltvZc6cOfzyl78kKiqKF198kZdeegmwavx/9NFHiAjPPvssP/nJT/jpT386ZDvvvPNOfvnLX7J48WIefPBBz/KsrCzeeust4uLi2LdvH7fffjubN29m5cqVPPHEE6xZswaA9evXe17zox/9iDlz5vDaa6/xzjvv8LWvfc0zWc3u3bt59913aWtrY9q0aXznO98hOjp6yHadTjDP+C8DbhSRSuAFrC6ep4BUEen7wMkDXIO92BjzjDFmnjFmXmZmZhCbqZQaa+bPn09BQQEAGzdu5Atf+AKJiYkkJSXxxS9+kQ0bNjBr1izefvttHnroITZs2EBKSgrJycnExcXxrW99i1deeYWEhIQB+87JyWHGjBmsW7eObdu2ER0d7embr6qqYtmyZcyaNYvHH3+cnTt3DtnGlpYWmpubWbx4MQBf/epXPeu6urr49re/zaxZs7jlllsGLSXd38aNGz37WLp0KU1NTbS0WB+eN9xwA7GxsWRkZJCVlTXoN5EzEbQzfmPMw8DDAO4z/geMMf8kIi8BX8b6MPg68JdgtUEpNQynODMHrD79QacynQTf3zGiQ86YMYOXX355yPW+pZmHqid2/vnns2XLFt58800efvhhrrnmGh555BE2bdrEunXreOGFF3j66ad55513Bry2r7snOzvb080D8L3vfY/777+fG2+8kfXr1/Poo48O2UZjDDJEr8KTTz5JdnY2ZWVl9Pb2EhcXN+R+TvU++/YfGxvrWRaIstOhGMf/EHC/iOzH6vP/XQjaoJQariBMZbp06VJOnjzJb3/7W8+yTz75hPfee2/AtosWLeK1117jxIkTHD9+nFdffZWFCxficrlISEjgjjvu4IEHHuDTTz/l2LFjtLS0cP311/PUU095ukr6+9KXvsSbb77Jiy++yG233eZZ3tLSQm6uddnxueeeO+V7SE1NJSUlhY0bNwLw/PPP++3H4XAQERHBf/3Xf3kuUk+YMIG2trZB97do0SLPPtavX09GRgbJycmnbMNIjUpZZmPMemC9+/EBYHiXz5VSodc3e926x6ClClLyrNA/i1ntRIRXX32V++67j5UrVxIXF0d+fj5PPfUU1dX+c/nOnTuXb3zjG55RN9/61reYM2cOa9eu5cEHHyQi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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "lambda_vec, error_train, error_val = validationCurve(X_poly, y, X_poly_val, yval)\n", + "\n", + "pyplot.plot(lambda_vec, error_train, '-o', lambda_vec, error_val, '-o', lw=2)\n", + "pyplot.legend(['Train', 'Cross Validation'])\n", + "pyplot.xlabel('lambda')\n", + "pyplot.ylabel('Error')\n", + "\n", + "print('lambda\\t\\tTrain Error\\tValidation Error')\n", + "for i in range(len(lambda_vec)):\n", + " print(' %f\\t%f\\t%f' % (lambda_vec[i], error_train[i], error_val[i]))" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/NeuralNetworkImplementation.ipynb b/NeuralNetworkImplementation.ipynb new file mode 100644 index 000000000..ae7d5d987 --- /dev/null +++ b/NeuralNetworkImplementation.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [], + "source": [ + "# used for manipulating directory paths\n", + "import os\n", + "\n", + "# Scientific and vector computation for python\n", + "import numpy as np\n", + "\n", + "# Plotting library\n", + "from matplotlib import pyplot\n", + "\n", + "# Optimization module in scipy\n", + "from scipy import optimize\n", + "\n", + "# will be used to load MATLAB mat datafile format\n", + "from scipy.io import loadmat\n", + "\n", + "# library written for this exercise providing additional functions for assignment submission, and others\n", + "import utils\n", + "\n", + "# define the submission/grader object for this exercise\n", + "grader = utils.Grader()\n", + "\n", + "# tells matplotlib to embed plots within the notebook\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [], + "source": [ + "# training data stored in arrays X, y\n", + "data = loadmat('ex4data1.mat')\n", + "X, y = data['X'], data['y'].ravel()\n", + "\n", + "# set the zero digit to 0, rather than its mapped 10 in this dataset\n", + "# This is an artifact due to the fact that this dataset was used in \n", + "# MATLAB where there is no index 0\n", + "y[y == 10] = 0\n", + "\n", + "# Number of training examples\n", + "m = y.size" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAItCAYAAAAwm9DjAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOydZZwdVbP1F/cSgQcPDsEhwRLcNcEJ7hLcnUBwdwsuAYITCBaCuwUP7k6w4K5JeJ573w/vXXVWM92ZzMzp0z2d9f+S+lVm5vTuvbtP96raVRP97//+L4wxxhhjqsh/FX0AxhhjjDF54QcdY4wxxlQWP+gYY4wxprL4QccYY4wxlcUPOsYYY4ypLBOP6z/Hjh1byS1ZHTt2nAgA/v7770qOr0OHDhPE+MaMGVPJ8XXq1Mnz147h/FX9/jl69OhKjq9z584TxPz9+eeflRzfpJNOOtE/fVZ0jDHGGFNZxqnotAatyzPRRBON09afTbP1d0z5yJpfzl+VajRljZVkrWVTDtLmT33/8z//E7bnz5QBXZ//9V9NNQmv2fHHio4xxhhjKkvdFB0+UeqTpz5ljh07Nuw///wTANCxY8fwTTLJJGF36NABAPCf//wnfPr0WkalR8f93//93+P8WY5Fx9ee4Pn//fffw/fXX3+F/a9//QtAck7bExNP/P8vC11zo0ePDvuPP/5o8v8cM1Ab94T0lqXrX+1///vfDT8WXn96n9D541rVe9KUU04ZNu8/E9L8FY3eM9MUtzR0fvRe2t7njdfP33//Hb4TTjghbI7vuOOOC5+evyLG35zirfBYs77f88CKjjHGGGMqix90jDHGGFNZ6ha6olylEvEDDzwQ9t133x32o48+CgDo1q1b+FZbbbWwe/fuDQCYf/75w9e5c+ewKXllJT43Cv3M7777Lux33nkHQE0CB5KhnVlmmQUAMPfcc4eP4RIgfxmvrfBYjz322PCdf/75Yfft2xcAMHDgwPBpmLKM0rIe09tvvw0AeP7558P30EMPNbEZwgKAlVdeOezDDjsMALDccsuFr+hwq8rEzYVWxxcNUX3zzTdhf/zxx2EvueSSTX62XmQlE3PeXn/99fC98MILYT/xxBMAktfsaaedFvbOO+/c5O+Xcc02l6yatebS7p+NIivE8dFHH4XN9fPbb7+FT8fH459pppnCt8gii4TN74oyzlkWei4Y7r3ooovCN2LEiLDnmGMOAMAHH3wQPv2ubNS4dU40DPz99983+X/9/nvttdcAAIsvvnj4Zp111rDzOH4rOsYYY4ypLH7QMcYYY0xlqXvoimEpANh9993DVumKoY/hw4eHT39vhhlmAAD06tUrfBtuuGHYffr0AZCU4IvYlaWfc8stt4R90EEHAUjfyQEA88wzDwBg7733Dt9SSy0VdteuXQGUV3rlcWm4TXdYUYbWXQOdOnVq8vtFo9LqzTffHDbn79tvvw2fjnXZZZcFkJyzW2+9NewDDjgAAPD444+Hb7LJJgs7z/Hrmvz111/D/vrrr8Oed9552/QZPG+fffZZ+BiuBIAFFlggbIau8kDHqmvt5JNPBgDcd9994dPzz3m75pprwjf77LOHXfY6Xjwu7l4FkvdSrttPP/20ye8AwA477ACgFkJvBGk7NS+55JKwr7766rC5VjU0nPa3dE71Xnr44YcDKOc9R9E50fsL162mfgwePDhs7vDUHY1FhKs0dHbuueeGzTCxHpN+/48aNQoA0KNHj/BpmG7hhRcGUN86QVZ0jDHGGFNZ6l4ZWd+C9el90kknrX3o/z29rrHGGqk/+9RTTwFIqiT33ntv2McffzwAYNdddw1fHsmOLYFPoUDt6Xb11VcPn9ZZ+fHHHwEAW2yxRfiWWGKJsPmmU/YEXkXfqPnGXPY3Kj2mRRddNGzOiyoiCy64YNi77LILAOCnn34K34svvhj2L7/80uTvNwr9TF1zVBGB2ptkS1RQ/X8qCbwOgaS6qom99Od9LjSZlW+UqlypYsBrVe9JaTVZyrhmAeDhhx8GUFMOAeD9998Pm8m4008/ffi++OKLsKmUnHLKKbkep8I3+v333z9899xzT9hU6QGge/fuAGqbOoBksurUU08NoHYeAOCGG24Ie/vttweQ3OxRxppl+p311ltvhX3VVVcBAM4777zw6VymbVbJvQ7N/x3rzz//HL7+/fuHreoTk4yXX3758E033XRhr7LKKgCA7bbbLny6fqkI63dKW78LregYY4wxprL4QccYY4wxlaVuoStKZ88991z4NAFXpcMDDzwQQFLG1Po7lJnPPvvs8Gloi6WvNYFwnXXWaXIseaOfozId66eonK8yJSVzlePeeOONsDnWLl26hK9MMnpaiXad3549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G0Cy4u+3334bvieffDLsyy67DECyNolSZINLrXquKpXO1fgm9uv50d/huVBFRJtiZv1evdHP0crHVHI0QVcrx1NRLfsGB0261WRw1jHSasm6rueYYw4AwOGHHx4+bYRJRYH1eIBia1sByc0yRBWdtO+/ousApaFjuu+++8LWptSsmM7ms0ByrX733XcAkt8feX9nW9ExxhhjTGXxg44xxhhjKkubQlcqrTGBSJPNtIQ+EziBWs0SlfZVpmXrh3feeSd82hT02WefBZBMANXEJy1N36iQin4OZWats6IlvssoSaahcqLKzEyGzKpRVOT49Jh//vnnJrY2t9QwSFoLBx2Hrk8mxE499dThK0tifFpzTiAZxuBaVelf63iss846AJLjKDo0ybnQVg96zGnSv5LWwFTPyfXXXx82Q8/adkZrXuW5vvU4tQUOa5MAtfsf6yEByWMtc8hKz93tt98etib7syaVNorUprqEIdZ//j7XtYY2taZSo+5PWTXleN/Q76m0Okdluv54fLqB4dRTTw179tlnD3vzzTcHkByfrmU+C2jtHA2t54EVHWOMMcZUFj/oGGOMMaaytCl0pXLaNttsAwAYNGhQ+FhPBqi1bQBq++eXW2658FGOBWqlobVOxqhRo8JmBrfWudCQRKNkPpUWNfTB0vTffPNN6v+3d9LCIypTNqrtRhoqF3N3HlDrjrvIIouET+V+beHAMKzKzRoOeOWVVwAAP/30U/g0pFJGNLR28803AwDuvffe8J155plhMyRUtFyu1xfPtYYo+vTpE/Z6660XNo9fpXGdH9Zc4e4eoHZOFA0XaZ2eRl3Lw4YNC1u7O5944okAkq0oip6r5uA947PPPgsfd+cAyTQEthvRnbRp51znRFtLsHXLkCFDwnfccceFXURoT8Pk3GG21157hU93+PH+edBBB4Vv5plnDrvI1IC33norbG3Hcscdd4TNMKFevxryGjx4MIBkC48ll1wy7DzWshUdY4wxxlSWuiUjd+nSBUCyWqc2lVN1g0/faY3agPQqkpp4uOmmmwIAdthhh2aPK8/EUP0cTaZig0ttVKcNCPnEq28pZX8jS0PfjJZddtmw+aZVtIo17bTThs2aMZoAqYqhNq3km6SqhFoFmuoim38CwAYbbBB2WeZS1742wD3ppJMAJBtBas2RMsJ7hdb+0aaIqniw5tF7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/t9++20AwJZbbhk+Pb5LLrkEQDKcrNffXXfdBQCYfvrpw1f0Tiw9fs4ljxNIpj4MGjQIQDK0OGbMmLCXW245AMCMM86Yz8HmQFbNrvH9HaXo78I09JgefvhhAMk54z0VAM444wwAtXkG2r4D24qOMcYYYyrLOLuX17OXSVpl2U8++SR8mmzGNxb+CySf3rt37w4gqQgsvfTS430s9erVom8h+nR63HHHAQCuvPLK8OkbNX9Px6RvVH379gUAXHDBBeFryRNtvcaXplIBNaVKj48qAFBT7LQ2wqOPPhr2ySefDAC488479ZjDbu6NpF7je+ONN1LtddddF0ByTphgDQC33347gGQytb5xUwm59NJLwzfvvPOG3Zw615peO5wrXZNMSgWAgQMHhv3SSy8BSK7Jn376KWz+DZ0//btU7/bbb7/w6blobv5a02uH51fvGWussUbYOpYll1wSQDJZXEk7vmeffTZsnov777+/yd8Emp+/evW60nOuydbbb789AOCPP/4I3/nnnx92t27dAACvvvpq+FSdfPnllwEkFeOWJF7n0euKtbUA4PnnnwcA7LbbbuHT+weVuKzaR/xbrVUBiuh1NXbsWP18ANl1ojhWKpf//H3d5JJW86tRva70+EeMGBH2+uuvDwD4/fffw6fXLzerHHnkka36XPe6MsYYY8wEhR90jDHGGFNZGtbUMy1JkkmpQFLa/+KLLwAAjz/+ePiGDx8eNkNCKncxgRTIN3FX5TiVjgcMGBD2ueeeCyAp/au0usIKKwBIJsuxdgBQS7hUObkloZ22kNXWQetwHHHEEU2OT2siEf3/pZZaKuwpppgCQFKOXmeddcLOIzGS8/bdd9+FTxM055xzzrCZBK/1jDRMt/nmmwMAnnzyyfD9+OOPYTMMqwnomliXVX+npaRJ8/o5p512Wtia+E9pX8dMuRiozeV7770XvgceeCDsE044ocnn6u+rjF4vuCZmmWWW8Gmyv6413ks0nJgm/WsYTOvQcKx6/RaBrg29/pmsyaRqINlihddt0QnUrYXzosnSmjjOec2qo1PGZNw09DrRa6p3794AknWAtCYUQ8/q03YKei/mup599tnrddjjjc4Dw/1A7V6p4e7Ro0eHvfzyywNIzm9bvxPa55VgjDHGGDMe+EHHGGOMMZWlYaErhTKUtkVQaeuZZ54BkAwNqUzL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lIdXX301fG+99VbYgwcPBgA8/fTT4TvmmGPC5r22Q4cO4Wvr/JTjicEYY4wxJgf8oGOMMcaYylJI6IqhAUrgAHDggQeGffXVVwMAJptssvA999xzYc8999wAig8X6OdrOC1NZkw7VvWl/b/KgXlIl3rM7733HgBg6NCh4VtqqaXCnnPOOcN+6aWXAAA//fRT+DS0w+Muen5aC881xwkAr7zyStiffPIJAGDaaacNX3sdK2luzd5xxx1hX3jhhQCAo446Kny9e/cOu4w7WXR8PL4vv/wyfDPPPHPYaetX71VfffVV2NNNNx0AYIoppqjzEbcdHXPa/UnDATrWosNw/PysY8razUM4Vt0p2b9//7DXXXfdsHfccccmfz8P9Jj//PNPAMAZZ5wRPk3dOOywwwAAk08+efiKnhOi60h3Td1zzz1h8ztEUx9+/fXXsKeaaioAwKSTVjHGSQAAIABJREFUThq+s846K+yNN94YQO17Hmj7PcWKjjHGGGMqS8MUHX2i/fHHHwEAl1xySfhUseET3/TTTx++GWaYIewinm55/B988EH4jj766LAXXHDBsPmWp8f52Wefhc1krTfffDN8qhjw9w455JDwqV2vN2Z9Y+revTsAYP755w+fJstpkvJcc83V5PeVp556CkDyiX699dYLe4kllgBQzjd/ZcYZZwz7jz/+CPvjjz8GACy++OINP6Z6ovP7xRdfhH355ZcDAL7//vvUn+UbKZVXAFh99dXDLuO86pvoLbfcAiCpSKkiyWTQF198MXxPPvlk2KoEnXPOOQCAAw44oM5H3DJUveFcaR2szz//POyff/4ZQDKZfqaZZgpbk0B5LvJGvx8eeughAMDhhx8evj59+oTNe2FWMjzVty233DJ8jz76aNizzz572LyuVV1oC1m14fT+wXFdfPHF4VOVKStJuUh4THqf0O8kjQQwEqNz1rdv37B5/3/33XfDt9pqq4XNNVfPKIYVHWOMMcZUFj/oGGOMMaay1E0jS6s9odLdCy+8EPZBBx0EAOjRo0f4rrvuurB32WUXAMCyyy4bPi27X2RilsqKmux20kknhZ3WrkJlYiZu6vg08ffSSy8FALz88supx5BV/6MtUAYeNGhQ+Hbbbbew11xzzbCPPfZYAMnaRjfddFPYF1xwAQBg6aWXDp/KyGVJrGsOrb2h0vY888wDoJy1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xhhjTGGpmutKzaRjxowBkDTHqZm1W7duAIDWrVuHTl1b/P+VVlopdFpnoDmoCXjKlCkhX3bZZQCAcePGhU4jyRdddNGQd9xxRwDAYostFrr55psvZJrkqllHoNbRa6kyTc615Prj+b3//vuh06zB77//HgDw0Ucfha5Dhw4h1+Jc61rktVbXzttvvx3yDTfcAKA0TqDkrgOAXr16hcxskWqOmWNRc/lVV10VMjM8TjjhhDqfAWprrc0MPWfNULrzzjsBJOdP3SB5wD1P3VXq2lXXEkMWNthgg9Cpa4rH0tozl156aZ3/HzBgQOjymF/dx/T+6Nu3LwCgS5cuoTv77LNDZoZcWrhGraJupl9++QUAcNFFF4Vu2LBhIbNOkH7myiuvDHnbbbcFALRv3z50zXU92qJjjDHGmMKSqUWn3FM03zS08uOKK64YMoMcx48fH7rRo0eH/OCDDwIAevbsGToG2AHNe/pLq6cBAD/99BMA4NZbbw3dbLPNFrIGXvGNV61M+ka/6aabAgB222230M0777yp59CSKVczI63OzMSJE0PWeV988cUBJOss5A3ftDSActKkSSFvt912AJLrpxbnVN84v/vuu5DPP/98AMD9998fut9++y1kvnHqmtY6IIccckjI1Rq3ri8Gsd51112hY4AqACy33HIAkhZjvRZcn2qF1j0l7W/zQL/7hx9+CHnkyJEAkhbljTbaKOQ8AnO5DjQo/5hjjgl5hx12CJnWJz1/nStar2gZAZLWU52fPNH97dxzzw2Z+8J1110XOq1zlHfgdHMZOnQogKSVTS2KnEu9Pvr7P8cccwBwHR1jjDHGmAbhBx1jjDHGFJaqBSNr/QTmz9MFBSQDz+ga0NoWP//8c8g02WodhSzMfWo6O/HEEwEA33zzTehefPHFOucElFxz2uJCg5iffvppAMDDDz8cOg3Gomm91k2Y5UzEvBa///576EaMGBHy2LFjASSDWT/77LOQV1999ZAPOuggAKWy6Hmha+Gpp54CAFx77bWh08DCwYMHA0iuz1oKQKabR91RBx98cMictwsvvDB0WpNkwQUXBJAMFpx//vlDrlb9KL3ntI7PbbfdBgA47bTTQqduZN5XOifqunvttdcAJAOwtRx/586dQ86zjYKe/3333Rcy9yhdkzpXeZwzr7m6O3V+0u4PPc82bdqEfO+99yb+BYAZM2aEvOeeewJI1mHT/88SDWHQPU+DcblvaLhCtc4vK3T+uK/o/clwDaAUpvDGG2+ETl1Xc845Z51jNhdbdIwxxhhTWPygY4wxxpjCUrWsK3Vd0XTF6Op//i3RrKa0EvpZuwP0+Mz+YUYVUL6mDl0DNIEDwM033xwyTcvMjgCACy64IOTLL78cQHL8ebg+ytW2YbS8uha//fbbkG+66SYAyawknX9mUGntGR2/mrf5vXmMXzN51HXKDArtvqsZJHTt5O16LJcRRJeMmv4PO+ywkLfYYgsAyUw3HQtdCjonecyPjk+z9lj/SrPeNMODrmV1PbL2DAB06tQJQHJO6U4G8s+g47i1zhfdqUBp3fbu3Tt0utfmuS4bsmY4Pr3/7rnnnpDpUtXPn3rqqSFz/8j7/tO2MJpBtskmmwBIrsn6SGv3UUvucP19OPTQQwEk7xnWvgOAM888EwDw+uuvh05dy3T/VbJFiS06xhhjjCksftAxxhhjTGGpWtYVWygAwNJLLw0gaY5TNw5dQmuttVbollhiiZDzMEnyO7WVg2aaKByXFkTUrA6azLVIlJpmaTJfddVVQ5eHmZJFEgHgzz//DJndkdXd9NVXX4W8+eabA0h259Vy78suuyyAZCaFUitd3zUTQl0bLD2vroHNNtss5FoxKeu10/Nncc2TTz45dF27dg2ZBffUXayZRnkWyVN0fOruXGihhQAk2wass846IdN1p64RzTDbeOONAZQveJpnphVQWl8szAYk3STM9tN7rtbR8XGv1RYrffr0CZkFA5ldBSQzuPJwd/M7J0+eHLonnngi5K233jpkuoTr+x1Td5C6yel6raUiszqWeeaZB0CplQOQLCjKkIYll1wydFkXtLRFxxhjjDGFpWoWHc2ZJ/oUrjUrmIevAVwsSw+UyoXn8ebckDc7vp1oW4Ann3wyZK21QPTpXC091YJvDxpgrE0Pn3/++ZD5RqFP4VrOfM011wSQDIDUa8V5qxXLxz/hm/7HH38cuksuuSRkWtpOOumk0Omc1cq4WK8JKAUIAqU3Jg2s15pQtAjQcgckA3dpvco72FPXlF5/1rzSt0jdaxjk/+abb4YurQVN3m/Jilo8eI/ecccdodPAVlrsllpqqdDVyppU0qw4QMn6z6QMINm0lGijTE38WHvttQEkLXZZz2Xanv/JJ5+EzHpgDTkX7sVqxVHrK+uzsV4UkL91J60tinopHn/88ZDZAkLXZNZ1hGzRMcYYY0xh8YOOMcYYYwpL1VxXalpmTRJ1Z1100UUhs47FWWedFTrtVE4z+t577x26WjIz02SqLR60zgxdV2qu1fGxZk/ergHtiKyBw3fffTeAZICnuuM4F42pE5E3anplnaOjjz469W8vvvhiAEnXQN5zxTWn5nIN1lQ34j777JP4F0i2CGCw5O677x66l156KWQt554n6vrQmhtXXXUVAOCVV14JHd1ZQKmOibruzjnnnJDV5VFp0uqhAOmupXJB33Qpqrtf70XuJbqm816faej41HXBxIbll18+dBoYzxYlr776aug02PeZZ54BAKy33nqpx88STeDQFjf1fX/aWlbX+K233hoy91cd/0477RRylu2QdE3pmtXvpGuKQclA8reArTl++eWX0GlNHbYuqeQ4bNExxhhjTGHxg44xxhhjCkumrist+89MHZXVXaVmdJrJNNNj1113DZnZMLXkrkpDzy/NDK3//+GHH4bMaHt1F2U9Vpoh1cWhpl/WxgHSS5jXomm8PnROdCxXXHEFgGQmx4YbbhjyKqusAqC21h/PRUupX3rppSEzEw4onX+5OjF0Q2qLjttvvz1krk9tUZJ3pod2imaGZq9evUI3aNCgkD///PM6n/n1119DZn2sSo6J11rXmdam0nYb//wMkNw/ORd6z+lYmYGTxz3ZGNec6gdWSpkAACAASURBVHSvY32ucufPazF8+PDQHXXUUSGfffbZAJLuHrZlKXcuzYVjLbdm1A2XhrpLP/jgAwDJ0Add66zPtu6664Yu66w6fr+6iPX3WesHscWDutO0jl5aC51FF1005Cz2Elt0jDHGGFNYmmXR0adIPpHqU7zWOWCAJwBsueWWAIDddtst9ViUtSkfA3T1/+uzmFQT/X7WfPj0009Dp+fKwDR9Y9HxzTrrrHU+kwf7779/yAMGDAiZwbhs/ggk31jynouGoufJtyigVLlTg+n222+/kKnP24qV9sasloEDDzxwpn9bDiYLaO0LDUBmYGjeVhwN8Nc3+j322ANA0mKsc8X6LFq5PI86JI0JemYALgCMHj0aQGmfAJIWuzzg+tLrrDW5uC7LWREV3ffTYHV6tRgce+yxIbOytyZTsFp21uj4VdaacLqGiQYrsz6OWkn0ujGwXq1U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9cemrgBw5JFHAgC6desWOt0/Of6Wuqfw/LURaEufy7yxRccYY4wxhcUPOsYYY4wpLHZdZYiaXidOnBjyWWedBSDZ9HP33XcPmU1Ba8mErm4Cmk6vuOKK0F133XUht23bFgDQpk2b0Km82GKLAQB22GGHbE62QjS1qWma60fNzTqv9TX2qxZ6rtOmTQMAvP/++6EbO3Zsnc+stdZaIS+11FIhV2vdquvm888/D3nnnXcGAMw555yh22677ULu378/AGDppZcOXa24ORqyHv78808AwA8//BC6v/76K+Tvv/8eALDiiiuGTsdKamXMDWHGjBkhc/wXXnhh6FZaaaWQt9pqKwC125Q4jbRzff3110O38MILh1zroQ1p6L2a1mA5a9ecLTrGGGOMKSx+0DHGGGNMYWm060pNgGnmqIbUNqjPjKhmdNKSzHQ0yak5+dBDDw35vffeAwDMNttsdT5Tq+j5/fHHHwCA0aNHh07HcuaZZwIANt1009TPL7roopmdZyXguTJ7DADmmWeekNu1a1fnM3ov8HOXX3556I477riQdfx5rms952+++SZkzt/TTz8dOj3nzTffHACw6qqrZn2KddBzVnfwgQceGPI666wDALjoootCp1l/vOa1lMnCcU2fPj10ek7qRhw0aBAA4LPPPgsdMzmB0nXp0KFD6C655JKQOX+16trhtdD5mWuuuUK+6aabACT31P/+978hr7feegCSrstaGl8a+pvHrEB17V988cUh9+rVC0Dt/iZyLLp+P/zww5CfeuopAMC4ceNCt9NOO4W88cYbA0hmnTV3/mzRMcYYY0xhabRFR9+opkyZEjJrVkyYMCF0X3/9dcg//fRTyGlvT/p02rFj3CUUHAAAIABJREFURwDAlltuGbpFFlmksaeaG3yi1bcMfft69tlnASRrP/zvf/+r0tk1H86VBghqMOqOO+4IIGkFSAvGraW3rLQ6LL179w7dYYcdFvIee+wBILlm9U38sssuAwC8+OKLoTv++OMre8LNgG/yU6dODZ2uRVoPbrjhhtBtttlmIedpcdW3vCeffDJkBsADpSD5WWedNXQMsK4ldM1xf9R1osGoGnjMwH4d8xxzzBEy70sNIL/11ltD3mCDDQAkLZN534t6LXgvDRkyJHRqcWQQ8rnnnhu6rl27hjx8+HAAwG677ZbNyVYIHbPu/7fc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YYcdBiCZ9ZGH60PNaZ9//nnITzzxBABg2223Dd1ss81W53Nqrv3+++9DZlbBaqutVuEzbjpqWqRp/MYbbwzdvffeGzJN5urOUjPzEUccAaA0j/88ft5mWp7Lb7/9Fjp10zz00EMAStcBAG6++eaQN9lkEwDAueeeGzqd/7zHl4Zef7qeBg0aFLpLL7005HnmmQcAMPfcc4dOXXvVmku9/77++uuQ9957bwDAl19+GbrZZ5895PXXXx8AMN9884VO5+/aa68FABx55JGhO/PMM0Muly1TCXQf+PDDD0OmOxgAFl10UQDAm2++GboRI0aEPHHiRADAjz/+GDpdq48//jiA0nUA8nE3lnNd8RoMGTIkdJtuumnIH330EYCkO1LdjLw+eburdHzqBua+cOGFF4auU6dOIfP3o749I+2endk5VJtyoSuU1XX37LPPhnzUUUcBKO0zQPP3EVt0jDHGGFNYKvZqwqc3teIcd9xxIWtgIC0d+kSrbxd8utM3yosvvrjOd/bp0ydkWkGA6r0x61Pqq6++GjKD4C6//PLQac0OvhHqU77KfCN55plnQpeHRUDHp28MAwcOBADcdNNNodO3+0mTJgFIvqUxgBAATjjhBADJAMrTTz895KbU+Uir1tsY1BL5ww8/AAB222230DHAFSi9cey3336h++CDD0I+9thjAQBrrLFG6A444ICQa6WOSbk3wvPOOw9A0oqz8MILh8z7dqeddko9bpbrU4+tc3b11VeHPGHCBABAt27dQnfZZZeFTEupWoEPPPDAkGmxu+OOO0LXs2fPkPXtu1KWEB5nn332CZ1aLNKClPX+SqvppNdH95fbb78dQHJ9qkU9D+u4joWJC2rF0f2F1hsGHQPpVsQ8rFSKrtUBAwaEfOWVVwJIWuzvuuuukBdccEEA5eeBa+G7774L3XXXXRfyBhtsEPJmm21W51waes711UYrB89b6yDRygiUrK/HH3986JigBADbbbcdgKTFtblzaYuOMcYYYwqLH3SMMcYYU1ia5bpKc21oAOajjz4asgbmXnXVVQCStRHUNLXXXnsBSJqIe/XqFTJN62raVDNgtUyWaubbfvvtQ37//fcBJAMEtQQ9TXpqmtRzppx3gLXKjzzySMgPPPAAAOC///1v6NRN8OmnnwJI1vEYN25cyDRdqmmyKe6OtGA/Ndc3JhhR/5bn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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Randomly select 100 data points to display\n", + "rand_indices = np.random.choice(m, 100, replace=False)\n", + "sel = X[rand_indices, :]\n", + "\n", + "utils.displayData(sel)" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [], + "source": [ + "# Setup the parameters you will use for this exercise\n", + "input_layer_size = 400 # 20x20 Input Images of Digits\n", + "hidden_layer_size = 25 # 25 hidden units\n", + "num_labels = 10 # 10 labels, from 0 to 9\n", + "\n", + "# Load the weights into variables Theta1 and Theta2\n", + "weights = loadmat('ex4weights.mat')\n", + "\n", + "# Theta1 has size 25 x 401\n", + "# Theta2 has size 10 x 26\n", + "Theta1, Theta2 = weights['Theta1'], weights['Theta2']\n", + "\n", + "# swap first and last columns of Theta2, due to legacy from MATLAB indexing, \n", + "# since the weight file ex3weights.mat was saved based on MATLAB indexing\n", + "Theta2 = np.roll(Theta2, 1, axis=0)\n", + "\n", + "# Unroll parameters \n", + "nn_params = np.concatenate([Theta1.ravel(), Theta2.ravel()])\n" + ] + }, + { + "cell_type": "code", + "execution_count": 42, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoidGradient(z):\n", + " \"\"\"\n", + " Computes the gradient of the sigmoid function evaluated at z. \n", + " This should work regardless if z is a matrix or a vector. \n", + " In particular, if z is a vector or matrix, you should return\n", + " the gradient for each element.\n", + " \n", + " Parameters\n", + " ----------\n", + " z : array_like\n", + " A vector or matrix as input to the sigmoid function. \n", + " \n", + " Returns\n", + " --------\n", + " g : array_like\n", + " Gradient of the sigmoid function. Has the same shape as z. \n", + " \n", + " Instructions\n", + " ------------\n", + " Compute the gradient of the sigmoid function evaluated at\n", + " each value of z (z can be a matrix, vector or scalar).\n", + " \n", + " Note\n", + " ----\n", + " We have provided an implementation of the sigmoid function \n", + " in `utils.py` file accompanying this assignment.\n", + " \"\"\"\n", + "\n", + " g = np.zeros(z.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " g = utils.sigmoid(z) * (1 - utils.sigmoid(z)) \n", + "\n", + " # =============================================================\n", + " return g" + ] + }, + { + "cell_type": "code", + "execution_count": 43, + "metadata": {}, + "outputs": [], + "source": [ + "def nnCostFunction(nn_params,\n", + " input_layer_size,\n", + " hidden_layer_size,\n", + " num_labels,\n", + " X, y, lambda_=0.0):\n", + " \"\"\"\n", + " Implements the neural network cost function and gradient for a two layer neural \n", + " network which performs classification. \n", + " \n", + " Parameters\n", + " ----------\n", + " nn_params : array_like\n", + " The parameters for the neural network which are \"unrolled\" into \n", + " a vector. This needs to be converted back into the weight matrices Theta1\n", + " and Theta2.\n", + " \n", + " input_layer_size : int\n", + " Number of features for the input layer. \n", + " \n", + " hidden_layer_size : int\n", + " Number of hidden units in the second layer.\n", + " \n", + " num_labels : int\n", + " Total number of labels, or equivalently number of units in output layer. \n", + " \n", + " X : array_like\n", + " Input dataset. A matrix of shape (m x input_layer_size).\n", + " \n", + " y : array_like\n", + " Dataset labels. A vector of shape (m,).\n", + " \n", + " lambda_ : float, optional\n", + " Regularization parameter.\n", + " \n", + " Returns\n", + " -------\n", + " J : float\n", + " The computed value for the cost function at the current weight values.\n", + " \n", + " grad : array_like\n", + " An \"unrolled\" vector of the partial derivatives of the concatenatation of\n", + " neural network weights Theta1 and Theta2.\n", + " \n", + " Instructions\n", + " ------------\n", + " You should complete the code by working through the following parts.\n", + " \n", + " - Part 1: Feedforward the neural network and return the cost in the \n", + " variable J. After implementing Part 1, you can verify that your\n", + " cost function computation is correct by verifying the cost\n", + " computed in the following cell.\n", + " \n", + " - Part 2: Implement the backpropagation algorithm to compute the gradients\n", + " Theta1_grad and Theta2_grad. You should return the partial derivatives of\n", + " the cost function with respect to Theta1 and Theta2 in Theta1_grad and\n", + " Theta2_grad, respectively. After implementing Part 2, you can check\n", + " that your implementation is correct by running checkNNGradients provided\n", + " in the utils.py module.\n", + " \n", + " Note: The vector y passed into the function is a vector of labels\n", + " containing values from 0..K-1. You need to map this vector into a \n", + " binary vector of 1's and 0's to be used with the neural network\n", + " cost function.\n", + " \n", + " Hint: We recommend implementing backpropagation using a for-loop\n", + " over the training examples if you are implementing it for the \n", + " first time.\n", + " \n", + " - Part 3: Implement regularization with the cost function and gradients.\n", + " \n", + " Hint: You can implement this around the code for\n", + " backpropagation. That is, you can compute the gradients for\n", + " the regularization separately and then add them to Theta1_grad\n", + " and Theta2_grad from Part 2.\n", + " \n", + " Note \n", + " ----\n", + " We have provided an implementation for the sigmoid function in the file \n", + " `utils.py` accompanying this assignment.\n", + " \"\"\"\n", + " # Reshape nn_params back into the parameters Theta1 and Theta2, the weight matrices\n", + " # for our 2 layer neural network\n", + " Theta1 = np.reshape(nn_params[:hidden_layer_size * (input_layer_size + 1)],\n", + " (hidden_layer_size, (input_layer_size + 1)))\n", + "\n", + " Theta2 = np.reshape(nn_params[(hidden_layer_size * (input_layer_size + 1)):],\n", + " (num_labels, (hidden_layer_size + 1)))\n", + "\n", + " # Setup some useful variables\n", + " m = y.size\n", + " \n", + " # You need to return the following variables correctly \n", + " J = 0\n", + " Theta1_grad = np.zeros(Theta1.shape)\n", + " Theta2_grad = np.zeros(Theta2.shape)\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " X = np.concatenate([np.ones((X.shape[0], 1)), X], axis=1)\n", + " A2 = np.array(utils.sigmoid(X.dot(Theta1.transpose()))) \n", + "\n", + " A2 = np.concatenate([np.ones((A2.shape[0], 1)), A2], axis=1)\n", + " H = np.array(utils.sigmoid(Theta2.dot(A2.transpose())))\n", + " \n", + " new_y = np.zeros(H.shape) \n", + "\n", + " for i in range(m): \n", + " for j in range(Theta2.shape[0]):\n", + " if j == y[i]:\n", + " new_y[j][i] = 1\n", + "\n", + " for i in range(Theta2.shape[0]):\n", + " for j in range(m):\n", + " J = J + (-1/m) * (np.log(H[i][j]) * new_y[i][j] + (np.log(1 - H[i][j]) * (1 - new_y[i][j])))\n", + " \n", + " if lambda_>0 :\n", + " for i in range(Theta2.shape[0]):\n", + " for j in range(1, Theta2.shape[1]):\n", + " J = J + (lambda_ / (2*m)) * (Theta2[i][j] * Theta2[i][j]) \n", + "\n", + " for i in range(Theta1.shape[0]):\n", + " for j in range(1, Theta1.shape[1]):\n", + " J = J + (lambda_ / (2*m)) * (Theta1[i][j] * Theta1[i][j]) \n", + "\n", + " del_1 = np.zeros(Theta1.shape)\n", + " del_2 = np.zeros(Theta2.shape) \n", + " for i in range(m):\n", + " a1 = X[i ,:]\n", + " z2 = a1.dot(Theta1.transpose()) \n", + " a2 = np.array(utils.sigmoid(z2)) \n", + " a2 = np.concatenate([np.ones(1), a2], axis=0)\n", + " z3 = a2.dot(Theta2.transpose()) \n", + " a3 = np.array(utils.sigmoid(z3)) \n", + "\n", + " delta_3 = a3.transpose() - new_y[:, i] \n", + " delta_2 = (Theta2.transpose())[1:Theta2.shape[1], :].dot(delta_3) * sigmoidGradient(z2) \n", + "\n", + " del_1 = del_1 + delta_2.reshape(-1, 1).dot(a1.reshape(1, -1))\n", + " del_2 = del_2 + (delta_3.reshape(-1, 1)).dot(a2.reshape(1, -1)) \n", + "\n", + " Theta1_grad = del_1/m \n", + " Theta2_grad = del_2/m \n", + "\n", + " if lambda_>0 : \n", + " for i in range(Theta1_grad.shape[0]):\n", + " for j in range(1, Theta1_grad.shape[1]):\n", + " Theta1_grad[i][j] += (lambda_/m)*Theta1[i][j] \n", + "\n", + " for i in range(Theta2_grad.shape[0]):\n", + " for j in range(1, Theta2_grad.shape[1]):\n", + " Theta2_grad[i][j] += (lambda_/m)*Theta2[i][j] \n", + "\n", + " # ================================================================\n", + " # Unroll gradients\n", + " # grad = np.concatenate([Theta1_grad.ravel(order=order), Theta2_grad.ravel(order=order)])\n", + " grad = np.concatenate([Theta1_grad.ravel(), Theta2_grad.ravel()])\n", + "\n", + " return J, grad" + ] + }, + { + "cell_type": "code", + "execution_count": 44, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at parameters (loaded from ex4weights): 0.287629 \n", + "The cost should be about : 0.287629.\n" + ] + } + ], + "source": [ + "lambda_ = 0\n", + "J, _ = nnCostFunction(nn_params, input_layer_size, hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "print('Cost at parameters (loaded from ex4weights): %.6f ' % J)\n", + "print('The cost should be about : 0.287629.')" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sigmoid gradient evaluated at [-1 -0.5 0 0.5 1]:\n", + " \n", + "[0.19661193 0.23500371 0.25 0.23500371 0.19661193]\n" + ] + } + ], + "source": [ + "z = np.array([-1, -0.5, 0, 0.5, 1])\n", + "g = sigmoidGradient(z)\n", + "print('Sigmoid gradient evaluated at [-1 -0.5 0 0.5 1]:\\n ')\n", + "print(g)" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [], + "source": [ + "def randInitializeWeights(L_in, L_out, epsilon_init=0.12):\n", + " \"\"\"\n", + " Randomly initialize the weights of a layer in a neural network.\n", + " \n", + " Parameters\n", + " ----------\n", + " L_in : int\n", + " Number of incomming connections.\n", + " \n", + " L_out : int\n", + " Number of outgoing connections. \n", + " \n", + " epsilon_init : float, optional\n", + " Range of values which the weight can take from a uniform \n", + " distribution.\n", + " \n", + " Returns\n", + " -------\n", + " W : array_like\n", + " The weight initialiatized to random values. Note that W should\n", + " be set to a matrix of size(L_out, 1 + L_in) as\n", + " the first column of W handles the \"bias\" terms.\n", + " \n", + " Instructions\n", + " ------------\n", + " Initialize W randomly so that we break the symmetry while training\n", + " the neural network. Note that the first column of W corresponds \n", + " to the parameters for the bias unit.\n", + " \"\"\"\n", + "\n", + " # You need to return the following variables correctly \n", + " W = np.zeros((L_out, 1 + L_in))\n", + "\n", + " # ====================== YOUR CODE HERE ======================\n", + " \n", + " # Randomly initialize the weights to small values\n", + " W = np.random.rand(L_out, 1 + L_in) * 2 * epsilon_init - epsilon_init\n", + "\n", + " # ============================================================\n", + " return W\n" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost at parameters (loaded from ex4weights): 0.383770\n", + "This value should be about : 0.383770.\n" + ] + } + ], + "source": [ + "# Weight regularization parameter (we set this to 1 here).\n", + "lambda_ = 1\n", + "J, _ = nnCostFunction(nn_params, input_layer_size, hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "\n", + "print('Cost at parameters (loaded from ex4weights): %.6f' % J)\n", + "print('This value should be about : 0.383770.')" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Initializing Neural Network Parameters ...\n" + ] + } + ], + "source": [ + "print('Initializing Neural Network Parameters ...')\n", + "\n", + "initial_Theta1 = randInitializeWeights(input_layer_size, hidden_layer_size)\n", + "initial_Theta2 = randInitializeWeights(hidden_layer_size, num_labels)\n", + "\n", + "# Unroll parameters\n", + "initial_nn_params = np.concatenate([initial_Theta1.ravel(), initial_Theta2.ravel()], axis=0)" + ] + }, + { + "cell_type": "code", + "execution_count": 49, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-9.27825235e-03 -9.27825236e-03]\n", + " [-3.04978931e-06 -3.04978914e-06]\n", + " [-1.75060082e-04 -1.75060082e-04]\n", + " [-9.62660618e-05 -9.62660620e-05]\n", + " [ 8.89911959e-03 8.89911960e-03]\n", + " [ 1.42869427e-05 1.42869443e-05]\n", + " [ 2.33146358e-04 2.33146357e-04]\n", + " [ 1.17982666e-04 1.17982666e-04]\n", + " [-8.36010761e-03 -8.36010762e-03]\n", + " [-2.59383093e-05 -2.59383100e-05]\n", + " [-2.87468729e-04 -2.87468729e-04]\n", + " [-1.37149707e-04 -1.37149706e-04]\n", + " [ 7.62813551e-03 7.62813551e-03]\n", + " [ 3.69883235e-05 3.69883234e-05]\n", + " [ 3.35320349e-04 3.35320347e-04]\n", + " [ 1.53247079e-04 1.53247082e-04]\n", + " [-6.74798369e-03 -6.74798370e-03]\n", + " [-4.68759809e-05 -4.68759769e-05]\n", + " [-3.76215585e-04 -3.76215587e-04]\n", + " [-1.66560294e-04 -1.66560294e-04]\n", + " [ 3.14544970e-01 3.14544970e-01]\n", + " [ 1.64090819e-01 1.64090819e-01]\n", + " [ 1.64567932e-01 1.64567932e-01]\n", + " [ 1.58339334e-01 1.58339334e-01]\n", + " [ 1.51127527e-01 1.51127527e-01]\n", + " [ 1.49568335e-01 1.49568335e-01]\n", + " [ 1.11056588e-01 1.11056588e-01]\n", + " [ 5.75736493e-02 5.75736493e-02]\n", + " [ 5.77867378e-02 5.77867378e-02]\n", + " [ 5.59235296e-02 5.59235296e-02]\n", + " [ 5.36967009e-02 5.36967009e-02]\n", + " [ 5.31542052e-02 5.31542052e-02]\n", + " [ 9.74006970e-02 9.74006970e-02]\n", + " [ 5.04575855e-02 5.04575855e-02]\n", + " [ 5.07530173e-02 5.07530173e-02]\n", + " [ 4.91620841e-02 4.91620841e-02]\n", + " [ 4.71456249e-02 4.71456249e-02]\n", + " [ 4.65597186e-02 4.65597186e-02]]\n", + "The above two columns you get should be very similar.\n", + "(Left-Your Numerical Gradient, Right-Analytical Gradient)\n", + "\n", + "If your backpropagation implementation is correct, then \n", + "the relative difference will be small (less than 1e-9). \n", + "Relative Difference: 2.37272e-11\n" + ] + } + ], + "source": [ + "utils.checkNNGradients(nnCostFunction)" + ] + }, + { + "cell_type": "code", + "execution_count": 50, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-9.27825235e-03 -9.27825236e-03]\n", + " [-1.67679797e-02 -1.67679797e-02]\n", + " [-6.01744725e-02 -6.01744725e-02]\n", + " [-1.73704651e-02 -1.73704651e-02]\n", + " [ 8.89911959e-03 8.89911960e-03]\n", + " [ 3.94334829e-02 3.94334829e-02]\n", + " [-3.19612287e-02 -3.19612287e-02]\n", + " [-5.75658668e-02 -5.75658668e-02]\n", + " [-8.36010761e-03 -8.36010762e-03]\n", + " [ 5.93355565e-02 5.93355565e-02]\n", + " [ 2.49225535e-02 2.49225535e-02]\n", + " [-4.51963845e-02 -4.51963845e-02]\n", + " [ 7.62813551e-03 7.62813551e-03]\n", + " [ 2.47640974e-02 2.47640974e-02]\n", + " [ 5.97717617e-02 5.97717617e-02]\n", + " [ 9.14587966e-03 9.14587966e-03]\n", + " [-6.74798369e-03 -6.74798370e-03]\n", + " [-3.26881426e-02 -3.26881426e-02]\n", + " [ 3.86410548e-02 3.86410548e-02]\n", + " [ 5.46101547e-02 5.46101547e-02]\n", + " [ 3.14544970e-01 3.14544970e-01]\n", + " [ 1.18682669e-01 1.18682669e-01]\n", + " [ 2.03987128e-01 2.03987128e-01]\n", + " [ 1.25698067e-01 1.25698067e-01]\n", + " [ 1.76337550e-01 1.76337550e-01]\n", + " [ 1.32294136e-01 1.32294136e-01]\n", + " [ 1.11056588e-01 1.11056588e-01]\n", + " [ 3.81928689e-05 3.81928696e-05]\n", + " [ 1.17148233e-01 1.17148233e-01]\n", + " [-4.07588279e-03 -4.07588279e-03]\n", + " [ 1.13133142e-01 1.13133142e-01]\n", + " [-4.52964427e-03 -4.52964427e-03]\n", + " [ 9.74006970e-02 9.74006970e-02]\n", + " [ 3.36926556e-02 3.36926556e-02]\n", + " [ 7.54801264e-02 7.54801264e-02]\n", + " [ 1.69677090e-02 1.69677090e-02]\n", + " [ 8.61628953e-02 8.61628953e-02]\n", + " [ 1.50048382e-03 1.50048382e-03]]\n", + "The above two columns you get should be very similar.\n", + "(Left-Your Numerical Gradient, Right-Analytical Gradient)\n", + "\n", + "If your backpropagation implementation is correct, then \n", + "the relative difference will be small (less than 1e-9). \n", + "Relative Difference: 2.26583e-11\n", + "\n", + "\n", + "Cost at (fixed) debugging parameters (w/ lambda = 3.000000): 0.576051 \n", + "(for lambda = 3, this value should be about 0.576051)\n" + ] + } + ], + "source": [ + "# Check gradients by running checkNNGradients\n", + "lambda_ = 3\n", + "utils.checkNNGradients(nnCostFunction, lambda_)\n", + "\n", + "# Also output the costFunction debugging values\n", + "debug_J, _ = nnCostFunction(nn_params, input_layer_size,\n", + " hidden_layer_size, num_labels, X, y, lambda_)\n", + "\n", + "print('\\n\\nCost at (fixed) debugging parameters (w/ lambda = %f): %f ' % (lambda_, debug_J))\n", + "print('(for lambda = 3, this value should be about 0.576051)')" + ] + }, + { + "cell_type": "code", + "execution_count": 51, + "metadata": {}, + "outputs": [], + "source": [ + "# After you have completed the assignment, change the maxiter to a larger\n", + "# value to see how more training helps.\n", + "options= {'maxiter': 100}\n", + "\n", + "# You should also try different values of lambda\n", + "lambda_ = 1\n", + "\n", + "# Create \"short hand\" for the cost function to be minimized\n", + "costFunction = lambda p: nnCostFunction(p, input_layer_size,\n", + " hidden_layer_size,\n", + " num_labels, X, y, lambda_)\n", + "\n", + "# Now, costFunction is a function that takes in only one argument\n", + "# (the neural network parameters)\n", + "res = optimize.minimize(costFunction,\n", + " initial_nn_params,\n", + " jac=True,\n", + " method='TNC',\n", + " options=options)\n", + "\n", + "# get the solution of the optimization\n", + "nn_params = res.x\n", + " \n", + "# Obtain Theta1 and Theta2 back from nn_params\n", + "Theta1 = np.reshape(nn_params[:hidden_layer_size * (input_layer_size + 1)],\n", + " (hidden_layer_size, (input_layer_size + 1)))\n", + "\n", + "Theta2 = np.reshape(nn_params[(hidden_layer_size * (input_layer_size + 1)):],\n", + " (num_labels, (hidden_layer_size + 1)))" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Training Set Accuracy: 96.020000\n" + ] + } + ], + "source": [ + "pred = utils.predict(Theta1, Theta2, X)\n", + "print('Training Set Accuracy: %f' % (np.mean(pred == y) * 100))" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjkAAAIuCAYAAABdOBlOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOy9Z8xm5XWGu1wIMWDqMAzTe59hCjAMJRTT7NhAHIiLEsexRKIoiZU4svIjkiPljxWlKHESpyiKLVwSy7HAtmwwnZmBYWB6Z3ovDL0YXHN+Hul9rvs7+z05R0fZ57p+Lvbz7r2fth++ue+13vHf//3fJSIiItI33vn/9QOIiIiI/L+BhxwRERHpJR5yREREpJd4yBEREZFe4iFHREREeomHHBEREekl7x7pP/7FX/xF4y9/17vehde+9dZbTewd73hHEzvzzDOx/emnn97ETp061em69Ls//vGPm9ibb76J7clK/+53c/ecccYZTewXfuEXmtgPf/jDzvd65zvb82Z61rPOOquJ/fEf/3HT2X//93/fefxorM4///wmRmNSlcdlkHPPPRfjL774YhOjZ6V+StA7VVX9/Oc/b2I0fjR/qqpef/31JkbvT2uiquq9731vE/vt3/7t5mFp/dG9q6rOPvvsJjZM//3iL/5iEzt27BheS9D70/pJY0JrIq0fei+Kpb3m7bffbmI0/rTOq3hcP/OZz+CLffOb32xe7OWXX8bfHT16dBN74YUXmtgbb7yB7ceMGdPE6F3TvkL3p/lCfZVI85X6lp417cG0NmkOHzp0CNuPGzeuid11113NGP77v/97M36p/+iZLrjggiaW9mB6/x/96EdN7D3veQ+2/5/ul7TefvrTn+K1NAco9tprr2H70047rYnRWKf5M2rUqCb2iU98Ategf8kRERGRXuIhR0RERHqJhxwRERHpJR5yREREpJeMKDz+yU9+0sRICFXFYtgk0CJI4ETC1ySkeuWVVzpdm8SEJOZLwkV6L+orEsJVdReTpXdNY9DlmZLwkwRydH8S7VaxQOziiy9uYkmMS31F99+zZw+2JzFvEujRXKP7029WsUDvnHPO6dy+67qgvibBXlV3MS6tkyoWDU6aNKmJJdEs3YvEyEm0SqLNtFZprr766qtNLNXlo7lKayrdP/UBQfMqrSESGdO8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WcWlDT755JMmdskll2B7cvfQHEhOMtrvCXJoJtcm7Tc039M40beJ9lsqQVPF653KV9BeX8VzNbmrPvjggyY2a9asJpacXOSGfO+99/BaIjknCf/JERERkS7xkCMiIiJd4iFHREREusRDjoiIiHTJlMJjEj1NTEzgtSTwIuFeSklOwlsSiCY2bdrUxEi0lsTAJBAjIV5V1caNG5sYpaVPKakXL17cxA4fPtzEksAwpSofhd4p9T+JTKdNm9bEUlp/EolS6u6Upv3AgQNN7LbbbmtiSTRHgvgkPKX+o/mX3pWelUSHSbhO5U4IEg3+97+8ZEm0SuOf2pNxgOZEEnKS8JiE80mISONKv1mVzQejJJE2ie/pvZLwOYn3CRKppjVIY0jjksT/JBz95ptvBt2nquqcc85pYiRUT/vS/fffP6h9Fa9BElknkTatd7o23Z/KCBHUp2TIqOJxHVpqo4rH9a677mpiSRBP+xKtq2OOOQbbf/31100s9R/trbRfXXzxxdievg30DU3C51Qag/CfHBEREekSDzkiIiLSJR5yREREpEs85IiIiEiXTCk8piy2KdslZWskIVLKeExZHCkz5O7du7E9iSzpXklwRmKylJn20ksvHdSexFVVLEajjLtJIEYiWYLElCSkq2IhIAlvp0+fju2PPvroJkZzha6rYpEozYm1a9diexKiUT9Xsch7xYoVTSwJh7/99tsmRplhk2jy999/x/go1NdJeE2QcDcJ9oaaBJJoloSIJJqlfqqqWr16dRM788wz8Vp6B+rrlJ39p59+amIkiE+iS9rXEvRcyThA+9W/FR7THpL2JVqDF110URPbuXMntl+2bFkTS/stidppvNJaIVE4vX/aK9PeOgr1dcqkTvsFPVPK+k1GD8qknuY17Xe0hpIhg+Z72sOo/8jUkL73ZACieZneleZPwn9yREREpEs85IiIiEiXeMgRERGRLvGQIyIiIl3iIUdERES6ZEp3FaVgJ7V/FSvGybGQ0jSTip3cTckx88EHHzQxUmAntT6lOl++fDleS6nSFy1a1MSSs4BU+OQYSe6OlG5+FHJLkGOtih0DVFYjtadU9zT+qf9JmU8umFRq4fTTT29iL730El5L5TYopXhyolEfkDOAnr8qr6FRyLGX3CI0f2lMU1mToWUdUp/ceeedTYycIe+88w62p1InaazJ3UPv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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "utils.displayData(Theta1[:, 1:])" + ] + } + ], + "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.7.6" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}