{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 6.02" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "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", "
aa_000ab_000ac_000ad_000ae_000af_000ag_000ag_001ag_002ag_003...ee_002ee_003ee_004ee_005ee_006ee_007ee_008ee_009ef_000eg_000
0766980.02.130706e+09280.00.00.00.00.00.00.0...1240520.0493384.0721044.0469792.0339156.0157956.073224.00.00.00.0
1330580.00.000000e+000.00.00.00.00.00.00.0...421400.0178064.0293306.0245416.0133654.081140.097576.01500.00.00.0
2410400.02.280000e+02100.00.00.00.00.00.00.0...277378.0159812.0423992.0409564.0320746.0158022.095128.0514.00.00.0
3120.07.000000e+0166.00.010.00.00.00.0318.0...240.046.058.044.010.00.00.00.04.032.0
4608740.01.368000e+03458.00.00.00.00.00.00.0...622012.0229790.0405298.0347188.0286954.0311560.0433954.01218.00.00.0
\n", "

5 rows × 170 columns

\n", "
" ], "text/plain": [ " aa_000 ab_000 ac_000 ad_000 ae_000 af_000 ag_000 ag_001 \\\n", "0 76698 0.0 2.130706e+09 280.0 0.0 0.0 0.0 0.0 \n", "1 33058 0.0 0.000000e+00 0.0 0.0 0.0 0.0 0.0 \n", "2 41040 0.0 2.280000e+02 100.0 0.0 0.0 0.0 0.0 \n", "3 12 0.0 7.000000e+01 66.0 0.0 10.0 0.0 0.0 \n", "4 60874 0.0 1.368000e+03 458.0 0.0 0.0 0.0 0.0 \n", "\n", " ag_002 ag_003 ... ee_002 ee_003 ee_004 ee_005 ee_006 \\\n", "0 0.0 0.0 ... 1240520.0 493384.0 721044.0 469792.0 339156.0 \n", "1 0.0 0.0 ... 421400.0 178064.0 293306.0 245416.0 133654.0 \n", "2 0.0 0.0 ... 277378.0 159812.0 423992.0 409564.0 320746.0 \n", "3 0.0 318.0 ... 240.0 46.0 58.0 44.0 10.0 \n", "4 0.0 0.0 ... 622012.0 229790.0 405298.0 347188.0 286954.0 \n", "\n", " ee_007 ee_008 ee_009 ef_000 eg_000 \n", "0 157956.0 73224.0 0.0 0.0 0.0 \n", "1 81140.0 97576.0 1500.0 0.0 0.0 \n", "2 158022.0 95128.0 514.0 0.0 0.0 \n", "3 0.0 0.0 0.0 4.0 32.0 \n", "4 311560.0 433954.0 1218.0 0.0 0.0 \n", "\n", "[5 rows x 170 columns]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Import the libraries\n", "import numpy as np\n", "import pandas as pd\n", "from tensorflow import random\n", "\n", "# Load the Data\n", "X = pd.read_csv(\"../data/aps_failure_training_feats.csv\")\n", "y = pd.read_csv(\"../data/aps_failure_training_target.csv\")\n", "\n", "# use the head function view the first 5 rows of the data\n", "X.head()" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "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", "
aa_000ab_000ac_000ad_000ae_000af_000ag_000ag_001ag_002ag_003...ee_002ee_003ee_004ee_005ee_006ee_007ee_008ee_009ef_000eg_000
count6.000000e+0460000.0000006.000000e+046.000000e+0460000.00000060000.0000006.000000e+046.000000e+046.000000e+046.000000e+04...6.000000e+046.000000e+046.000000e+046.000000e+046.000000e+046.000000e+046.000000e+046.000000e+0460000.00000060000.000000
mean5.933650e+040.1625003.362258e+081.434071e+056.53500010.5482002.191577e+029.648104e+028.509771e+038.760054e+04...4.405077e+052.087653e+054.407495e+053.895406e+053.293335e+053.423990e+051.371785e+058.295099e+030.0864670.203100
std1.454301e+051.6873187.767625e+083.504525e+07158.147893205.3871152.036364e+043.400891e+041.494818e+057.575171e+05...1.150015e+065.407282e+051.162708e+061.115528e+061.063741e+061.718752e+064.472274e+054.721249e+044.2685708.628043
min0.000000e+000.0000000.000000e+000.000000e+000.0000000.0000000.000000e+000.000000e+000.000000e+000.000000e+00...0.000000e+000.000000e+000.000000e+000.000000e+000.000000e+000.000000e+000.000000e+000.000000e+000.0000000.000000
25%8.340000e+020.0000008.000000e+000.000000e+000.0000000.0000000.000000e+000.000000e+000.000000e+000.000000e+00...2.662000e+031.024000e+032.288000e+032.897000e+033.960000e+028.800000e+010.000000e+000.000000e+000.0000000.000000
50%3.077600e+040.0000001.200000e+024.200000e+010.0000000.0000000.000000e+000.000000e+000.000000e+000.000000e+00...2.280220e+051.088190e+052.153240e+051.838280e+058.491400e+043.840600e+043.276000e+030.000000e+000.0000000.000000
75%4.866800e+040.0000008.480000e+022.920000e+020.0000000.0000000.000000e+000.000000e+000.000000e+000.000000e+00...4.350315e+052.164440e+054.624655e+054.003010e+052.725220e+051.663465e+051.367255e+051.934000e+030.0000000.000000
max2.746564e+06204.0000002.130707e+098.584298e+0921050.00000020070.0000003.376892e+064.109372e+061.055286e+076.340207e+07...7.793393e+073.775839e+079.715238e+075.743524e+073.160781e+071.195801e+081.926740e+073.810078e+06482.0000001146.000000
\n", "

8 rows × 170 columns

\n", "
" ], "text/plain": [ " aa_000 ab_000 ac_000 ad_000 ae_000 \\\n", "count 6.000000e+04 60000.000000 6.000000e+04 6.000000e+04 60000.000000 \n", "mean 5.933650e+04 0.162500 3.362258e+08 1.434071e+05 6.535000 \n", "std 1.454301e+05 1.687318 7.767625e+08 3.504525e+07 158.147893 \n", "min 0.000000e+00 0.000000 0.000000e+00 0.000000e+00 0.000000 \n", "25% 8.340000e+02 0.000000 8.000000e+00 0.000000e+00 0.000000 \n", "50% 3.077600e+04 0.000000 1.200000e+02 4.200000e+01 0.000000 \n", "75% 4.866800e+04 0.000000 8.480000e+02 2.920000e+02 0.000000 \n", "max 2.746564e+06 204.000000 2.130707e+09 8.584298e+09 21050.000000 \n", "\n", " af_000 ag_000 ag_001 ag_002 ag_003 \\\n", "count 60000.000000 6.000000e+04 6.000000e+04 6.000000e+04 6.000000e+04 \n", "mean 10.548200 2.191577e+02 9.648104e+02 8.509771e+03 8.760054e+04 \n", "std 205.387115 2.036364e+04 3.400891e+04 1.494818e+05 7.575171e+05 \n", "min 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", "25% 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", "50% 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", "75% 0.000000 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", "max 20070.000000 3.376892e+06 4.109372e+06 1.055286e+07 6.340207e+07 \n", "\n", " ... ee_002 ee_003 ee_004 ee_005 \\\n", "count ... 6.000000e+04 6.000000e+04 6.000000e+04 6.000000e+04 \n", "mean ... 4.405077e+05 2.087653e+05 4.407495e+05 3.895406e+05 \n", "std ... 1.150015e+06 5.407282e+05 1.162708e+06 1.115528e+06 \n", "min ... 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 \n", "25% ... 2.662000e+03 1.024000e+03 2.288000e+03 2.897000e+03 \n", "50% ... 2.280220e+05 1.088190e+05 2.153240e+05 1.838280e+05 \n", "75% ... 4.350315e+05 2.164440e+05 4.624655e+05 4.003010e+05 \n", "max ... 7.793393e+07 3.775839e+07 9.715238e+07 5.743524e+07 \n", "\n", " ee_006 ee_007 ee_008 ee_009 ef_000 \\\n", "count 6.000000e+04 6.000000e+04 6.000000e+04 6.000000e+04 60000.000000 \n", "mean 3.293335e+05 3.423990e+05 1.371785e+05 8.295099e+03 0.086467 \n", "std 1.063741e+06 1.718752e+06 4.472274e+05 4.721249e+04 4.268570 \n", "min 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000 \n", "25% 3.960000e+02 8.800000e+01 0.000000e+00 0.000000e+00 0.000000 \n", "50% 8.491400e+04 3.840600e+04 3.276000e+03 0.000000e+00 0.000000 \n", "75% 2.725220e+05 1.663465e+05 1.367255e+05 1.934000e+03 0.000000 \n", "max 3.160781e+07 1.195801e+08 1.926740e+07 3.810078e+06 482.000000 \n", "\n", " eg_000 \n", "count 60000.000000 \n", "mean 0.203100 \n", "std 8.628043 \n", "min 0.000000 \n", "25% 0.000000 \n", "50% 0.000000 \n", "75% 0.000000 \n", "max 1146.000000 \n", "\n", "[8 rows x 170 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Summary of Numerical Data\n", "X.describe()" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "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", "
class
00
10
20
30
40
\n", "
" ], "text/plain": [ " class\n", "0 0\n", "1 0\n", "2 0\n", "3 0\n", "4 0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Split the data into training and testing sets\n", "from sklearn.model_selection import train_test_split\n", "seed = 42\n", "X_train, X_test, y_train, y_test= train_test_split(X, y, test_size=0.20, random_state=seed)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# Initialize StandardScaler\n", "from sklearn.preprocessing import StandardScaler\n", "sc=StandardScaler()\n", "\n", "# Transform the training data\n", "X_train = sc.fit_transform(X_train)\n", "X_train = pd.DataFrame(X_train,columns=X_test.columns)\n", "\n", "# Transform the testing data\n", "X_test=sc.transform(X_test)\n", "X_test=pd.DataFrame(X_test,columns=X_train.columns)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Train a Neural Network and find its accuracy" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Using TensorFlow backend.\n" ] } ], "source": [ "# Import the relevant Keras libraries\n", "from keras.models import Sequential\n", "from keras.layers import Dense\n", "from keras.layers import Dropout" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Initiate the model with sequential class\n", "np.random.seed(seed)\n", "random.set_seed(seed)\n", "model=Sequential()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Add the hidden dense layers and with dropout Layer\n", "model.add(Dense(units=64, activation='relu', kernel_initializer='uniform', input_dim=X_train.shape[1]))\n", "model.add(Dropout(rate=0.5))\n", "model.add(Dense(units=32, activation='relu', kernel_initializer='uniform', input_dim=X_train.shape[1]))\n", "model.add(Dropout(rate=0.4))\n", "model.add(Dense(units=16, activation='relu', kernel_initializer='uniform', input_dim=X_train.shape[1]))\n", "model.add(Dropout(rate=0.3))\n", "model.add(Dense(units=8, activation='relu', kernel_initializer='uniform', input_dim=X_train.shape[1]))\n", "model.add(Dropout(rate=0.2))\n", "model.add(Dense(units=4, activation='relu', kernel_initializer='uniform'))\n", "model.add(Dropout(rate=0.1))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Add Output Dense Layer\n", "model.add(Dense(units=1, activation='sigmoid', kernel_initializer='uniform'))" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Compile the Model\n", "model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Train on 38400 samples, validate on 9600 samples\n", "Epoch 1/100\n", "38400/38400 [==============================] - 5s 139us/step - loss: 0.0805 - accuracy: 0.9833 - val_loss: 0.0365 - val_accuracy: 0.9842\n", "Epoch 2/100\n", "38400/38400 [==============================] - 5s 122us/step - loss: 0.0424 - accuracy: 0.9834 - val_loss: 0.0348 - val_accuracy: 0.9842\n", "Epoch 3/100\n", "38400/38400 [==============================] - 4s 107us/step - loss: 0.0381 - accuracy: 0.9834 - val_loss: 0.0321 - val_accuracy: 0.9842\n", "Epoch 4/100\n", "38400/38400 [==============================] - 4s 108us/step - loss: 0.0350 - accuracy: 0.9834 - val_loss: 0.0316 - val_accuracy: 0.9842\n", "Epoch 5/100\n", "38400/38400 [==============================] - 4s 106us/step - loss: 0.0360 - accuracy: 0.9838 - val_loss: 0.0288 - val_accuracy: 0.9904\n", "Epoch 6/100\n", "38400/38400 [==============================] - 5s 129us/step - loss: 0.0333 - accuracy: 0.9904 - val_loss: 0.0284 - val_accuracy: 0.9907\n", "Epoch 7/100\n", "38400/38400 [==============================] - 4s 115us/step - loss: 0.0332 - accuracy: 0.9902 - val_loss: 0.0290 - val_accuracy: 0.9901\n", "Epoch 8/100\n", "38400/38400 [==============================] - 4s 116us/step - loss: 0.0309 - accuracy: 0.9905 - val_loss: 0.0305 - val_accuracy: 0.9915\n", "Epoch 9/100\n", "38400/38400 [==============================] - 5s 117us/step - loss: 0.0312 - accuracy: 0.9908 - val_loss: 0.0291 - val_accuracy: 0.9900\n", "Epoch 10/100\n", "38400/38400 [==============================] - 4s 115us/step - loss: 0.0308 - accuracy: 0.9912 - val_loss: 0.0288 - val_accuracy: 0.9911\n", "Epoch 11/100\n", "38400/38400 [==============================] - 4s 106us/step - loss: 0.0293 - accuracy: 0.9908 - val_loss: 0.0276 - val_accuracy: 0.9915\n", "Epoch 12/100\n", "38400/38400 [==============================] - 4s 104us/step - loss: 0.0287 - accuracy: 0.9911 - val_loss: 0.0271 - val_accuracy: 0.9915\n", "Epoch 13/100\n", "38400/38400 [==============================] - 4s 102us/step - loss: 0.0281 - accuracy: 0.9913 - val_loss: 0.0337 - val_accuracy: 0.9902\n", "Epoch 14/100\n", "38400/38400 [==============================] - 4s 102us/step - loss: 0.0292 - accuracy: 0.9915 - val_loss: 0.0323 - val_accuracy: 0.9908\n", "Epoch 15/100\n", "38400/38400 [==============================] - 4s 103us/step - loss: 0.0289 - accuracy: 0.9921 - val_loss: 0.0270 - val_accuracy: 0.9932\n", "Epoch 16/100\n", "38400/38400 [==============================] - 4s 108us/step - loss: 0.0282 - accuracy: 0.9916 - val_loss: 0.0282 - val_accuracy: 0.9917\n", "Epoch 17/100\n", "38400/38400 [==============================] - 4s 105us/step - loss: 0.0285 - accuracy: 0.9922 - val_loss: 0.0326 - val_accuracy: 0.9915\n", "Epoch 18/100\n", "38400/38400 [==============================] - 4s 109us/step - loss: 0.0276 - accuracy: 0.9925 - val_loss: 0.0311 - val_accuracy: 0.9920\n", "Epoch 19/100\n", "38400/38400 [==============================] - 4s 108us/step - loss: 0.0267 - accuracy: 0.9921 - val_loss: 0.0314 - val_accuracy: 0.9915\n", "Epoch 20/100\n", "38400/38400 [==============================] - 4s 108us/step - loss: 0.0269 - accuracy: 0.9919 - val_loss: 0.0285 - val_accuracy: 0.9924\n", "Epoch 21/100\n", "38400/38400 [==============================] - 4s 110us/step - loss: 0.0281 - accuracy: 0.9920 - val_loss: 0.0313 - val_accuracy: 0.9917\n", "Epoch 22/100\n", "38400/38400 [==============================] - 4s 108us/step - loss: 0.0277 - accuracy: 0.9924 - val_loss: 0.0289 - val_accuracy: 0.9923\n", "Epoch 23/100\n", "38400/38400 [==============================] - 5s 121us/step - loss: 0.0274 - accuracy: 0.9924 - val_loss: 0.0293 - val_accuracy: 0.9924\n", "Epoch 24/100\n", "38400/38400 [==============================] - 4s 104us/step - loss: 0.0265 - accuracy: 0.9927 - val_loss: 0.0328 - val_accuracy: 0.9922\n", "Epoch 25/100\n", "38400/38400 [==============================] - 4s 96us/step - loss: 0.0257 - accuracy: 0.9929 - val_loss: 0.0326 - val_accuracy: 0.9922\n", "Epoch 26/100\n", "38400/38400 [==============================] - 4s 98us/step - loss: 0.0267 - accuracy: 0.9927 - val_loss: 0.0289 - val_accuracy: 0.9916\n", "Epoch 27/100\n", "38400/38400 [==============================] - 4s 102us/step - loss: 0.0249 - accuracy: 0.9931 - val_loss: 0.0316 - val_accuracy: 0.9921\n", "Epoch 28/100\n", "38400/38400 [==============================] - 4s 105us/step - loss: 0.0269 - accuracy: 0.9928 - val_loss: 0.0348 - val_accuracy: 0.9929\n", "Epoch 29/100\n", "38400/38400 [==============================] - 4s 92us/step - loss: 0.0246 - accuracy: 0.9927 - val_loss: 0.0318 - val_accuracy: 0.9927\n", "Epoch 30/100\n", "38400/38400 [==============================] - 4s 96us/step - loss: 0.0258 - accuracy: 0.9924 - val_loss: 0.0299 - val_accuracy: 0.9917\n", "Epoch 31/100\n", "38400/38400 [==============================] - 4s 95us/step - loss: 0.0250 - accuracy: 0.9928 - val_loss: 0.0286 - val_accuracy: 0.9912\n", "Epoch 32/100\n", "38400/38400 [==============================] - 4s 101us/step - loss: 0.0260 - accuracy: 0.9930 - val_loss: 0.0273 - val_accuracy: 0.9919\n", "Epoch 33/100\n", "38400/38400 [==============================] - 4s 103us/step - loss: 0.0239 - accuracy: 0.9933 - val_loss: 0.0336 - val_accuracy: 0.9919\n", "Epoch 34/100\n", "38400/38400 [==============================] - 4s 105us/step - loss: 0.0248 - accuracy: 0.9930 - val_loss: 0.0339 - val_accuracy: 0.9918\n", "Epoch 35/100\n", "38400/38400 [==============================] - 4s 100us/step - loss: 0.0255 - accuracy: 0.9932 - val_loss: 0.0326 - val_accuracy: 0.9919\n", "Epoch 36/100\n", "38400/38400 [==============================] - 4s 100us/step - loss: 0.0224 - accuracy: 0.9934 - val_loss: 0.0308 - val_accuracy: 0.9918\n", "Epoch 37/100\n", "38400/38400 [==============================] - 4s 102us/step - loss: 0.0239 - accuracy: 0.9934 - val_loss: 0.0337 - val_accuracy: 0.9921\n", "Epoch 38/100\n", "38400/38400 [==============================] - 4s 96us/step - loss: 0.0245 - accuracy: 0.9930 - val_loss: 0.0319 - val_accuracy: 0.9918\n", "Epoch 39/100\n", "38400/38400 [==============================] - 4s 96us/step - loss: 0.0242 - accuracy: 0.9936 - val_loss: 0.0323 - val_accuracy: 0.9931\n", "Epoch 40/100\n", "38400/38400 [==============================] - 4s 100us/step - loss: 0.0219 - accuracy: 0.9935 - val_loss: 0.0321 - val_accuracy: 0.9925\n", "Epoch 41/100\n", "38400/38400 [==============================] - 4s 115us/step - loss: 0.0244 - accuracy: 0.9939 - val_loss: 0.0364 - val_accuracy: 0.9930\n", "Epoch 42/100\n", "38400/38400 [==============================] - 4s 109us/step - loss: 0.0218 - accuracy: 0.9943 - val_loss: 0.0388 - val_accuracy: 0.9923\n", "Epoch 43/100\n", "38400/38400 [==============================] - 4s 109us/step - loss: 0.0241 - accuracy: 0.9935 - val_loss: 0.0321 - val_accuracy: 0.9926\n", "Epoch 44/100\n", "38400/38400 [==============================] - 4s 112us/step - loss: 0.0236 - accuracy: 0.9937 - val_loss: 0.0360 - val_accuracy: 0.9924\n", "Epoch 45/100\n", "38400/38400 [==============================] - 5s 130us/step - loss: 0.0223 - accuracy: 0.9937 - val_loss: 0.0396 - val_accuracy: 0.9928\n", "Epoch 46/100\n", "38400/38400 [==============================] - 5s 129us/step - loss: 0.0233 - accuracy: 0.9937 - val_loss: 0.0331 - val_accuracy: 0.9917\n", "Epoch 47/100\n", "38400/38400 [==============================] - 5s 139us/step - loss: 0.0221 - accuracy: 0.9938 - val_loss: 0.0358 - val_accuracy: 0.9923\n", "Epoch 48/100\n", "38400/38400 [==============================] - 6s 157us/step - loss: 0.0231 - accuracy: 0.9939 - val_loss: 0.0384 - val_accuracy: 0.9920\n", "Epoch 49/100\n", "38400/38400 [==============================] - 5s 140us/step - loss: 0.0217 - accuracy: 0.9941 - val_loss: 0.0367 - val_accuracy: 0.9916\n", "Epoch 50/100\n", "38400/38400 [==============================] - 6s 149us/step - loss: 0.0218 - accuracy: 0.9940 - val_loss: 0.0398 - val_accuracy: 0.9924 - loss: 0.0218 - accuracy: 0.99 - ETA: 0s - loss: 0.0219 - accuracy: 0.\n", "Epoch 51/100\n", "38400/38400 [==============================] - 6s 150us/step - loss: 0.0220 - accuracy: 0.9940 - val_loss: 0.0385 - val_accuracy: 0.9923\n", "Epoch 52/100\n", "38400/38400 [==============================] - 6s 149us/step - loss: 0.0227 - accuracy: 0.9941 - val_loss: 0.0376 - val_accuracy: 0.9910\n", "Epoch 53/100\n", "38400/38400 [==============================] - 6s 149us/step - loss: 0.0239 - accuracy: 0.9936 - val_loss: 0.0412 - val_accuracy: 0.9908\n", "Epoch 54/100\n", "38400/38400 [==============================] - 6s 154us/step - loss: 0.0230 - accuracy: 0.9943 - val_loss: 0.0455 - val_accuracy: 0.9920\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Epoch 55/100\n", "38400/38400 [==============================] - 5s 142us/step - loss: 0.0221 - accuracy: 0.9936 - val_loss: 0.0391 - val_accuracy: 0.9920\n", "Epoch 56/100\n", "38400/38400 [==============================] - 5s 142us/step - loss: 0.0216 - accuracy: 0.9942 - val_loss: 0.0426 - val_accuracy: 0.9923\n", "Epoch 57/100\n", "38400/38400 [==============================] - 6s 166us/step - loss: 0.0218 - accuracy: 0.9933 - val_loss: 0.0418 - val_accuracy: 0.9917\n", "Epoch 58/100\n", "38400/38400 [==============================] - 6s 144us/step - loss: 0.0235 - accuracy: 0.9937 - val_loss: 0.0414 - val_accuracy: 0.9921\n", "Epoch 59/100\n", "38400/38400 [==============================] - 6s 145us/step - loss: 0.0209 - accuracy: 0.9943 - val_loss: 0.0376 - val_accuracy: 0.9922\n", "Epoch 60/100\n", "38400/38400 [==============================] - 5s 126us/step - loss: 0.0246 - accuracy: 0.9940 - val_loss: 0.0441 - val_accuracy: 0.9918\n", "Epoch 61/100\n", "38400/38400 [==============================] - 5s 140us/step - loss: 0.0236 - accuracy: 0.9942 - val_loss: 0.0421 - val_accuracy: 0.9922\n", "Epoch 62/100\n", "38400/38400 [==============================] - 6s 145us/step - loss: 0.0226 - accuracy: 0.9942 - val_loss: 0.0414 - val_accuracy: 0.9923\n", "Epoch 63/100\n", "38400/38400 [==============================] - 6s 149us/step - loss: 0.0215 - accuracy: 0.9943 - val_loss: 0.0420 - val_accuracy: 0.9915\n", "Epoch 64/100\n", "38400/38400 [==============================] - 5s 140us/step - loss: 0.0198 - accuracy: 0.9946 - val_loss: 0.0466 - val_accuracy: 0.9920\n", "Epoch 65/100\n", "38400/38400 [==============================] - 5s 137us/step - loss: 0.0198 - accuracy: 0.9941 - val_loss: 0.0467 - val_accuracy: 0.9914\n", "Epoch 66/100\n", "38400/38400 [==============================] - 5s 123us/step - loss: 0.0219 - accuracy: 0.9943 - val_loss: 0.0416 - val_accuracy: 0.9919- accu\n", "Epoch 67/100\n", "38400/38400 [==============================] - 5s 123us/step - loss: 0.0225 - accuracy: 0.9941 - val_loss: 0.0441 - val_accuracy: 0.9921\n", "Epoch 68/100\n", "38400/38400 [==============================] - 6s 148us/step - loss: 0.0210 - accuracy: 0.9943 - val_loss: 0.0386 - val_accuracy: 0.9915\n", "Epoch 69/100\n", "38400/38400 [==============================] - 5s 138us/step - loss: 0.0217 - accuracy: 0.9940 - val_loss: 0.0393 - val_accuracy: 0.9916\n", "Epoch 70/100\n", "38400/38400 [==============================] - 5s 132us/step - loss: 0.0201 - accuracy: 0.9949 - val_loss: 0.0557 - val_accuracy: 0.9920\n", "Epoch 71/100\n", "38400/38400 [==============================] - 5s 136us/step - loss: 0.0206 - accuracy: 0.9943 - val_loss: 0.0548 - val_accuracy: 0.9916\n", "Epoch 72/100\n", "38400/38400 [==============================] - 6s 159us/step - loss: 0.0213 - accuracy: 0.9943 - val_loss: 0.0434 - val_accuracy: 0.9914\n", "Epoch 73/100\n", "38400/38400 [==============================] - 6s 151us/step - loss: 0.0224 - accuracy: 0.9944 - val_loss: 0.0431 - val_accuracy: 0.9912\n", "Epoch 74/100\n", "38400/38400 [==============================] - 5s 143us/step - loss: 0.0190 - accuracy: 0.9947 - val_loss: 0.0562 - val_accuracy: 0.9923\n", "Epoch 75/100\n", "38400/38400 [==============================] - 5s 142us/step - loss: 0.0196 - accuracy: 0.9942 - val_loss: 0.0665 - val_accuracy: 0.9917\n", "Epoch 76/100\n", "38400/38400 [==============================] - 6s 143us/step - loss: 0.0206 - accuracy: 0.9943 - val_loss: 0.0529 - val_accuracy: 0.9914\n", "Epoch 77/100\n", "38400/38400 [==============================] - 5s 136us/step - loss: 0.0202 - accuracy: 0.9944 - val_loss: 0.0510 - val_accuracy: 0.9920\n", "Epoch 78/100\n", "38400/38400 [==============================] - 5s 136us/step - loss: 0.0193 - accuracy: 0.9948 - val_loss: 0.0401 - val_accuracy: 0.9914\n", "Epoch 79/100\n", "38400/38400 [==============================] - 5s 134us/step - loss: 0.0197 - accuracy: 0.9943 - val_loss: 0.0468 - val_accuracy: 0.9919\n", "Epoch 80/100\n", "38400/38400 [==============================] - 6s 149us/step - loss: 0.0230 - accuracy: 0.9940 - val_loss: 0.0523 - val_accuracy: 0.9910\n", "Epoch 81/100\n", "38400/38400 [==============================] - 5s 140us/step - loss: 0.0205 - accuracy: 0.9946 - val_loss: 0.0422 - val_accuracy: 0.9916\n", "Epoch 82/100\n", "38400/38400 [==============================] - 5s 140us/step - loss: 0.0217 - accuracy: 0.9947 - val_loss: 0.0441 - val_accuracy: 0.9917\n", "Epoch 83/100\n", "38400/38400 [==============================] - 5s 141us/step - loss: 0.0192 - accuracy: 0.9945 - val_loss: 0.0519 - val_accuracy: 0.9919\n", "Epoch 84/100\n", "38400/38400 [==============================] - 5s 135us/step - loss: 0.0194 - accuracy: 0.9947 - val_loss: 0.0536 - val_accuracy: 0.9916\n", "Epoch 85/100\n", "38400/38400 [==============================] - 5s 133us/step - loss: 0.0207 - accuracy: 0.9945 - val_loss: 0.0462 - val_accuracy: 0.9912\n", "Epoch 86/100\n", "38400/38400 [==============================] - 5s 138us/step - loss: 0.0193 - accuracy: 0.9949 - val_loss: 0.0492 - val_accuracy: 0.9916\n", "Epoch 87/100\n", "38400/38400 [==============================] - 5s 134us/step - loss: 0.0199 - accuracy: 0.9945 - val_loss: 0.0627 - val_accuracy: 0.9919\n", "Epoch 88/100\n", "38400/38400 [==============================] - 5s 133us/step - loss: 0.0205 - accuracy: 0.9946 - val_loss: 0.0465 - val_accuracy: 0.9915\n", "Epoch 89/100\n", "38400/38400 [==============================] - 5s 136us/step - loss: 0.0190 - accuracy: 0.9948 - val_loss: 0.0477 - val_accuracy: 0.9920\n", "Epoch 90/100\n", "38400/38400 [==============================] - 6s 151us/step - loss: 0.0199 - accuracy: 0.9947 - val_loss: 0.0572 - val_accuracy: 0.9923\n", "Epoch 91/100\n", "38400/38400 [==============================] - 6s 163us/step - loss: 0.0194 - accuracy: 0.9949 - val_loss: 0.0558 - val_accuracy: 0.9911\n", "Epoch 92/100\n", "38400/38400 [==============================] - 6s 145us/step - loss: 0.0208 - accuracy: 0.9945 - val_loss: 0.0598 - val_accuracy: 0.9919\n", "Epoch 93/100\n", "38400/38400 [==============================] - 5s 139us/step - loss: 0.0182 - accuracy: 0.9952 - val_loss: 0.0438 - val_accuracy: 0.9912\n", "Epoch 94/100\n", "38400/38400 [==============================] - 6s 152us/step - loss: 0.0192 - accuracy: 0.9946 - val_loss: 0.0519 - val_accuracy: 0.9914\n", "Epoch 95/100\n", "38400/38400 [==============================] - 6s 143us/step - loss: 0.0201 - accuracy: 0.9946 - val_loss: 0.0520 - val_accuracy: 0.9906\n", "Epoch 96/100\n", "38400/38400 [==============================] - 6s 145us/step - loss: 0.0177 - accuracy: 0.9953 - val_loss: 0.0647 - val_accuracy: 0.9920\n", "Epoch 97/100\n", "38400/38400 [==============================] - 6s 155us/step - loss: 0.0187 - accuracy: 0.9951 - val_loss: 0.0605 - val_accuracy: 0.9914\n", "Epoch 98/100\n", "38400/38400 [==============================] - 6s 160us/step - loss: 0.0190 - accuracy: 0.9952 - val_loss: 0.0551 - val_accuracy: 0.9914\n", "Epoch 99/100\n", "38400/38400 [==============================] - 6s 157us/step - loss: 0.0199 - accuracy: 0.9951 - val_loss: 0.0556 - val_accuracy: 0.9915\n", "Epoch 100/100\n", "38400/38400 [==============================] - 6s 164us/step - loss: 0.0188 - accuracy: 0.9950 - val_loss: 0.0560 - val_accuracy: 0.9920\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fit the Model\n", "model.fit(X_train, y_train, epochs=100, batch_size=20, verbose=1, validation_split=0.2, shuffle=False)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12000/12000 [==============================] - 0s 30us/step\n", "The loss on the test set is 0.1148 and the accuracy is 98.9500%\n" ] } ], "source": [ "test_loss, test_acc = model.evaluate(X_test, y_test)\n", "print(f'The loss on the test set is {test_loss:.4f} and the accuracy is {test_acc*100:.4f}%')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the null accuracy" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 11788\n", "1 212\n", "Name: class, dtype: int64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Use the value_count function to calculate distinct class values\n", "y_test['class'].value_counts()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9823333333333333" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calculate the null accuracy\n", "y_test['class'].value_counts(normalize=True).loc[0]" ] } ], "metadata": { "kernelspec": { "display_name": "py3.7", "language": "python", "name": "py3.7" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }