{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "name": "CompareAE.ipynb", "provenance": [], "collapsed_sections": [] }, "kernelspec": { "name": "python3", "display_name": "Python 3" } }, "cells": [ { "cell_type": "code", "metadata": { "id": "D9HZTja19muZ" }, "source": [ "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "import tensorflow as tf\n", "import itertools\n", "from sklearn.preprocessing import MinMaxScaler\n", "from sklearn.metrics import confusion_matrix,accuracy_score,recall_score,precision_score,f1_score\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from keras.layers import Input,Dropout,Dense\n", "from keras.models import Model\n", "from keras import regularizers\n", "from keras.utils.data_utils import get_file\n", "%matplotlib inline" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "rx2kw3Kb_oaS", "outputId": "bd038d05-9785-4bed-ec2a-f35eb4c44f4e", "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCkgewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwogICAgICBwZXJjZW50LnRleHRDb250ZW50ID0KICAgICAgICAgIGAke01hdGgucm91bmQoKHBvc2l0aW9uIC8gZmlsZURhdGEuYnl0ZUxlbmd0aCkgKiAxMDApfSUgZG9uZWA7CiAgICB9CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 73 } }, "source": [ "from google.colab import files\n", "uploaded = files.upload()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Saving KDDTrain.csv to KDDTrain.csv\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "nJb1IFUZ_rFU" }, "source": [ "import io\n", "training_df = pd.read_csv(io.BytesIO(uploaded['KDDTrain.csv']))" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "j_lxszVi_tdb", "outputId": "0ee45ce2-cf62-40b2-e647-7e12b2943a8d", "colab": { "resources": { "http://localhost:8080/nbextensions/google.colab/files.js": { "data": "Ly8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIExMQwovLwovLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgovLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLy8KLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLy8KLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQovLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAovLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAovLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KCi8qKgogKiBAZmlsZW92ZXJ2aWV3IEhlbHBlcnMgZm9yIGdvb2dsZS5jb2xhYiBQeXRob24gbW9kdWxlLgogKi8KKGZ1bmN0aW9uKHNjb3BlKSB7CmZ1bmN0aW9uIHNwYW4odGV4dCwgc3R5bGVBdHRyaWJ1dGVzID0ge30pIHsKICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0ZXh0OwogIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHN0eWxlQXR0cmlidXRlcykpIHsKICAgIGVsZW1lbnQuc3R5bGVba2V5XSA9IHN0eWxlQXR0cmlidXRlc1trZXldOwogIH0KICByZXR1cm4gZWxlbWVudDsKfQoKLy8gTWF4IG51bWJlciBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHVwbG9hZGVkIGF0IGEgdGltZS4KY29uc3QgTUFYX1BBWUxPQURfU0laRSA9IDEwMCAqIDEwMjQ7CgpmdW5jdGlvbiBfdXBsb2FkRmlsZXMoaW5wdXRJZCwgb3V0cHV0SWQpIHsKICBjb25zdCBzdGVwcyA9IHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCk7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICAvLyBDYWNoZSBzdGVwcyBvbiB0aGUgb3V0cHV0RWxlbWVudCB0byBtYWtlIGl0IGF2YWlsYWJsZSBmb3IgdGhlIG5leHQgY2FsbAogIC8vIHRvIHVwbG9hZEZpbGVzQ29udGludWUgZnJvbSBQeXRob24uCiAgb3V0cHV0RWxlbWVudC5zdGVwcyA9IHN0ZXBzOwoKICByZXR1cm4gX3VwbG9hZEZpbGVzQ29udGludWUob3V0cHV0SWQpOwp9CgovLyBUaGlzIGlzIHJvdWdobHkgYW4gYXN5bmMgZ2VuZXJhdG9yIChub3Qgc3VwcG9ydGVkIGluIHRoZSBicm93c2VyIHlldCksCi8vIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZSBhc3luY2hyb25vdXMgc3RlcHMgYW5kIHRoZSBQeXRob24gc2lkZSBpcyBnb2luZwovLyB0byBwb2xsIGZvciBjb21wbGV0aW9uIG9mIGVhY2ggc3RlcC4KLy8gVGhpcyB1c2VzIGEgUHJvbWlzZSB0byBibG9jayB0aGUgcHl0aG9uIHNpZGUgb24gY29tcGxldGlvbiBvZiBlYWNoIHN0ZXAsCi8vIHRoZW4gcGFzc2VzIHRoZSByZXN1bHQgb2YgdGhlIHByZXZpb3VzIHN0ZXAgYXMgdGhlIGlucHV0IHRvIHRoZSBuZXh0IHN0ZXAuCmZ1bmN0aW9uIF91cGxvYWRGaWxlc0NvbnRpbnVlKG91dHB1dElkKSB7CiAgY29uc3Qgb3V0cHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG91dHB1dElkKTsKICBjb25zdCBzdGVwcyA9IG91dHB1dEVsZW1lbnQuc3RlcHM7CgogIGNvbnN0IG5leHQgPSBzdGVwcy5uZXh0KG91dHB1dEVsZW1lbnQubGFzdFByb21pc2VWYWx1ZSk7CiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXh0LnZhbHVlLnByb21pc2UpLnRoZW4oKHZhbHVlKSA9PiB7CiAgICAvLyBDYWNoZSB0aGUgbGFzdCBwcm9taXNlIHZhbHVlIHRvIG1ha2UgaXQgYXZhaWxhYmxlIHRvIHRoZSBuZXh0CiAgICAvLyBzdGVwIG9mIHRoZSBnZW5lcmF0b3IuCiAgICBvdXRwdXRFbGVtZW50Lmxhc3RQcm9taXNlVmFsdWUgPSB2YWx1ZTsKICAgIHJldHVybiBuZXh0LnZhbHVlLnJlc3BvbnNlOwogIH0pOwp9CgovKioKICogR2VuZXJhdG9yIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCBiZXR3ZWVuIGVhY2ggYXN5bmMgc3RlcCBvZiB0aGUgdXBsb2FkCiAqIHByb2Nlc3MuCiAqIEBwYXJhbSB7c3RyaW5nfSBpbnB1dElkIEVsZW1lbnQgSUQgb2YgdGhlIGlucHV0IGZpbGUgcGlja2VyIGVsZW1lbnQuCiAqIEBwYXJhbSB7c3RyaW5nfSBvdXRwdXRJZCBFbGVtZW50IElEIG9mIHRoZSBvdXRwdXQgZGlzcGxheS4KICogQHJldHVybiB7IUl0ZXJhYmxlPCFPYmplY3Q+fSBJdGVyYWJsZSBvZiBuZXh0IHN0ZXBzLgogKi8KZnVuY3Rpb24qIHVwbG9hZEZpbGVzU3RlcChpbnB1dElkLCBvdXRwdXRJZCkgewogIGNvbnN0IGlucHV0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlucHV0SWQpOwogIGlucHV0RWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwoKICBjb25zdCBvdXRwdXRFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQob3V0cHV0SWQpOwogIG91dHB1dEVsZW1lbnQuaW5uZXJIVE1MID0gJyc7CgogIGNvbnN0IHBpY2tlZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgaW5wdXRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYW5nZScsIChlKSA9PiB7CiAgICAgIHJlc29sdmUoZS50YXJnZXQuZmlsZXMpOwogICAgfSk7CiAgfSk7CgogIGNvbnN0IGNhbmNlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogIGlucHV0RWxlbWVudC5wYXJlbnRFbGVtZW50LmFwcGVuZENoaWxkKGNhbmNlbCk7CiAgY2FuY2VsLnRleHRDb250ZW50ID0gJ0NhbmNlbCB1cGxvYWQnOwogIGNvbnN0IGNhbmNlbFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gewogICAgY2FuY2VsLm9uY2xpY2sgPSAoKSA9PiB7CiAgICAgIHJlc29sdmUobnVsbCk7CiAgICB9OwogIH0pOwoKICAvLyBXYWl0IGZvciB0aGUgdXNlciB0byBwaWNrIHRoZSBmaWxlcy4KICBjb25zdCBmaWxlcyA9IHlpZWxkIHsKICAgIHByb21pc2U6IFByb21pc2UucmFjZShbcGlja2VkUHJvbWlzZSwgY2FuY2VsUHJvbWlzZV0pLAogICAgcmVzcG9uc2U6IHsKICAgICAgYWN0aW9uOiAnc3RhcnRpbmcnLAogICAgfQogIH07CgogIGNhbmNlbC5yZW1vdmUoKTsKCiAgLy8gRGlzYWJsZSB0aGUgaW5wdXQgZWxlbWVudCBzaW5jZSBmdXJ0aGVyIHBpY2tzIGFyZSBub3QgYWxsb3dlZC4KICBpbnB1dEVsZW1lbnQuZGlzYWJsZWQgPSB0cnVlOwoKICBpZiAoIWZpbGVzKSB7CiAgICByZXR1cm4gewogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbXBsZXRlJywKICAgICAgfQogICAgfTsKICB9CgogIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykgewogICAgY29uc3QgbGkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpOwogICAgbGkuYXBwZW5kKHNwYW4oZmlsZS5uYW1lLCB7Zm9udFdlaWdodDogJ2JvbGQnfSkpOwogICAgbGkuYXBwZW5kKHNwYW4oCiAgICAgICAgYCgke2ZpbGUudHlwZSB8fCAnbi9hJ30pIC0gJHtmaWxlLnNpemV9IGJ5dGVzLCBgICsKICAgICAgICBgbGFzdCBtb2RpZmllZDogJHsKICAgICAgICAgICAgZmlsZS5sYXN0TW9kaWZpZWREYXRlID8gZmlsZS5sYXN0TW9kaWZpZWREYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ24vYSd9IC0gYCkpOwogICAgY29uc3QgcGVyY2VudCA9IHNwYW4oJzAlIGRvbmUnKTsKICAgIGxpLmFwcGVuZENoaWxkKHBlcmNlbnQpOwoKICAgIG91dHB1dEVsZW1lbnQuYXBwZW5kQ2hpbGQobGkpOwoKICAgIGNvbnN0IGZpbGVEYXRhUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7CiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZSkgPT4gewogICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KTsKICAgICAgfTsKICAgICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGZpbGUpOwogICAgfSk7CiAgICAvLyBXYWl0IGZvciB0aGUgZGF0YSB0byBiZSByZWFkeS4KICAgIGxldCBmaWxlRGF0YSA9IHlpZWxkIHsKICAgICAgcHJvbWlzZTogZmlsZURhdGFQcm9taXNlLAogICAgICByZXNwb25zZTogewogICAgICAgIGFjdGlvbjogJ2NvbnRpbnVlJywKICAgICAgfQogICAgfTsKCiAgICAvLyBVc2UgYSBjaHVua2VkIHNlbmRpbmcgdG8gYXZvaWQgbWVzc2FnZSBzaXplIGxpbWl0cy4gU2VlIGIvNjIxMTU2NjAuCiAgICBsZXQgcG9zaXRpb24gPSAwOwogICAgd2hpbGUgKHBvc2l0aW9uIDwgZmlsZURhdGEuYnl0ZUxlbmd0aCkgewogICAgICBjb25zdCBsZW5ndGggPSBNYXRoLm1pbihmaWxlRGF0YS5ieXRlTGVuZ3RoIC0gcG9zaXRpb24sIE1BWF9QQVlMT0FEX1NJWkUpOwogICAgICBjb25zdCBjaHVuayA9IG5ldyBVaW50OEFycmF5KGZpbGVEYXRhLCBwb3NpdGlvbiwgbGVuZ3RoKTsKICAgICAgcG9zaXRpb24gKz0gbGVuZ3RoOwoKICAgICAgY29uc3QgYmFzZTY0ID0gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIGNodW5rKSk7CiAgICAgIHlpZWxkIHsKICAgICAgICByZXNwb25zZTogewogICAgICAgICAgYWN0aW9uOiAnYXBwZW5kJywKICAgICAgICAgIGZpbGU6IGZpbGUubmFtZSwKICAgICAgICAgIGRhdGE6IGJhc2U2NCwKICAgICAgICB9LAogICAgICB9OwogICAgICBwZXJjZW50LnRleHRDb250ZW50ID0KICAgICAgICAgIGAke01hdGgucm91bmQoKHBvc2l0aW9uIC8gZmlsZURhdGEuYnl0ZUxlbmd0aCkgKiAxMDApfSUgZG9uZWA7CiAgICB9CiAgfQoKICAvLyBBbGwgZG9uZS4KICB5aWVsZCB7CiAgICByZXNwb25zZTogewogICAgICBhY3Rpb246ICdjb21wbGV0ZScsCiAgICB9CiAgfTsKfQoKc2NvcGUuZ29vZ2xlID0gc2NvcGUuZ29vZ2xlIHx8IHt9OwpzY29wZS5nb29nbGUuY29sYWIgPSBzY29wZS5nb29nbGUuY29sYWIgfHwge307CnNjb3BlLmdvb2dsZS5jb2xhYi5fZmlsZXMgPSB7CiAgX3VwbG9hZEZpbGVzLAogIF91cGxvYWRGaWxlc0NvbnRpbnVlLAp9Owp9KShzZWxmKTsK", "ok": true, "headers": [ [ "content-type", "application/javascript" ] ], "status": 200, "status_text": "" } }, "base_uri": "https://localhost:8080/", "height": 73 } }, "source": [ "uploaded = files.upload()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/html": [ "\n", " \n", " \n", " Upload widget is only available when the cell has been executed in the\n", " current browser session. Please rerun this cell to enable.\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": { "tags": [] } }, { "output_type": "stream", "text": [ "Saving KDDTest.csv to KDDTest.csv\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "Rdvg0Sdx_1M0" }, "source": [ "testing_df = pd.read_csv(io.BytesIO(uploaded['KDDTest.csv']))" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "klI0nw7y_7nr" }, "source": [ "training_dfn=training_df\n", "testing_dfn=testing_df" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "9MVHB6MD_-05" }, "source": [ "training_dfn.replace('?', np.nan, inplace=True)\n", "training_dfn.dropna(inplace=True)\n", "testing_dfn.replace('?', np.nan, inplace=True)\n", "testing_dfn.dropna(inplace=True)" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Nr7Qs-K6ACEF", "outputId": "d3983bff-6068-482e-a395-e9384a857fda", "colab": { "base_uri": "https://localhost:8080/", "height": 223 } }, "source": [ "testing_dfn.head()\n" ], "execution_count": null, "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", " \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", " \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", " \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", " \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", " \n", " \n", "
durationprotocol_typeserviceflagsrc_bytesdst_byteslandwrong_fragmenturgenthotnum_failed_loginslogged_innum_compromisedroot_shellsu_attemptednum_rootnum_file_creationsnum_shellsnum_access_filesnum_outbound_cmdsis_host_loginis_guest_logincountsrv_countserror_ratesrv_serror_ratererror_ratesrv_rerror_ratesame_srv_ratediff_srv_ratesrv_diff_host_ratedst_host_countdst_host_srv_countdst_host_same_srv_ratedst_host_diff_srv_ratedst_host_same_src_port_ratedst_host_srv_diff_host_ratedst_host_serror_ratedst_host_srv_serror_ratedst_host_rerror_ratedst_host_srv_rerror_ratexAttack
001501000000000000000000229100.00.001.01.00.040.060.00255100.040.060.000.000.00.01.001.001
10150100000000000000000013610.00.001.01.00.010.060.0025510.000.060.000.000.00.01.001.001
2212021298300000000000000000110.00.000.00.01.000.000.00134860.610.040.610.020.00.00.000.000
30215220000000000000000001650.00.000.00.01.000.001.003571.000.001.000.280.00.00.000.001
4116130150000000000000000180.00.121.00.51.000.000.7529860.310.170.030.020.00.00.830.711
\n", "
" ], "text/plain": [ " duration protocol_type ... dst_host_srv_rerror_rate xAttack\n", "0 0 1 ... 1.00 1\n", "1 0 1 ... 1.00 1\n", "2 2 1 ... 0.00 0\n", "3 0 2 ... 0.00 1\n", "4 1 1 ... 0.71 1\n", "\n", "[5 rows x 42 columns]" ] }, "metadata": { "tags": [] }, "execution_count": 16 } ] }, { "cell_type": "markdown", "metadata": { "id": "VZ0dpWz6FLyc" }, "source": [ "" ] }, { "cell_type": "code", "metadata": { "id": "mEdi-fmMAEiA" }, "source": [ "x,Y=training_dfn,training_dfn.pop(\"xAttack\").values\n", "X=x.values\n", "x_test,C=testing_dfn,testing_dfn.pop(\"xAttack\").values\n", "T=x_test.values" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "yo-vktbSAJJn" }, "source": [ "from sklearn.preprocessing import StandardScaler, MinMaxScaler\n", "scaler = MinMaxScaler()\n", "scaler.fit(X)\n", "trainX = scaler.transform(X)\n", "scaler.fit(T)\n", "testT = scaler.transform(T)" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "0PljJYomALhJ" }, "source": [ "y0=np.ones(len(Y),np.int8)\n", "y0[np.where(Y==0)]=0\n", "y0_test=np.ones(len(C),np.int8)\n", "y0_test[np.where(C==0)]=0" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Yw98w8aNm5qb" }, "source": [ "###########################################################Stacked Autencoder ##################################################3" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "g6wk3fBqYy13" }, "source": [ "# Stacked Autoencoder \n", "from keras import models\n", "from keras import layers\n", "def create_stack_network():\n", " inputs = Input(shape=(41,))\n", " encoded = Dense(41, activation='tanh')(inputs)\n", " encoded = Dense(32, activation='tanh')(encoded)\n", " encoded = Dense(24, activation='tanh')(encoded)\n", " \n", " encoded = Dense(16, activation='tanh')(encoded)\n", "\n", " decoded = Dense(24, activation='tanh')(encoded)\n", " decoded = Dense(32, activation='tanh')(decoded)\n", " decoded = Dense(41, activation='tanh')(decoded)\n", " autoencoder=Model(inputs,decoded)\n", " autoencoder.compile(optimizer='adam',loss='mean_squared_error')\n", " return autoencoder" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "x3bNT2XRnuIP", "outputId": "ed04e526-31d9-4fd5-f8e6-17898e6f7e1b", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from sklearn.model_selection import KFold\n", "\n", "n_split=3\n", "cvscores = []\n", "hist=[]\n", "NtrainX=trainX[np.where(y0==0)]\n", "for train_index,test_index in KFold(n_split).split(NtrainX):\n", " x_train,x_test=NtrainX[train_index],NtrainX[test_index]\n", " model=create_stack_network()\n", " history=model.fit(x_train, x_train,validation_data=[testT,testT], epochs=20,batch_size=128)\n", " hist.append(history)\n", " scores = model.evaluate(testT, testT)\n", " cvscores.append(scores * 100)\n", " print(\". : %.2f%%\" % (scores*100))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0162 - val_loss: 0.0241\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0042 - val_loss: 0.0161\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0025 - val_loss: 0.0129\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0019 - val_loss: 0.0120\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0016 - val_loss: 0.0112\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0015 - val_loss: 0.0107\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 0.0014 - val_loss: 0.0104\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0013 - val_loss: 0.0111\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0012 - val_loss: 0.0117\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 0.0011 - val_loss: 0.0116\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0010 - val_loss: 0.0110\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 9.4649e-04 - val_loss: 0.0108\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 8.9990e-04 - val_loss: 0.0107\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 8.6715e-04 - val_loss: 0.0100\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 8.3756e-04 - val_loss: 0.0097\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 8.1255e-04 - val_loss: 0.0094\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 7.8970e-04 - val_loss: 0.0091\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.6930e-04 - val_loss: 0.0086\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.4665e-04 - val_loss: 0.0085\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.2720e-04 - val_loss: 0.0082\n", ". : 0.82%\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0147 - val_loss: 0.0206\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0037 - val_loss: 0.0149\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0025 - val_loss: 0.0134\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0020 - val_loss: 0.0131\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 0.0017 - val_loss: 0.0125\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0015 - val_loss: 0.0124\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0013 - val_loss: 0.0118\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0012 - val_loss: 0.0123\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 0.0011 - val_loss: 0.0118\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0010 - val_loss: 0.0111\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 9.3696e-04 - val_loss: 0.0099\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 8.8023e-04 - val_loss: 0.0089\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 17us/sample - loss: 8.3932e-04 - val_loss: 0.0083\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 8.0344e-04 - val_loss: 0.0080\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.7349e-04 - val_loss: 0.0081\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.4523e-04 - val_loss: 0.0073\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.1704e-04 - val_loss: 0.0074\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.9160e-04 - val_loss: 0.0071\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.6983e-04 - val_loss: 0.0071\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.4822e-04 - val_loss: 0.0069\n", ". : 0.69%\n", "Train on 44896 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44896/44896 [==============================] - 1s 24us/sample - loss: 0.0186 - val_loss: 0.0252\n", "Epoch 2/20\n", "44896/44896 [==============================] - 1s 23us/sample - loss: 0.0047 - val_loss: 0.0177\n", "Epoch 3/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0030 - val_loss: 0.0140\n", "Epoch 4/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0022 - val_loss: 0.0111\n", "Epoch 5/20\n", "44896/44896 [==============================] - 1s 24us/sample - loss: 0.0018 - val_loss: 0.0106\n", "Epoch 6/20\n", "44896/44896 [==============================] - 1s 23us/sample - loss: 0.0016 - val_loss: 0.0098\n", "Epoch 7/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 0.0014 - val_loss: 0.0095\n", "Epoch 8/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 0.0012 - val_loss: 0.0090\n", "Epoch 9/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 0.0011 - val_loss: 0.0084\n", "Epoch 10/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 0.0010 - val_loss: 0.0081\n", "Epoch 11/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 9.7447e-04 - val_loss: 0.0077\n", "Epoch 12/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 9.2274e-04 - val_loss: 0.0074\n", "Epoch 13/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 8.8481e-04 - val_loss: 0.0078\n", "Epoch 14/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 8.4194e-04 - val_loss: 0.0080\n", "Epoch 15/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 8.1095e-04 - val_loss: 0.0081\n", "Epoch 16/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 7.7564e-04 - val_loss: 0.0083\n", "Epoch 17/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 7.4401e-04 - val_loss: 0.0083\n", "Epoch 18/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 6.9965e-04 - val_loss: 0.0082\n", "Epoch 19/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 6.6332e-04 - val_loss: 0.0078\n", "Epoch 20/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 6.3278e-04 - val_loss: 0.0084\n", ". : 0.84%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "sSbLoYIwnAx-" }, "source": [ "####################################################Sparse Autoencocer ###################################################3" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "a9lbZsdGklJF" }, "source": [ "# Sparse Autoencoder \n", "from keras import models\n", "from keras import layers\n", "from keras import regularizers\n", "\n", "def create_sparse_network():\n", " inputs = Input(shape=(41,))\n", " encoded = Dense(41, activation='tanh',activity_regularizer=regularizers.l1(10e-6))(inputs)\n", " encoded = Dense(32, activation='tanh',activity_regularizer=regularizers.l1(10e-6))(encoded)\n", " encoded = Dense(24, activation='tanh',activity_regularizer=regularizers.l1(10e-5))(encoded)\n", " encoded = Dense(16, activation='tanh',activity_regularizer=regularizers.l1(10e-5))(encoded)\n", "\n", " decoded = Dense(24, activation='tanh')(encoded)\n", " decoded = Dense(32, activation='tanh')(decoded)\n", " decoded = Dense(41, activation='tanh')(decoded)\n", " autoencoder=Model(inputs,decoded)\n", " autoencoder.compile(optimizer='adam',loss='mean_squared_error')\n", " return autoencoder" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "HeHyIRMpGqST", "outputId": "b65afcba-ae96-446a-9159-a9d3279358ce", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from sklearn.model_selection import KFold\n", "\n", "n_split=3\n", "cvscores = []\n", "hist=[]\n", "NtrainX=trainX[np.where(y0==0)]\n", "for train_index,test_index in KFold(n_split).split(NtrainX):\n", " x_train,x_test=NtrainX[train_index],NtrainX[test_index]\n", " model=create_sparse_network()\n", " history=model.fit(x_train, x_train,validation_data=[testT,testT], epochs=20,batch_size=128)\n", " hist.append(history)\n", " scores = model.evaluate(testT, testT)\n", " cvscores.append(scores * 100)\n", " print(\". : %.2f%%\" % (scores*100))\n", " \n" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 28us/sample - loss: 0.0180 - val_loss: 0.0276\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 26us/sample - loss: 0.0051 - val_loss: 0.0195\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0035 - val_loss: 0.0156\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0028 - val_loss: 0.0128\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0024 - val_loss: 0.0106\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0021 - val_loss: 0.0094\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0019 - val_loss: 0.0085\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0018 - val_loss: 0.0085\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0017 - val_loss: 0.0079\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0015 - val_loss: 0.0077\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0015 - val_loss: 0.0077\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0014 - val_loss: 0.0078\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0013 - val_loss: 0.0076\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0013 - val_loss: 0.0079\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 0.0012 - val_loss: 0.0073\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0012 - val_loss: 0.0078\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0011 - val_loss: 0.0074\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0073\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0074\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0010 - val_loss: 0.0076\n", ". : 0.76%\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0196 - val_loss: 0.0250\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 0.0050 - val_loss: 0.0187\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0036 - val_loss: 0.0157\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0029 - val_loss: 0.0119\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0024 - val_loss: 0.0104\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0021 - val_loss: 0.0100\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0019 - val_loss: 0.0093\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0017 - val_loss: 0.0091\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0016 - val_loss: 0.0082\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 0.0015 - val_loss: 0.0078\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0014 - val_loss: 0.0082\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 22us/sample - loss: 0.0014 - val_loss: 0.0079\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0013 - val_loss: 0.0076\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 0.0013 - val_loss: 0.0077\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0013 - val_loss: 0.0075\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0012 - val_loss: 0.0080\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0012 - val_loss: 0.0076\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0012 - val_loss: 0.0073\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 0.0011 - val_loss: 0.0078\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0071\n", ". : 0.71%\n", "Train on 44896 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0194 - val_loss: 0.0237\n", "Epoch 2/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0049 - val_loss: 0.0162\n", "Epoch 3/20\n", "44896/44896 [==============================] - 1s 22us/sample - loss: 0.0032 - val_loss: 0.0118\n", "Epoch 4/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0025 - val_loss: 0.0108\n", "Epoch 5/20\n", "44896/44896 [==============================] - 1s 22us/sample - loss: 0.0021 - val_loss: 0.0091\n", "Epoch 6/20\n", "44896/44896 [==============================] - 1s 22us/sample - loss: 0.0018 - val_loss: 0.0086\n", "Epoch 7/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0017 - val_loss: 0.0079\n", "Epoch 8/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0016 - val_loss: 0.0075\n", "Epoch 9/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0015 - val_loss: 0.0075\n", "Epoch 10/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0015 - val_loss: 0.0077\n", "Epoch 11/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0014 - val_loss: 0.0072\n", "Epoch 12/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0013 - val_loss: 0.0065\n", "Epoch 13/20\n", "44896/44896 [==============================] - 1s 22us/sample - loss: 0.0012 - val_loss: 0.0064\n", "Epoch 14/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 0.0012 - val_loss: 0.0066\n", "Epoch 15/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0066\n", "Epoch 16/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0063\n", "Epoch 17/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0066\n", "Epoch 18/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0065\n", "Epoch 19/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0011 - val_loss: 0.0073\n", "Epoch 20/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0010 - val_loss: 0.0068\n", ". : 0.68%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "sAYo5juOnO_N" }, "source": [ "######################################################Denoising Autoencoder###############################################" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "fy3wz1xP1d6Z" }, "source": [ "#Denoising Autoencoder\n", "noise_factor = 0.1\n", "x_train_noisy = trainX + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=trainX.shape)\n", "x_test_noisy = testT + noise_factor * np.random.normal(loc=0.0, scale=1.0, size=testT.shape)\n", "x_train_noisy = np.clip(x_train_noisy, 0., 1.)\n", "x_test_noisy = np.clip(x_test_noisy, 0., 1.)\n" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "9R5kMTv51woF", "outputId": "1579d8b3-e83a-48d6-c48f-d91e5105edb1", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from sklearn.model_selection import KFold\n", "\n", "n_split=3\n", "cvscores = []\n", "hist=[]\n", "NtrainX=trainX[np.where(y0==0)]\n", "NtrainX_noisy=x_train_noisy[np.where(y0==0)]\n", "\n", "for train_index,test_index in KFold(n_split).split(NtrainX):\n", " x_train,x_test=NtrainX[train_index],NtrainX[test_index]\n", " x_train_noisy2=NtrainX_noisy[train_index]\n", " model=create_stack_network()\n", " history=model.fit(x_train_noisy2, x_train,validation_data=[x_test_noisy,testT], epochs=20,batch_size=128)\n", " hist.append(history)\n", " scores = model.evaluate(testT, testT)\n", " cvscores.append(scores * 100)\n", " print(\". : %.2f%%\" % (scores*100))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 2s 34us/sample - loss: 0.0182 - val_loss: 0.0282\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 26us/sample - loss: 0.0058 - val_loss: 0.0193\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0042 - val_loss: 0.0153\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0037 - val_loss: 0.0139\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0033 - val_loss: 0.0133\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0030 - val_loss: 0.0128\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0028 - val_loss: 0.0124\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0026 - val_loss: 0.0119\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0024 - val_loss: 0.0117\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0023 - val_loss: 0.0115\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0022 - val_loss: 0.0112\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0020 - val_loss: 0.0107\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0020 - val_loss: 0.0102\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0019 - val_loss: 0.0097\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 26us/sample - loss: 0.0018 - val_loss: 0.0100\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0018 - val_loss: 0.0094\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0017 - val_loss: 0.0092\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0017 - val_loss: 0.0088\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0017 - val_loss: 0.0092\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0016 - val_loss: 0.0086\n", ". : 0.79%\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 32us/sample - loss: 0.0174 - val_loss: 0.0251\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0052 - val_loss: 0.0179\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0039 - val_loss: 0.0141\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0033 - val_loss: 0.0133\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0030 - val_loss: 0.0134\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0027 - val_loss: 0.0131\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 26us/sample - loss: 0.0026 - val_loss: 0.0130\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0024 - val_loss: 0.0135\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0023 - val_loss: 0.0128\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0022 - val_loss: 0.0126\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0021 - val_loss: 0.0123\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0020 - val_loss: 0.0118\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0019 - val_loss: 0.0114\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 23us/sample - loss: 0.0018 - val_loss: 0.0110\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0018 - val_loss: 0.0108\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0017 - val_loss: 0.0104\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0017 - val_loss: 0.0101\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 24us/sample - loss: 0.0016 - val_loss: 0.0100\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0016 - val_loss: 0.0096\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 25us/sample - loss: 0.0016 - val_loss: 0.0094\n", ". : 0.86%\n", "Train on 44896 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44896/44896 [==============================] - 2s 35us/sample - loss: 0.0195 - val_loss: 0.0308\n", "Epoch 2/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0060 - val_loss: 0.0218\n", "Epoch 3/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0044 - val_loss: 0.0173\n", "Epoch 4/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0037 - val_loss: 0.0163\n", "Epoch 5/20\n", "44896/44896 [==============================] - 1s 24us/sample - loss: 0.0033 - val_loss: 0.0159\n", "Epoch 6/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0030 - val_loss: 0.0160\n", "Epoch 7/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0027 - val_loss: 0.0162\n", "Epoch 8/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0026 - val_loss: 0.0147\n", "Epoch 9/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0024 - val_loss: 0.0140\n", "Epoch 10/20\n", "44896/44896 [==============================] - 1s 27us/sample - loss: 0.0023 - val_loss: 0.0130\n", "Epoch 11/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0022 - val_loss: 0.0117\n", "Epoch 12/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0021 - val_loss: 0.0118\n", "Epoch 13/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0020 - val_loss: 0.0113\n", "Epoch 14/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0019 - val_loss: 0.0109\n", "Epoch 15/20\n", "44896/44896 [==============================] - 1s 26us/sample - loss: 0.0018 - val_loss: 0.0105\n", "Epoch 16/20\n", "44896/44896 [==============================] - 1s 25us/sample - loss: 0.0018 - val_loss: 0.0106\n", "Epoch 17/20\n", "44896/44896 [==============================] - 1s 27us/sample - loss: 0.0017 - val_loss: 0.0100\n", "Epoch 18/20\n", "44896/44896 [==============================] - 1s 27us/sample - loss: 0.0017 - val_loss: 0.0098\n", "Epoch 19/20\n", "44896/44896 [==============================] - 1s 31us/sample - loss: 0.0016 - val_loss: 0.0095\n", "Epoch 20/20\n", "44896/44896 [==============================] - 1s 32us/sample - loss: 0.0016 - val_loss: 0.0087\n", ". : 0.80%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "AzzTxniSPZsq" }, "source": [ "#####################Contractive Autoencoder ########################" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "jNaXx8kr9iGm", "outputId": "d29802a0-e588-4f81-9317-ba14b1c49177", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from keras.layers import Input, Dense\n", "from keras.models import Model\n", "import tensorflow.keras.backend as K\n", "import tensorflow_probability as tfp\n", "from sklearn.model_selection import KFold\n", "lam = 1e-5\n", "\n", "session = tf.compat.v1.keras.backend.get_session()\n", "\n", "tf.compat.v1.disable_eager_execution()\n", "\n", "\n", "tfd = tfp.distributions\n", "\n", "init = tf.compat.v1.global_variables_initializer()\n", "\n", "with tf.compat.v1.Session() as sess:\n", " sess.run(init) \n", "\n", "inputs = Input(shape=(41,))\n", "encoded = Dense(41, activation='tanh')(inputs)\n", "encoded = Dense(32, activation='tanh')(encoded)\n", "encoded = Dense(24, activation='tanh')(encoded)\n", " \n", "encoded = Dense(16, activation='tanh',name='encoded')(encoded)\n", "\n", "decoded = Dense(24, activation='tanh')(encoded)\n", "decoded = Dense(32, activation='tanh')(decoded)\n", "decoded = Dense(41, activation='tanh')(decoded)\n", "model=Model(inputs,decoded)\n", "\n", "def contractive_loss(y_pred, y_true):\n", " mse = K.mean(K.square(y_true - y_pred), axis=1)\n", "\n", " W = K.variable(value=model.get_layer('encoded').get_weights()[0]) # N x N_hidden\n", " W = K.transpose(W) # N_hidden x N\n", " h = model.get_layer('encoded').output\n", " dh = h * (1 - h) # N_batch x N_hidden\n", "\n", " # N_batch x N_hidden * N_hidden x 1 = N_batch x 1\n", " contractive = lam * K.sum(dh**2 * K.sum(W**2, axis=1), axis=1)\n", "\n", " return mse + contractive\n", "\n", "model.compile(optimizer='adam',loss=contractive_loss)\n", "n_split=3\n", "cvscores = []\n", "hist=[]\n", "\n", "NtrainX=trainX[np.where(y0==0)]\n", "\n", "for train_index,test_index in KFold(n_split).split(NtrainX):\n", " x_train,x_test=NtrainX[train_index],NtrainX[test_index]\n", "\n", " history=model.fit(x_train, x_train,validation_data=[testT,testT],epochs=20,batch_size=128)\n", " hist.append(history)\n", " scores = model.evaluate(testT, testT)\n", " cvscores.append(scores * 100)\n", " print(\". : %.2f%%\" % (scores*100))\n", " " ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - ETA: 0s - loss: 0.0185WARNING:tensorflow:From /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training_v1.py:2048: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\n", "Instructions for updating:\n", "This property should not be used in TensorFlow 2.0, as updates are applied automatically.\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0185 - val_loss: 0.0243\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0048 - val_loss: 0.0161\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0028 - val_loss: 0.0130\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0021 - val_loss: 0.0107\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0017 - val_loss: 0.0095\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0015 - val_loss: 0.0085\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0014 - val_loss: 0.0079\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 0.0013 - val_loss: 0.0079\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0012 - val_loss: 0.0077\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 0.0011 - val_loss: 0.0074\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 0.0010 - val_loss: 0.0075\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 9.5382e-04 - val_loss: 0.0077\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 9.1406e-04 - val_loss: 0.0073\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 8.7225e-04 - val_loss: 0.0070\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 8.3753e-04 - val_loss: 0.0073\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 8.0632e-04 - val_loss: 0.0065\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 7.8257e-04 - val_loss: 0.0067\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 7.5754e-04 - val_loss: 0.0066\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 7.3583e-04 - val_loss: 0.0062\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 7.1889e-04 - val_loss: 0.0063\n", ". : 0.63%\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 7.0590e-04 - val_loss: 0.0062\n", "Epoch 2/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.9019e-04 - val_loss: 0.0064\n", "Epoch 3/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 6.7218e-04 - val_loss: 0.0066\n", "Epoch 4/20\n", "44895/44895 [==============================] - 1s 21us/sample - loss: 6.5908e-04 - val_loss: 0.0063\n", "Epoch 5/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.4665e-04 - val_loss: 0.0067\n", "Epoch 6/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 6.2692e-04 - val_loss: 0.0065\n", "Epoch 7/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 6.1406e-04 - val_loss: 0.0065\n", "Epoch 8/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 6.0290e-04 - val_loss: 0.0064\n", "Epoch 9/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 5.9214e-04 - val_loss: 0.0063\n", "Epoch 10/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 5.7491e-04 - val_loss: 0.0068\n", "Epoch 11/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 5.6557e-04 - val_loss: 0.0066\n", "Epoch 12/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 5.5285e-04 - val_loss: 0.0064\n", "Epoch 13/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 5.4469e-04 - val_loss: 0.0064\n", "Epoch 14/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 5.3190e-04 - val_loss: 0.0067\n", "Epoch 15/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 5.1984e-04 - val_loss: 0.0064\n", "Epoch 16/20\n", "44895/44895 [==============================] - 1s 20us/sample - loss: 5.1005e-04 - val_loss: 0.0065\n", "Epoch 17/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 5.0133e-04 - val_loss: 0.0069\n", "Epoch 18/20\n", "44895/44895 [==============================] - 1s 18us/sample - loss: 4.8973e-04 - val_loss: 0.0071\n", "Epoch 19/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 4.8107e-04 - val_loss: 0.0066\n", "Epoch 20/20\n", "44895/44895 [==============================] - 1s 19us/sample - loss: 4.6785e-04 - val_loss: 0.0067\n", ". : 0.67%\n", "Train on 44896 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 4.7065e-04 - val_loss: 0.0065\n", "Epoch 2/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 4.5646e-04 - val_loss: 0.0067\n", "Epoch 3/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 4.4741e-04 - val_loss: 0.0064\n", "Epoch 4/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 4.3990e-04 - val_loss: 0.0067\n", "Epoch 5/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 4.3233e-04 - val_loss: 0.0066\n", "Epoch 6/20\n", "44896/44896 [==============================] - 1s 17us/sample - loss: 4.2403e-04 - val_loss: 0.0059\n", "Epoch 7/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 4.1760e-04 - val_loss: 0.0064\n", "Epoch 8/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 4.1283e-04 - val_loss: 0.0062\n", "Epoch 9/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 4.0415e-04 - val_loss: 0.0064\n", "Epoch 10/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 3.9691e-04 - val_loss: 0.0065\n", "Epoch 11/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 3.9180e-04 - val_loss: 0.0063\n", "Epoch 12/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 3.8722e-04 - val_loss: 0.0058\n", "Epoch 13/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 3.8256e-04 - val_loss: 0.0058\n", "Epoch 14/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 3.7661e-04 - val_loss: 0.0059\n", "Epoch 15/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 3.7210e-04 - val_loss: 0.0060\n", "Epoch 16/20\n", "44896/44896 [==============================] - 1s 18us/sample - loss: 3.6588e-04 - val_loss: 0.0059\n", "Epoch 17/20\n", "44896/44896 [==============================] - 1s 20us/sample - loss: 3.6382e-04 - val_loss: 0.0057\n", "Epoch 18/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 3.6050e-04 - val_loss: 0.0059\n", "Epoch 19/20\n", "44896/44896 [==============================] - 1s 21us/sample - loss: 3.5777e-04 - val_loss: 0.0055\n", "Epoch 20/20\n", "44896/44896 [==============================] - 1s 19us/sample - loss: 3.5160e-04 - val_loss: 0.0058\n", ". : 0.58%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "_gQugs8-nbs3" }, "source": [ "##############################################################Convolutional Autoencoder################################################" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "ZB5Az-M549OM" }, "source": [ "#convolutional autoenoder\n", "\n", "\n", "from keras.engine.topology import Layer\n", "from keras.models import Sequential\n", "import keras.backend as K\n", "from keras.layers import Conv2DTranspose,BatchNormalization,Dropout, Input, Conv1D, MaxPooling1D, UpSampling1D, Dense, Activation, Lambda, Reshape, Flatten\n", "\n", "class Conv1DTranspose(Layer):\n", " def __init__(self, filters, kernel_size, strides=1, *args, **kwargs):\n", " self._filters = filters\n", " self._kernel_size = (1, kernel_size)\n", " self._strides = (1, strides)\n", " self._args, self._kwargs = args, kwargs\n", " super(Conv1DTranspose, self).__init__()\n", "\n", " def build(self, input_shape):\n", " print(\"build\", input_shape)\n", " self._model = Sequential()\n", " self._model.add(Lambda(lambda x: K.expand_dims(x,axis=1), batch_input_shape=input_shape))\n", " self._model.add(Conv2DTranspose(self._filters,\n", " kernel_size=self._kernel_size,\n", " strides=self._strides,\n", " *self._args, **self._kwargs))\n", " self._model.add(Lambda(lambda x: x[:,0]))\n", " self._model.summary()\n", " super(Conv1DTranspose, self).build(input_shape)\n", "\n", " def call(self, x):\n", " return self._model(x)\n", "\n", " def compute_output_shape(self, input_shape):\n", " return self._model.compute_output_shape(input_shape)\n", "\n", "\n", "\n", "from numpy import zeros, newaxis\n", "xin=trainX[:,:,newaxis]\n", "xin_test=testT[:,:,newaxis]\n", "xin.shape\n", "\n", "\n", "def create_Convolutional_network():\n", "\tinp = Input(shape=(xin.shape[1],1))\n", "\tconv1 = Conv1D(8, 3, activation='tanh', padding='same')(inp) #41\n", "\tconv1 = BatchNormalization()(conv1)\n", "\tconv1 = MaxPooling1D(2)(conv1)\n", "\tconv7b = Conv1D(8, 3, activation='tanh', padding='same')(conv1)\n", "\tconv7b = BatchNormalization()(conv7b) \n", " \n", "\n", "\tconv7b = UpSampling1D(2)(conv7b) # 40 \n", "\tconv7 = Conv1D(8, 3, activation='tanh', padding='same')(conv7b) # 40\n", "\tconv7 = BatchNormalization()(conv7)\n", "\tdecoded = Conv1DTranspose(1, 2, activation='tanh',padding='valid')(conv7)\n", "\tautoencoder = Model(inp, decoded)\n", " \n", "\tautoencoder.compile(optimizer='adam', loss='mean_squared_error')\n", "\treturn autoencoder" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Ocy1qEGP6ndC", "outputId": "d606f4d4-1395-48db-9974-ccfb6c24ffc0", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from sklearn.model_selection import KFold\n", "\n", "n_split=3\n", "cvscores = []\n", "hist=[]\n", "NtrainX=xin[np.where(y0==0)]\n", "\n", "for train_index,test_index in KFold(n_split).split(NtrainX):\n", " x_train,x_test=NtrainX[train_index],NtrainX[test_index]\n", " model=create_Convolutional_network()\n", " history=model.fit(x_train, x_train,validation_data=[xin_test,xin_test], epochs=20,batch_size=128)\n", " hist.append(history)\n", " scores = model.evaluate(xin_test, xin_test)\n", " cvscores.append(scores * 100)\n", " print(\". : %.2f%%\" % (scores*100))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "build (None, 40, 8)\n", "Model: \"sequential\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lambda (Lambda) (None, 1, 40, 8) 0 \n", "_________________________________________________________________\n", "conv2d_transpose (Conv2DTran (None, 1, 41, 1) 17 \n", "_________________________________________________________________\n", "lambda_1 (Lambda) (None, 41, 1) 0 \n", "=================================================================\n", "Total params: 17\n", "Trainable params: 17\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 0.0481 - val_loss: 0.0304\n", "Epoch 2/20\n", "44895/44895 [==============================] - 4s 93us/sample - loss: 0.0072 - val_loss: 0.0210\n", "Epoch 3/20\n", "44895/44895 [==============================] - 4s 94us/sample - loss: 0.0048 - val_loss: 0.0169\n", "Epoch 4/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0036 - val_loss: 0.0137\n", "Epoch 5/20\n", "44895/44895 [==============================] - 4s 95us/sample - loss: 0.0028 - val_loss: 0.0106\n", "Epoch 6/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0022 - val_loss: 0.0090\n", "Epoch 7/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0018 - val_loss: 0.0077\n", "Epoch 8/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 0.0015 - val_loss: 0.0066\n", "Epoch 9/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0014 - val_loss: 0.0055\n", "Epoch 10/20\n", "44895/44895 [==============================] - 5s 108us/sample - loss: 0.0012 - val_loss: 0.0050\n", "Epoch 11/20\n", "44895/44895 [==============================] - 5s 113us/sample - loss: 0.0011 - val_loss: 0.0043\n", "Epoch 12/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 9.9233e-04 - val_loss: 0.0035\n", "Epoch 13/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 9.0046e-04 - val_loss: 0.0032\n", "Epoch 14/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 8.1522e-04 - val_loss: 0.0027\n", "Epoch 15/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 7.7665e-04 - val_loss: 0.0026\n", "Epoch 16/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 7.1646e-04 - val_loss: 0.0025\n", "Epoch 17/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 6.6815e-04 - val_loss: 0.0024\n", "Epoch 18/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 6.3995e-04 - val_loss: 0.0022\n", "Epoch 19/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 6.0393e-04 - val_loss: 0.0023\n", "Epoch 20/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 5.7582e-04 - val_loss: 0.0021\n", ". : 0.21%\n", "build (None, 40, 8)\n", "Model: \"sequential_1\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lambda_2 (Lambda) (None, 1, 40, 8) 0 \n", "_________________________________________________________________\n", "conv2d_transpose_1 (Conv2DTr (None, 1, 41, 1) 17 \n", "_________________________________________________________________\n", "lambda_3 (Lambda) (None, 41, 1) 0 \n", "=================================================================\n", "Total params: 17\n", "Trainable params: 17\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Train on 44895 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44895/44895 [==============================] - 4s 100us/sample - loss: 0.0514 - val_loss: 0.0272\n", "Epoch 2/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 0.0084 - val_loss: 0.0159\n", "Epoch 3/20\n", "44895/44895 [==============================] - 4s 95us/sample - loss: 0.0051 - val_loss: 0.0115\n", "Epoch 4/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 0.0036 - val_loss: 0.0092\n", "Epoch 5/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0028 - val_loss: 0.0084\n", "Epoch 6/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 0.0024 - val_loss: 0.0081\n", "Epoch 7/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0020 - val_loss: 0.0080\n", "Epoch 8/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0017 - val_loss: 0.0078\n", "Epoch 9/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 0.0015 - val_loss: 0.0070\n", "Epoch 10/20\n", "44895/44895 [==============================] - 4s 95us/sample - loss: 0.0013 - val_loss: 0.0067\n", "Epoch 11/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0012 - val_loss: 0.0062\n", "Epoch 12/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 0.0011 - val_loss: 0.0055\n", "Epoch 13/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0011 - val_loss: 0.0046\n", "Epoch 14/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 0.0010 - val_loss: 0.0042\n", "Epoch 15/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 9.5235e-04 - val_loss: 0.0037\n", "Epoch 16/20\n", "44895/44895 [==============================] - 4s 97us/sample - loss: 9.0289e-04 - val_loss: 0.0034\n", "Epoch 17/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 8.5168e-04 - val_loss: 0.0033\n", "Epoch 18/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 8.1431e-04 - val_loss: 0.0031\n", "Epoch 19/20\n", "44895/44895 [==============================] - 4s 98us/sample - loss: 7.7705e-04 - val_loss: 0.0028\n", "Epoch 20/20\n", "44895/44895 [==============================] - 4s 96us/sample - loss: 7.3913e-04 - val_loss: 0.0027\n", ". : 0.27%\n", "build (None, 40, 8)\n", "Model: \"sequential_2\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lambda_4 (Lambda) (None, 1, 40, 8) 0 \n", "_________________________________________________________________\n", "conv2d_transpose_2 (Conv2DTr (None, 1, 41, 1) 17 \n", "_________________________________________________________________\n", "lambda_5 (Lambda) (None, 41, 1) 0 \n", "=================================================================\n", "Total params: 17\n", "Trainable params: 17\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Train on 44896 samples, validate on 22543 samples\n", "Epoch 1/20\n", "44896/44896 [==============================] - 5s 103us/sample - loss: 0.0543 - val_loss: 0.0310\n", "Epoch 2/20\n", "44896/44896 [==============================] - 4s 99us/sample - loss: 0.0092 - val_loss: 0.0174\n", "Epoch 3/20\n", "44896/44896 [==============================] - 4s 99us/sample - loss: 0.0051 - val_loss: 0.0115\n", "Epoch 4/20\n", "44896/44896 [==============================] - 4s 100us/sample - loss: 0.0034 - val_loss: 0.0083\n", "Epoch 5/20\n", "44896/44896 [==============================] - 4s 98us/sample - loss: 0.0025 - val_loss: 0.0069\n", "Epoch 6/20\n", "44896/44896 [==============================] - 4s 99us/sample - loss: 0.0020 - val_loss: 0.0062\n", "Epoch 7/20\n", "44896/44896 [==============================] - 4s 96us/sample - loss: 0.0017 - val_loss: 0.0050\n", "Epoch 8/20\n", "44896/44896 [==============================] - 4s 97us/sample - loss: 0.0014 - val_loss: 0.0048\n", "Epoch 9/20\n", "44896/44896 [==============================] - 4s 98us/sample - loss: 0.0013 - val_loss: 0.0040\n", "Epoch 10/20\n", "44896/44896 [==============================] - 4s 98us/sample - loss: 0.0011 - val_loss: 0.0037\n", "Epoch 11/20\n", "44896/44896 [==============================] - 4s 98us/sample - loss: 0.0010 - val_loss: 0.0035\n", "Epoch 12/20\n", "44896/44896 [==============================] - 4s 97us/sample - loss: 9.3159e-04 - val_loss: 0.0032\n", "Epoch 13/20\n", "44896/44896 [==============================] - 4s 96us/sample - loss: 8.5419e-04 - val_loss: 0.0032\n", "Epoch 14/20\n", "44896/44896 [==============================] - 4s 97us/sample - loss: 7.7956e-04 - val_loss: 0.0029\n", "Epoch 15/20\n", "44896/44896 [==============================] - 4s 99us/sample - loss: 7.3116e-04 - val_loss: 0.0027\n", "Epoch 16/20\n", "44896/44896 [==============================] - 4s 98us/sample - loss: 6.8515e-04 - val_loss: 0.0024\n", "Epoch 17/20\n", "44896/44896 [==============================] - 4s 100us/sample - loss: 6.4819e-04 - val_loss: 0.0021\n", "Epoch 18/20\n", "44896/44896 [==============================] - 5s 101us/sample - loss: 6.1847e-04 - val_loss: 0.0020\n", "Epoch 19/20\n", "44896/44896 [==============================] - 5s 103us/sample - loss: 5.8845e-04 - val_loss: 0.0021\n", "Epoch 20/20\n", "44896/44896 [==============================] - 4s 100us/sample - loss: 5.6044e-04 - val_loss: 0.0020\n", ". : 0.20%\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "pre7YAeGrhQj" }, "source": [ "threshold=history.history[\"loss\"][-1]\n", "threshold\n", "import matplotlib.pyplot as plt\n", "H1=hist.pop()\n", "H2=hist.pop()\n", "H3=hist.pop()" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "nm2Ycjj-pPHZ", "outputId": "7eb99e06-4915-48cc-f4b1-398f1c28ca94", "colab": { "base_uri": "https://localhost:8080/", "height": 295 } }, "source": [ "\n", "history=H3\n", "loss_train = history.history['loss']\n", "loss_val = history.history['val_loss']\n", "epochs = range(20)\n", "plt.plot(epochs, loss_train, 'g', label='Training loss')\n", "plt.plot(epochs, loss_val, 'b', label='validation loss')\n", "plt.title('Training and Validation loss')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.legend()\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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cAH79++vc3yTJk3iySefrPN+6koTR4j8w+5rO4dSjV+HDh2YPXt2rbevnDjmzZtHq1atIhFavaCJI0Rt2kDPntrOoVRDMXHiRKZNm1b+3v/f+oEDBzj77LMZOHAgJ510Em+//fYx227ZsoW+ffsCUFhYyJgxY+jVqxeXXnophYWF5eVuueUWsrKy6NOnDw8//DAAU6dO5fvvv2fEiBGMGDECgK5du7J7924AJk+eTN++fenbty9TpkwpP16vXr244YYb6NOnD+eee26F4wSzcuVKhgwZQr9+/bj00kvZt29f+fF79+5Nv379GDNmDBB8SPa60Ps4wjB0KMyZY+8m92jKVSpkd94JKyM7qjr9+8OUasZOvPLKK7nzzju59dZbAXjjjTeYP38+SUlJzJkzh5SUFHbv3s2QIUO45JJLqnzu9rPPPkvz5s1Zt24dq1atYuDAgeXrHn30UdLT0yktLeXss89m1apV3HHHHUyePJkFCxaQUenGr2XLljFjxgyWLFmCMYbBgwdz5plnkpaWxrfffsvf//53nnvuOa644grefPNNrr766io/37hx43jqqac488wzeeihh/jtb3/LlClT+MMf/sDmzZtJTEwsvzwWbEj2utCvvzBkZ8PevbB+fawjUUrVZMCAAfzwww98//33fPXVV6SlpdG5c2eMMdx///3069ePc845h23btgUdJt1v4cKF5V/g/fr1o1+/fuXr3njjDQYOHMiAAQNYs2YNa9eurTamxYsXc+mll9KiRQtatmzJT37yk/KHL3Xr1o3+/fsDMGjQoPKBEYPJy8tj//79nHnmmQBcc801LFy4sDzGsWPH8sorr5Q/4TDYkOx1oTWOMAwdal8//RR6945tLEo1JNXVDNw0evRoZs+ezY4dO7jyyisBePXVV9m1axfLli0jPj6erl27crgW3SU3b97Mk08+yZdffklaWhrjx4+v1X78Kg/LXtOlqqq8++67LFy4kHfeeYdHH32U1atXBx2S/cQTT6x1rFrjCIPPZ9s6tJ1DqYbhyiuv5PXXX2f27NmMHj0asP+tt23blvj4eBYsWMDWrVur3ccZZ5zBa6+9BsDXX39d/ijX/Px8WrRoQWpqKjt37uS9994r3yY5OTloO8KwYcN46623OHToEAcPHmTOnDkMGzYs7M+VmppKWlpaeW3l5Zdf5swzz6SsrIzv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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "3v7z7fPnoIUL" }, "source": [ "####################################################### Autoencoder Evaluation ################################" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "W0_WSA9ghLdi", "outputId": "a92f7157-8f0f-4482-da8d-53fa8d61e268", "colab": { "base_uri": "https://localhost:8080/", "height": 178 } }, "source": [ "def calculate_losses(x,preds):\n", " losses=np.zeros(len(x))\n", " for i in range(len(x)):\n", " losses[i]=((preds[i] - x[i]) ** 2).mean(axis=None)\n", "\n", " return losses\n", "\n", "# We set the threshold equal to the training loss of the autoencoder\n", "threshold=history.history[\"loss\"][-1]\n", "training_set_predictions=model.predict(trainX)\n", "test_losses=calculate_losses(trainX,training_set_predictions)\n", "training_set_predictions=np.zeros(len(test_losses))\n", "training_set_predictions[np.where(test_losses>threshold)]=1\n", "\n", "accuracy=accuracy_score(y0,training_set_predictions)\n", "recall=recall_score(y0,training_set_predictions)\n", "precision=precision_score(y0,training_set_predictions)\n", "f1=f1_score(y0,training_set_predictions)\n", "f1=f1_score(y0,training_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,training_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "testing_set_predictions=model.predict(testT)\n", "test_losses=calculate_losses(testT,testing_set_predictions)\n", "testing_set_predictions=np.zeros(len(test_losses))\n", "testing_set_predictions[np.where(test_losses>threshold)]=1\n", "\n", "accuracy=accuracy_score(y0_test,testing_set_predictions)\n", "recall=recall_score(y0_test,testing_set_predictions)\n", "precision=precision_score(y0_test,testing_set_predictions)\n", "f1=f1_score(y0_test,testing_set_predictions)\n", "f1=f1_score(y0_test,testing_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,testing_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the testing data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Performance over the training data set \n", "\n", "Accuracy : 0.9147118827050241 , Recall : 0.9699812382739212 , Precision : 0.8635770036747957 , F1 : 0.9136917194177564, FAR : 0.13340659014299927 \n", "\n", "Performance over the testing data set \n", "\n", "Accuracy : 0.8797852992059619 , Recall : 0.8922309670381049 , Precision : 0.896141504265477 , F1 : 0.894181960171808, FAR : 0.13666323377960865 \n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "mWWvK6ifo6xg" }, "source": [ "##############################################Saving the model all models except Convolutional " ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "pFTeoNeWwAhU", "outputId": "2f255780-787d-473a-942c-faec84eff7f3", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "from google.colab import drive\n", "#drive.mount('/content/gdrive')\n", "\n", "from keras.models import model_from_json\n", "# serialize model to JSON\n", "model_json = model.to_json()\n", "with open(\"/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.json\", \"w\") as json_file:\n", " json_file.write(model_json)\n", "# serialize weights to HDF5\n", "model.save_weights(\"/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.h5\")\n", "print(\"Saved model to disk\")\n", "\n", "# later..." ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Saved model to disk\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "LBzZijleo-hQ" }, "source": [ "##################################################Loading all model except convolutional " ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "Lpm-facYh_Ut", "outputId": "9c3c892a-7557-4d5f-aaa1-6692d7f3ff01", "colab": { "base_uri": "https://localhost:8080/", "height": 195 } }, "source": [ "# load json and create model\n", "json_file = open('/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.json', 'r')\n", "loaded_model_json = json_file.read()\n", "json_file.close()\n", "loaded_model = model_from_json(loaded_model_json)\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')# Contractive model its contractive_loss\n", "\n", "threshold=0.00161\n", "testing_set_predictions=loaded_model.predict(testT)\n", "test_losses=calculate_losses(testT,testing_set_predictions)\n", "testing_set_predictions=np.zeros(len(test_losses))\n", "testing_set_predictions[np.where(test_losses>threshold)]=1\n", "\n", "accuracy=accuracy_score(y0_test,testing_set_predictions)\n", "recall=recall_score(y0_test,testing_set_predictions)\n", "precision=precision_score(y0_test,testing_set_predictions)\n", "f1=f1_score(y0_test,testing_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,testing_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the testing data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR :{}\\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "training_set_predictions=loaded_model.predict(trainX)\n", "test_losses=calculate_losses(trainX,training_set_predictions)\n", "training_set_predictions=np.zeros(len(test_losses))\n", "training_set_predictions[np.where(test_losses>threshold)]=1 \n", "\n", "accuracy=accuracy_score(y0,training_set_predictions)\n", "recall=recall_score(y0,training_set_predictions)\n", "precision=precision_score(y0,training_set_predictions)\n", "f1=f1_score(y0,training_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,training_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Loaded model from disk\n", "Performance over the testing data set \n", "\n", "Accuracy : 0.8798740185423413 , Recall : 0.8923868152419543 , Precision : 0.8961577588230691 , F1 : 0.8942683117288771, FAR :0.13666323377960865\n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.9146880680780802 , Recall : 0.9700324066177725 , Precision : 0.8635045473179175 , F1 : 0.91367386118095, FAR : 0.13349568626286326 \n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "BYRIUWMHujen" }, "source": [ "#########################Saving Convolutional AE" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "xBsLgZS5umv3", "outputId": "1bf36ae0-0b88-4363-b927-dbb591921e5e", "colab": { "base_uri": "https://localhost:8080/", "height": 34 } }, "source": [ "from google.colab import drive\n", "#drive.mount('/content/gdrive')\n", "\n", "# serialize weights to HDF5\n", "model.save_weights(\"/content/gdrive/My Drive/autoencoderNSL/2CAE_NSL.h5\")\n", "print(\"Saved model to disk\")\n", "\n", "# later..." ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Mounted at /content/gdrive\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "utyYVXubuuNr" }, "source": [ "#########################Loading Convolutional AE" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "7iwSVkhVuxG_", "outputId": "c7841d89-dfda-4f20-d2a6-ae4b3c7d057d", "colab": { "base_uri": "https://localhost:8080/", "height": 178 } }, "source": [ "\n", "threshold=0.0011\n", "testing_set_predictions=loaded_model.predict(xin_test)\n", "test_losses=calculate_losses(xin_test,testing_set_predictions)\n", "testing_set_predictions=np.zeros(len(test_losses))\n", "testing_set_predictions[np.where(test_losses>threshold)]=1\n", "\n", "accuracy=accuracy_score(y0_test,testing_set_predictions)\n", "recall=recall_score(y0_test,testing_set_predictions)\n", "precision=precision_score(y0_test,testing_set_predictions)\n", "f1=f1_score(y0_test,testing_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,testing_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the testing data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR :{}\\n\".format(accuracy,recall,precision,f1,FAR ))\n", "threshold=0.0012\n", "\n", "training_set_predictions=loaded_model.predict(xin)\n", "test_losses=calculate_losses(xin,training_set_predictions)\n", "training_set_predictions=np.zeros(len(test_losses))\n", "training_set_predictions[np.where(test_losses>threshold)]=1 \n", "\n", "accuracy=accuracy_score(y0,training_set_predictions)\n", "recall=recall_score(y0,training_set_predictions)\n", "precision=precision_score(y0,training_set_predictions)\n", "f1=f1_score(y0,training_set_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,training_set_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Performance over the testing data set \n", "\n", "Accuracy : 0.8107172958346271 , Recall : 0.775033117743318 , Precision : 0.8781564541762317 , F1 : 0.82337845109483, FAR :0.14212152420185376\n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.9090519397013646 , Recall : 0.964267439877196 , Precision : 0.857929799535639 , F1 : 0.907995856320316, FAR : 0.13901964569443 \n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "xEzCiazIugjU" }, "source": [ "####################################ROC Analysis " ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "p3vDMWgTeDLD" }, "source": [ "from sklearn.metrics import roc_auc_score, roc_curve\n", "import matplotlib\n", "import matplotlib.pyplot as plt" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "UU0UwYcveH5L" }, "source": [ "def roc_curve_and_score(y_test, pred_proba):\n", " fpr, tpr, _ = roc_curve(y_test.ravel(), pred_proba.ravel())\n", " roc_auc = roc_auc_score(y_test.ravel(), pred_proba.ravel())\n", " return fpr, tpr, roc_auc\n", "\n" ], "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "metadata": { "id": "05Hw_FsbaVJ2" }, "source": [ "" ] }, { "cell_type": "code", "metadata": { "id": "yJ9TWAQEePJS", "outputId": "1141de9e-2658-4fac-c6ec-6c1af4f518a2", "colab": { "base_uri": "https://localhost:8080/", "height": 369 } }, "source": [ "from keras.models import model_from_json\n", "from google.colab import drive\n", "#drive.mount('/content/gdrive')\n", "\n", "def calculate_losses(x,preds):\n", " losses=np.zeros(len(x))\n", " for i in range(len(x)):\n", " losses[i]=((preds[i] - x[i]) ** 2).mean(axis=None)\n", "\n", " return losses\n", "\n", "\n", "loaded_model=create_Convolutional_network()\n", "\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2CAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')\n", "threshold=0.0011 #0.0012 training\n", "training_set_predictions=loaded_model.predict(xin_test)\n", "test_losses=calculate_losses(xin_test,training_set_predictions)\n", "CAE_predictions=np.zeros(len(test_losses))\n", "CAE_predictions[np.where(test_losses>threshold)]=1 \n", "caemodel=loaded_model\n", "##########################\n", "\n", "# load json and create model\n", "json_file = open('/content/gdrive/My Drive/autoencoderNSL/2SAE_NSL.json', 'r')\n", "loaded_model_json = json_file.read()\n", "json_file.close()\n", "loaded_model = model_from_json(loaded_model_json)\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2SAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "saemodel=loaded_model\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')\n", "threshold=0.00063\n", "training_set_predictions=loaded_model.predict(testT)\n", "test_losses=calculate_losses(testT,training_set_predictions)\n", "SAE_predictions=np.zeros(len(test_losses))\n", "SAE_predictions[np.where(test_losses>threshold)]=1 \n", "##########################\n", "\n", "# load json and create model\n", "json_file = open('/content/gdrive/My Drive/autoencoderNSL/2SSAE_NSL.json', 'r')\n", "loaded_model_json = json_file.read()\n", "json_file.close()\n", "loaded_model = model_from_json(loaded_model_json)\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2SSAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')\n", "threshold=0.00103\n", "training_set_predictions=loaded_model.predict(testT)\n", "test_losses=calculate_losses(testT,training_set_predictions)\n", "SSAE_predictions=np.zeros(len(test_losses))\n", "SSAE_predictions[np.where(test_losses>threshold)]=1 \n", "##########################\n", "\n", "# load json and create model\n", "json_file = open('/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.json', 'r')\n", "loaded_model_json = json_file.read()\n", "json_file.close()\n", "loaded_model = model_from_json(loaded_model_json)\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2DAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')\n", "threshold=0.001610\n", "training_set_predictions=loaded_model.predict(testT)\n", "test_losses=calculate_losses(testT,training_set_predictions)\n", "DAE_predictions=np.zeros(len(test_losses))\n", "DAE_predictions[np.where(test_losses>threshold)]=1 \n", "###############################################3\n", "\n", "# load json and create model\n", "json_file = open('/content/gdrive/My Drive/autoencoderNSL/2ContAE_NSL.json', 'r')\n", "loaded_model_json = json_file.read()\n", "json_file.close()\n", "loaded_model = model_from_json(loaded_model_json)\n", "# load weights into new model\n", "loaded_model.load_weights(\"/content/gdrive/My Drive/autoencoderNSL/2ContAE_NSL.h5\")\n", "print(\"Loaded model from disk\")\n", "\n", "# evaluate loaded model on test data\n", "loaded_model.compile(optimizer='adam', loss='mean_squared_error')\n", "threshold=0.000372\n", "training_set_predictions=loaded_model.predict(testT)\n", "test_losses=calculate_losses(testT,training_set_predictions)\n", "ContAE_predictions=np.zeros(len(test_losses))\n", "ContAE_predictions[np.where(test_losses>threshold)]=1 " ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "build (None, 40, 8)\n", "Model: \"sequential_6\"\n", "_________________________________________________________________\n", "Layer (type) Output Shape Param # \n", "=================================================================\n", "lambda_12 (Lambda) (None, 1, 40, 8) 0 \n", "_________________________________________________________________\n", "conv2d_transpose_6 (Conv2DTr (None, 1, 41, 1) 17 \n", "_________________________________________________________________\n", "lambda_13 (Lambda) (None, 41, 1) 0 \n", "=================================================================\n", "Total params: 17\n", "Trainable params: 17\n", "Non-trainable params: 0\n", "_________________________________________________________________\n", "Loaded model from disk\n", "Loaded model from disk\n", "Loaded model from disk\n", "Loaded model from disk\n", "Loaded model from disk\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "NwXUKPngDvl0", "outputId": "d9233d31-7ff5-433b-9a73-064d5e9a8fd6", "colab": { "base_uri": "https://localhost:8080/", "height": 389 } }, "source": [ "accuracy=accuracy_score(y0,SAE_predictions)\n", "recall=recall_score(y0,SAE_predictions)\n", "precision=precision_score(y0,SAE_predictions)\n", "f1=f1_score(y0,SAE_predictions)\n", "f1=f1_score(y0,SAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,SAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0,SSAE_predictions)\n", "recall=recall_score(y0,SSAE_predictions)\n", "precision=precision_score(y0,SSAE_predictions)\n", "f1=f1_score(y0,SSAE_predictions)\n", "f1=f1_score(y0,SSAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,SSAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0,DAE_predictions)\n", "recall=recall_score(y0,DAE_predictions)\n", "precision=precision_score(y0,DAE_predictions)\n", "f1=f1_score(y0,DAE_predictions)\n", "f1=f1_score(y0,DAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,DAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0,ContAE_predictions)\n", "recall=recall_score(y0,ContAE_predictions)\n", "precision=precision_score(y0,ContAE_predictions)\n", "f1=f1_score(y0,ContAE_predictions)\n", "f1=f1_score(y0,ContAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,ContAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0,CAE_predictions)\n", "recall=recall_score(y0,CAE_predictions)\n", "precision=precision_score(y0,CAE_predictions)\n", "f1=f1_score(y0,CAE_predictions)\n", "f1=f1_score(y0,CAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0,CAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Performance over the training data set \n", "\n", "Accuracy : 0.8917069530772467 , Recall : 0.9834044004775712 , Precision : 0.8198532548417371 , F1 : 0.8942119792797544, FAR : 0.1881264570927936 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.904487469537123 , Recall : 0.9700153505031553 , Precision : 0.8469901408870223 , F1 : 0.9043378704999364, FAR : 0.15256225591375497 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.9146880680780802 , Recall : 0.9700324066177725 , Precision : 0.8635045473179175 , F1 : 0.91367386118095, FAR : 0.13349568626286326 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.8959856477181618 , Recall : 0.9726249360395702 , Precision : 0.8322023262262306 , F1 : 0.8969509173987243, FAR : 0.17073786436600685 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.9000976399704699 , Recall : 0.9709704929217124 , Precision : 0.8395098140419696 , F1 : 0.9004674116781739, FAR : 0.16160551207994892 \n", "\n" ], "name": "stdout" } ] }, { "cell_type": "code", "metadata": { "id": "1BXI5i70aaCE", "outputId": "be423cd1-84d5-4530-cac0-f86e4ddab514", "colab": { "base_uri": "https://localhost:8080/", "height": 389 } }, "source": [ "accuracy=accuracy_score(y0_test,SAE_predictions)\n", "recall=recall_score(y0_test,SAE_predictions)\n", "precision=precision_score(y0_test,SAE_predictions)\n", "f1=f1_score(y0_test,SAE_predictions)\n", "f1=f1_score(y0_test,SAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,SAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0_test,SSAE_predictions)\n", "recall=recall_score(y0_test,SSAE_predictions)\n", "precision=precision_score(y0_test,SSAE_predictions)\n", "f1=f1_score(y0_test,SSAE_predictions)\n", "f1=f1_score(y0_test,SSAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,SSAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0_test,DAE_predictions)\n", "recall=recall_score(y0_test,DAE_predictions)\n", "precision=precision_score(y0_test,DAE_predictions)\n", "f1=f1_score(y0_test,DAE_predictions)\n", "f1=f1_score(y0_test,DAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,DAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0_test,ContAE_predictions)\n", "recall=recall_score(y0_test,ContAE_predictions)\n", "precision=precision_score(y0_test,ContAE_predictions)\n", "f1=f1_score(y0_test,ContAE_predictions)\n", "f1=f1_score(y0_test,ContAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,ContAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n", "\n", "accuracy=accuracy_score(y0_test,CAE_predictions)\n", "recall=recall_score(y0_test,CAE_predictions)\n", "precision=precision_score(y0_test,CAE_predictions)\n", "f1=f1_score(y0_test,CAE_predictions)\n", "f1=f1_score(y0_test,CAE_predictions)\n", "tn, fp, fn, tp=confusion_matrix(y0_test,CAE_predictions).ravel()\n", "FAR=fp/(fp+tn)\n", "print(\"Performance over the training data set \\n\")\n", "print(\"Accuracy : {} , Recall : {} , Precision : {} , F1 : {}, FAR : {} \\n\".format(accuracy,recall,precision,f1,FAR ))\n" ], "execution_count": null, "outputs": [ { "output_type": "stream", "text": [ "Performance over the training data set \n", "\n", "Accuracy : 0.8536130949740496 , Recall : 0.8602041611470428 , Precision : 0.8799521721801514 , F1 : 0.8699661123808022, FAR : 0.15509783728115345 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.8692276981768177 , Recall : 0.8634769734278812 , Precision : 0.9025820640221552 , F1 : 0.8825965750696934, FAR : 0.1231719876416066 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.8798740185423413 , Recall : 0.8923868152419543 , Precision : 0.8961577588230691 , F1 : 0.8942683117288771, FAR : 0.13666323377960865 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.8524597436011179 , Recall : 0.851632509935323 , Precision : 0.8848676220548943 , F1 : 0.8679320203303685, FAR : 0.14644696189495365 \n", "\n", "Performance over the training data set \n", "\n", "Accuracy : 0.8107172958346271 , Recall : 0.775033117743318 , Precision : 0.8781564541762317 , F1 : 0.82337845109483, FAR : 0.14212152420185376 \n", "\n" ], "name": "stdout" } ] }, { "cell_type": "markdown", "metadata": { "id": "GhyA_Z4pCMCV" }, "source": [ "" ] }, { "cell_type": "code", "metadata": { "id": "cZyPUeJtfVVv", "outputId": "ed0ac580-5b6b-4eda-918b-99f4d0178fbe", "colab": { "base_uri": "https://localhost:8080/", "height": 396 } }, "source": [ "plt.figure(figsize=(8, 6))\n", "matplotlib.rcParams.update({'font.size': 14})\n", "plt.grid()\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0, SAE_predictions)\n", "plt.plot(fpr, tpr, color='blue', lw=2,\n", " label='SAE ROC AUC={0:.3f}'.format(roc_auc))\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0, SSAE_predictions)\n", "plt.plot(fpr, tpr, color='purple', lw=2,\n", " label='SSAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0,DAE_predictions )\n", "plt.plot(fpr, tpr, color='red', lw=2,\n", " label='DAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0,ContAE_predictions )\n", "plt.plot(fpr, tpr, color='green', lw=2,\n", " label='ContAE ROC AUC={0:.3f}'.format(roc_auc))\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0, CAE_predictions)\n", "plt.plot(fpr, tpr, color='darkorange', lw=2,\n", " label='CAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "plt.plot([0, 1], [0, 1], color='black', lw=1, linestyle='--')\n", "plt.legend(loc=\"lower right\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('FAR (1 - Specificity)')\n", "plt.ylabel('DR (Sensitivity)')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "Hez8-uCvdBdK", "outputId": "e5f57df6-ac05-4bb2-e000-38709066a7e9", "colab": { "base_uri": "https://localhost:8080/", "height": 396 } }, "source": [ "plt.figure(figsize=(8, 6))\n", "matplotlib.rcParams.update({'font.size': 14})\n", "plt.grid()\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0_test, SAE_predictions)\n", "plt.plot(fpr, tpr, color='blue', lw=2,\n", " label='SAE ROC AUC={0:.3f}'.format(roc_auc))\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0_test, SSAE_predictions)\n", "plt.plot(fpr, tpr, color='purple', lw=2,\n", " label='SSAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0_test,DAE_predictions )\n", "plt.plot(fpr, tpr, color='red', lw=2,\n", " label='DAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0_test,ContAE_predictions )\n", "plt.plot(fpr, tpr, color='green', lw=2,\n", " label='ContAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = roc_curve_and_score(y0_test, CAE_predictions)\n", "plt.plot(fpr, tpr, color='darkorange', lw=2,\n", " label='CAE ROC AUC={0:.3f}'.format(roc_auc))\n", "\n", "plt.plot([0, 1], [0, 1], color='black', lw=1, linestyle='--')\n", "plt.legend(loc=\"lower right\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('FAR (1 - Specificity)')\n", "plt.ylabel('DR (Sensitivity)')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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esaPH+/Z1r9/f1auXMmWLVuypJ88eTK1atXyPHfv378/X331FdHR0VnSpqamcubMGa/njYqK4sorr2Tbtm3ExMSwbt06YmJimD17Nh988AHnzp0DICIigh9//JHz589nyL9lyxYaNGjgaSHJbRxDhgzJUK7elrR+Cm3atKFy5coZhlEePHiQnTt30r59e59lmpSUhJ+fX4Ztfn5+XiuFs2fPJjw83NPKlObSpUtcunQp18cpVgXtvVhaF5+jEk6d0hc7oYxDD08IUJ2KJsVv9dnDs7TYuXOntmnTRrt3757tcKXiVpp7zJcXpbmMy+KohH379mlYWJhGRETowoULddeuXRodHa0zZ870DFdMTU3Vli1bavv27XXTpk26adMmveWWW7RNmzaampqqqr+OSkgv80iCl19+WevXr6+7du3SY8eO6cWLF7Vnz57aq1cvr7Fde+21OmbMGM+xfA1X9DWUztuoBFXVJUuWaJUqVfTAgQOq6gyVbN++vdarV0+joqI0Pj5et27d6hmu+O9//9uT98KFC9qhQwetUaOGTp8+Xbdu3aqxsbG6aNEibdeunc+/z1atWunf//53z3rayI/k5GStXr26zpkzR1WdkSC1a9fWPn36aHR0tO7du1ffeecdDQkJ0ZkzZxY4jpwMGTJE69Wrp19++aVu2bJFO3funGW4YkREhM6YMcOzPnDgQK1Xr54uXbpU4+LidPHixVqrVi0dMWJEhmOfO3dOQ0ND9aWXXvJ67k6dOmmzZs101apVGhsbq3PnztXAwMAMI0i8seGKhV0xWLlSuz2MNn4R1anoqQlXqKYWz9C+/Ej7EJoxY4a++eabnvXSojTftMqL0lzGZbFioOqMrX/yySc1PDxcAwICNCwsTLt27arLli3zpNm/f7/ef//9nuGKPXv29DpcMb3MFYOff/5Zu3TposHBwQroggUL1N/fX6OiorzGNWbMGK1fv76mpKTo3Llzswx3TFv27t3rNb+vikFqaqpGRETon//8Z8+2pKQkHTdunDZt2lQDAgK0evXq2r17d12/fn2W4164cEEnTpyoN954owYGBmqNGjX05ptv1lmzZmlycnKW9Js3b1ZA161b59mWVjFQVR0wYIC2a9fOs757927t1auX1q1bV6tVq6YtWrTQt99+O8vnXV7jyI0LFy7ok08+qTVr1tSgoCC99957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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "wd8zoLLGChLC" }, "source": [ "############################PR Curve" ], "execution_count": null, "outputs": [] }, { "cell_type": "code", "metadata": { "id": "6ib74_a9Cj7k", "outputId": "a8cf0009-51cb-43f8-ccc7-c0e5e7898810", "colab": { "base_uri": "https://localhost:8080/", "height": 396 } }, "source": [ "from sklearn.metrics import precision_recall_curve,auc\n", "def PR_curve_and_score(y_test, pred_proba):\n", " precision, recall, _ = precision_recall_curve(y_test.ravel(), pred_proba.ravel())\n", " PR_auc = auc(recall,precision)\n", " return precision, recall, PR_auc\n", "\n", "plt.figure(figsize=(8, 6))\n", "matplotlib.rcParams.update({'font.size': 14})\n", "plt.grid()\n", "fpr, tpr, roc_auc = PR_curve_and_score(y0_test, SAE_predictions)\n", "plt.plot(fpr, tpr, color='blue', lw=2,\n", " label='SAE PR AUC={0:.3f}'.format(roc_auc))\n", "fpr, tpr, roc_auc = PR_curve_and_score(y0_test, SSAE_predictions)\n", "plt.plot(fpr, tpr, color='purple', lw=2,\n", " label='SSAE PR AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = PR_curve_and_score(y0_test,DAE_predictions )\n", "plt.plot(fpr, tpr, color='red', lw=2,\n", " label='DAE PR AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = PR_curve_and_score(y0_test,ContAE_predictions )\n", "plt.plot(fpr, tpr, color='green', lw=2,\n", " label='ContAE PR AUC={0:.3f}'.format(roc_auc))\n", "\n", "fpr, tpr, roc_auc = PR_curve_and_score(y0_test, CAE_predictions)\n", "plt.plot(fpr, tpr, color='darkorange', lw=2,\n", " label='CAE PR AUC={0:.3f}'.format(roc_auc))\n", "\n", "plt.plot([0, 1], [0, 1], color='black', lw=1, linestyle='--')\n", "plt.legend(loc=\"upper left\")\n", "plt.xlim([0.0, 1.0])\n", "plt.ylim([0.0, 1.05])\n", "plt.xlabel('DR (Recall)')\n", "plt.ylabel('Precision')\n", "plt.show()" ], "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "tags": [], "needs_background": "light" } } ] }, { "cell_type": "code", "metadata": { "id": "TGKPXg3WUZIx", "outputId": "e00afd64-599e-468e-d929-c67e4e9e1ec4", "colab": { "base_uri": "https://localhost:8080/", "height": 1000 } }, "source": [ "from keras.utils.vis_utils import plot_model\n", "plot_model(caemodel, to_file='model_plot.png', show_shapes=True, show_layer_names=False)\n" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 64 } ] }, { "cell_type": "code", "metadata": { "id": "XMxR3FpZY-hE", "outputId": "e1346633-9113-49ef-d149-16be4953da75", "colab": { "base_uri": "https://localhost:8080/", "height": 865 } }, "source": [ "from keras.utils.vis_utils import plot_model\n", "plot_model(saemodel, to_file='model_plot.png', show_shapes=True, show_layer_names=False)\n" ], "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "tags": [] }, "execution_count": 65 } ] } ] }