diff --git a/MLCC_NeuralNetwork(Single_Layer).ipynb b/MLCC_NeuralNetwork(Single_Layer).ipynb new file mode 100644 index 0000000..8ee22d7 --- /dev/null +++ b/MLCC_NeuralNetwork(Single_Layer).ipynb @@ -0,0 +1,496 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "MLCC NeuralNetwork(Single Layer).ipynb", + "version": "0.3.2", + "provenance": [], + "collapsed_sections": [], + "include_colab_link": true + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "view-in-github", + "colab_type": "text" + }, + "source": [ + "\"Open" + ] + }, + { + "metadata": { + "id": "RdfxQ2a3qrD1", + "colab_type": "code", + "colab": {} + }, + "cell_type": "code", + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from sklearn import datasets\n", + "from pandas import DataFrame as df\n" + ], + "execution_count": 0, + "outputs": [] + }, + { + "metadata": { + "id": "wmOBi6uvqtzZ", + "colab_type": "code", + "outputId": "9045f72a-6eb7-4403-8624-88ae3fccc532", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 204 + } + }, + "cell_type": "code", + "source": [ + "iris = datasets.load_iris()\n", + "x = iris.data\n", + "y = iris.target\n", + "x = np.insert(x,x.shape[1],y,axis=1)\n", + "data = pd.DataFrame(x)\n", + "\n", + "data = data.reindex(np.random.permutation(data.index))\n", + "data.head()" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "execute_result", + "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", + "
01234
776.73.05.01.71.0
705.93.24.81.81.0
155.74.41.50.40.0
405.03.51.30.30.0
1077.32.96.31.82.0
\n", + "
" + ], + "text/plain": [ + " 0 1 2 3 4\n", + "77 6.7 3.0 5.0 1.7 1.0\n", + "70 5.9 3.2 4.8 1.8 1.0\n", + "15 5.7 4.4 1.5 0.4 0.0\n", + "40 5.0 3.5 1.3 0.3 0.0\n", + "107 7.3 2.9 6.3 1.8 2.0" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 54 + } + ] + }, + { + "metadata": { + "id": "9rj7RDGJssVD", + "colab_type": "code", + "outputId": "c788248b-a8e8-4129-f306-6e6f428d91c1", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 2584 + } + }, + "cell_type": "code", + "source": [ + "features = data.iloc[:,:4]\n", + "target = data.iloc[:,4]\n", + "\n", + "target = target.values.reshape((target.shape[0],1))\n", + "target_class = np.zeros(shape=(target.shape[0],3))\n", + "\n", + "for i in range(target.shape[0]):\n", + " if target[i] == 0:\n", + " target_class[i][0] = 1\n", + " elif target[i] == 1:\n", + " target_class[i][1] = 1\n", + " else:\n", + " target_class[i][2] = 1\n", + " \n", + "print(target_class.shape)\n", + "print(target_class)\n", + "\n" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "(150, 3)\n", + "[[0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [1. 0. 0.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 0. 1.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]\n", + " [0. 1. 0.]]\n" + ], + "name": "stdout" + } + ] + }, + { + "metadata": { + "id": "yBv3zOuYsArP", + "colab_type": "code", + "colab": {} + }, + "cell_type": "code", + "source": [ + "def sigmoid(x):\n", + " return 1/(1+np.exp(-x))\n", + "\n", + "def der_sigmoid(x):\n", + " return (sigmoid(x)*(1-sigmoid(x)))" + ], + "execution_count": 0, + "outputs": [] + }, + { + "metadata": { + "id": "9WbZu7ihvSSp", + "colab_type": "code", + "colab": {} + }, + "cell_type": "code", + "source": [ + "input_nodes = features.shape[1]\n", + "output_nodes = 3;\n", + "weight_matrix = np.random.uniform(size=(input_nodes,output_nodes))\n", + "\n", + "epoch = 2000 #increase it to increase accuracy\n", + "lr = 0.015 #learning rate decrease it to increase accuracy " + ], + "execution_count": 0, + "outputs": [] + }, + { + "metadata": { + "id": "NJzxuP_X0IIn", + "colab_type": "code", + "colab": {} + }, + "cell_type": "code", + "source": [ + "for i in range(epoch):\n", + " output_node_input = features.dot(weight_matrix)\n", + " output = sigmoid(output_node_input)\n", + " \n", + " error = target_class - output\n", + " drv = der_sigmoid(output_node_input)\n", + " delta_weight = error*drv\n", + " \n", + " weight_matrix = weight_matrix + lr*features.T.dot(delta_weight)" + ], + "execution_count": 0, + "outputs": [] + }, + { + "metadata": { + "id": "6yfIk5ky1EJt", + "colab_type": "code", + "outputId": "32cb0d02-4dd7-41db-92fe-e1fa8957ba6b", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 136 + } + }, + "cell_type": "code", + "source": [ + "final_output = np.array(output)\n", + "#print(final_output) #test here\n", + "output_class = np.zeros(shape=final_output.shape[0])\n", + "\n", + "for i in range(final_output.shape[0]):\n", + " output_class[i] = np.argmax(final_output[i])\n", + "\n", + "print(output_class) #test here\n", + "class_diff = output_class - target[:,0]" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "[1. 2. 0. 0. 1. 0. 0. 1. 1. 0. 2. 2. 1. 0. 1. 2. 0. 0. 0. 1. 0. 0. 0. 1.\n", + " 1. 1. 2. 1. 0. 2. 1. 2. 2. 0. 1. 0. 2. 2. 0. 1. 0. 0. 0. 0. 0. 0. 1. 2.\n", + " 2. 1. 0. 0. 2. 2. 0. 1. 2. 2. 0. 2. 0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 2. 1.\n", + " 1. 2. 2. 2. 2. 1. 1. 2. 1. 2. 2. 2. 0. 1. 1. 2. 1. 2. 2. 0. 1. 2. 1. 2.\n", + " 0. 0. 0. 1. 2. 2. 0. 1. 0. 0. 2. 2. 1. 1. 0. 0. 1. 0. 1. 1. 0. 1. 1. 1.\n", + " 1. 0. 0. 2. 1. 1. 1. 1. 2. 0. 2. 1. 2. 1. 2. 2. 0. 2. 1. 0. 1. 0. 1. 2.\n", + " 2. 1. 2. 1. 2. 1.]\n" + ], + "name": "stdout" + } + ] + }, + { + "metadata": { + "id": "q9xP2z-dEqQC", + "colab_type": "code", + "outputId": "397bad9d-7060-4797-b494-e9584b5df4f1", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 323 + } + }, + "cell_type": "code", + "source": [ + "print('Actual Class')\n", + "print(target[:,0])\n", + "print('>>>>>>>>>>>>>>>>>>>>>>>>>>>>')\n", + "print('Predicted Class')\n", + "print(output_class)\n", + "\n", + "wrong_prediction = np.count_nonzero(class_diff)\n", + "N = len(class_diff)\n", + "#print(class_diff)\n", + "simple_accuracy = 100 * (N-wrong_prediction)/N\n", + "print('Accuracy : ', (simple_accuracy), '%')" + ], + "execution_count": 0, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Actual Class\n", + "[1. 1. 0. 0. 2. 0. 0. 2. 1. 0. 2. 2. 1. 0. 1. 2. 0. 0. 0. 1. 0. 0. 0. 1.\n", + " 1. 1. 2. 1. 0. 2. 2. 2. 2. 0. 1. 0. 2. 2. 0. 2. 0. 0. 0. 0. 0. 0. 1. 2.\n", + " 2. 1. 0. 0. 2. 2. 0. 2. 2. 2. 0. 2. 0. 0. 1. 2. 0. 0. 0. 0. 1. 1. 2. 1.\n", + " 2. 2. 2. 2. 2. 1. 1. 2. 1. 2. 2. 2. 0. 1. 1. 2. 1. 2. 2. 0. 1. 1. 1. 2.\n", + " 0. 0. 0. 1. 2. 2. 0. 1. 0. 0. 2. 2. 1. 1. 0. 0. 1. 0. 1. 1. 0. 1. 2. 1.\n", + " 1. 0. 0. 2. 1. 1. 1. 1. 2. 0. 2. 1. 2. 1. 2. 1. 0. 2. 1. 0. 1. 0. 1. 2.\n", + " 2. 1. 2. 1. 1. 1.]\n", + ">>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", + "Predicted Class\n", + "[1. 2. 0. 0. 1. 0. 0. 1. 1. 0. 2. 2. 1. 0. 1. 2. 0. 0. 0. 1. 0. 0. 0. 1.\n", + " 1. 1. 2. 1. 0. 2. 1. 2. 2. 0. 1. 0. 2. 2. 0. 1. 0. 0. 0. 0. 0. 0. 1. 2.\n", + " 2. 1. 0. 0. 2. 2. 0. 1. 2. 2. 0. 2. 0. 0. 1. 1. 0. 0. 0. 0. 1. 1. 2. 1.\n", + " 1. 2. 2. 2. 2. 1. 1. 2. 1. 2. 2. 2. 0. 1. 1. 2. 1. 2. 2. 0. 1. 2. 1. 2.\n", + " 0. 0. 0. 1. 2. 2. 0. 1. 0. 0. 2. 2. 1. 1. 0. 0. 1. 0. 1. 1. 0. 1. 1. 1.\n", + " 1. 0. 0. 2. 1. 1. 1. 1. 2. 0. 2. 1. 2. 1. 2. 2. 0. 2. 1. 0. 1. 0. 1. 2.\n", + " 2. 1. 2. 1. 2. 1.]\n", + "Accuracy : 92.0 %\n" + ], + "name": "stdout" + } + ] + } + ] +} \ No newline at end of file