Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Module 2/Linear Regression.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@
"theta = np.zeros((2,1))\n",
"theta = np.matrix(theta)\n",
"X = np.matrix(X)\n",
"y=y_init\n",
"X[0:5]"
]
},
Expand Down
299 changes: 299 additions & 0 deletions Module 3/.ipynb_checkpoints/Logistic Regression-checkpoint.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,299 @@
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Logistic Regression"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import make_classification\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate Dummy Classification Data"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"dataset = make_classification(n_classes=2, n_samples=100, n_features=2, random_state=42, n_informative=2, n_redundant=0, n_repeated=0, n_clusters_per_class=1)\n",
"X_init = dataset[0]\n",
"y_init = dataset[1]\n",
"theta_0 = np.zeroes(X.shape[1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting the data"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"matrix([[ 1. , 1.22831184, -0.75717844],\n",
" [ 1. , 0.69840909, -1.38029525],\n",
" [ 1. , 2.54881729, 2.50225822],\n",
" [ 1. , 0.57357881, -1.35297943],\n",
" [ 1. , 0.58590018, -1.33745666]])"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_0 = X_init[:,0]\n",
"X_1 = X_init[:,1]\n",
"\n",
"X = np.concatenate((np.ones((100,1)), X_init), axis=1)\n",
"theta = np.zeros((3,1))\n",
"theta = np.matrix(theta)\n",
"X = np.matrix(X)\n",
"X[0:5]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1204f89b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.scatter(x=X_0, y=X_1)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Defining the sigmoid function"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def sigmoid(z):\n",
" g = np.matrix(np.zeros(np.matrix(z).shape))\n",
" \n",
" # ====================== YOUR CODE HERE ======================\n",
" # Instructions: Compute the sigmoid of each value of z (z can be a matrix,\n",
" # vector or scalar).\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" # =============================================================\n",
" return g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Evalutating sigmoid(0) should give you exactly 0.5"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[0.]]\n"
]
}
],
"source": [
"print(sigmoid(0))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing the cost J(θ)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def costFunction(theta, X, y):\n",
" m = len(y)\n",
" J = 0;\n",
" grad = np.zeros(theta.shape)\n",
" \n",
" # ====================== YOUR CODE HERE ======================\n",
" # Instructions: Compute the cost of a particular choice of theta.\n",
" # You should set J to the cost.\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" # =============================================================\n",
" return J"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Computing the Gradient"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def costFunction(theta, X, y):\n",
" m = len(y)\n",
" J = 0;\n",
" grad = np.zeros(theta.shape)\n",
" \n",
" # ====================== YOUR CODE HERE ======================\n",
" # Instructions: Compute the partial derivatives and set grad to the partial\n",
" # derivatives of the cost w.r.t. each parameter in theta\n",
" # \n",
" # Note: grad should have the same dimensions as theta\n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" \n",
" # =============================================================\n",
" return grad.flatten()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Learning parameters using Scipy"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from scipy.optimize import minimize\n",
"res = minimize(costFunction, theta_0, args=(X,y), method=None, jac=gradient, options={'maxiter':1000})\n",
"res"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting the decision boundary"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"plt.scatter(40, 75, c='r',label='(40, 75)')\n",
"plotData(X[1:,:], 'x1', 'x2', 'yes', 'no')\n",
"x1_min, x1_max = X[:,1].min(), X[:,1].max(),\n",
"x2_min, x2_max = X[:,2].min(), X[:,2].max(),\n",
"xx1, xx2 = np.meshgrid(np.linspace(x1_min, x1_max), np.linspace(x2_min, x2_max))\n",
"h = sigmoid(np.c_[np.ones((xx1.ravel().shape[0],1)), xx1.ravel(), xx2.ravel()].dot(res.x))\n",
"h = h.reshape(xx1.shape)\n",
"plt.contour(xx1, xx2, h, [0.5], linewidths=1, colors='g');"
]
}
],
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Loading