diff --git a/Breast_cancer_3.ipynb b/Breast_cancer_3.ipynb index 3823d45..1871827 100644 --- a/Breast_cancer_3.ipynb +++ b/Breast_cancer_3.ipynb @@ -2,48 +2,9 @@ "cells": [ { "cell_type": "code", - "execution_count": 9, + "execution_count": 1, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Cost after iteration 0: 30.843251\n", - "Cost after iteration 3: nan\n", - "Cost after iteration 6: nan\n", - "Cost after iteration 9: nan\n", - "Cost after iteration 12: nan\n", - "Cost after iteration 15: nan\n", - "Cost after iteration 18: nan\n", - "Cost after iteration 21: nan\n", - "Cost after iteration 24: nan\n", - "Cost after iteration 27: nan\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:271: RuntimeWarning: divide by zero encountered in log\n", - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:353: RuntimeWarning: divide by zero encountered in divide\n", - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:353: RuntimeWarning: invalid value encountered in divide\n", - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:105: RuntimeWarning: invalid value encountered in multiply\n", - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:60: RuntimeWarning: invalid value encountered in maximum\n", - "c:\\python27\\lib\\site-packages\\ipykernel_launcher.py:84: RuntimeWarning: invalid value encountered in less_equal\n" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "import sklearn\n", "import numpy as np\n", @@ -52,46 +13,75 @@ "from sklearn.datasets import load_breast_cancer\n", "from testCases_v2 import *\n", "import matplotlib.pyplot as plt\n", - "\n", - "data = load_breast_cancer()\n", - "\n", + "from sklearn.model_selection import train_test_split\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "data = load_breast_cancer()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ "feature_names = data['feature_names']\n", "features = data['data']\n", "label_names = data['target_names']\n", - "labels = data['target']\n", - "\n", - "from sklearn.model_selection import train_test_split\n", - "\n", - "train, test, train_labels, test_labels = train_test_split(features, labels, test_size=0.20, random_state=42)\n", - "\n", + "labels = data['target']" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "train, test, train_labels, test_labels = train_test_split(features, labels, test_size=0.20, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ "train_set_x = train.T\n", "train_set_y = train_labels.T\n", "test_set_x = test.T\n", "test_set_y = test_labels.T\n", - "\n", - "import numpy as np\n", "X_train = np.asarray(train_set_x)\n", "Y_train = np.reshape(train_set_y,[455,1])\n", "X_test = np.asarray(test_set_x)\n", - "Y_test = np.reshape(test_set_y,[114,1])\n", - "\n", + "Y_test = np.reshape(test_set_y,[114,1])" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ "def sigmoid(Z):\n", - " \"\"\"\n", - " Implements the sigmoid activation in numpy\n", - " \n", - " Arguments:\n", - " Z -- numpy array of any shape\n", - " \n", - " Returns:\n", - " A -- output of sigmoid(z), same shape as Z\n", - " cache -- returns Z as well, useful during backpropagation\n", - " \"\"\"\n", - " \n", " A = 1/(1+np.exp(-Z))\n", " cache = Z\n", " \n", - " return A, cache\n", - "\n", + " return A, cache" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ "def relu(Z):\n", " \"\"\"\n", " Implement the RELU function.\n", @@ -109,9 +99,15 @@ " assert(A.shape == Z.shape)\n", " \n", " cache = Z \n", - " return A, cache\n", - "\n", - "\n", + " return A, cache" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ "def relu_backward(dA, cache):\n", " \"\"\"\n", " Implement the backward propagation for a single RELU unit.\n", @@ -132,8 +128,15 @@ " \n", " assert (dZ.shape == Z.shape)\n", " \n", - " return dZ\n", - "\n", + " return dZ" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ "def sigmoid_backward(dA, cache):\n", " \"\"\"\n", " Implement the backward propagation for a single SIGMOID unit.\n", @@ -153,8 +156,15 @@ " \n", " assert (dZ.shape == Z.shape)\n", " \n", - " return dZ\n", - "\n", + " return dZ" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ "def initialize_parameters(n_x, n_h, n_y):\n", " \"\"\"\n", " Argument:\n", @@ -187,9 +197,15 @@ " \"W2\": W2,\n", " \"b2\": b2}\n", " \n", - " return parameters \n", - "\n", - "\n", + " return parameters " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ "def initialize_parameters_deep(layer_dims):\n", " \"\"\"\n", " Arguments:\n", @@ -213,8 +229,15 @@ " assert(parameters['b' + str(l)].shape == (layer_dims[l], 1))\n", "\n", " \n", - " return parameters\n", - "\n", + " return parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ "def linear_forward(A, W, b):\n", " \"\"\"\n", " Implement the linear part of a layer's forward propagation.\n", @@ -234,8 +257,15 @@ " assert(Z.shape == (W.shape[0], A.shape[1]))\n", " cache = (A, W, b)\n", " \n", - " return Z, cache\n", - "\n", + " return Z, cache" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ "def linear_activation_forward(A_prev, W, b, activation):\n", " \"\"\"\n", " Implement the forward propagation for the LINEAR->ACTIVATION layer\n", @@ -265,8 +295,15 @@ " assert (A.shape == (W.shape[0], A_prev.shape[1]))\n", " cache = (linear_cache, activation_cache)\n", "\n", - " return A, cache\n", - "\n", + " return A, cache" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ "def L_model_forward(X, parameters):\n", " \"\"\"\n", " Implement forward propagation for the [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID computation\n", @@ -298,8 +335,15 @@ " \n", " assert(AL.shape == (1,X.shape[1]))\n", " \n", - " return AL, caches\n", - "\n", + " return AL, caches" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [], + "source": [ "def compute_cost(AL, Y):\n", " \"\"\"\n", " Implement the cost function defined by equation (7).\n", @@ -320,8 +364,15 @@ " cost = np.squeeze(cost) # To make sure your cost's shape is what we expect (e.g. this turns [[17]] into 17).\n", " assert(cost.shape == ())\n", " \n", - " return cost\n", - "\n", + " return cost" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ "def linear_backward(dZ, cache):\n", " \"\"\"\n", " Implement the linear portion of backward propagation for a single layer (layer l)\n", @@ -346,8 +397,15 @@ " assert (dW.shape == W.shape)\n", " assert (db.shape == b.shape)\n", " \n", - " return dA_prev, dW, db\n", - "\n", + " return dA_prev, dW, db" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ "def linear_activation_backward(dA, cache, activation):\n", " \"\"\"\n", " Implement the backward propagation for the LINEAR->ACTIVATION layer.\n", @@ -372,8 +430,15 @@ " dZ = sigmoid_backward(dA, activation_cache)\n", " dA_prev, dW, db = linear_backward(dZ, linear_cache)\n", " \n", - " return dA_prev, dW, db\n", - "\n", + " return dA_prev, dW, db" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [], + "source": [ "def L_model_backward(AL, Y, caches):\n", " \"\"\"\n", " Implement the backward propagation for the [LINEAR->RELU] * (L-1) -> LINEAR -> SIGMOID group\n", @@ -411,8 +476,15 @@ " grads[\"dW\" + str(l + 1)] = dW_temp\n", " grads[\"db\" + str(l + 1)] = db_temp\n", "\n", - " return grads\n", - "\n", + " return grads" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ "def update_parameters(parameters, grads, learning_rate):\n", " \"\"\"\n", " Update parameters using gradient descent\n", @@ -434,9 +506,62 @@ " parameters[\"W\" + str(l+1)] = parameters[\"W\" + str(l+1)] - learning_rate * grads[\"dW\" + str(l+1)]\n", " parameters[\"b\" + str(l+1)] = parameters[\"b\" + str(l+1)] - learning_rate * grads[\"db\" + str(l+1)]\n", " \n", - " return parameters\n", - "\n", - "def L_layer_model(X, Y, layers_dims, learning_rate = 0.075, num_iterations = 30, print_cost=False):#lr was 0.009\n", + " return parameters" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [], + "source": [ + "def predict(X, y, parameters):\n", + " \"\"\"\n", + " This function is used to predict the results of a L-layer neural network.\n", + " \n", + " Arguments:\n", + " X -- data set of examples you would like to label\n", + " parameters -- parameters of the trained model\n", + " \n", + " Returns:\n", + " p -- predictions for the given dataset X\n", + " \"\"\"\n", + " \n", + " m = X.shape[1]\n", + " n = len(parameters) // 2 # number of layers in the neural network\n", + " p = np.zeros((1,m))\n", + " \n", + " # Forward propagation\n", + " probas, caches = L_model_forward(X, parameters)\n", + " #print probas[0,2]\n", + " \n", + " # convert probas to 0/1 predictions\n", + " for i in range(0, probas.shape[1]):\n", + " if probas[0,i] > 0.5:\n", + " p[0,i] = 1\n", + " else:\n", + " p[0,i] = 0\n", + "\n", + " acc=0\n", + " y=y.T\n", + " for i in range(0, probas.shape[1]):\n", + " if p[0,i]==y[0,i]:\n", + " acc=acc+1\n", + " \n", + " \n", + " \n", + " print(\"Accuracy:\"+str(acc/y.shape[0])+\"%\")\n", + " \n", + " return p" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "def L_layer_model(X, Y, layers_dims, learning_rate = 0.00001, num_iterations = 60, print_cost=False):\n", " \"\"\"\n", " Implements a L-layer neural network: [LINEAR->RELU]*(L-1)->LINEAR->SIGMOID.\n", " \n", @@ -489,6 +614,7 @@ " if print_cost and i % 3 == 0:\n", " costs.append(cost)\n", " \n", + " p = predict(X_test, Y_test, parameters)\n", " # plot the cost\n", " plt.plot(np.squeeze(costs))\n", " plt.ylabel('cost')\n", @@ -496,18 +622,57 @@ " plt.title(\"Learning rate =\" + str(learning_rate))\n", " plt.show()\n", " \n", - " return parameters\n", - "\n", - "layers_dims = [30, 20, 15, 10, 1]\n", - "parameters = L_layer_model(X_train, Y_train.T, layers_dims, num_iterations = 30, print_cost = True)\n" + " return parameters" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Cost after iteration 0: 30.843251\n", + "Cost after iteration 3: 29.011867\n", + "Cost after iteration 6: 27.229002\n", + "Cost after iteration 9: 25.491777\n", + "Cost after iteration 12: 23.797487\n", + "Cost after iteration 15: 22.143063\n", + "Cost after iteration 18: 20.527253\n", + "Cost after iteration 21: 18.947276\n", + "Cost after iteration 24: 17.403913\n", + "Cost after iteration 27: 15.897170\n", + "Cost after iteration 30: 14.434196\n", + "Cost after iteration 33: 12.995999\n", + "Cost after iteration 36: 11.536717\n", + "Cost after iteration 39: 10.397698\n", + "Cost after iteration 42: 9.112654\n", + "Cost after iteration 45: 7.414758\n", + "Cost after iteration 48: 5.652759\n", + "Cost after iteration 51: 3.902941\n", + "Cost after iteration 54: 2.255248\n", + "Cost after iteration 57: 1.123876\n", + "Cost after iteration 60: 0.711841\n", + "Accuracy:95%\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "layers_dims = [30,20,15,10,1]\n", + "parameters = L_layer_model(X_train, Y_train.T, layers_dims, num_iterations = 63, print_cost = True)" + ] }, { "cell_type": "code", @@ -522,18 +687,6 @@ "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.14" } }, "nbformat": 4,