{ "cells": [ { "cell_type": "code", "execution_count": 277, "metadata": {}, "outputs": [], "source": [ "# imports\n", "import numpy as np\n", "import scipy as sc\n", "import numpy.linalg as LA\n", "import matplotlib.pyplot as plt\n", "from sklearn.utils import shuffle\n", "\n", "# this allows plots to appear directly in the notebook\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generating Data: Two Classes are generated from two different Gaussian Clusters " ] }, { "cell_type": "code", "execution_count": 278, "metadata": {}, "outputs": [], "source": [ "# generating data\n", "d = 2 # dimension \n", "m = 100 # number of training samples \n", "c = 2.7 # parameter controlling seperation between the clusters\n", "mu1 = c*np.array([1,1])\n", "mu2 = -mu1 \n", "sigma_squared_1 = 1.5\n", "sigma_squared_2 = sigma_squared_1 \n", "\n", "X_train_1 = np.random.multivariate_normal(mu1,sigma_squared_1*np.identity(d),int(m/2)) \n", "X_train_2 = np.random.multivariate_normal(mu2,sigma_squared_2*np.identity(d),int(m/2)) \n", "X_train = np.concatenate((X_train_1,X_train_2),axis=0)\n", "\n", "Y_train_1 = np.ones((int(m/2),1))\n", "Y_train_2 = 0*np.ones((int(m/2),1))\n", "Y_train = np.concatenate((Y_train_1,Y_train_2),axis=0)" ] }, { "cell_type": "code", "execution_count": 279, "metadata": {}, "outputs": [], "source": [ "X_train = np.column_stack((np.ones((X_train.shape[0],1)),X_train)) # adding 1 as X0" ] }, { "cell_type": "code", "execution_count": 280, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 280, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X_train_1[:,0],X_train_1[:,1], color='b',marker='o')\n", "plt.scatter(X_train_2[:,0],X_train_2[:,1], color='r',marker='o')\n", "plt.title('Two Gaussian clusters with different labels')\n", "plt.xlabel('x1')\n", "plt.ylabel('x2')" ] }, { "cell_type": "code", "execution_count": 281, "metadata": {}, "outputs": [], "source": [ "def sigmoid(x):\n", " return 1 / (1 + np.exp(-x))" ] }, { "cell_type": "code", "execution_count": 282, "metadata": {}, "outputs": [], "source": [ "def cross_entropy(y,y_est):\n", " return -y*np.log(y_est)-(1-y)*np.log(1-y_est)" ] }, { "cell_type": "code", "execution_count": 283, "metadata": {}, "outputs": [], "source": [ "def compute_cost(X,Y,theta):\n", " m = X.shape[0] \n", " loss= 0 \n", " for i in range(m):\n", " loss += cross_entropy(Y[i],sigmoid(np.dot(X[i,:],theta))) \n", " return loss " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Gradient Descent " ] }, { "cell_type": "code", "execution_count": 284, "metadata": {}, "outputs": [], "source": [ "def gradient_step_log_reg(theta_current, X, Y, learning_rate):\n", "\n", " m = X.shape[0]\n", " \n", " grad = np.zeros_like(theta_current)\n", " \n", " for i in range(m):\n", " grad += (sigmoid(np.dot(X[i,:],theta_current))-Y[i])*X[i,:]\n", " \n", " \n", " theta_current += -learning_rate*grad \n", " return theta_current" ] }, { "cell_type": "code", "execution_count": 285, "metadata": {}, "outputs": [], "source": [ "# initializations\n", "theta = np.random.randn(3)\n", "learning_rate = 1e-5\n", "num_iterations = 6000" ] }, { "cell_type": "code", "execution_count": 286, "metadata": {}, "outputs": [], "source": [ "# shuffle the data set \n", "X_train, Y_train = shuffle(X_train, Y_train)" ] }, { "cell_type": "code", "execution_count": 287, "metadata": {}, "outputs": [], "source": [ "# gradient descent\n", "cost_vec = []\n", "for t in range(num_iterations):\n", " theta = gradient_step_log_reg(theta, X_train, Y_train, learning_rate)\n", " if t%50==0:\n", " cost_vec.append(compute_cost(X_train, Y_train, theta))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plot cost vs iteration" ] }, { "cell_type": "code", "execution_count": 288, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 288, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "iterations = np.linspace(0,num_iterations, num=len(cost_vec))\n", "plt.plot(iterations,cost_vec)\n", "plt.xlabel('iterations')\n", "plt.ylabel('cost')" ] }, { "cell_type": "code", "execution_count": 289, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.50290993, 1.00720295, 0.79526924])" ] }, "execution_count": 289, "metadata": {}, "output_type": "execute_result" } ], "source": [ "theta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualize the final seperating line " ] }, { "cell_type": "code", "execution_count": 290, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 290, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X_train_1[:,0],X_train_1[:,1], color='b',marker='o')\n", "plt.scatter(X_train_2[:,0],X_train_2[:,1], color='r',marker='o')\n", "plt.title('Logistic regression line seperating the two classes')\n", "plt.plot([-4,4], (np.array([-4,4])*-theta[1]-theta[0])/theta[2],'r')\n", "plt.xlabel('x1')\n", "plt.ylabel('x2')" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.15" } }, "nbformat": 4, "nbformat_minor": 2 }