You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
110 KiB
Plaintext
1 line
110 KiB
Plaintext
{"nbformat":4,"nbformat_minor":0,"metadata":{"colab":{"name":"6.2 Dense.ipynb","provenance":[],"collapsed_sections":[],"authorship_tag":"ABX9TyOmrTk/f1Y4mYVR1cj5KTTH"},"kernelspec":{"name":"python3","display_name":"Python 3"},"accelerator":"GPU"},"cells":[{"cell_type":"code","metadata":{"id":"1ftXSsv7D-gg","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217556708,"user_tz":-540,"elapsed":1762,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["#!/usr/bin/env python3\n","# --------------------------------------------------------------\n","# Author: Mahendra Data - mahendra.data@dbms.cs.kumamoto-u.ac.jp\n","# License: BSD 3 clause\n","# --------------------------------------------------------------"],"execution_count":1,"outputs":[]},{"cell_type":"code","metadata":{"id":"y0Q-s-QAD-d0","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":122},"executionInfo":{"status":"ok","timestamp":1597217577552,"user_tz":-540,"elapsed":22590,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"3a03108f-ad1b-48e0-b633-ef2e1730783e"},"source":["# Mount Google Drive\n","from google.colab import drive\n","drive.mount(\"/content/drive\")"],"execution_count":2,"outputs":[{"output_type":"stream","text":["Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=947318989803-6bn6qk8qdgf4n4g3pfee6491hc0brc4i.apps.googleusercontent.com&redirect_uri=urn%3aietf%3awg%3aoauth%3a2.0%3aoob&scope=email%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdocs.test%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive%20https%3a%2f%2fwww.googleapis.com%2fauth%2fdrive.photos.readonly%20https%3a%2f%2fwww.googleapis.com%2fauth%2fpeopleapi.readonly&response_type=code\n","\n","Enter your authorization code:\n","··········\n","Mounted at /content/drive\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"h2_R7kzHD-bA","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":357},"executionInfo":{"status":"ok","timestamp":1597217580657,"user_tz":-540,"elapsed":25684,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"ec33f2ce-0f17-4af0-c36d-0a0a72636847"},"source":["!nvidia-smi"],"execution_count":3,"outputs":[{"output_type":"stream","text":["Wed Aug 12 07:32:58 2020 \n","+-----------------------------------------------------------------------------+\n","| NVIDIA-SMI 450.57 Driver Version: 418.67 CUDA Version: 10.1 |\n","|-------------------------------+----------------------+----------------------+\n","| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\n","| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\n","| | | MIG M. |\n","|===============================+======================+======================|\n","| 0 Tesla K80 Off | 00000000:00:04.0 Off | 0 |\n","| N/A 34C P8 29W / 149W | 0MiB / 11441MiB | 0% Default |\n","| | | ERR! |\n","+-------------------------------+----------------------+----------------------+\n"," \n","+-----------------------------------------------------------------------------+\n","| Processes: |\n","| GPU GI CI PID Type Process name GPU Memory |\n","| ID ID Usage |\n","|=============================================================================|\n","| No running processes found |\n","+-----------------------------------------------------------------------------+\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"PCAbhSmeD-X8","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217582434,"user_tz":-540,"elapsed":27456,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["import os\n","import logging\n","\n","import pandas as pd\n","import tensorflow.keras as keras\n","\n","from tensorflow.keras.utils import plot_model"],"execution_count":4,"outputs":[]},{"cell_type":"code","metadata":{"id":"8F2cmbyKD-U_","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217582439,"user_tz":-540,"elapsed":27457,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["# Log setting\n","logging.basicConfig(format=\"%(asctime)s %(levelname)s %(message)s\", datefmt=\"%H:%M:%S\", level=logging.INFO)\n","\n","# Change display.max_rows to show all features.\n","pd.set_option(\"display.max_rows\", 85)"],"execution_count":5,"outputs":[]},{"cell_type":"code","metadata":{"id":"71kzomsXD-Q1","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217583347,"user_tz":-540,"elapsed":28359,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["import numpy as np\n","import tensorflow as tf\n","import matplotlib.pyplot as plt\n","\n","from sklearn.metrics import classification_report\n","from sklearn.preprocessing import MinMaxScaler\n","\n","\n","def preprocessing(df: pd.DataFrame) -> (np.ndarray, np.ndarray):\n"," # Shuffle the dataset\n"," df = df.sample(frac=1)\n","\n"," # Split features and labels\n"," x = df.iloc[:, df.columns != 'Label']\n"," y = df[['Label']].to_numpy()\n","\n"," # Scale the features between 0 ~ 1\n"," scaler = MinMaxScaler()\n"," x = scaler.fit_transform(x)\n","\n"," return x, y\n","\n","\n","def plot_history(history: tf.keras.callbacks.History):\n"," # summarize history for accuracy\n"," plt.plot(history.history['sparse_categorical_accuracy'])\n"," plt.plot(history.history['val_sparse_categorical_accuracy'])\n"," plt.title('model2 accuracy')\n"," plt.ylabel('accuracy')\n"," plt.xlabel('epoch')\n"," plt.legend(['train', 'test'], loc='upper left')\n"," plt.show()\n","\n"," # summarize history for loss\n"," plt.plot(history.history['loss'])\n"," plt.plot(history.history['val_loss'])\n"," plt.title('model2 loss')\n"," plt.ylabel('loss')\n"," plt.xlabel('epoch')\n"," plt.legend(['train', 'test'], loc='upper left')\n"," plt.show()\n","\n","\n","def evaluation(model: keras.Model, x_test: np.ndarray, y_test: np.ndarray):\n"," score = model.evaluate(x_test, y_test, verbose=False)\n"," logging.info('Evaluation:\\nLoss: {}\\nAccuracy : {}\\n'.format(score[0], score[1]))\n","\n"," # F1 score\n"," y_pred = model.predict(x_test, batch_size=1024, verbose=False)\n"," y_pred = np.argmax(y_pred, axis=1)\n","\n"," logging.info(\"\\n{}\".format(classification_report(y_test, y_pred)))\n"],"execution_count":6,"outputs":[]},{"cell_type":"code","metadata":{"id":"eank-4H9D-Nq","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217583348,"user_tz":-540,"elapsed":28355,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["PROCESSED_DIR_PATH = \"/content/drive/My Drive/CICIDS2017/ProcessedDataset\"\n","MODEL_DIR_PATH = \"/content/drive/My Drive/CICIDS2017/Model\""],"execution_count":7,"outputs":[]},{"cell_type":"code","metadata":{"id":"SvuDcF5vEmLZ","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217583349,"user_tz":-540,"elapsed":28350,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["def create_dense_model() -> keras.Model:\n"," # Creating layers\n"," inputs = keras.layers.Input(shape=(78, ))\n"," x = keras.layers.Dense(128, activation='relu')(inputs)\n"," x = keras.layers.Dense(64, activation='relu')(x)\n"," x = keras.layers.Dense(32, activation='relu')(x)\n"," outputs = keras.layers.Dense(15, activation='softmax')(x)\n"," dense_model = keras.Model(inputs=inputs, outputs=outputs)\n","\n"," dense_model.compile(loss='sparse_categorical_crossentropy',\n"," metrics=['sparse_categorical_accuracy'],\n"," optimizer='adam')\n","\n"," return dense_model"],"execution_count":8,"outputs":[]},{"cell_type":"code","metadata":{"id":"gNixzL2REmRk","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":340},"executionInfo":{"status":"ok","timestamp":1597217588408,"user_tz":-540,"elapsed":33392,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"7a8777bb-be69-4f70-ff29-7737841a4b98"},"source":["# Create model\n","model = create_dense_model()\n","logging.info(model.summary())"],"execution_count":9,"outputs":[{"output_type":"stream","text":["07:33:08 INFO None\n"],"name":"stderr"},{"output_type":"stream","text":["Model: \"functional_1\"\n","_________________________________________________________________\n","Layer (type) Output Shape Param # \n","=================================================================\n","input_1 (InputLayer) [(None, 78)] 0 \n","_________________________________________________________________\n","dense (Dense) (None, 128) 10112 \n","_________________________________________________________________\n","dense_1 (Dense) (None, 64) 8256 \n","_________________________________________________________________\n","dense_2 (Dense) (None, 32) 2080 \n","_________________________________________________________________\n","dense_3 (Dense) (None, 15) 495 \n","=================================================================\n","Total params: 20,943\n","Trainable params: 20,943\n","Non-trainable params: 0\n","_________________________________________________________________\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"dmkK8d9dEmOl","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":533},"executionInfo":{"status":"ok","timestamp":1597217589224,"user_tz":-540,"elapsed":34194,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"a29e9ede-d1f5-4686-a7a0-78aeb4d12ef8"},"source":["plot_model(model, show_shapes=True)"],"execution_count":10,"outputs":[{"output_type":"execute_result","data":{"image/png":"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\n","text/plain":["<IPython.core.display.Image object>"]},"metadata":{"tags":[]},"execution_count":10}]},{"cell_type":"code","metadata":{"id":"AGNlj65wEmIY","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":306},"executionInfo":{"status":"ok","timestamp":1597217610108,"user_tz":-540,"elapsed":55066,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"18d8e814-5f75-493b-a174-0164a7ac4c3d"},"source":["# Training\n","df = pd.read_csv(os.path.join(PROCESSED_DIR_PATH, 'train_MachineLearningCVE.csv'), skipinitialspace=True)\n","logging.info(\"Class distribution\\n{}\".format(df.Label.value_counts()))"],"execution_count":11,"outputs":[{"output_type":"stream","text":["07:33:29 INFO Class distribution\n","0 1818477\n","4 184858\n","10 127144\n","2 102421\n","3 8234\n","7 6350\n","11 4718\n","6 4637\n","5 4399\n","1 1573\n","12 1206\n","14 522\n","9 29\n","13 17\n","8 9\n","Name: Label, dtype: int64\n"],"name":"stderr"}]},{"cell_type":"code","metadata":{"id":"tkhrHN7vEsMW","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597217615290,"user_tz":-540,"elapsed":60242,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["X, y = preprocessing(df)\n","del df"],"execution_count":12,"outputs":[]},{"cell_type":"code","metadata":{"id":"c8p71RTdEtBD","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":1000},"executionInfo":{"status":"ok","timestamp":1597218653042,"user_tz":-540,"elapsed":1097982,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"7c1fa07c-2e47-40a0-acd2-f2df76acd70a"},"source":["# Training\n","logging.info(\"*** TRAINING START ***\")\n","history = model.fit(X, y, validation_split=0.1, epochs=125, batch_size=1024, verbose=True)"],"execution_count":13,"outputs":[{"output_type":"stream","text":["07:33:34 INFO *** TRAINING START ***\n"],"name":"stderr"},{"output_type":"stream","text":["Epoch 1/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.1557 - sparse_categorical_accuracy: 0.9555 - val_loss: 0.0694 - val_sparse_categorical_accuracy: 0.9715\n","Epoch 2/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0613 - sparse_categorical_accuracy: 0.9768 - val_loss: 0.0517 - val_sparse_categorical_accuracy: 0.9816\n","Epoch 3/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0486 - sparse_categorical_accuracy: 0.9804 - val_loss: 0.0435 - val_sparse_categorical_accuracy: 0.9819\n","Epoch 4/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0403 - sparse_categorical_accuracy: 0.9840 - val_loss: 0.0342 - val_sparse_categorical_accuracy: 0.9870\n","Epoch 5/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0348 - sparse_categorical_accuracy: 0.9865 - val_loss: 0.0338 - val_sparse_categorical_accuracy: 0.9867\n","Epoch 6/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0323 - sparse_categorical_accuracy: 0.9872 - val_loss: 0.0296 - val_sparse_categorical_accuracy: 0.9889\n","Epoch 7/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0310 - sparse_categorical_accuracy: 0.9875 - val_loss: 0.0285 - val_sparse_categorical_accuracy: 0.9887\n","Epoch 8/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0300 - sparse_categorical_accuracy: 0.9880 - val_loss: 0.0291 - val_sparse_categorical_accuracy: 0.9888\n","Epoch 9/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0291 - sparse_categorical_accuracy: 0.9883 - val_loss: 0.0273 - val_sparse_categorical_accuracy: 0.9895\n","Epoch 10/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0285 - sparse_categorical_accuracy: 0.9886 - val_loss: 0.0275 - val_sparse_categorical_accuracy: 0.9896\n","Epoch 11/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0279 - sparse_categorical_accuracy: 0.9888 - val_loss: 0.0280 - val_sparse_categorical_accuracy: 0.9871\n","Epoch 12/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0273 - sparse_categorical_accuracy: 0.9891 - val_loss: 0.0252 - val_sparse_categorical_accuracy: 0.9902\n","Epoch 13/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0270 - sparse_categorical_accuracy: 0.9891 - val_loss: 0.0253 - val_sparse_categorical_accuracy: 0.9900\n","Epoch 14/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0268 - sparse_categorical_accuracy: 0.9892 - val_loss: 0.0256 - val_sparse_categorical_accuracy: 0.9896\n","Epoch 15/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0264 - sparse_categorical_accuracy: 0.9894 - val_loss: 0.0303 - val_sparse_categorical_accuracy: 0.9896\n","Epoch 16/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0259 - sparse_categorical_accuracy: 0.9896 - val_loss: 0.0247 - val_sparse_categorical_accuracy: 0.9902\n","Epoch 17/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0255 - sparse_categorical_accuracy: 0.9896 - val_loss: 0.0244 - val_sparse_categorical_accuracy: 0.9903\n","Epoch 18/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0248 - sparse_categorical_accuracy: 0.9899 - val_loss: 0.0235 - val_sparse_categorical_accuracy: 0.9903\n","Epoch 19/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0240 - sparse_categorical_accuracy: 0.9902 - val_loss: 0.0276 - val_sparse_categorical_accuracy: 0.9873\n","Epoch 20/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0226 - sparse_categorical_accuracy: 0.9908 - val_loss: 0.0233 - val_sparse_categorical_accuracy: 0.9892\n","Epoch 21/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0202 - sparse_categorical_accuracy: 0.9923 - val_loss: 0.0163 - val_sparse_categorical_accuracy: 0.9966\n","Epoch 22/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0163 - sparse_categorical_accuracy: 0.9949 - val_loss: 0.0138 - val_sparse_categorical_accuracy: 0.9967\n","Epoch 23/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0128 - sparse_categorical_accuracy: 0.9967 - val_loss: 0.0102 - val_sparse_categorical_accuracy: 0.9978\n","Epoch 24/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0108 - sparse_categorical_accuracy: 0.9973 - val_loss: 0.0116 - val_sparse_categorical_accuracy: 0.9962\n","Epoch 25/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0105 - sparse_categorical_accuracy: 0.9973 - val_loss: 0.0123 - val_sparse_categorical_accuracy: 0.9968\n","Epoch 26/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0098 - sparse_categorical_accuracy: 0.9974 - val_loss: 0.0085 - val_sparse_categorical_accuracy: 0.9980\n","Epoch 27/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0096 - sparse_categorical_accuracy: 0.9974 - val_loss: 0.0081 - val_sparse_categorical_accuracy: 0.9982\n","Epoch 28/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0095 - sparse_categorical_accuracy: 0.9975 - val_loss: 0.0092 - val_sparse_categorical_accuracy: 0.9980\n","Epoch 29/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0091 - sparse_categorical_accuracy: 0.9976 - val_loss: 0.0090 - val_sparse_categorical_accuracy: 0.9982\n","Epoch 30/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0101 - sparse_categorical_accuracy: 0.9973 - val_loss: 0.0093 - val_sparse_categorical_accuracy: 0.9977\n","Epoch 31/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0091 - sparse_categorical_accuracy: 0.9976 - val_loss: 0.0079 - val_sparse_categorical_accuracy: 0.9981\n","Epoch 32/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0087 - sparse_categorical_accuracy: 0.9977 - val_loss: 0.0084 - val_sparse_categorical_accuracy: 0.9981\n","Epoch 33/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0083 - sparse_categorical_accuracy: 0.9977 - val_loss: 0.0071 - val_sparse_categorical_accuracy: 0.9983\n","Epoch 34/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0089 - sparse_categorical_accuracy: 0.9977 - val_loss: 0.0068 - val_sparse_categorical_accuracy: 0.9982\n","Epoch 35/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0083 - sparse_categorical_accuracy: 0.9978 - val_loss: 0.0077 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 36/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0083 - sparse_categorical_accuracy: 0.9978 - val_loss: 0.0071 - val_sparse_categorical_accuracy: 0.9982\n","Epoch 37/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0087 - sparse_categorical_accuracy: 0.9978 - val_loss: 0.0075 - val_sparse_categorical_accuracy: 0.9983\n","Epoch 38/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0085 - sparse_categorical_accuracy: 0.9978 - val_loss: 0.0074 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 39/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0082 - sparse_categorical_accuracy: 0.9979 - val_loss: 0.0079 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 40/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0076 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 41/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0081 - sparse_categorical_accuracy: 0.9979 - val_loss: 0.0069 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 42/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0087 - sparse_categorical_accuracy: 0.9979 - val_loss: 0.0072 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 43/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0072 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0068 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 44/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0072 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0064 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 45/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0075 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0087 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 46/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0064 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 47/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0074 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0092 - val_sparse_categorical_accuracy: 0.9984\n","Epoch 48/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0077 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0103 - val_sparse_categorical_accuracy: 0.9976\n","Epoch 49/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0083 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0061 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 50/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0078 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 51/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0068 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0087 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 52/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 53/125\n","1991/1991 [==============================] - 9s 5ms/step - loss: 0.0078 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0062 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 54/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0067 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 55/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0068 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 56/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0074 - val_sparse_categorical_accuracy: 0.9978\n","Epoch 57/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9984\n","Epoch 58/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0075 - sparse_categorical_accuracy: 0.9981 - val_loss: 0.0190 - val_sparse_categorical_accuracy: 0.9895\n","Epoch 59/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0071 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 60/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0068 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0072 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 61/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0060 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 62/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0073 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0073 - val_sparse_categorical_accuracy: 0.9984\n","Epoch 63/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0067 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 64/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0071 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0056 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 65/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0066 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0056 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 66/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 67/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0071 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0054 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 68/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0077 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 69/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0056 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 70/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0074 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 71/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0081 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 72/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 73/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0070 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 74/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 75/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0066 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0056 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 76/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0060 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0055 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 77/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9985\n","Epoch 78/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0076 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0089 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 79/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0068 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0075 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 80/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0059 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0065 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 81/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0071 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 82/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 83/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0071 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0061 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 84/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0059 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0064 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 85/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 86/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0063 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0066 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 87/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0055 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 88/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0064 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 89/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0060 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 90/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0067 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0054 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 91/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0064 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0056 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 92/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0068 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0076 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 93/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 94/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 95/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0063 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 96/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 97/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0056 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0059 - val_sparse_categorical_accuracy: 0.9986\n","Epoch 98/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0063 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 99/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 100/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0085 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 101/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0059 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0066 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 102/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0069 - sparse_categorical_accuracy: 0.9983 - val_loss: 0.0063 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 103/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0052 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0061 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 104/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0065 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0062 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 105/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0103 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 106/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0064 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0068 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 107/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0066 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 108/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0062 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0064 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 109/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0064 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0070 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 110/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0053 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0058 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 111/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0069 - val_sparse_categorical_accuracy: 0.9984\n","Epoch 112/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0061 - sparse_categorical_accuracy: 0.9984 - val_loss: 0.0062 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 113/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0056 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0068 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 114/125\n","1991/1991 [==============================] - 9s 4ms/step - loss: 0.0053 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 115/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0053 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0100 - val_sparse_categorical_accuracy: 0.9976\n","Epoch 116/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0075 - sparse_categorical_accuracy: 0.9982 - val_loss: 0.0080 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 117/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0052 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0065 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 118/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0062 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 119/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0056 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 120/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0058 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0058 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 121/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0055 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 122/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0059 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0067 - val_sparse_categorical_accuracy: 0.9987\n","Epoch 123/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0056 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0060 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 124/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0057 - sparse_categorical_accuracy: 0.9985 - val_loss: 0.0057 - val_sparse_categorical_accuracy: 0.9988\n","Epoch 125/125\n","1991/1991 [==============================] - 8s 4ms/step - loss: 0.0052 - sparse_categorical_accuracy: 0.9986 - val_loss: 0.0062 - val_sparse_categorical_accuracy: 0.9988\n"],"name":"stdout"}]},{"cell_type":"code","metadata":{"id":"XHnTZ9QSEtHB","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":34},"executionInfo":{"status":"ok","timestamp":1597218653048,"user_tz":-540,"elapsed":1097976,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"c8e4cb0c-6b7c-4a95-efd3-156ef4e37079"},"source":["logging.info(\"*** TRAINING FINISH ***\")\n","del X, y"],"execution_count":14,"outputs":[{"output_type":"stream","text":["07:50:52 INFO *** TRAINING FINISH ***\n"],"name":"stderr"}]},{"cell_type":"code","metadata":{"id":"0LLL2gw2EtEc","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":573},"executionInfo":{"status":"ok","timestamp":1597218654077,"user_tz":-540,"elapsed":1098992,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"2fc7350d-1d14-4f72-bf1e-24e2fd7f2b32"},"source":["# Save the model\n","model.save(os.path.join(MODEL_DIR_PATH, \"05_dense.h5\"))\n","\n","plot_history(history)"],"execution_count":15,"outputs":[{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}},{"output_type":"display_data","data":{"image/png":"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\n","text/plain":["<Figure size 432x288 with 1 Axes>"]},"metadata":{"tags":[],"needs_background":"light"}}]},{"cell_type":"code","metadata":{"id":"5-w-dcXEEs-F","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":306},"executionInfo":{"status":"ok","timestamp":1597218677792,"user_tz":-540,"elapsed":1122693,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"6cbaea54-380f-4bfe-906f-4fe9902542fd"},"source":["# Evaluation\n","df = pd.read_csv(os.path.join(PROCESSED_DIR_PATH, 'train_MachineLearningCVE.csv'), skipinitialspace=True)\n","logging.info(\"Class distribution\\n{}\".format(df.Label.value_counts()))"],"execution_count":16,"outputs":[{"output_type":"stream","text":["07:51:17 INFO Class distribution\n","0 1818477\n","4 184858\n","10 127144\n","2 102421\n","3 8234\n","7 6350\n","11 4718\n","6 4637\n","5 4399\n","1 1573\n","12 1206\n","14 522\n","9 29\n","13 17\n","8 9\n","Name: Label, dtype: int64\n"],"name":"stderr"}]},{"cell_type":"code","metadata":{"id":"VsPoYpDFEycx","colab_type":"code","colab":{},"executionInfo":{"status":"ok","timestamp":1597218684470,"user_tz":-540,"elapsed":1129366,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}}},"source":["X, y = preprocessing(df)\n","del df"],"execution_count":17,"outputs":[]},{"cell_type":"code","metadata":{"id":"jy5CuVK9EyZA","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":476},"executionInfo":{"status":"ok","timestamp":1597218805333,"user_tz":-540,"elapsed":1250217,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"c39bdb15-eb69-4632-a1c6-661a1629c409"},"source":["evaluation(model, X, y)\n","del X, y"],"execution_count":18,"outputs":[{"output_type":"stream","text":["07:53:18 INFO Evaluation:\n","Loss: 0.00502212718129158\n","Accuracy : 0.998765766620636\n","\n","07:53:24 INFO \n"," precision recall f1-score support\n","\n"," 0 1.00 1.00 1.00 1818477\n"," 1 1.00 0.38 0.55 1573\n"," 2 1.00 1.00 1.00 102421\n"," 3 1.00 1.00 1.00 8234\n"," 4 1.00 1.00 1.00 184858\n"," 5 0.98 0.99 0.99 4399\n"," 6 1.00 0.99 0.99 4637\n"," 7 1.00 1.00 1.00 6350\n"," 8 1.00 1.00 1.00 9\n"," 9 0.96 0.76 0.85 29\n"," 10 0.99 1.00 1.00 127144\n"," 11 0.99 0.98 0.98 4718\n"," 12 0.70 0.99 0.82 1206\n"," 13 0.57 0.24 0.33 17\n"," 14 1.00 0.05 0.10 522\n","\n"," accuracy 1.00 2264594\n"," macro avg 0.94 0.83 0.84 2264594\n","weighted avg 1.00 1.00 1.00 2264594\n","\n"],"name":"stderr"}]},{"cell_type":"code","metadata":{"id":"-Cqyb0DDD4dG","colab_type":"code","colab":{"base_uri":"https://localhost:8080/","height":34},"executionInfo":{"status":"ok","timestamp":1597218805335,"user_tz":-540,"elapsed":1250211,"user":{"displayName":"Mahendra Data","photoUrl":"https://lh3.googleusercontent.com/a-/AOh14Ghn7DAlkRKEg-Y82BqktrBT0ABMFy8r5576xhbKDQ=s64","userId":"08049029618478467489"}},"outputId":"b882f884-9ee5-4cf5-c053-e1e140dd0404"},"source":["logging.info(\"*** END ***\")"],"execution_count":19,"outputs":[{"output_type":"stream","text":["07:53:24 INFO *** END ***\n"],"name":"stderr"}]}]} |