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": [
+ "
"
+ ]
+ },
+ {
+ "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",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 77 | \n",
+ " 6.7 | \n",
+ " 3.0 | \n",
+ " 5.0 | \n",
+ " 1.7 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " | 70 | \n",
+ " 5.9 | \n",
+ " 3.2 | \n",
+ " 4.8 | \n",
+ " 1.8 | \n",
+ " 1.0 | \n",
+ "
\n",
+ " \n",
+ " | 15 | \n",
+ " 5.7 | \n",
+ " 4.4 | \n",
+ " 1.5 | \n",
+ " 0.4 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 40 | \n",
+ " 5.0 | \n",
+ " 3.5 | \n",
+ " 1.3 | \n",
+ " 0.3 | \n",
+ " 0.0 | \n",
+ "
\n",
+ " \n",
+ " | 107 | \n",
+ " 7.3 | \n",
+ " 2.9 | \n",
+ " 6.3 | \n",
+ " 1.8 | \n",
+ " 2.0 | \n",
+ "
\n",
+ " \n",
+ "
\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