From 641197138024797c61faac8e2758d9fef587bebc Mon Sep 17 00:00:00 2001 From: Ojewale Kehinde Date: Thu, 23 Apr 2020 13:05:19 +0100 Subject: [PATCH 1/2] DSN algorithm challenge files --- .../LogisticRegressionFromScratch.ipynb | 654 ++++++++++++++++++ Ojewale_Kehinde_Paul/README.md | 4 + Ojewale_Kehinde_Paul/Social_Network_Ads.csv | 401 +++++++++++ 3 files changed, 1059 insertions(+) create mode 100644 Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb create mode 100644 Ojewale_Kehinde_Paul/README.md create mode 100644 Ojewale_Kehinde_Paul/Social_Network_Ads.csv diff --git a/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb b/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb new file mode 100644 index 0000000..8152596 --- /dev/null +++ b/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb @@ -0,0 +1,654 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# Logistic Regression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading of Data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.read_csv(\"C:/Users/kenny/Desktop/New folder/Social_Network_Ads.csv\")\n", + "X = df.iloc[:, [2, 3]].values\n", + "y = df.iloc[:, 4].values" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
User IDGenderAgeEstimatedSalaryPurchased
015624510Male19190000
115810944Male35200000
215668575Female26430000
315603246Female27570000
415804002Male19760000
\n", + "
" + ], + "text/plain": [ + " User ID Gender Age EstimatedSalary Purchased\n", + "0 15624510 Male 19 19000 0\n", + "1 15810944 Male 35 20000 0\n", + "2 15668575 Female 26 43000 0\n", + "3 15603246 Female 27 57000 0\n", + "4 15804002 Male 19 76000 0" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
User IDAgeEstimatedSalaryPurchased
count4.000000e+02400.000000400.000000400.000000
mean1.569154e+0737.65500069742.5000000.357500
std7.165832e+0410.48287734096.9602820.479864
min1.556669e+0718.00000015000.0000000.000000
25%1.562676e+0729.75000043000.0000000.000000
50%1.569434e+0737.00000070000.0000000.000000
75%1.575036e+0746.00000088000.0000001.000000
max1.581524e+0760.000000150000.0000001.000000
\n", + "
" + ], + "text/plain": [ + " User ID Age EstimatedSalary Purchased\n", + "count 4.000000e+02 400.000000 400.000000 400.000000\n", + "mean 1.569154e+07 37.655000 69742.500000 0.357500\n", + "std 7.165832e+04 10.482877 34096.960282 0.479864\n", + "min 1.556669e+07 18.000000 15000.000000 0.000000\n", + "25% 1.562676e+07 29.750000 43000.000000 0.000000\n", + "50% 1.569434e+07 37.000000 70000.000000 0.000000\n", + "75% 1.575036e+07 46.000000 88000.000000 1.000000\n", + "max 1.581524e+07 60.000000 150000.000000 1.000000" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "User ID 400\n", + "Gender 400\n", + "Age 400\n", + "EstimatedSalary 400\n", + "Purchased 400\n", + "dtype: int64" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.count()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting of Data" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEKCAYAAADEovgeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztnXuYFNW16H+LAYQE5KFIUIQhOGJG0AFJECMBgyPGGDHXGBWP4COHo8FgND5ici4mnuRcveTGIydEYwIqOQqKxwfJwZDROIqKmAFRcJSICjKKA/IKJEOAYd0/qnroGbqre6q7uqq61+/7+uveu3ZVrdrdvdfea6+9tqgqhmEYhhEkHcIWwDAMwyh+TNkYhmEYgWPKxjAMwwgcUzaGYRhG4JiyMQzDMALHlI1hGIYROKZsDMMwjMAxZWMYhmEEjikbwzAMI3A6hi1AVDjyyCO1vLw8bDEMwzBixYoVKz5R1T6ZypmycSkvL6euri5sMQzDMGKFiGzIppyZ0QzDMIzAMWVjGIZhBI4pG8MwDCNwbM7Gg3379tHQ0MCePXvCFsVw6dKlC/3796dTp05hi2IYRjswZeNBQ0MD3bt3p7y8HBEJW5ySR1XZunUrDQ0NDBo0KGxxDMNoB2ZG82DPnj0cccQRpmgigohwxBFHZDfSHDfOeRmGX+w3lFdM2WTAFE20sO/DMOKJmdGM4iLRE33++dbp2trU5drmlxJWB6nJ9jdktAsb2cSAJ554AhHh7bffTnn88ssv57HHHsv6eh999BHf+MY3AFi1ahWLFy9uOVZbW8vLL7/cbhnLy8v55JNP2n0eAGvXOi/DMIoWG9nEgPnz53P66aezYMECfvSjH+V8vaOPPrpFOa1atYq6ujrOOeccwFE23bp147TTTsv5PqGQ6H1mGtGUcq/V6sCbTL8hwxc2ssk3eZ5U3L17Ny+99BJz5sxhwYIFgOOVde2111JZWclXv/pVNm/e3FK+vLycH/zgB4wePZqRI0eycuVKJkyYwODBg7n33nsBWL9+PUOHDmXv3r3MmDGDRx55hKqqKu68807uvfde7rrrLqqqqli6dClbtmzhggsu4POf/zyf//zneemllwDYunUrZ511FsOHD+df/uVfUNX2P1xiRLNrl/OKwwjHJo0Nwxc2sok4Tz75JGeffTbHH388vXv3ZuXKlaxfv561a9eyevVqGhsbqays5Morr2w559hjj2XZsmVcf/31XH755bz00kvs2bOHE088kauvvrqlXOfOnbn99tupq6vjF7/4BQBNTU1069aNG2+8EYBJkyZx/fXXc/rpp/PBBx8wYcIE3nrrLX784x9z+umnM2PGDP7nf/6H++67r7AVk4l0vdEwe61R6Slbz/0gXnVQyvUSAKZs8kVApon58+fz3e9+F4CLL76Y+fPns2/fPi655BLKyso4+uij+fKXv9zqnPPOOw+AYcOGsXv3brp370737t3p0qULO3bsaNf9n3nmGerr61vSf/3rX9m1axcvvPACjz/+OABf/epX6dWrV/sfbsgQ5z0xmkmko4iZngwjJ0zZRJitW7fypz/9iTVr1iAiNDc3IyJ8/etf93QBPuywwwDo0KFDy+dEev/+/e2S4cCBAyxbtoyuXbsecizWbshhjGiipqjCvn+YRPU7KWJsziZf1NY6r7FjnVcinQOPPfYYkydPZsOGDaxfv56NGzcyaNAgevfuzYIFC2hubmbTpk0899xzvu/RvXt3du3alTZ91llntZjYwHEoAPjSl77EQw89BMDTTz/N9u3bfcvAkCHRHtVAdt+vzefkhtWff2JQd6ZsIsz8+fP5+te/3irvggsu4OOPP6aiooJhw4ZxzTXXMHbsWN/3OOOMM6ivr6eqqopHHnmEr33tazzxxBMtDgKzZs2irq6Ok046icrKyhYng9tuu40XXniBESNG8Mc//pEBAwbk9KxFTUIx9ejhvPLQETFyJNfOYQwa9xYiIqv48iIqQkaOHKltN0976623+NznPheSREY6Ive9tDXJJJR/24n4dMdLnTDrx6/5LCpmt2zqLmBZRWSFqo7MVM7mbAwjzkSl0YsrfpVMHOZ6IiarKRvDyJVMrsTmauxNrvVTyvUao99WYMpGROYC5wKbVXVom2M3AjOBPqr6iThuTXcD5wB/By5X1ZVu2SnAv7qn/kRVH3TzTwEeALoCi4HrVFVFpDfwCFAOrAe+qao5zF4bRgSJWK81aGrqG1n6zhbGVPShurJveILEqHGPmqxBjmweAH4BzEvOFJFjgWrgg6TsrwAV7msUcA8wylUctwEjAQVWiMgiV3ncA0wFXsFRNmcDTwPfB55V1TtE5Ptu+paAntEwDpLpzxzlhikKpKmfmvpG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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pos , neg = (y==1).reshape(400,1) , (y==0).reshape(400,1)\n", + "plt.scatter(X[pos[:,0],0],X[pos[:,0],1],c=\"r\",marker=\"+\")\n", + "plt.scatter(X[neg[:,0],0],X[neg[:,0],1],marker=\"o\",s=10)\n", + "plt.xlabel(\"Exam 1 score\")\n", + "plt.ylabel(\"Exam 2 score\")\n", + "plt.legend([\"Admitted\",\"Not admitted\"],loc=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sigmoid function\n", + "\n", + "$ g(z) = \\frac{1}{(1+e^{-z})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " \"\"\"\n", + " return the sigmoid of z\n", + " \"\"\"\n", + " \n", + " return 1/ (1 + np.exp(-z))" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# performing a test computation with the sigmoid function\n", + "sigmoid(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "def costFunction(theta, X, y):\n", + " \"\"\"\n", + " Takes in numpy array theta, x and y and return the logistic regression cost function and gradient\n", + " \"\"\"\n", + " \n", + " m=len(y)\n", + " \n", + " predictions = sigmoid(np.dot(X,theta))\n", + " error = (-y * np.log(predictions)) - ((1-y)*np.log(1-predictions))\n", + "\n", + " cost = 1/m * sum(error)\n", + " \n", + " grad = 1/m * np.dot(X.transpose(),(predictions - y))\n", + " \n", + " return cost[0] , grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feature scaling" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def featureNormalization(X):\n", + " \"\"\"\n", + " Take in numpy array of X values and return normalize X values,\n", + " the mean and standard deviation of each feature\n", + " \"\"\"\n", + " mean=np.mean(X,axis=0)\n", + " std=np.std(X,axis=0)\n", + " \n", + " X_norm = (X - mean)/std\n", + " \n", + " return X_norm , mean , std" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost of initial theta is 0.6931471805599467\n", + "Gradient at initial theta (zeros): [[ 0.1425 ]\n", + " [-0.29831974]\n", + " [-0.17353327]]\n" + ] + } + ], + "source": [ + "m , n = X.shape[0], X.shape[1]\n", + "X, X_mean, X_std = featureNormalization(X)\n", + "X= np.append(np.ones((m,1)),X,axis=1)\n", + "y=y.reshape(m,1)\n", + "initial_theta = np.zeros((n+1,1))\n", + "cost, grad= costFunction(initial_theta,X,y)\n", + "print(\"Cost of initial theta is\",cost)\n", + "print(\"Gradient at initial theta (zeros):\",grad)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gradient Descent" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def gradientDescent(X,y,theta,alpha,num_iters):\n", + " \"\"\"\n", + " Take in numpy array X, y and theta and update theta by taking num_iters gradient steps\n", + " with learning rate of alpha\n", + " \n", + " return theta and the list of the cost of theta during each iteration\n", + " \"\"\"\n", + " \n", + " m=len(y)\n", + " J_history =[]\n", + " \n", + " for i in range(num_iters):\n", + " cost, grad = costFunction(theta,X,y)\n", + " theta = theta - (alpha * grad)\n", + " J_history.append(cost)\n", + " \n", + " return theta , J_history" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "theta , J_history = gradientDescent(X,y,initial_theta,1,400)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Theta optimized by gradient descent: [[-1.13811482]\n", + " [ 2.44456097]\n", + " [ 1.22257273]]\n", + "The cost of the optimized theta: 0.34631422799604816\n" + ] + } + ], + "source": [ + "print(\"Theta optimized by gradient descent:\",theta)\n", + "print(\"The cost of the optimized theta:\",J_history[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing plot of Cost Function" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,1,'Cost function using Gradient Descent')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(J_history)\n", + "plt.xlabel(\"Iteration\")\n", + "plt.ylabel(\"$J(\\Theta)$\")\n", + "plt.title(\"Cost function using Gradient Descent\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Decision boundary\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[pos[:,0],1],X[pos[:,0],2],c=\"r\",marker=\"+\",label=\"purchased\")\n", + "plt.scatter(X[neg[:,0],1],X[neg[:,0],2],c=\"b\",marker=\"x\",label=\"Did_not_purchase\")\n", + "x_value= np.array([np.min(X[:,1]),np.max(X[:,1])])\n", + "y_value=-(theta[0] +theta[1]*x_value)/theta[2]\n", + "plt.plot(x_value,y_value, \"g\")\n", + "plt.xlabel(\"Age\")\n", + "plt.ylabel(\"Estimated Salary\")\n", + "plt.legend(loc=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prediction" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "def ClassifierPredict(theta,X):\n", + " predictions=X.dot(theta)\n", + " return predictions>0\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accuracy on training set " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train Accuracy: 84.5 %\n" + ] + } + ], + "source": [ + "p=ClassifierPredict(theta,X)\n", + "accuracy = 100*((sum(p==y)[0])/len(y))\n", + "print(\"Train Accuracy:\", accuracy,\"%\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Ojewale_Kehinde_Paul/README.md b/Ojewale_Kehinde_Paul/README.md new file mode 100644 index 0000000..ff10cdc --- /dev/null +++ b/Ojewale_Kehinde_Paul/README.md @@ -0,0 +1,4 @@ +This is an attempt at building a logostic regression algorithm from scratch. +This was implemented with python, using the numpy library +The dataset used to verify the performance of the model is a social networks Ads csv file. +The logistic regression algorithm was developed from scratch and its accuarcy was measured. \ No newline at end of file diff --git a/Ojewale_Kehinde_Paul/Social_Network_Ads.csv b/Ojewale_Kehinde_Paul/Social_Network_Ads.csv new file mode 100644 index 0000000..4a53849 --- /dev/null +++ b/Ojewale_Kehinde_Paul/Social_Network_Ads.csv @@ -0,0 +1,401 @@ +User ID,Gender,Age,EstimatedSalary,Purchased +15624510,Male,19,19000,0 +15810944,Male,35,20000,0 +15668575,Female,26,43000,0 +15603246,Female,27,57000,0 +15804002,Male,19,76000,0 +15728773,Male,27,58000,0 +15598044,Female,27,84000,0 +15694829,Female,32,150000,1 +15600575,Male,25,33000,0 +15727311,Female,35,65000,0 +15570769,Female,26,80000,0 +15606274,Female,26,52000,0 +15746139,Male,20,86000,0 +15704987,Male,32,18000,0 +15628972,Male,18,82000,0 +15697686,Male,29,80000,0 +15733883,Male,47,25000,1 +15617482,Male,45,26000,1 +15704583,Male,46,28000,1 +15621083,Female,48,29000,1 +15649487,Male,45,22000,1 +15736760,Female,47,49000,1 +15714658,Male,48,41000,1 +15599081,Female,45,22000,1 +15705113,Male,46,23000,1 +15631159,Male,47,20000,1 +15792818,Male,49,28000,1 +15633531,Female,47,30000,1 +15744529,Male,29,43000,0 +15669656,Male,31,18000,0 +15581198,Male,31,74000,0 +15729054,Female,27,137000,1 +15573452,Female,21,16000,0 +15776733,Female,28,44000,0 +15724858,Male,27,90000,0 +15713144,Male,35,27000,0 +15690188,Female,33,28000,0 +15689425,Male,30,49000,0 +15671766,Female,26,72000,0 +15782806,Female,27,31000,0 +15764419,Female,27,17000,0 +15591915,Female,33,51000,0 +15772798,Male,35,108000,0 +15792008,Male,30,15000,0 +15715541,Female,28,84000,0 +15639277,Male,23,20000,0 +15798850,Male,25,79000,0 +15776348,Female,27,54000,0 +15727696,Male,30,135000,1 +15793813,Female,31,89000,0 +15694395,Female,24,32000,0 +15764195,Female,18,44000,0 +15744919,Female,29,83000,0 +15671655,Female,35,23000,0 +15654901,Female,27,58000,0 +15649136,Female,24,55000,0 +15775562,Female,23,48000,0 +15807481,Male,28,79000,0 +15642885,Male,22,18000,0 +15789109,Female,32,117000,0 +15814004,Male,27,20000,0 +15673619,Male,25,87000,0 +15595135,Female,23,66000,0 +15583681,Male,32,120000,1 +15605000,Female,59,83000,0 +15718071,Male,24,58000,0 +15679760,Male,24,19000,0 +15654574,Female,23,82000,0 +15577178,Female,22,63000,0 +15595324,Female,31,68000,0 +15756932,Male,25,80000,0 +15726358,Female,24,27000,0 +15595228,Female,20,23000,0 +15782530,Female,33,113000,0 +15592877,Male,32,18000,0 +15651983,Male,34,112000,1 +15746737,Male,18,52000,0 +15774179,Female,22,27000,0 +15667265,Female,28,87000,0 +15655123,Female,26,17000,0 +15595917,Male,30,80000,0 +15668385,Male,39,42000,0 +15709476,Male,20,49000,0 +15711218,Male,35,88000,0 +15798659,Female,30,62000,0 +15663939,Female,31,118000,1 +15694946,Male,24,55000,0 +15631912,Female,28,85000,0 +15768816,Male,26,81000,0 +15682268,Male,35,50000,0 +15684801,Male,22,81000,0 +15636428,Female,30,116000,0 +15809823,Male,26,15000,0 +15699284,Female,29,28000,0 +15786993,Female,29,83000,0 +15709441,Female,35,44000,0 +15710257,Female,35,25000,0 +15582492,Male,28,123000,1 +15575694,Male,35,73000,0 +15756820,Female,28,37000,0 +15766289,Male,27,88000,0 +15593014,Male,28,59000,0 +15584545,Female,32,86000,0 +15675949,Female,33,149000,1 +15672091,Female,19,21000,0 +15801658,Male,21,72000,0 +15706185,Female,26,35000,0 +15789863,Male,27,89000,0 +15720943,Male,26,86000,0 +15697997,Female,38,80000,0 +15665416,Female,39,71000,0 +15660200,Female,37,71000,0 +15619653,Male,38,61000,0 +15773447,Male,37,55000,0 +15739160,Male,42,80000,0 +15689237,Male,40,57000,0 +15679297,Male,35,75000,0 +15591433,Male,36,52000,0 +15642725,Male,40,59000,0 +15701962,Male,41,59000,0 +15811613,Female,36,75000,0 +15741049,Male,37,72000,0 +15724423,Female,40,75000,0 +15574305,Male,35,53000,0 +15678168,Female,41,51000,0 +15697020,Female,39,61000,0 +15610801,Male,42,65000,0 +15745232,Male,26,32000,0 +15722758,Male,30,17000,0 +15792102,Female,26,84000,0 +15675185,Male,31,58000,0 +15801247,Male,33,31000,0 +15725660,Male,30,87000,0 +15638963,Female,21,68000,0 +15800061,Female,28,55000,0 +15578006,Male,23,63000,0 +15668504,Female,20,82000,0 +15687491,Male,30,107000,1 +15610403,Female,28,59000,0 +15741094,Male,19,25000,0 +15807909,Male,19,85000,0 +15666141,Female,18,68000,0 +15617134,Male,35,59000,0 +15783029,Male,30,89000,0 +15622833,Female,34,25000,0 +15746422,Female,24,89000,0 +15750839,Female,27,96000,1 +15749130,Female,41,30000,0 +15779862,Male,29,61000,0 +15767871,Male,20,74000,0 +15679651,Female,26,15000,0 +15576219,Male,41,45000,0 +15699247,Male,31,76000,0 +15619087,Female,36,50000,0 +15605327,Male,40,47000,0 +15610140,Female,31,15000,0 +15791174,Male,46,59000,0 +15602373,Male,29,75000,0 +15762605,Male,26,30000,0 +15598840,Female,32,135000,1 +15744279,Male,32,100000,1 +15670619,Male,25,90000,0 +15599533,Female,37,33000,0 +15757837,Male,35,38000,0 +15697574,Female,33,69000,0 +15578738,Female,18,86000,0 +15762228,Female,22,55000,0 +15614827,Female,35,71000,0 +15789815,Male,29,148000,1 +15579781,Female,29,47000,0 +15587013,Male,21,88000,0 +15570932,Male,34,115000,0 +15794661,Female,26,118000,0 +15581654,Female,34,43000,0 +15644296,Female,34,72000,0 +15614420,Female,23,28000,0 +15609653,Female,35,47000,0 +15594577,Male,25,22000,0 +15584114,Male,24,23000,0 +15673367,Female,31,34000,0 +15685576,Male,26,16000,0 +15774727,Female,31,71000,0 +15694288,Female,32,117000,1 +15603319,Male,33,43000,0 +15759066,Female,33,60000,0 +15814816,Male,31,66000,0 +15724402,Female,20,82000,0 +15571059,Female,33,41000,0 +15674206,Male,35,72000,0 +15715160,Male,28,32000,0 +15730448,Male,24,84000,0 +15662067,Female,19,26000,0 +15779581,Male,29,43000,0 +15662901,Male,19,70000,0 +15689751,Male,28,89000,0 +15667742,Male,34,43000,0 +15738448,Female,30,79000,0 +15680243,Female,20,36000,0 +15745083,Male,26,80000,0 +15708228,Male,35,22000,0 +15628523,Male,35,39000,0 +15708196,Male,49,74000,0 +15735549,Female,39,134000,1 +15809347,Female,41,71000,0 +15660866,Female,58,101000,1 +15766609,Female,47,47000,0 +15654230,Female,55,130000,1 +15794566,Female,52,114000,0 +15800890,Female,40,142000,1 +15697424,Female,46,22000,0 +15724536,Female,48,96000,1 +15735878,Male,52,150000,1 +15707596,Female,59,42000,0 +15657163,Male,35,58000,0 +15622478,Male,47,43000,0 +15779529,Female,60,108000,1 +15636023,Male,49,65000,0 +15582066,Male,40,78000,0 +15666675,Female,46,96000,0 +15732987,Male,59,143000,1 +15789432,Female,41,80000,0 +15663161,Male,35,91000,1 +15694879,Male,37,144000,1 +15593715,Male,60,102000,1 +15575002,Female,35,60000,0 +15622171,Male,37,53000,0 +15795224,Female,36,126000,1 +15685346,Male,56,133000,1 +15691808,Female,40,72000,0 +15721007,Female,42,80000,1 +15794253,Female,35,147000,1 +15694453,Male,39,42000,0 +15813113,Male,40,107000,1 +15614187,Male,49,86000,1 +15619407,Female,38,112000,0 +15646227,Male,46,79000,1 +15660541,Male,40,57000,0 +15753874,Female,37,80000,0 +15617877,Female,46,82000,0 +15772073,Female,53,143000,1 +15701537,Male,42,149000,1 +15736228,Male,38,59000,0 +15780572,Female,50,88000,1 +15769596,Female,56,104000,1 +15586996,Female,41,72000,0 +15722061,Female,51,146000,1 +15638003,Female,35,50000,0 +15775590,Female,57,122000,1 +15730688,Male,41,52000,0 +15753102,Female,35,97000,1 +15810075,Female,44,39000,0 +15723373,Male,37,52000,0 +15795298,Female,48,134000,1 +15584320,Female,37,146000,1 +15724161,Female,50,44000,0 +15750056,Female,52,90000,1 +15609637,Female,41,72000,0 +15794493,Male,40,57000,0 +15569641,Female,58,95000,1 +15815236,Female,45,131000,1 +15811177,Female,35,77000,0 +15680587,Male,36,144000,1 +15672821,Female,55,125000,1 +15767681,Female,35,72000,0 +15600379,Male,48,90000,1 +15801336,Female,42,108000,1 +15721592,Male,40,75000,0 +15581282,Male,37,74000,0 +15746203,Female,47,144000,1 +15583137,Male,40,61000,0 +15680752,Female,43,133000,0 +15688172,Female,59,76000,1 +15791373,Male,60,42000,1 +15589449,Male,39,106000,1 +15692819,Female,57,26000,1 +15727467,Male,57,74000,1 +15734312,Male,38,71000,0 +15764604,Male,49,88000,1 +15613014,Female,52,38000,1 +15759684,Female,50,36000,1 +15609669,Female,59,88000,1 +15685536,Male,35,61000,0 +15750447,Male,37,70000,1 +15663249,Female,52,21000,1 +15638646,Male,48,141000,0 +15734161,Female,37,93000,1 +15631070,Female,37,62000,0 +15761950,Female,48,138000,1 +15649668,Male,41,79000,0 +15713912,Female,37,78000,1 +15586757,Male,39,134000,1 +15596522,Male,49,89000,1 +15625395,Male,55,39000,1 +15760570,Male,37,77000,0 +15566689,Female,35,57000,0 +15725794,Female,36,63000,0 +15673539,Male,42,73000,1 +15705298,Female,43,112000,1 +15675791,Male,45,79000,0 +15747043,Male,46,117000,1 +15736397,Female,58,38000,1 +15678201,Male,48,74000,1 +15720745,Female,37,137000,1 +15637593,Male,37,79000,1 +15598070,Female,40,60000,0 +15787550,Male,42,54000,0 +15603942,Female,51,134000,0 +15733973,Female,47,113000,1 +15596761,Male,36,125000,1 +15652400,Female,38,50000,0 +15717893,Female,42,70000,0 +15622585,Male,39,96000,1 +15733964,Female,38,50000,0 +15753861,Female,49,141000,1 +15747097,Female,39,79000,0 +15594762,Female,39,75000,1 +15667417,Female,54,104000,1 +15684861,Male,35,55000,0 +15742204,Male,45,32000,1 +15623502,Male,36,60000,0 +15774872,Female,52,138000,1 +15611191,Female,53,82000,1 +15674331,Male,41,52000,0 +15619465,Female,48,30000,1 +15575247,Female,48,131000,1 +15695679,Female,41,60000,0 +15713463,Male,41,72000,0 +15785170,Female,42,75000,0 +15796351,Male,36,118000,1 +15639576,Female,47,107000,1 +15693264,Male,38,51000,0 +15589715,Female,48,119000,1 +15769902,Male,42,65000,0 +15587177,Male,40,65000,0 +15814553,Male,57,60000,1 +15601550,Female,36,54000,0 +15664907,Male,58,144000,1 +15612465,Male,35,79000,0 +15810800,Female,38,55000,0 +15665760,Male,39,122000,1 +15588080,Female,53,104000,1 +15776844,Male,35,75000,0 +15717560,Female,38,65000,0 +15629739,Female,47,51000,1 +15729908,Male,47,105000,1 +15716781,Female,41,63000,0 +15646936,Male,53,72000,1 +15768151,Female,54,108000,1 +15579212,Male,39,77000,0 +15721835,Male,38,61000,0 +15800515,Female,38,113000,1 +15591279,Male,37,75000,0 +15587419,Female,42,90000,1 +15750335,Female,37,57000,0 +15699619,Male,36,99000,1 +15606472,Male,60,34000,1 +15778368,Male,54,70000,1 +15671387,Female,41,72000,0 +15573926,Male,40,71000,1 +15709183,Male,42,54000,0 +15577514,Male,43,129000,1 +15778830,Female,53,34000,1 +15768072,Female,47,50000,1 +15768293,Female,42,79000,0 +15654456,Male,42,104000,1 +15807525,Female,59,29000,1 +15574372,Female,58,47000,1 +15671249,Male,46,88000,1 +15779744,Male,38,71000,0 +15624755,Female,54,26000,1 +15611430,Female,60,46000,1 +15774744,Male,60,83000,1 +15629885,Female,39,73000,0 +15708791,Male,59,130000,1 +15793890,Female,37,80000,0 +15646091,Female,46,32000,1 +15596984,Female,46,74000,0 +15800215,Female,42,53000,0 +15577806,Male,41,87000,1 +15749381,Female,58,23000,1 +15683758,Male,42,64000,0 +15670615,Male,48,33000,1 +15715622,Female,44,139000,1 +15707634,Male,49,28000,1 +15806901,Female,57,33000,1 +15775335,Male,56,60000,1 +15724150,Female,49,39000,1 +15627220,Male,39,71000,0 +15672330,Male,47,34000,1 +15668521,Female,48,35000,1 +15807837,Male,48,33000,1 +15592570,Male,47,23000,1 +15748589,Female,45,45000,1 +15635893,Male,60,42000,1 +15757632,Female,39,59000,0 +15691863,Female,46,41000,1 +15706071,Male,51,23000,1 +15654296,Female,50,20000,1 +15755018,Male,36,33000,0 +15594041,Female,49,36000,1 \ No newline at end of file From bf3cea3f4d2d6f8073716566027263643afebfe0 Mon Sep 17 00:00:00 2001 From: Ojewale Kehinde Date: Thu, 23 Apr 2020 13:29:45 +0100 Subject: [PATCH 2/2] Updated DSN algorithm challenge files --- ...sticRegressionFromScratch-checkpoint.ipynb | 661 ++++++++++++++++++ .../LogisticRegressionFromScratch.ipynb | 73 +- 2 files changed, 701 insertions(+), 33 deletions(-) create mode 100644 Ojewale_Kehinde_Paul/.ipynb_checkpoints/LogisticRegressionFromScratch-checkpoint.ipynb diff --git a/Ojewale_Kehinde_Paul/.ipynb_checkpoints/LogisticRegressionFromScratch-checkpoint.ipynb b/Ojewale_Kehinde_Paul/.ipynb_checkpoints/LogisticRegressionFromScratch-checkpoint.ipynb new file mode 100644 index 0000000..9f0534f --- /dev/null +++ b/Ojewale_Kehinde_Paul/.ipynb_checkpoints/LogisticRegressionFromScratch-checkpoint.ipynb @@ -0,0 +1,661 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "# Logistic Regression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Loading of Data" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df=pd.read_csv(\"C:/Users/kenny/Desktop/New folder/Social_Network_Ads.csv\")\n", + "X = df.iloc[:, [2, 3]].values\n", + "y = df.iloc[:, 4].values" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
User IDGenderAgeEstimatedSalaryPurchased
015624510Male19190000
115810944Male35200000
215668575Female26430000
315603246Female27570000
415804002Male19760000
\n", + "
" + ], + "text/plain": [ + " User ID Gender Age EstimatedSalary Purchased\n", + "0 15624510 Male 19 19000 0\n", + "1 15810944 Male 35 20000 0\n", + "2 15668575 Female 26 43000 0\n", + "3 15603246 Female 27 57000 0\n", + "4 15804002 Male 19 76000 0" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
User IDAgeEstimatedSalaryPurchased
count4.000000e+02400.000000400.000000400.000000
mean1.569154e+0737.65500069742.5000000.357500
std7.165832e+0410.48287734096.9602820.479864
min1.556669e+0718.00000015000.0000000.000000
25%1.562676e+0729.75000043000.0000000.000000
50%1.569434e+0737.00000070000.0000000.000000
75%1.575036e+0746.00000088000.0000001.000000
max1.581524e+0760.000000150000.0000001.000000
\n", + "
" + ], + "text/plain": [ + " User ID Age EstimatedSalary Purchased\n", + "count 4.000000e+02 400.000000 400.000000 400.000000\n", + "mean 1.569154e+07 37.655000 69742.500000 0.357500\n", + "std 7.165832e+04 10.482877 34096.960282 0.479864\n", + "min 1.556669e+07 18.000000 15000.000000 0.000000\n", + "25% 1.562676e+07 29.750000 43000.000000 0.000000\n", + "50% 1.569434e+07 37.000000 70000.000000 0.000000\n", + "75% 1.575036e+07 46.000000 88000.000000 1.000000\n", + "max 1.581524e+07 60.000000 150000.000000 1.000000" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "User ID 400\n", + "Gender 400\n", + "Age 400\n", + "EstimatedSalary 400\n", + "Purchased 400\n", + "dtype: int64" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df.count()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plotting of Data" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEKCAYAAADEovgeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztvXuYFNW1uP0uZkCIF0AFJCCXmBEzoiBg8BKEiCNeSPASk6BRUCOJByUn+QWjSY5GTfKZYx49Eg2GiBfOUVFMVOLBQ0YFJRFBUIw6BkHlMgIDIiDEQWaG9f1R1UPP0F3dU93VVdW93ufpp3vv2lW1anf3XnuvvfbaoqoYhmEYRpC0C1sAwzAMo/gxZWMYhmEEjikbwzAMI3BM2RiGYRiBY8rGMAzDCBxTNoZhGEbgmLIxDMMwAseUjWEYhhE4pmwMwzCMwCkPW4CocPjhh2u/fv3CFsMwDCNWLF++/CNV7ZapnCkbl379+rFs2bKwxTAMw4gVIrI2m3JmRjMMwzACx5SNYRiGETimbAzDMIzAsTkbDxoaGqitrWX37t1hi2IERMeOHenduzft27cPWxTDKGpM2XhQW1vLwQcfTL9+/RCRsMUx8oyqsnXrVmpra+nfv3/Y4hhGUWNmNA92797NYYcdZoomjqxc6bw8EBEOO+wwG7kaqRk1ynkZecGUTQZM0RQ39v0aRmEwM5pRXCRGMzt3tkwPGJC6XOv8UiLRa1+4MEwpokeiXl58sWXa6iknbGQTccrKyhg8eDADBw7koosu4tNPP835mmvWrGHgwIF5kC47Jk6cyBNPPJG+QBYmL8Mw4o2NbCJOp06dWLFiBQCXXHIJ9957Lz/60Y+yOrexsZHy8hL7ihMjlUwjmuSRz6ZN8KUvFUa+KGA9d28S9WD1kldsZJNvApxUHDFiBKtXr95vZPLb3/6WX/ziF+7tR/HTn/6UkSNHctddd1FXV8f555/PoEGDGDRoEC+//DIATU1NXHXVVRx77LGceeaZ1NfXA/DHP/6RE088kUGDBnHhhRc2j6TmzJnDwIEDGTRoEKeddlrzNaZOncqJJ57I8ccfzx/+8AfA8fK65pprqKys5Nxzz2Xz5s2pHygxotm503nFYYRjk8aG4YsS6/bGl8bGRp599lnOOuusjGW3b9/Oi26v9Vvf+hYjR47kySefpKmpiV27drFt2zZWrVrFo48+yh//+Ee++c1v8qc//YnvfOc7XHDBBVx11VUA/PznP2fmzJlce+213HLLLcyfP59evXqxfft2AGbOnEnnzp159dVX+eyzzzj11FM588wzef3111m5ciVvvvkmdXV1VFZWcsUVVwRXOalINxeTauSzd29hZIpKT9l67vvwqoNSrpcAMGWTLwIyTdTX1zN48GDAGdlceeWVbNiwwfOcb33rW82fX3jhBWbNmgU48z+dO3dm27Zt9O/fv/m6Q4cOZc2aNQC89dZb/PznP2f79u3s2rWLMWPGAHDqqacyceJEvvnNb3LBBRcA8Ne//pV//OMfzfMxO3bsYNWqVbz00kuMHz+esrIyPv/5z3P66aenFjSTyStKmOnJMHLClE3ESZ6zSVBeXs7epN5463UiBx54YMbrHnDAAc2fy8rKms1oEydO5KmnnmLQoEE8+OCDLHQb03vvvZclS5bwv//7vwwePJgVK1agqvzud79rVkgJ5s2bF32X4kIqtqgqqrDvHyZR/U6KGJuzyRcLFzqvkSOdVyIdAD169GDz5s1s3bqVzz77jGeeeSZt2dGjRzN9+nTAmWP55JNPPK+9c+dOevbsSUNDAw8//HBz/nvvvcfw4cO55ZZbOPzww1m/fj1jxoxh+vTpNDQ0APDuu+/yr3/9i9NOO43Zs2fT1NTExo0bWbBggfcDDRgQ7VENZPf92nxOblj9+ScGdWcjmxjSvn17brzxRoYPH07//v055phj0pa96667mDRpEjNnzqSsrIzp06fTs2fPtOVvvfVWhg8fTt++fTnuuOPY6XptTZ06lVWrVqGqjB49mkGDBnH88cezZs0ahgwZgqrSrVs3nnrqKc4//3xeeOEFjjvuOI4++mhGjhyZ9zqIFQml1KVLy7QRHrnOW8VpJBQRWUVVQxUgKgwbNkxbb572zjvv8KVScoktUXL+nlubZBLKtXWDlu54qRNm/cRd2WRTdwHLKiLLVXVYpnI2sjGMOBOVRi+u+FUycZjriZispmwMI1cymWTM1dibUjJp5ZsY/bYCUzYicj8wFtisqgNbHfsxcDvQTVU/Esd16S7gHOBTYKKqvuaWnQD83D31l6r6kJs/FHgQ6ATMA36gqioihwKPAf2ANcA3VXVbUM9pGKEQsV5r0FTX1LFo1RZGVHSjqrJHeILEqHGPmqxBjmweBO4GZiVnisiRQBWwLin7bKDCfQ0HpgPDXcVxEzAMUGC5iMx1lcd0YBLwCo6yOQt4FrgeeF5VbxOR6930TwJ6RsPYR6Y/c5QbpiiQpn6qa+qY8ujr1Dc0MWdZLdPGn+AonBJTuJ7E4JkDUzaq+pKI9Etx6E7gOuDppLxxwCx1vBVeEZEuItITGAVUq+rHACJSDZwlIguBQ1R1sZs/CzgPR9mMc88DeAhYiCkbo9gIs9da4HsuWrWF+oYmAOobmli0aku4oxuIRePeTERkLeicjYh8HfhQVd9oteivF7A+KV3r5nnl16bIB+ihqhsBVHWjiHTP60MYhlFQRlR0Y86yWuobmujUvowRFd2cAxEzExneFGxRp4h8DvgZcGOqwyny1Ed+W2WaJCLLRGTZli1b2np6QUhsMXDssccyaNAg7rjjjuboAcuWLWPKlCkpz+vXrx8fffRRzvd/6qmnqKmpyfk6beHBBx/kmmuuKeg9Y0uAi4f3I7Fw8MUXnVeBFhJWVfZg2ltzuGzTa/tMaIUgBgsl40QhRzZHAf2BxKimN/CaiHwZZ2RyZFLZ3sAGN39Uq/yFbn7vFOUB6kSkpzuq6QmkCTkMqjoDmAHOOhu/DxYkyeFqNm/ezMUXX8yOHTu4+eabGTZsGMOGZXRvz4mnnnqKsWPHUllZ6V3QR3yzpqYmysrKcpAuZlgP3DdV296jatt7UPkf+x+0+owFBRvZqOqbqtpdVfupaj8chTFEVTcBc4HLxOEkYIdrCpsPnCkiXUWkK3AmMN89tlNETnI92S5j3xzQXGCC+3kCLeeGYk337t2ZMWMGd999N6rKwoULGTt2LABbt27lzDPP5IQTTuB73/se6RbrHnTQQfzsZz9j0KBBnHTSSdTV1QGwdu1aRo8ezfHHH8/o0aNZt24dL7/8MnPnzmXq1KkMHjyY9957r8W1Jk6cyPe//31GjBjB0WPG8Iwblqb1yGTs2LHNMdYOOuig5ugHixcv5tVXX+WUU05h0KBBfPnLX26OWLBhwwbOOussKioquO6665qvdfXVVzNs2DCOPfZYbrrppub866+/nsrKSo4//nh+/OMfA7BlyxYuvPBCTjzxRE488UT+/ve/51L9RgFDMjUTxmgqpBFc0aOqgbyAR4GNQAOOYrmy1fE1wOHuZwHuAd4D3gSGJZW7Aljtvi5Pyh8GvOWeczf7oiEcBjwPrHLfD81G3qFDh2prampq9svLxF/f3qT/8dSb+te3N7X53FQceOCB++V16dJFN23apAsWLNBzzz1XVVWvvfZavfnmm1VV9ZlnnlFAt2zZst+5gM6dO1dVVadOnaq33nqrqqqOHTtWH3zwQVVVnTlzpo4bN05VVSdMmKBz5sxJKduECRN0zFe+ok01Nfrun/6kvbp31/o33tAHfv1rnTx5cnO5c889VxcsWNB8/8cee0xVVT/77DPt37+/Ll26VFVVd+zYoQ0NDfrAAw9o//79dfv27VpfX699+vTRdevWqarq1q1bVVW1sbFRR44cqW+88YZu3bpVjz76aN27d6+qqm7btk1VVcePH6+LFi1SVdW1a9fqMccck/I5/HzPbWLkSOcFziuRjiuFlD+Muiu27ytggGWaRRsbpDfa+AzH+yV9VmBymnL3A/enyF8G7Le3sapuBUa3Udy8kNZFM89oilHLSy+9xJ///GcAzj33XLp27Zry3A4dOjSPhoYOHUp1dTUAixcvbj7/0ksvbTGa8OKbZ59Nu3btqOjThy/06sU/33/fs3xZWRkXXnghACtXrqRnz56ceOKJABxyyCHN5UaPHk3nzp1h5Uoq+/Zl7dq1HHnkkTz++OPMmDGDxsZGNm7cSE1NDZWVlXTs2JHvfve7nHvuuc7zrVzJc/Pnt5hv+uSTT9i5cycHH3xwVs9mpKGQZqswnADM8SAQLIJAHimEi+b7779PWVkZ3bt355133mlxLJuw/u3bt28uV1ZWRmNjY8py2W4RID17OvM0K1dCWRnSvz/lu3axd/0+J8LkLRA6duzYPE+jqmnv02ILhHbtaGxs5IMPPuC3v/0tr776Kl27dmXixIns3r2b8vJyli5dyvPPP8/s2bO5++67eWH6dPbu3cvixYvp1KlTVs8SGLk2XokAnu6mdSVJq202jPhhWwzkkREV3ejU3mlIW7ho5oktW7bw/e9/n2uuuWa/Rvq0005r3hLg2WefZdu2tgVNOOWUU5g9ezYADz/8MF/5ylcAOPjgg5vnUVIxZ84c9u7dy3vr1vH++vUMGDCAfv36sWLFCvbu3cv69etZunRpynOPOeYYNmzYwKuvvgo42xs0K79t2/ZtGd3UBOvW8ck//sGBBx5I586dqaur49lnnwVg165d7Nixg3POOYf/mjyZFa+9Bjt3cubw4dx9003Nzgut9wUyYsTgwc4rz1TX1HHj029RXVO3/8FCevqVADayySNVlT2YNv6EvIbVSOzU2dDQQHl5OZdeeik/+tGP9it30003MX78eIYMGcLIkSPp06dPm+4zbdo0rrjiCm6//Xa6devGAw88AMC3v/1trrrqKqZNm8YTTzzBUUcd1eK8AQMGMHLkSOrq6rj3vvvo2LEjp556Kv379+e4445j4MCBDBkyJOU9O3TowGOPPca1115LfX09nTp14rnnnksr46BjjuGEE07g2GOP5Qtf+AKnnnoq4CipcePGsXv3bnT3bu68/nrnmX78YybfcQfHf/3rNJaVcdppp3Hvvfe2qV7yit8RzY4dLdOlNMIJMEpAoczebaKITXe2xYCLbTHQdiZOnMjYsWP5xje+EdxN/G4Z3YbzIvs9t1Y2nTs77wVQNpGJRRbg9gM3Pv0WsxavbU5fdnJfbhm33zRwYYmhsrEtBgwj7iSUSoFHNJHq8Qc4WZ82MkEYlECcN1M2hm8efPDB4G/id7voqG8zHWFycnQJqpEMYL4tCLO3kR5TNhnw8pgy4k8szMgFnqOJVI8/QQDOAeAonIIqmTD2PIrIKMmUjQcdO3Zk69atHHbYYaZwihBVZevWrXTs2DFsUSKFrx5/UGagEjAvlQqmbDzo3bs3tbW1RDVIp5E7HTt2pHfv3pkLlhhV//YtqsAa9XyRrdIMYkQTEUVtysaD9u3b079//7DFMIzoE5QZyFbzFw2mbAzD2EfEesNFg4XdMWVjGEYeCapBM2UXe0zZGEa+iEgPMici1hsuOsKoz4h8hxYbzTAMwwgcG9kYRq4U4zxHnGWPMsXw2/CJjWwMwzCMwLGRjVEYSrhHZxhFOfptIzayMQzDMALHRjZGsJRCjy5oD65irLNSIx+/kZj/DmxkYxiGYQROYCMbEbkfGAtsVtWBbt7twNeAPcB7wOWqut09dgNwJdAETFHV+W7+WcBdQBlwn6re5ub3B2YDhwKvAZeq6h4ROQCYBQwFtgLfUtU1QT2nkYFSWrcR1IimmEeFpUYuI5qY/w6CHNk8CJzVKq8aGKiqxwPvAjcAiEgl8G3gWPec34tImYiUAfcAZwOVwHi3LMBvgDtVtQLYhqOocN+3qeoXgTvdckapMWrUvj+lYRihE9jIRlVfEpF+rfL+mpR8BUjsJzwOmK2qnwEfiMhq4MvusdWq+j6AiMwGxonIO8DpwMVumYeAXwDT3Wv9ws1/ArhbRERjsXFJEROzXlgkKKVRYSZKuQ6K5HcQpoPAFcBj7udeOMonQa2bB7C+Vf5w4DBgu6o2pijfK3GOqjaKyA63/Ef5fgAjghSJycEwio1QlI2I/AxoBB5OZKUopqQ286lHea9rpZJjEjAJoE+fPh4SG5EkaookKHmi8nxhYJ2HfcT8mQuubERkAo7jwOgk01YtcGRSsd7ABvdzqvyPgC4iUu6ObpLLJ65VKyLlQGfg41SyqOoMYAbAsGHDzMyWgeqauujv1574Q3bp0jJthE8pKwqjsMrG9Sz7CTBSVT9NOjQXeERE7gA+D1QAS3FGKRWu59mHOE4EF6uqisgCnDmf2cAE4Omka00AFrvHX7D5mtyprqljyqOvU9/QxJxltUwbf0J4CieL3m513yEs6j2QETV1wctpve/gKJL5CiNY1+dHgVHA4SJSC9yE4312AFAtIgCvqOr3VfVtEXkcqMExr01W1Sb3OtcA83Fcn+9X1bfdW/wEmC0ivwReB2a6+TOB/3adDD7GUVBGjixatYX6hiYA6huaWLRqSzRHN6NGUd31KKacMZn69h2Z88Bipq3+C1VPzsx8rhEMpowNgvVGG58iO+0/XlV/BfwqRf48YF6K/PfZ57GWnL8buKhNwhoZGVHRjTnLaqlvaKJT+zJGVHQryH1Tmu4y9HYXde5HffuOANSXtWdR535UBSmk9b6Dx+o09li4GiMrqip7MG38CQWds/Flulu4kBE1dcx5YDH1Ze0dxXjdpDbfN/JzU3HClLGBKRujDVRV9iho45vRdJem0aqq7MG01X9hUed+jLhuUptkzmluyhpRw0iLKRsjsuRiuqt6cqYv01loc1Ol0OvP9GwRqwMb4eYXUzZGZAnSdJeuIRlR0Y05f1u9zwRXoLmpyBGxhr/QRMr7skgwZWNEmiBMd14NSS4mOF+4jXr1h/Us6ncCI86/kqpt75VWIx9Bb7XYeF/GCFM2RsmRtiFxG7mqF190THBrnndOCLjRq+56FFOGnuO4ajc1OK7agd7Rgwg2/GEQlvdlMWPKxig5ItWQLFzIoqffon7xWsB11Z74w/CUTRhE0FstDO/LYseUjVFypG1IQmr0IjVPFMGGPywK7X1Z7JiyMUqSKDUkVZU9mHb5ydaLLmHFVgpIprBhbriYh1V1W2FECodhw4bpsmXLwhbDMAqHjV6CIU71mgdZRWS5qg7LVC6bnTqPAF4VkcdF5Cxxg5oZRilSXVPHjU+/RXVNXdiiGEasyDiyAXAVzJnA5cAw4HFgpqq+F6x4hcNGNhElQr3EZJfpTu3LorH2wk/9tPY4Gzmy7dcIggh9176Iar2mIo+y5nNkgxuif5P7agS6Ak+IyH+2WTLDiCmpXKYLwqhR+xoHw4gpGR0ERGQKzv4wHwH3AVNVtUFE2gGrgOuCFdEoSSK43iNSLtO51E/UPM4i+F37Imr16kUIsmbjjXYYcIGqrk3OVNW9IjI2GLEMI3oUfO1FsTTChkEGZeOOXi5U1ZtSHVfVdwKRyjAi2kuMjMt0ROvHF3Hcyjuoei/091nAuvZUNu7o5Q0R6aOq6wollGEYFJdC8SLxfDt2tEwX6/OWKNmY0XoCb4vIUuBfiUxV/XpgUhlGAmtwvPFTP2ae849X3eVSryXwnWSjbG4OXArDMNJTRA1OSkplBBdFouQgoKovBi6FYRiFwxp3/3jVXS71mut3EoPvMuM6GxE5SUReFZFdIrJHRJpE5JMszrtfRDaLyFtJeYeKSLWIrHLfu7r5IiLTRGS1iPxDRIYknTPBLb9KRCYk5Q8VkTfdc6YlIhuku4dhGBFn4cJIN5ZFRWLt1osvOq8CrOXKxox2N/BtYA5O9IDLgIosznvQPXdWUt71wPOqepuIXO+mfwKc7V6zAhgOTAeGi8ihwE3ufRVYLiJz3Tht04FJwCvAPOAs4FmPexilRAx6eqFjdeMfr7rLpV79jmhiMNeTVdRnVV0tImWq2gQ8ICIvZ3HOSyLSr1X2OGCU+/khYCGOIhgHzHIjFbwiIl1EpKdbtlpVPwYQkWrgLBFZCByiqovd/FnAeTjKJt09DCNYIvxHN4wWRHRR56ci0gFY4Yan2Qgc6PN+PVR1I4CqbhSR7m5+L2B9UrlaN88rvzZFvtc9jFIgRj09w8iZGM2/ZaNsLgXKgGuAHwJHAhfmWY5UkaTVR37bbioyCccUR58+fdp6umE4mIIz4kpUFnUCJIWpqSd3N+g6Eenpjjh6Apvd/FocJZagN7DBzR/VKn+hm987RXmve+yHqs4AZoAT9dnvQxkRIuienikSI4rE4PeYVtmIyJt4jBZU9Xgf95uLE9TzNvf96aT8a0RkNo6DwA5XWcwHfp3kUXYmcIOqfiwiO0XkJGAJjtPC7zLcwzCCIUamDMMIC6+RTU5BNkXkUZxRyeEiUovjVXYb8LiIXAmsAy5yi88DzgFWA5/i7JuDq1RuBV51y92ScBYArsbxeOuE4xjwrJuf7h5GkEStoQ1qRBOGqSxqdRsGVgexJ62yaR3lua2o6vg0h0anKKvA5DTXuR+4P0X+MmBgivytqe5hGIFjDaEn1TV1hYuYXWrEQBlns5/NSTgmqi8BHXCcBf6lqocELJsRB0plcjwMU1kR1W3yLqdzltVmv8tpEdVBqeN3UecXgxTKMIziItUupza6yQMxUsaBLeo0SoRSmxzP5fnaWkdFVLe+dzktojoodQq9qNMwjBKk4LuclgoxUsbizM17FBDpC9ThzNf8EOgM/F5VVwcvXuEYNmyYLlu2LGwxjGKktalj5EjnPcINgxEzQlQ2IrJcVYdlKpf1ok4RacJZw/KhqqZdKGkYRU0MepBGCRKD36PXos57gd+p6tsi0hlYDDQBh4rIj1X10UIJaRixJqqmjqjJ40UYssapfmKA18hmhKp+3/18OfCuqp4nIkfgLKA0ZVOE+F0LUfRrKGLk9WMYUcRL2exJ+lyF4/qMqm5y9ykzigy/ayF8r6EoNaKimOKkOLORNd/yx6l+YoSXstkuImOBD4FTgSsBRKQcJ0SMEVPSjUL8roXI5rwgRkwFHU1F1RQWJ4KquxUrCn/POBGROvBSNt8DpgFHAP+uqpvc/NHA/wYtmBFMY+o1CvG7FuLgju0900GMmMIaTVV3PYpFnfsxoqYuvqO3OClOL1kTeTt2pC+T73savvGKjfYuzlbLrfPnA/ODFMoIrjH1GoX4XQtRs2GHZzqIEVMYK9Kra+qYMvAi5zt59PXomwuj0lgGZZZqPaJJTpspLHJ10C6UuxoZSdWY5oMRFd3o1L4MoG0ruXO8Z4cy56fWoaxd1vf0Oi+M5wjqOwmNhQvj0/imknXwYOeVLh3EPQ3fZBWuxvAmF3NXunN9h/fIgNfoJdNoKp2sFw/vy99Xb2VP0146lLXj4uF98yKr3+fwkjUXgvpO8k7EerSBmaUS1ykv3/+6ZgqLXB2YssmRXMxdXucGGd6jqrJHyut5maYyyXrPJUPSyrpo1Rb2NO0FYE/T3jaZ0bzOS/ccQZkgLeRKxEg0ok1NLdOlqFhigNeizh95naiqd+RfnPiRiydWpnPTNaZB4dVzz0XWERXdmL10ffPIpy1mND8jiSDncwr9nfgiYj3aZsKQIyrPHiYRqQOvkc3B7vsA4EScUDUAXwNeClKoOJGpQQzC+ytX0ik/r557JoWRyWy1143BtzdDLL5k/I4kYmPuMnIjqkrVSImXN9rNACLyV2CIqu5007/AXeBpZG4Qg/D+yoVMJiY/PfdM13xkyVoa9zpKpnGv8siStVnfw488Zu5yscbXyEQBFXU2czZ9aBlNYA/QLxBpYkomE5JXL7vQZplc3JDTzZ/kara6ff5KnqvZxBmVRzB1zIC2PlJKYmHuMvJDGEo1RqOpqISSykbZ/DewVESeBBQ4H5gVqFQxw+vLzNTLDqKh9ZLHr4nJ67xM1/TyVrt9/kruWeDsVrGyznnPVz0Y0SIqjV4pkdbqEILHYsb9bABEZAgwwk2+pKqv53RTkR8C38VRXm/iBPrsCcwGDgVeAy5V1T0icgCOchsKbAW+papr3OvcgBNGpwmY4i44RUTOAu4CyoD7VPW2TDL53c8m+cvs1L6sTZ5PyQ0twOSvfjHnhjYbecIIHZPu+Jg7X2Rl3a7m9IAeBzH/hyOzlsmIB7n8TyJFzPYmuvHpt5i1eG1z+rKT+3LLuIF5fY5s97PJdlHn54BPVPUuoFZE+rdZon2C9QKmAMNUdSCOQvg28BvgTlWtALbhxmJz37ep6heBO91yiEile96xOJEOfi8iZSJSBtwDnA1UAuPdsoGQy0K/52o2eaa9qK6p48an36K6pq7N8lRV9uCWcQPz7k7tdc10x8+oPMIzbQTIqFH7Gp2AKboFsTEh7eLnxILVkSOdVwEWsGZUNiJyE/AT4AY3qz3wPznetxzo5Ab1/BzOVtOnA0+4xx8CznM/j3PTuMdHixN2ehwwW1U/U9UPgNXAl93XalV9X1X34IyWxuUob1pyWcnut6FN9BJnLV7LlEdfb6Fwcl1Zn06JVdfUcfX/LGfW4rVc/T/L9zvul6ljBnDOcT3p0qmcc47rud/ILp08ceT27/ycMdc+wO3zV+53LIjnzHTN6q5HcWO/0QWp2xEV3ejU1AAULuJDIITQSOdCwox/2cl9Qx9NZjNncz5wAo5pC1XdICIHe5+SHlX9UER+C6wD6oG/AsuB7ara6BarBXq5n3sB691zG0VkB3CYm/9K0qWTz1nfKn+4X3kzkYvnU6JhbeucTVAebtU1dUx++DX2NO1l9tL13HPJkObzpz3/bguPsmnPv5sXE1x1TR0L/rmZ+oYmFvxzM9VJAS695AkLvybI2+ev5J5eJ4EIKxe0nJvyG7khk5xp627UKKq7HsXko8ayp7wDsx94hXtWz6XqyZlZP4/XfdO61a/+ixPE9LpJoX+PpYSns0wBFWU2ymaPqqqIKICIHJjLDUWkK85Ioz+wHceN+uwURROTSak2z1GP/FSjtZQTUyIyCZgE0KdPH0+5vcjF82nqmAFtnqcJysPtkSVjEO7zAAAgAElEQVRrW3icJbsof/yvPS3Ktk574dWYeilOL3nCwHdkglGjeO64CXBg9+as5555ufl79xu5wYtMdfdI90HsKe/gHC8r55Hug6jKrhrSkmkyuurFF517rHneOSHCI4KMxFn2kMhmzuZxEfkD0EVErgKeA+7L4Z5nAB+o6hZVbQD+DJziXj+h/HoDG9zPtcCR0LyXTmfg4+T8Vueky98PVZ2hqsNUdVi3bvEZ1ocxND7vhN6eaS+87PVhBNT0Sy7zDmdsew8SzjiqTtrFqw4y3dOX+W3hQjjppJZ5rdM+sHkZw4uMIxtV/a2IVAGf4EQTuFFVq3O45zrgJBH5HI4ZbTSwDFgAfANnjmUC8LRbfq6bXuwef8Edac0FHhGRO4DPAxXAUpwRT4XrxPAhjhPBxTnIG0mCWEfi5aLs1+QH3iMxL7NfGAE+vfAbdgdgau3f+GBnAy/3HcQpn25kau3fmo/5jdzgNerJVHcXD+/L39/ZyJ525Xmr27Tfs630N8hC2YjIb1T1J0B1irw2o6pLROQJnDmgRuB1YAbOhmyzReSXbl7CgDwT+G8RWY0zovm2e523ReRxoMa9zmRVbXLluwZnz50y4H5VfduPrKVGpoCafkx+iet6zSOlU5yZ5IkT1V2PYsEXvkx9+44sOOBzVHc9qoXZyk/nIdPcnVfdVVX24J6JJ+W1bi1yQ0SJiJLPuM5GRF5T1SGt8v6hqscHKlmB8bvOJhtsMVswFLpe065ZCPBcr/OKZu2KESwBK5uc19mIyNUi8iYwQET+kfT6APhHPoUtZrzclA0HP/MOYdTriIpulLdz/FLK20nKYKTpnmNERTc6NDnOlm2NfJ3OZbiqsgdfPaY7XTqV89VjuvuKaVcsbuVGChLrqF580XkVcF1VKrzMaI8AzwL/H3B9Uv5OVf04UKmKiDC2L44Tfr2twqjXFeu3t3D/XrF+e9u8xjp0ANdDLCtGjaIKmPZhPYv6ncCIgxqo+rfbmnuot89fybw3NwIw782N3D5/ZdZmzqD2/AmMiJiCQiXmdZB2ZKOqO1R1jaqOV9W1OJP5ChwkIv79hEuMTN5Wpd679OvB5Her6VzwiviQ6TlSBTLNlqrVS7nluT9QleTBlkmeTIThORbUb73U/0NpidgC1GwcBL4GJDy+NgN9gXdwwsQYGfCaNI1d7zIA4rT3zBmVRzQHC02kE2R6joM7tvdMp8RtGKrPvzLlYkgveTIxoqIbc/62mvqy9gWp91zWKAFpA0aWxH8oatt8+ySbRZ2/BE4CnlPVE0Tkq8D4YMUqLtJ5GpmJzb8Hk9+tpnNh8JFdKG8nNO5VytsJg4/s0nws03Ps3N3gmU5HdU0dU774NerL2jPn0ddbNKa+3dEzmOeCIKjfemj/oTg1+BGRMRtl06CqW0WknYi0U9UFIvKbwCUrAbLZ5TNKXmxByePH7TfIEZHXNt7JczaF2Bp70aot1Jc5o6BUjenge/+TnZ37MXjMpP3OvXD6y7xZu53jenfhT1efst/xqtVLqVq9dF/E3wDx/X1lWKMTp5Gxb4pknVI2yma7iByEsxX0wyKyGWddi5EjcTKxRU2eqsoeXPGV/s29+nzJ4vWcH+1qGaKndToTexsaoF1Zyq2x0+1rNKKiG48sWdc8mtpvUWeaUc+F019m+dptACxfu40Lp7+8T+GE0HgFtQan4Gt7sjFpxVwpBEU2ymYcsBv4IXAJTriYW4IUqtjItLlaHExsUZOnuqaO+//2AfUNTaz7+AMGH9klcLPMG+u3tSjbOu3FI0vW0tjOcRRpvTW21wZyaT3gRo1iUb/R1B8xZJ+s/zmDqgf/I2tZq7se5cwFJQU/DZKcol54NNxBRNOIJDFXXhljo6nqv9yV+Z8D/oKzvUDmHdcMwP96kKjFDIuaPEF5U3k956EHdmhRtnU6LaNGwSuvtMxLSnt5lXkdG7FjDZ0adjuyNjUwYsea5mNdP9dSttbp6po6pgy8iFlHDLH1X23By8MrYutaokY2+9l8T0TqcBZyLsPZDiCYpfZFiN9GMUr7UERRnqD27fF6zimjj26xqHPK6KOzvt/Fm9+gQ6NjduvQ1MjFm99oPua1r1HaYwsXUvXkTKa9P4/LNr3GtMtPbrFFwK8vOL45LLq46WQsaKZRaLIJV7MKOFlVPyqMSOGQS7iaTNsl+w0pEjUHgaiRbp4jE2F9J+lcmDM9i+dzeswPBPW7NDJQYnM22YaryUbZ/B9wgap+mi/hoohfZZPNn9bv5lfWGKQnl/rJJcZZTkSsEbLOTEBE7HsOmmyVTTYOAjcAL4vIEuCzRKaqTslBvqIhm4nzfEf0NXKrn9DcZSPW+JTMxHqhidj3HBWy2TztD8ALOFswL096GQQ3cZ7LdUshfEcu4WqiNv9kGKVANiObRlX9UeCSxJSorR+I2nqYqGK9esMoLNkomwUiMgnH7TnZjGaRn12CarjM/JaeMMLVQHDzHH6vm4s8fh0soobNPcWDbJRNYkvlG5LyFPhC/sUxcqUkwncQznMGNWr0e91c5PFaSBonbCQfH7JZ1Nk/xcsUTUQplfmIMJ4zqLUpfq+bizxPvVbrmY4Ltl4oPnjt1Hm6+35BqlfhRDRSUQpOAJmoquzBLeMGFkyhBrU3kV9nkFzk6XrQAZ7puBC1yBZGetKusxGRm1X1JhF5IMVhVdUrghWtsOSyqLPQeK0xKbb1OVGzx6eTJ9f1Vvmes8kkT3VNHVf/z/LmAJ/TvzM0EvXrh6j9RkqNnNfZqOpN7sdbVPWDVhfvn6NwXYD7gIE48z9XACuBx4B+wBrgm6q6TUQEuAs4B/gUmKiqr7nXmQD83L3sL1X1ITd/KPAg0AmYB/xAM61ejRFeTgDF5CAQRXu838CpmZ7Fr5OJX3mqKnsw/TtDi6KRNs/CeJDNOps/pch7Isf73gX8n6oeAwzC2fnzeuB5Va0AnnfTAGcDFe5rEjAdQEQOBW4ChgNfBm4Ska7uOdPdsonzzspR3kjhZTqIo1khnbknivb4dLJmqvdMz3L7/JWMufNFbp+/Mut75iIPFN4MaWSBV/DOmAf2TDuyEZFjcLZ+7txqjuYQoKPfG4rIIcBpwEQAVd0D7BGRccAot9hDwELgJzhbHMxyRyaviEgXEenplq1OuGCLSDVwlogsBA5R1cVu/izgPOBZvzJHDa81OAXf3yNHvHr8YWyQlumcyQ+/xp6mvcxeup57LhnSfG6m/XW8nsXLM8yrfnKRxzAKjZfr8wBgLNAF+FpS/k7gqhzu+QVgC/CAiAzCiUbwA6CHqm4EUNWNItLdLd8LWJ90fq2b55VfmyK/qPAyHUTRrJBuTYeXuScoxenXPPfIkrUt1vYk70mTaX8dr2dJtY1Aoo686ieTPH986X32NO3lg4/ez9t+P7lgcyseeG3Kls2GbTHAa87maeBpETk5MUrI4z2HANeq6hIRuYt9JrNUSIo89ZG//4WdxaqTAPr06eMls5EDXj33TKOXIBSn33mtj3Z9ljadS4y8o7ofzMq6XS3SCQ7u2L5F2eT0llY7hSanvRRRGERx/s0oLNnM2ZwvIoeISHsReV5EPhKR7+Rwz1qgVlWXuOkncJRPnWsew33fnFT+yKTzewMbMuT3TpG/H6o6Q1WHqeqwbt2iP7eRL4Jwm/aac/DaACyX9TKFdjU+vJV7cHI6l7myww/qkDa9c3dDi2PJ6W6tzmudjhJRnH+LFF6bsnkdixHZKJszVfUTHJNaLXA0MNXvDVV1E7BeRBK2lNFADTAXmODmTQCedj/PBS4Th5OAHa65bT5wpoh0dR0DzgTmu8d2ishJrifbZUnXKnn87hzqRWLksrJuF/csWL2fwvHaHAz8TVTn8hx+FVzl5zunTWdzTT+T+V7HLh7et8UGaRcP79viWHKg0uRjYRBHxxUjv2QTriYxbj8HeFRVP3ba8Jy4FnhYRDoA7wOX4yi+x0XkSmAdcJFbdp5779U4rs+XgxObTURuBV51y92SFK/tava5Pj9LETkH5EoQrtFPvV67Xzp5XibxOZ9xuHJ9Dj/muZoNOzzTXtf0MiP5dfh48vUPm+3D6qaTr3nPJUMiM0cSN8eV0PAascRwNJNMNsrmLyLyT6Ae+DcR6QbszuWmqroCSLUIaHSKsgpMTnOd+4H7U+Qvw1nDY7QiCA+vQw/swIfbd7dIt2bqmAF5jb0Vtxhw2ax7aavDx8urt3imo+YoEjV5jMKSTWy064GTgWGq2oAzuhgXtGCGN37nK6oqe/DVY7rTpVM5Xz2me17+/FNGH015O2e0W95OmDL66LzJm44wYqNdPLxvi+dsi2kq0/47furnlC9280wbRpTwio12XVLyDFVtAlDVfwG2S2eI5DJfcfv8lcx7cyPb6xuZ9+bGlBP6bSWxGv2yk/umDHsSxDxR4r6FXpTYzjUht8vdlNyM3/r5/SVDOOe4nnTpVM45x/Xk95cMyZtMhpFvvEY23076fEOrY0W1Ij9u5OLZ4+UZFhTF4omUag+dZLxGJ17n5lI/v79kCCtuGuNL0Xh5EBpGvvFSNpLmc6q0UUBy8ezJ5Bnmh0w982LxRPIyhWVTB+nODaN+MnkQGka+8XIQ0DSfU6WNApKLZ08YnmGl4ImUi3dcGPWTaj+bOG6eZsQHL2UzSEQ+wRnFdHI/46Z9x0YrRsIIw5GLZ49fz7B0z5mNZ1gxeCJ5bUU9oqIbs5euZ0/T3pQOAJm2sQ6ifry2fe560AF8uGN3i3ToxDQMi5EdXuFqygopSFwplTAcfteJRBU/HYRc3K29ws74lceLTNs+/2B0RYv9bH4wuiLnexqGF9msszE8KKb9Y7zIZZ1I1PDbQfBSqplGLl5hZ4LosGRaaBup/WyKJNCk4U024WoMD4pl8jsTxfScuXh/rVi/nSXvb2XF+u0t8jOto/GqvyC89VovrE210Nb2szEKiY1sciRXE1Jcwq6HZSoLon78msMymaa88Kq/j1pFb26d9sOU0Ue3MJOlWmhrGIVEimi35JwYNmyYLlu2rKD3zGbfer/XjYMCy0RQ9ZO4dlvraMydL7bYCmBAj4OY/8ORANz49FvMWry2+dhlJ/fllnHZRUzyum4uxOZ30KWL877DjTXX2Q1wun176vJGpBCR5aqaKvxYC8yMFiJBmE+CWq0fBkEuBvVjQvJaoxS1tU8QIzPZ4MHOK13ayEwMtow2M1qIBBFMMo4OC7m4VBeSqWMG8MFH/+Ll1Vs45Yvd9ptwD2PtU2xGL164jgDVg05nUe+BjLj9Z/F9lrhRQGcMM6O5hGFGg/w3FkGanoIgk7xRakyjVrdRkycXqmvqmPLAYurL2sf+WQpKa0++ka75NVvlkQdlk60ZzUY2IZNvl+G4rXmJk0t11EaNUZMH8N14LVq1hfoyZ+1RZJ6lmAnB3dzmbIqQ2NjqiZdLddRkzSRPENt/B0XU6jY2xGjLaDOjueRiRouSqSeqeNVRnOrPKwRMGKSru4Kb2HI15xDM7yBOv62c8DsyMTNafCiVcDW5kKmOomQq86K6po77//YB9Q1NrPv4AwYf2SV0udPVXSRNbBnI9++gpP6bER3NJGNmtBwplr1assGvWSZTHYWxr4rXs6STJ07fdcHNUnkw5+Tb7Ben7ys0VqxwXgXAlE2OlIqtOZf1O151FMa+Kl7P4iVPWN+1H2UcxrbZuRDE+rBS+W9mIipzd6GZ0USkDFgGfKiqY0WkPzAbOBR4DbhUVfeIyAHALGAosBX4lqquca9xA3Al0ARMUdX5bv5ZwF1AGXCfqt4W1HPEzfvLL0Ht15Jq59Cg50K8nsVLnjC+61xD5BT89+g1mvGYH8j4+/Ixt1Aq/00v0poSW0dtSKQDjNoQ5sjmB8A7SenfAHeqagWwDUeJ4L5vU9UvAne65RCRSpytq4/F2ab69yJS5iqxe4CzgUpgvFs2MOLk/eWXXHuJ6eooqNXzXngFzcwkT6G/6zC28Q6DoEYhpfDf9CJKpsRQRjYi0hs4F/gV8CMREeB04GK3yEPAL4DpwDj3M8ATwN1u+XHAbFX9DPhARFYDX3bLrVbV9917zXbL1gT8WEVNUL3EIHYOLSZ5zqg8onlEk0jHjizWdKT9fdn2AzmRNgpHYgRTgBFNgrDMaP8FXAcc7KYPA7araqObrgV6uZ97AesBVLVRRHa45XsBryRdM/mc9a3yh+f7AUqRoMwyfncO9UumvWcKLY8XUVN+QeL79xUnBVRgWaNkSiy4shGRscBmVV0uIqMS2SmKaoZj6fJTmQZTLiYSkUnAJIA+ffp4SG0UE7nEXAtj3UaUlB/4qINEw+qnoc3l3FwpEiXmqcQLGFk7jJHNqcDXReQcoCNwCM5Ip4uIlLujm97ABrd8LXAkUCsi5UBn4OOk/ATJ56TLb4GqzgBmgLOoM/dHM+KA395edU0dkx9+jT1Ne5m9dD33XDKk5OYCIrV2JU4mtjjJGhAFVzaqegNwA4A7svmxql4iInOAb+B4pE0AnnZPmeumF7vHX1BVFZG5wCMicgfweaACWIoz4qlwvds+xHEiSMwFGSERtZXcfkw2jyxZ28L89siStZF4lkKS02LRXBrWMEY0cVAMMZI1ShEEfgLMFpFfAq8DM938mcB/uw4AH+MoD1T1bRF5HGfivxGYrKpNACJyDTAfx/X5flV9u6BPYrQgUr1hIycite1DokFNTHKnamCj0viGaQ6MCKEqG1VdCCx0P7/PPm+y5DK7gYvSnP8rHI+21vnzgHl5FDUwotbjD4I4hk5JxcXD+/L31VvZ07SXDmXtuHh437BFKjihTTgXspGOk2KIkaxRGtmUHHHr8ftVjJHqDedAVWUP7rlkSNF3DjIRmVh2iQY2sTAxucGNqnkp7PuHiCmbEIlTjz8XxRgl98tciUxDW4ykUghhKg2f0RBCwa8cBXwOUzYhEqcef66KMYhGuhRMkIYHXiakGJmXsibmz2LKJkSi2ONP14BHTTFG0QSZSfmZckyD1+gl0bCWl+/LC5OomufaSgjPYcomZKJklvFqwKOmGKNmgsyk/KKoHAPBq9Hy06AlPM2amlqmkxcjel0vbkogFUWi4EzZlCDpethBNuD57tVHbaSVqe6iphwjRZxMXnGS1YsQnsOUTYnh1cP2asCz6bl7bfuc7159riOtQiu/qCnHvOPV+86lZx5CwMjIUSQKzpRNieHVw/ZqwL3Oy6RMgurV+zVBhqH8omaGjB27doUtQUti2uDvRwGfw5RNiZGph52uAR9R0Y3ZS9c3L2hMPi+TMolarz4s5Vfo+bmCOiQE7Rl20EF+pCouYuDe7IUpmxIjiB52NgosSr36qCm/IIiVQ0I2JrhUCzeNWGHKpgTx08P22gMmG2USJa+7qCm/IAjNISHfSmDFCu80lPZ8jhcR82IzZVOEBGE+8Wt+ywZbf5J/YjV68zKzDR7svCcazETaiB2iatu4gLOfzbJly8IWI2vSNdDJ5pNO7ctSmk/8Nu5BKIVs5M03udwzTooxFFmzCTkzcuT+ZdKdmyDV6CWRlzCxde68f5kwCGoE4fe6AY9oRGS5qg7LVM5GNgUg3396L3t8JvNJrjHO8t1ohWHu8XvPWM2DEC3TZVZ4NYY2ook9pmwCJogGyquxzGQ+idriwjDMPX7vGbW6ixTZhJzJ1MP2Op4qL2prcIKaI8n1uhFxpmgXtgDFTqoGKldGVHSjU/sygP0ay8Tk92Un902p2LzODYNM8oZxz+qaOm58+i2qa+pa5I+o6EaHMucv09r92zAMb2xkEzAHd2zvmfZDNgsI0zXaUfTECsPck+6ecTOVRYZsRi+ZRjR+e+5hj2gSBLXS3yIIGNmwc3eDZ9ovuTTQsbPlFxAvU5mX+7eRBVFsLKMokx9i8BymbAIm0/xAGB5DcfKoKjRe35dXFAXDJdU6mEwkGsjE3EuEG8ysCEr+mNeLKZuA8TJbhWGyySWgZimQycy4110qsNeWDGSP2+uu/rCeRf1OYMT5V1K17b39zUOFjBIQsQWPvonRcxTcQUBEjhSRBSLyjoi8LSI/cPMPFZFqEVnlvnd180VEponIahH5h4gMSbrWBLf8KhGZkJQ/VETedM+ZJiJS6OdMpqqyB7eMG7hfwxWE80AmvO6ZUESzFq9lyqOv7zdBXiqk+74eWbKWxr2OkmncqzyyZG0Y4kWTLl2c144dziuRdqnuehRTvn4ds4Z+jSlf/BrVXY8KUdgsGTVqX+Nt5EwYI5tG4P+p6msicjCwXESqgYnA86p6m4hcD1wP/AQ4G6hwX8OB6cBwETkUuAkYBqh7nbmqus0tMwl4BZgHnAU8W8BnbEGUdr/0uqe59hqBsHAhi55+i/rFjnKuL2vPook/pCrpOBCMGS1dT79IJt3j9BwFVzaquhHY6H7eKSLvAL2AccAot9hDwEIcZTMOmKVOqINXRKSLiPR0y1ar6scArsI6S0QWAoeo6mI3fxZwHiEpmzB2v/QyhXndMxflVwrmt4uH92XRqo9o3KuUtxMuHt43bJGiQ4Y1LyMqujHnb6upL2sfCZd7T2JkmooToc7ZiEg/4ARgCdDDVUSo6kYR6e4W6wWsTzqt1s3zyq9NkR8KmUYL+fYMy2YeKN09/Sq/UnIXbicCqPtuZEtVZQ+mXX5y6t9WEHM22SqMYlEgMXiO0JSNiBwE/An4d1X9xGNaJdUB9ZGfSoZJOOY2+vTpk0lkXxTagykbU1imkY+fiNClYH4z1+cs8FjzEhuX+xiZpuJEKMpGRNrjKJqHVfXPbnadiPR0RzU9gc1ufi1wZNLpvYENbv6oVvkL3fzeKcrvh6rOAGaAE4gzh0cqOH7ngYIYhYQVYdhLad4+fyXP1WzijMojmDpmQF7uF6tIynEiiMbdFEbkKLiycT3DZgLvqOodSYfmAhOA29z3p5PyrxGR2TgOAjtchTQf+HXCaw04E7hBVT8WkZ0ichKOee4y4HeBP1gagugN5zIPlMsoJF3jXlXZgyu+0r+5cc+3WbCtbuO3z1/JPQtWA7CyznnPh8KJYvQFI0BMQeWVMEY2pwKXAm+KSGIF2E9xlMzjInIlsA64yD02DzgHWA18ClwO4CqVW4FX3XK3JJwFgKuBB4FOOI4BoXmiBdEbzmUeyK88Xo17dU0d9//tA+obmlj38QcMPrJLqNGtn6vZ1OI6z9VsytvoJjamoDgSRONuCiMyhOGN9jdSz6sAjE5RXoHJaa51P3B/ivxlwMAcxMwbufSGg3CZ9itPpjAuQczZ+I1ufUblEc0jmkTaMIxwsQgCBcBPbzhIl2k/8ngFFA1qLsPLucLLdJcYxeR7zsYwDP+YsokohXaZzsSL727ZL51oxMOYy8hkups6ZoApGcOIELafTUSJ2r4z23Z95plOF+IlF1I5VyQfK3SoH8Mw/GPKJqKEsamYF+cN6e2ZDgIvhRs1ZWwYhjeiFr0WcNbZLFu2LGwxIk0Qa1cy4bWWphRC5BhG1BGR5ao6LGM5UzYOpmwMwzDaTrbKxsxohmEYRuCYsjEMwzACx5SNYRiGETimbAzDMIzAMWVjGIZhBI4pG8MwDCNwTNkYhmEYgWPKxjAMwwgcW9TpIiJbgLUh3f5w4KOQ7h0HrH68sfrxxurHm1zrp6+qZowXZcomAojIsmxW4JYqVj/eWP14Y/XjTaHqx8xohmEYRuCYsjEMwzACx5RNNJgRtgARx+rHG6sfb6x+vClI/dicjWEYhhE4NrIxDMMwAseUTQERkSNFZIGIvCMib4vID9z8Q0WkWkRWue9dw5Y1DESko4gsFZE33Pq52c3vLyJL3Pp5TEQ6hC1rmIhImYi8LiLPuGmrnyREZI2IvCkiK0RkmZtn/zEXEekiIk+IyD/dtujkQtSPKZvC0gj8P1X9EnASMFlEKoHrgedVtQJ43k2XIp8Bp6vqIGAwcJaInAT8BrjTrZ9twJUhyhgFfgC8k5S2+tmfr6rq4CSXXvuP7eMu4P9U9RhgEM5vKfD6MWVTQFR1o6q+5n7eifMl9wLGAQ+5xR4CzgtHwnBRh11usr37UuB04Ak3v2TrB0BEegPnAve5acHqJxvsPwaIyCHAacBMAFXdo6rbKUD9mLIJCRHpB5wALAF6qOpGcBQS0D08ycLFNRGtADYD1cB7wHZVbXSL1OIo6FLlv4DrgL1u+jCsflqjwF9FZLmITHLz7D/m8AVgC/CAa4q9T0QOpAD1Y8omBETkIOBPwL+r6idhyxMlVLVJVQcDvYEvA19KVaywUkUDERkLbFbV5cnZKYqWZP0kcaqqDgHOxjFVnxa2QBGiHBgCTFfVE4B/USCToimbAiMi7XEUzcOq+mc3u05EerrHe+L06ksad2i/EGduq4uIlLuHegMbwpIrZE4Fvi4ia4DZOOaz/8LqpwWqusF93ww8idNpsf+YQy1Qq6pL3PQTOMon8PoxZVNAXPv6TOAdVb0j6dBcYIL7eQLwdKFliwIi0k1EurifOwFn4MxrLQC+4RYr2fpR1RtUtbeq9gO+Dbygqpdg9dOMiBwoIgcnPgNnAm9h/zEAVHUTsF5EBrhZo4EaClA/tqizgIjIV4BFwJvss7n/FGfe5nGgD7AOuEhVPw5FyBARkeNxJifLcDpCj6vqLSLyBZye/KHA68B3VPWz8CQNHxEZBfxYVcda/ezDrYsn3WQ58Iiq/kpEDsP+YwCIyGAcB5MOwPvA5bj/NwKsH1M2hmEYRuCYGc0wDMMIHFM2hmEYRuCYsjEMwzACx5SNYRiGETimbAzDMIzAMWVjGBFARM4XERWRY8KWxTCCwJSNYUSD8cDfcBZrGkbRYcrGMELGjZV3Ks7WAN9289qJyO/dfX2eEZF5IvIN99hQEXnRDTQ5PxFmxDCijCkbwwif83D2F3kX+FhEhgAXAP2A44DvAidDc2y93wHfUNWhwP3Ar8IQ2jDaQnnmIoZhBATYddYAAAEFSURBVMx4nICa4ISdGY+zl88cVd0LbBKRBe7xAcBAoNoJtUcZsLGw4hpG2zFlYxgh4sbsOh0YKCKKozyUffG99jsFeFtVTy6QiIaRF8yMZhjh8g1glqr2VdV+qnok8AHwEXChO3fTAxjlll8JdBORZrOaiBwbhuCG0RZM2RhGuIxn/1HMn4DP4+w98hbwB5zI4DtUdQ+OgvqNiLwBrABOKZy4huEPi/psGBFFRA5S1V2uqW0pzg6Um8KWyzD8YHM2hhFdnnE3k+sA3GqKxogzNrIxDMMwAsfmbAzDMIzAMWVjGIZhBI4pG8MwDCNwTNkYhmEYgWPKxjAMwwgcUzaGYRhG4Pz/tY+utcC+EhQAAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "pos , neg = (y==1).reshape(400,1) , (y==0).reshape(400,1)\n", + "plt.scatter(X[pos[:,0],0],X[pos[:,0],1],c=\"r\",marker=\"+\")\n", + "plt.scatter(X[neg[:,0],0],X[neg[:,0],1],marker=\"o\",s=10)\n", + "plt.xlabel(\"Age\")\n", + "plt.ylabel(\"Estimated Salary\")\n", + "plt.legend([\"Purchased\",\"Did not purchase\"],loc=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sigmoid function\n", + "\n", + "$ g(z) = \\frac{1}{(1+e^{-z})}$" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def sigmoid(z):\n", + " \"\"\"\n", + " return the sigmoid of z\n", + " \"\"\"\n", + " \n", + " return 1/ (1 + np.exp(-z))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.5" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# performing a test computation with the sigmoid function\n", + "sigmoid(0)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "def costFunction(theta, X, y):\n", + " \"\"\"\n", + " Takes in numpy array theta, x and y and return the logistic regression cost function and gradient\n", + " \"\"\"\n", + " \n", + " m=len(y)\n", + " \n", + " predictions = sigmoid(np.dot(X,theta))\n", + " error = (-y * np.log(predictions)) - ((1-y)*np.log(1-predictions))\n", + "\n", + " cost = 1/m * sum(error)\n", + " \n", + " grad = 1/m * np.dot(X.transpose(),(predictions - y))\n", + " \n", + " return cost[0] , grad" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Feature scaling" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def featureNormalization(X):\n", + " \"\"\"\n", + " Take in numpy array of X values and return normalize X values,\n", + " the mean and standard deviation of each feature\n", + " \"\"\"\n", + " mean=np.mean(X,axis=0)\n", + " std=np.std(X,axis=0)\n", + " \n", + " X_norm = (X - mean)/std\n", + " \n", + " return X_norm , mean , std" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost of initial theta is 0.6931471805599467\n", + "Gradient at initial theta (zeros): [[ 0.1425 ]\n", + " [-0.29831974]\n", + " [-0.17353327]]\n" + ] + } + ], + "source": [ + "m , n = X.shape[0], X.shape[1]\n", + "X, X_mean, X_std = featureNormalization(X)\n", + "X= np.append(np.ones((m,1)),X,axis=1)\n", + "y=y.reshape(m,1)\n", + "initial_theta = np.zeros((n+1,1))\n", + "cost, grad= costFunction(initial_theta,X,y)\n", + "print(\"Cost of initial theta is\",cost)\n", + "print(\"Gradient at initial theta (zeros):\",grad)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gradient Descent" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "def gradientDescent(X,y,theta,alpha,num_iters):\n", + " \"\"\"\n", + " Take in numpy array X, y and theta and update theta by taking num_iters gradient steps\n", + " with learning rate of alpha\n", + " \n", + " return theta and the list of the cost of theta during each iteration\n", + " \"\"\"\n", + " \n", + " m=len(y)\n", + " J_history =[]\n", + " \n", + " for i in range(num_iters):\n", + " cost, grad = costFunction(theta,X,y)\n", + " theta = theta - (alpha * grad)\n", + " J_history.append(cost)\n", + " \n", + " return theta , J_history" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "theta , J_history = gradientDescent(X,y,initial_theta,1,400)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Theta optimized by gradient descent: [[-1.13811482]\n", + " [ 2.44456097]\n", + " [ 1.22257273]]\n", + "The cost of the optimized theta: 0.34631422799604816\n" + ] + } + ], + "source": [ + "print(\"Theta optimized by gradient descent:\",theta)\n", + "print(\"The cost of the optimized theta:\",J_history[-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Visualizing plot of Cost Function" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5,1,'Cost function using Gradient Descent')" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(J_history)\n", + "plt.xlabel(\"Iteration\")\n", + "plt.ylabel(\"$J(\\Theta)$\")\n", + "plt.title(\"Cost function using Gradient Descent\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Decision boundary\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[pos[:,0],1],X[pos[:,0],2],c=\"r\",marker=\"+\",label=\"purchased\")\n", + "plt.scatter(X[neg[:,0],1],X[neg[:,0],2],c=\"b\",marker=\"x\",label=\"Did_not_purchase\")\n", + "x_value= np.array([np.min(X[:,1]),np.max(X[:,1])])\n", + "y_value=-(theta[0] +theta[1]*x_value)/theta[2]\n", + "plt.plot(x_value,y_value, \"g\")\n", + "plt.xlabel(\"Age\")\n", + "plt.ylabel(\"Estimated Salary\")\n", + "plt.legend(loc=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prediction" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ + "def ClassifierPredict(theta,X):\n", + " predictions=X.dot(theta)\n", + " return predictions>0\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Accuracy on training set " + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train Accuracy: 84.5 %\n" + ] + } + ], + "source": [ + "p=ClassifierPredict(theta,X)\n", + "accuracy = 100*((sum(p==y)[0])/len(y))\n", + "print(\"Train Accuracy:\", accuracy,\"%\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb b/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb index 8152596..9f0534f 100644 --- a/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb +++ b/Ojewale_Kehinde_Paul/LogisticRegressionFromScratch.ipynb @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -40,7 +40,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -125,7 +125,7 @@ "4 15804002 Male 19 76000 0" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -136,7 +136,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -239,7 +239,7 @@ "max 1.581524e+07 60.000000 150000.000000 1.000000" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -250,7 +250,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -264,7 +264,7 @@ "dtype: int64" ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -282,7 +282,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "metadata": { "scrolled": true }, @@ -290,18 +290,18 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZsAAAEKCAYAAADEovgeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJztnXuYFNW16H+LAYQE5KFIUIQhOGJG0AFJECMBgyPGGDHXGBWP4COHo8FgND5ici4mnuRcveTGIydEYwIqOQqKxwfJwZDROIqKmAFRcJSICjKKA/IKJEOAYd0/qnroGbqre6q7uqq61+/7+uveu3ZVrdrdvdfea6+9tqgqhmEYhhEkHcIWwDAMwyh+TNkYhmEYgWPKxjAMwwgcUzaGYRhG4JiyMQzDMALHlI1hGIYROKZsDMMwjMAxZWMYhmEEjikbwzAMI3A6hi1AVDjyyCO1vLw8bDEMwzBixYoVKz5R1T6ZypmycSkvL6euri5sMQzDMGKFiGzIppyZ0QzDMIzAMWVjGIZhBI4pG8MwDCNwbM7Gg3379tHQ0MCePXvCFsVw6dKlC/3796dTp05hi2IYRjswZeNBQ0MD3bt3p7y8HBEJW5ySR1XZunUrDQ0NDBo0KGxxDMNoB2ZG82DPnj0cccQRpmgigohwxBFHZDfSHDfOeRmGX+w3lFdM2WTAFE20sO/DMOKJmdGM4iLRE33++dbp2trU5drmlxJWB6nJ9jdktAsb2cSAJ554AhHh7bffTnn88ssv57HHHsv6eh999BHf+MY3AFi1ahWLFy9uOVZbW8vLL7/cbhnLy8v55JNP2n0eAGvXOi/DMIoWG9nEgPnz53P66aezYMECfvSjH+V8vaOPPrpFOa1atYq6ujrOOeccwFE23bp147TTTsv5PqGQ6H1mGtGUcq/V6sCbTL8hwxc2ssk3eZ5U3L17Ny+99BJz5sxhwYIFgOOVde2111JZWclXv/pVNm/e3FK+vLycH/zgB4wePZqRI0eycuVKJkyYwODBg7n33nsBWL9+PUOHDmXv3r3MmDGDRx55hKqqKu68807uvfde7rrrLqqqqli6dClbtmzhggsu4POf/zyf//zneemllwDYunUrZ511FsOHD+df/uVfUNX2P1xiRLNrl/OKwwjHJo0Nwxc2sok4Tz75JGeffTbHH388vXv3ZuXKlaxfv561a9eyevVqGhsbqays5Morr2w559hjj2XZsmVcf/31XH755bz00kvs2bOHE088kauvvrqlXOfOnbn99tupq6vjF7/4BQBNTU1069aNG2+8EYBJkyZx/fXXc/rpp/PBBx8wYcIE3nrrLX784x9z+umnM2PGDP7nf/6H++67r7AVk4l0vdEwe61R6Slbz/0gXnVQyvUSAKZs8kVApon58+fz3e9+F4CLL76Y+fPns2/fPi655BLKyso4+uij+fKXv9zqnPPOOw+AYcOGsXv3brp370737t3p0qULO3bsaNf9n3nmGerr61vSf/3rX9m1axcvvPACjz/+OABf/epX6dWrV/sfbsgQ5z0xmkmko4iZngwjJ0zZRJitW7fypz/9iTVr1iAiNDc3IyJ8/etf93QBPuywwwDo0KFDy+dEev/+/e2S4cCBAyxbtoyuXbsecizWbshhjGiipqjCvn+YRPU7KWJsziZf1NY6r7FjnVcinQOPPfYYkydPZsOGDaxfv56NGzcyaNAgevfuzYIFC2hubmbTpk0899xzvu/RvXt3du3alTZ91llntZjYwHEoAPjSl77EQw89BMDTTz/N9u3bfcvAkCHRHtVAdt+vzefkhtWff2JQd6ZsIsz8+fP5+te/3irvggsu4OOPP6aiooJhw4ZxzTXXMHbsWN/3OOOMM6ivr6eqqopHHnmEr33tazzxxBMtDgKzZs2irq6Ok046icrKyhYng9tuu40XXniBESNG8Mc//pEBAwbk9KxFTUIx9ejhvPLQETFyJNfOYQwa9xYiIqv48iIqQkaOHKltN0976623+NznPheSREY6Ive9tDXJJJR/24n4dMdLnTDrx6/5LCpmt2zqLmBZRWSFqo7MVM7mbAwjzkSl0YsrfpVMHOZ6IiarKRvDyJVMrsTmauxNrvVTyvUao99WYMpGROYC5wKbVXVom2M3AjOBPqr6iThuTXcD5wB/By5X1ZVu2SnAv7qn/kRVH3TzTwEeALoCi4HrVFVFpDfwCFAOrAe+qao5zF4bRgSJWK81aGrqG1n6zhbGVPShurJveILEqHGPmqxBjmweAH4BzEvOFJFjgWrgg6TsrwAV7msUcA8wylUctwEjAQVWiMgiV3ncA0wFXsFRNmcDTwPfB55V1TtE5Ptu+paAntEwDpLpzxzlhikKpKmfmvpG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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -312,9 +312,9 @@ "pos , neg = (y==1).reshape(400,1) , (y==0).reshape(400,1)\n", "plt.scatter(X[pos[:,0],0],X[pos[:,0],1],c=\"r\",marker=\"+\")\n", "plt.scatter(X[neg[:,0],0],X[neg[:,0],1],marker=\"o\",s=10)\n", - "plt.xlabel(\"Exam 1 score\")\n", - "plt.ylabel(\"Exam 2 score\")\n", - "plt.legend([\"Admitted\",\"Not admitted\"],loc=0)" + "plt.xlabel(\"Age\")\n", + "plt.ylabel(\"Estimated Salary\")\n", + "plt.legend([\"Purchased\",\"Did not purchase\"],loc=0)" ] }, { @@ -328,7 +328,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 8, "metadata": {}, "outputs": [], "source": [ @@ -342,7 +342,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -351,7 +351,7 @@ "0.5" ] }, - "execution_count": 8, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -363,7 +363,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 10, "metadata": {}, "outputs": [], "source": [ @@ -393,7 +393,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 11, "metadata": {}, "outputs": [], "source": [ @@ -412,7 +412,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -446,7 +446,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 13, "metadata": {}, "outputs": [], "source": [ @@ -471,7 +471,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 14, "metadata": {}, "outputs": [], "source": [ @@ -480,7 +480,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -508,7 +508,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -517,7 +517,7 @@ "Text(0.5,1,'Cost function using Gradient Descent')" ] }, - "execution_count": 15, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, @@ -525,7 +525,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -549,16 +549,16 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 16, + "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, @@ -566,7 +566,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -593,7 +593,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": {}, "outputs": [], "source": [ @@ -612,7 +612,7 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -628,6 +628,13 @@ "accuracy = 100*((sum(p==y)[0])/len(y))\n", "print(\"Train Accuracy:\", accuracy,\"%\")" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": {