The dataset contains several features which are considered important during the application for Masters Programs. The features included are:
GRE (Graduate Record Examination) Scores: (out of 340)
TOEFL (Test of English as a Forein Language) Scores: (out of 120)
University Rating: It indicates the Bachelor University ranking (out of 5)
Statement of Purpose Strength: (out of 5)
Letter of Recommendation Strength: (out of 5)
Undergraduate GPA: (out of 10)
Research Experience: (either 0 or 1)
Chance of Admit: (ranging from 0 to 1)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation
# Importing the dataset
data = pd.read_csv('Admission_Predict.csv')
data.head()
| Serial No. | GRE Score | TOEFL Score | University Rating | SOP | LOR | CGPA | Research | Chance of Admit | |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 337 | 118 | 4 | 4.5 | 4.5 | 9.65 | 1 | 0.92 |
| 1 | 2 | 324 | 107 | 4 | 4.0 | 4.5 | 8.87 | 1 | 0.76 |
| 2 | 3 | 316 | 104 | 3 | 3.0 | 3.5 | 8.00 | 1 | 0.72 |
| 3 | 4 | 322 | 110 | 3 | 3.5 | 2.5 | 8.67 | 1 | 0.80 |
| 4 | 5 | 314 | 103 | 2 | 2.0 | 3.0 | 8.21 | 0 | 0.65 |
# Converting the target variable into a categorical variable
data['Admit'] = data['Chance of Admit '].apply(lambda x: 1 if x > 0.8 else 0)
data.head()
| Serial No. | GRE Score | TOEFL Score | University Rating | SOP | LOR | CGPA | Research | Chance of Admit | Admit | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 1 | 337 | 118 | 4 | 4.5 | 4.5 | 9.65 | 1 | 0.92 | 1 |
| 1 | 2 | 324 | 107 | 4 | 4.0 | 4.5 | 8.87 | 1 | 0.76 | 0 |
| 2 | 3 | 316 | 104 | 3 | 3.0 | 3.5 | 8.00 | 1 | 0.72 | 0 |
| 3 | 4 | 322 | 110 | 3 | 3.5 | 2.5 | 8.67 | 1 | 0.80 | 0 |
| 4 | 5 | 314 | 103 | 2 | 2.0 | 3.0 | 8.21 | 0 | 0.65 | 0 |
Now that we have created a new target variable, we can remove the column - Chance of Admit from the dataset. We can also remove the column - Serial No. as it would not add any value to our analysis.
# Dropping columns
data = data.drop(['Serial No.', 'Chance of Admit '], axis=1)
data.head()
| GRE Score | TOEFL Score | University Rating | SOP | LOR | CGPA | Research | Admit | |
|---|---|---|---|---|---|---|---|---|
| 0 | 337 | 118 | 4 | 4.5 | 4.5 | 9.65 | 1 | 1 |
| 1 | 324 | 107 | 4 | 4.0 | 4.5 | 8.87 | 1 | 0 |
| 2 | 316 | 104 | 3 | 3.0 | 3.5 | 8.00 | 1 | 0 |
| 3 | 322 | 110 | 3 | 3.5 | 2.5 | 8.67 | 1 | 0 |
| 4 | 314 | 103 | 2 | 2.0 | 3.0 | 8.21 | 0 | 0 |
# Let's check the info of the data
data.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 500 entries, 0 to 499 Data columns (total 8 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 GRE Score 500 non-null int64 1 TOEFL Score 500 non-null int64 2 University Rating 500 non-null int64 3 SOP 500 non-null float64 4 LOR 500 non-null float64 5 CGPA 500 non-null float64 6 Research 500 non-null int64 7 Admit 500 non-null int64 dtypes: float64(3), int64(5) memory usage: 31.4 KB
Observations:
# Let's check the summary statistics of the data
data.describe().T
| count | mean | std | min | 25% | 50% | 75% | max | |
|---|---|---|---|---|---|---|---|---|
| GRE Score | 500.0 | 316.47200 | 11.295148 | 290.0 | 308.0000 | 317.00 | 325.00 | 340.00 |
| TOEFL Score | 500.0 | 107.19200 | 6.081868 | 92.0 | 103.0000 | 107.00 | 112.00 | 120.00 |
| University Rating | 500.0 | 3.11400 | 1.143512 | 1.0 | 2.0000 | 3.00 | 4.00 | 5.00 |
| SOP | 500.0 | 3.37400 | 0.991004 | 1.0 | 2.5000 | 3.50 | 4.00 | 5.00 |
| LOR | 500.0 | 3.48400 | 0.925450 | 1.0 | 3.0000 | 3.50 | 4.00 | 5.00 |
| CGPA | 500.0 | 8.57644 | 0.604813 | 6.8 | 8.1275 | 8.56 | 9.04 | 9.92 |
| Research | 500.0 | 0.56000 | 0.496884 | 0.0 | 0.0000 | 1.00 | 1.00 | 1.00 |
| Admit | 500.0 | 0.28400 | 0.451388 | 0.0 | 0.0000 | 0.00 | 1.00 | 1.00 |
Observations:
plt.figure(figsize=(15,8))
sns.scatterplot(data=data,
x='GRE Score',
y='TOEFL Score',
hue='Admit',
size='SOP');
This dataset contains both numerical and categorical variables. We need to treat them first before we pass them onto the neural network. We will perform the below pre-processing steps:
An important point to remember: Before we scale numerical variables, we would first split the dataset into train and test datasets and perform scaling separately. Otherwise, we would be leaking information from the test data to the train data and the resulting model might give a false sense of good performance. This is known as data leakage which we would like to avoid.
In this dataset, although the variable University Rating is encoded as a numerical variable. University Rating is denoting or signifying the quality of the university, so that is why this is a categorical variable and we would be creating one-hot encoding or dummy variables for this variable.
# Creating one hot encoding for the column - University Rating and then dropping University Rating
one_hot_data = pd.concat([data, pd.get_dummies(data['University Rating'], prefix = 'University Rating')], axis=1)
one_hot_data = one_hot_data.drop(columns = 'University Rating')
one_hot_data.head()
| GRE Score | TOEFL Score | SOP | LOR | CGPA | Research | Admit | University Rating_1 | University Rating_2 | University Rating_3 | University Rating_4 | University Rating_5 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 337 | 118 | 4.5 | 4.5 | 9.65 | 1 | 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 324 | 107 | 4.0 | 4.5 | 8.87 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
| 2 | 316 | 104 | 3.0 | 3.5 | 8.00 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| 3 | 322 | 110 | 3.5 | 2.5 | 8.67 | 1 | 0 | 0 | 0 | 1 | 0 | 0 |
| 4 | 314 | 103 | 2.0 | 3.0 | 8.21 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
Now, let's split the dataset into train and test datasets. To do that, we would be extracting all the independent variables and save them into a variable features. And the target variable Admit would be saved into a variable target. These two variables will be used to split the parent dataset into train and test datasets.
features = one_hot_data.drop(['Admit'], axis=1)
target = one_hot_data['Admit']
# Splitting the dataset into train and test data
X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
Now, we will perform scaling on the numerical variables separately for train and test sets. We will perform fit and transform on the train data and then only we will perform transform on the test data.
scaler = MinMaxScaler()
# Here, we are passing all the features (numerical and categorical), that's okay as min-max scaler will not change values of categorical variables
X_train_normalized = scaler.fit_transform(X_train)
X_test_normalized = scaler.transform(X_test)
# Fixing the seed for random number generators
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
# We will be adding the layers sequentially
model_1 = Sequential()
# First hidden layer with 128 neurons and relu activation function, the input shape tuple denotes number of independent variables
model_1.add(Dense(128, activation='relu', input_shape=(11,)))
# We will be switching 20% of neurons off randomly at each iteration to avoid overfitting
model_1.add(Dropout(0.2))
# Second hidden layer with 64 neurons and relu activation function
model_1.add(Dense(64, activation='relu'))
# We will be switching 10% of neurons off randomly at each iteration to avoid overfitting
model_1.add(Dropout(0.1))
# Output layer with only one neuron and sigmoid as activation function will give the probability of students getting admitted into UCLA
model_1.add(Dense(1, activation='sigmoid'))
Once we are done with the model architecture, we need to compile the model, where we need to provide the loss function that we want to optimize, the optimization algorithm, and the evaluation metric that we are interested in to evaluate the model.
Try adamax optimizer with accuracy as the metric and see the model's summary.
model_1.compile(loss = 'binary_crossentropy', optimizer='adamax', metrics=['accuracy'])
model_1.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 128) 1536
dropout (Dropout) (None, 128) 0
dense_1 (Dense) (None, 64) 8256
dropout_1 (Dropout) (None, 64) 0
dense_2 (Dense) (None, 1) 65
=================================================================
Total params: 9,857
Trainable params: 9,857
Non-trainable params: 0
_________________________________________________________________
From the above summary, we can see that this architecture will train a total of 9,857 parameters i.e. weights and biases in the network.
history_1 = model_1.fit(X_train_normalized,
y_train,
validation_split=0.1,
epochs=150,
verbose=2)
Epoch 1/150 12/12 - 1s - loss: 0.6542 - accuracy: 0.6639 - val_loss: 0.6546 - val_accuracy: 0.5750 - 838ms/epoch - 70ms/step Epoch 2/150 12/12 - 0s - loss: 0.5893 - accuracy: 0.7306 - val_loss: 0.6212 - val_accuracy: 0.5750 - 39ms/epoch - 3ms/step Epoch 3/150 12/12 - 0s - loss: 0.5492 - accuracy: 0.7333 - val_loss: 0.5885 - val_accuracy: 0.5750 - 35ms/epoch - 3ms/step Epoch 4/150 12/12 - 0s - loss: 0.5131 - accuracy: 0.7417 - val_loss: 0.5413 - val_accuracy: 0.7500 - 20ms/epoch - 2ms/step Epoch 5/150 12/12 - 0s - loss: 0.4815 - accuracy: 0.7861 - val_loss: 0.4917 - val_accuracy: 0.8250 - 35ms/epoch - 3ms/step Epoch 6/150 12/12 - 0s - loss: 0.4416 - accuracy: 0.8444 - val_loss: 0.4530 - val_accuracy: 0.8500 - 37ms/epoch - 3ms/step Epoch 7/150 12/12 - 0s - loss: 0.4091 - accuracy: 0.8667 - val_loss: 0.4109 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 8/150 12/12 - 0s - loss: 0.3828 - accuracy: 0.8889 - val_loss: 0.3816 - val_accuracy: 0.9250 - 24ms/epoch - 2ms/step Epoch 9/150 12/12 - 0s - loss: 0.3606 - accuracy: 0.8861 - val_loss: 0.3552 - val_accuracy: 0.9250 - 45ms/epoch - 4ms/step Epoch 10/150 12/12 - 0s - loss: 0.3350 - accuracy: 0.8806 - val_loss: 0.3328 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 11/150 12/12 - 0s - loss: 0.3267 - accuracy: 0.8778 - val_loss: 0.3170 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 12/150 12/12 - 0s - loss: 0.3113 - accuracy: 0.8861 - val_loss: 0.3135 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 13/150 12/12 - 0s - loss: 0.3109 - accuracy: 0.8806 - val_loss: 0.3039 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 14/150 12/12 - 0s - loss: 0.3151 - accuracy: 0.8806 - val_loss: 0.2907 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 15/150 12/12 - 0s - loss: 0.2965 - accuracy: 0.8806 - val_loss: 0.2904 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 16/150 12/12 - 0s - loss: 0.2915 - accuracy: 0.8806 - val_loss: 0.2887 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 17/150 12/12 - 0s - loss: 0.2727 - accuracy: 0.8972 - val_loss: 0.2780 - val_accuracy: 0.9250 - 24ms/epoch - 2ms/step Epoch 18/150 12/12 - 0s - loss: 0.2789 - accuracy: 0.8861 - val_loss: 0.2777 - val_accuracy: 0.9250 - 46ms/epoch - 4ms/step Epoch 19/150 12/12 - 0s - loss: 0.2776 - accuracy: 0.8778 - val_loss: 0.2802 - val_accuracy: 0.9250 - 19ms/epoch - 2ms/step Epoch 20/150 12/12 - 0s - loss: 0.2660 - accuracy: 0.8833 - val_loss: 0.2819 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 21/150 12/12 - 0s - loss: 0.2639 - accuracy: 0.8889 - val_loss: 0.2776 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 22/150 12/12 - 0s - loss: 0.2543 - accuracy: 0.8944 - val_loss: 0.2706 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 23/150 12/12 - 0s - loss: 0.2546 - accuracy: 0.8861 - val_loss: 0.2649 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 24/150 12/12 - 0s - loss: 0.2558 - accuracy: 0.8972 - val_loss: 0.2663 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 25/150 12/12 - 0s - loss: 0.2586 - accuracy: 0.8889 - val_loss: 0.2692 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 26/150 12/12 - 0s - loss: 0.2475 - accuracy: 0.8972 - val_loss: 0.2692 - val_accuracy: 0.9250 - 24ms/epoch - 2ms/step Epoch 27/150 12/12 - 0s - loss: 0.2496 - accuracy: 0.8889 - val_loss: 0.2652 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 28/150 12/12 - 0s - loss: 0.2443 - accuracy: 0.9056 - val_loss: 0.2710 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 29/150 12/12 - 0s - loss: 0.2477 - accuracy: 0.9056 - val_loss: 0.2682 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 30/150 12/12 - 0s - loss: 0.2611 - accuracy: 0.8917 - val_loss: 0.2594 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 31/150 12/12 - 0s - loss: 0.2471 - accuracy: 0.8972 - val_loss: 0.2620 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 32/150 12/12 - 0s - loss: 0.2444 - accuracy: 0.9000 - val_loss: 0.2673 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 33/150 12/12 - 0s - loss: 0.2494 - accuracy: 0.8944 - val_loss: 0.2646 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 34/150 12/12 - 0s - loss: 0.2414 - accuracy: 0.8917 - val_loss: 0.2636 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 35/150 12/12 - 0s - loss: 0.2371 - accuracy: 0.8944 - val_loss: 0.2650 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 36/150 12/12 - 0s - loss: 0.2453 - accuracy: 0.8917 - val_loss: 0.2609 - val_accuracy: 0.9250 - 41ms/epoch - 3ms/step Epoch 37/150 12/12 - 0s - loss: 0.2394 - accuracy: 0.9056 - val_loss: 0.2549 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 38/150 12/12 - 0s - loss: 0.2207 - accuracy: 0.9139 - val_loss: 0.2541 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 39/150 12/12 - 0s - loss: 0.2447 - accuracy: 0.8917 - val_loss: 0.2570 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 40/150 12/12 - 0s - loss: 0.2322 - accuracy: 0.9000 - val_loss: 0.2529 - val_accuracy: 0.9250 - 21ms/epoch - 2ms/step Epoch 41/150 12/12 - 0s - loss: 0.2320 - accuracy: 0.8917 - val_loss: 0.2561 - val_accuracy: 0.9250 - 49ms/epoch - 4ms/step Epoch 42/150 12/12 - 0s - loss: 0.2215 - accuracy: 0.9028 - val_loss: 0.2527 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 43/150 12/12 - 0s - loss: 0.2282 - accuracy: 0.9000 - val_loss: 0.2593 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 44/150 12/12 - 0s - loss: 0.2375 - accuracy: 0.9000 - val_loss: 0.2602 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 45/150 12/12 - 0s - loss: 0.2329 - accuracy: 0.9139 - val_loss: 0.2579 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 46/150 12/12 - 0s - loss: 0.2317 - accuracy: 0.8972 - val_loss: 0.2586 - val_accuracy: 0.9250 - 44ms/epoch - 4ms/step Epoch 47/150 12/12 - 0s - loss: 0.2283 - accuracy: 0.8917 - val_loss: 0.2558 - val_accuracy: 0.9250 - 21ms/epoch - 2ms/step Epoch 48/150 12/12 - 0s - loss: 0.2239 - accuracy: 0.9167 - val_loss: 0.2516 - val_accuracy: 0.9250 - 48ms/epoch - 4ms/step Epoch 49/150 12/12 - 0s - loss: 0.2286 - accuracy: 0.9056 - val_loss: 0.2533 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 50/150 12/12 - 0s - loss: 0.2269 - accuracy: 0.9000 - val_loss: 0.2485 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 51/150 12/12 - 0s - loss: 0.2281 - accuracy: 0.9028 - val_loss: 0.2519 - val_accuracy: 0.9250 - 28ms/epoch - 2ms/step Epoch 52/150 12/12 - 0s - loss: 0.2215 - accuracy: 0.9056 - val_loss: 0.2530 - val_accuracy: 0.9250 - 49ms/epoch - 4ms/step Epoch 53/150 12/12 - 0s - loss: 0.2151 - accuracy: 0.9028 - val_loss: 0.2488 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 54/150 12/12 - 0s - loss: 0.2220 - accuracy: 0.9083 - val_loss: 0.2501 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 55/150 12/12 - 0s - loss: 0.2073 - accuracy: 0.9056 - val_loss: 0.2472 - val_accuracy: 0.9250 - 45ms/epoch - 4ms/step Epoch 56/150 12/12 - 0s - loss: 0.2170 - accuracy: 0.9056 - val_loss: 0.2443 - val_accuracy: 0.9250 - 26ms/epoch - 2ms/step Epoch 57/150 12/12 - 0s - loss: 0.2069 - accuracy: 0.9083 - val_loss: 0.2437 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 58/150 12/12 - 0s - loss: 0.2219 - accuracy: 0.9056 - val_loss: 0.2461 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 59/150 12/12 - 0s - loss: 0.2207 - accuracy: 0.9083 - val_loss: 0.2485 - val_accuracy: 0.9250 - 29ms/epoch - 2ms/step Epoch 60/150 12/12 - 0s - loss: 0.2064 - accuracy: 0.9278 - val_loss: 0.2469 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 61/150 12/12 - 0s - loss: 0.2081 - accuracy: 0.9083 - val_loss: 0.2505 - val_accuracy: 0.9250 - 20ms/epoch - 2ms/step Epoch 62/150 12/12 - 0s - loss: 0.2068 - accuracy: 0.9111 - val_loss: 0.2541 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 63/150 12/12 - 0s - loss: 0.2194 - accuracy: 0.9056 - val_loss: 0.2546 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 64/150 12/12 - 0s - loss: 0.2115 - accuracy: 0.9139 - val_loss: 0.2484 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 65/150 12/12 - 0s - loss: 0.2226 - accuracy: 0.9000 - val_loss: 0.2448 - val_accuracy: 0.9250 - 26ms/epoch - 2ms/step Epoch 66/150 12/12 - 0s - loss: 0.2078 - accuracy: 0.9083 - val_loss: 0.2457 - val_accuracy: 0.9250 - 55ms/epoch - 5ms/step Epoch 67/150 12/12 - 0s - loss: 0.2090 - accuracy: 0.9083 - val_loss: 0.2419 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 68/150 12/12 - 0s - loss: 0.2153 - accuracy: 0.9111 - val_loss: 0.2422 - val_accuracy: 0.9250 - 26ms/epoch - 2ms/step Epoch 69/150 12/12 - 0s - loss: 0.1951 - accuracy: 0.9139 - val_loss: 0.2469 - val_accuracy: 0.9250 - 44ms/epoch - 4ms/step Epoch 70/150 12/12 - 0s - loss: 0.2186 - accuracy: 0.9056 - val_loss: 0.2424 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 71/150 12/12 - 0s - loss: 0.1959 - accuracy: 0.9167 - val_loss: 0.2476 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 72/150 12/12 - 0s - loss: 0.1978 - accuracy: 0.9139 - val_loss: 0.2420 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 73/150 12/12 - 0s - loss: 0.1924 - accuracy: 0.9250 - val_loss: 0.2429 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 74/150 12/12 - 0s - loss: 0.1984 - accuracy: 0.9167 - val_loss: 0.2443 - val_accuracy: 0.9250 - 23ms/epoch - 2ms/step Epoch 75/150 12/12 - 0s - loss: 0.2103 - accuracy: 0.9056 - val_loss: 0.2506 - val_accuracy: 0.9250 - 45ms/epoch - 4ms/step Epoch 76/150 12/12 - 0s - loss: 0.2041 - accuracy: 0.9167 - val_loss: 0.2568 - val_accuracy: 0.9250 - 20ms/epoch - 2ms/step Epoch 77/150 12/12 - 0s - loss: 0.1994 - accuracy: 0.9000 - val_loss: 0.2470 - val_accuracy: 0.9250 - 23ms/epoch - 2ms/step Epoch 78/150 12/12 - 0s - loss: 0.2001 - accuracy: 0.9139 - val_loss: 0.2413 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 79/150 12/12 - 0s - loss: 0.1874 - accuracy: 0.9222 - val_loss: 0.2482 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 80/150 12/12 - 0s - loss: 0.2024 - accuracy: 0.9139 - val_loss: 0.2463 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 81/150 12/12 - 0s - loss: 0.2056 - accuracy: 0.9083 - val_loss: 0.2418 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 82/150 12/12 - 0s - loss: 0.2031 - accuracy: 0.9028 - val_loss: 0.2521 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 83/150 12/12 - 0s - loss: 0.2094 - accuracy: 0.9083 - val_loss: 0.2492 - val_accuracy: 0.9250 - 27ms/epoch - 2ms/step Epoch 84/150 12/12 - 0s - loss: 0.1924 - accuracy: 0.9139 - val_loss: 0.2428 - val_accuracy: 0.9250 - 42ms/epoch - 3ms/step Epoch 85/150 12/12 - 0s - loss: 0.1901 - accuracy: 0.9167 - val_loss: 0.2494 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 86/150 12/12 - 0s - loss: 0.2101 - accuracy: 0.9083 - val_loss: 0.2483 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 87/150 12/12 - 0s - loss: 0.1870 - accuracy: 0.9167 - val_loss: 0.2384 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 88/150 12/12 - 0s - loss: 0.1905 - accuracy: 0.9222 - val_loss: 0.2412 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 89/150 12/12 - 0s - loss: 0.2027 - accuracy: 0.9111 - val_loss: 0.2435 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 90/150 12/12 - 0s - loss: 0.1886 - accuracy: 0.9250 - val_loss: 0.2403 - val_accuracy: 0.9250 - 27ms/epoch - 2ms/step Epoch 91/150 12/12 - 0s - loss: 0.1944 - accuracy: 0.9111 - val_loss: 0.2426 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 92/150 12/12 - 0s - loss: 0.1913 - accuracy: 0.9167 - val_loss: 0.2495 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 93/150 12/12 - 0s - loss: 0.1975 - accuracy: 0.9111 - val_loss: 0.2474 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 94/150 12/12 - 0s - loss: 0.2025 - accuracy: 0.9056 - val_loss: 0.2478 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 95/150 12/12 - 0s - loss: 0.1951 - accuracy: 0.9111 - val_loss: 0.2454 - val_accuracy: 0.9250 - 47ms/epoch - 4ms/step Epoch 96/150 12/12 - 0s - loss: 0.1828 - accuracy: 0.9278 - val_loss: 0.2449 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 97/150 12/12 - 0s - loss: 0.2039 - accuracy: 0.9139 - val_loss: 0.2455 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 98/150 12/12 - 0s - loss: 0.1939 - accuracy: 0.9167 - val_loss: 0.2500 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 99/150 12/12 - 0s - loss: 0.1915 - accuracy: 0.9083 - val_loss: 0.2419 - val_accuracy: 0.9250 - 29ms/epoch - 2ms/step Epoch 100/150 12/12 - 0s - loss: 0.2021 - accuracy: 0.9194 - val_loss: 0.2448 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 101/150 12/12 - 0s - loss: 0.1905 - accuracy: 0.9222 - val_loss: 0.2425 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 102/150 12/12 - 0s - loss: 0.2028 - accuracy: 0.9139 - val_loss: 0.2481 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 103/150 12/12 - 0s - loss: 0.1908 - accuracy: 0.9250 - val_loss: 0.2416 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 104/150 12/12 - 0s - loss: 0.1891 - accuracy: 0.9111 - val_loss: 0.2479 - val_accuracy: 0.9250 - 60ms/epoch - 5ms/step Epoch 105/150 12/12 - 0s - loss: 0.1901 - accuracy: 0.9139 - val_loss: 0.2560 - val_accuracy: 0.9250 - 47ms/epoch - 4ms/step Epoch 106/150 12/12 - 0s - loss: 0.1914 - accuracy: 0.9167 - val_loss: 0.2474 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 107/150 12/12 - 0s - loss: 0.1850 - accuracy: 0.9083 - val_loss: 0.2492 - val_accuracy: 0.9250 - 48ms/epoch - 4ms/step Epoch 108/150 12/12 - 0s - loss: 0.1943 - accuracy: 0.9111 - val_loss: 0.2484 - val_accuracy: 0.9250 - 39ms/epoch - 3ms/step Epoch 109/150 12/12 - 0s - loss: 0.1840 - accuracy: 0.9111 - val_loss: 0.2435 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 110/150 12/12 - 0s - loss: 0.1894 - accuracy: 0.9278 - val_loss: 0.2481 - val_accuracy: 0.9250 - 41ms/epoch - 3ms/step Epoch 111/150 12/12 - 0s - loss: 0.1975 - accuracy: 0.9167 - val_loss: 0.2445 - val_accuracy: 0.9000 - 22ms/epoch - 2ms/step Epoch 112/150 12/12 - 0s - loss: 0.1778 - accuracy: 0.9306 - val_loss: 0.2479 - val_accuracy: 0.9000 - 35ms/epoch - 3ms/step Epoch 113/150 12/12 - 0s - loss: 0.1776 - accuracy: 0.9083 - val_loss: 0.2538 - val_accuracy: 0.9000 - 40ms/epoch - 3ms/step Epoch 114/150 12/12 - 0s - loss: 0.1869 - accuracy: 0.9222 - val_loss: 0.2550 - val_accuracy: 0.9250 - 44ms/epoch - 4ms/step Epoch 115/150 12/12 - 0s - loss: 0.1853 - accuracy: 0.9306 - val_loss: 0.2563 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 116/150 12/12 - 0s - loss: 0.1885 - accuracy: 0.9056 - val_loss: 0.2498 - val_accuracy: 0.9250 - 24ms/epoch - 2ms/step Epoch 117/150 12/12 - 0s - loss: 0.1759 - accuracy: 0.9250 - val_loss: 0.2436 - val_accuracy: 0.9250 - 48ms/epoch - 4ms/step Epoch 118/150 12/12 - 0s - loss: 0.1692 - accuracy: 0.9306 - val_loss: 0.2458 - val_accuracy: 0.9250 - 39ms/epoch - 3ms/step Epoch 119/150 12/12 - 0s - loss: 0.1830 - accuracy: 0.9111 - val_loss: 0.2466 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 120/150 12/12 - 0s - loss: 0.1710 - accuracy: 0.9278 - val_loss: 0.2506 - val_accuracy: 0.9250 - 24ms/epoch - 2ms/step Epoch 121/150 12/12 - 0s - loss: 0.1773 - accuracy: 0.9333 - val_loss: 0.2485 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 122/150 12/12 - 0s - loss: 0.1900 - accuracy: 0.9083 - val_loss: 0.2518 - val_accuracy: 0.9250 - 26ms/epoch - 2ms/step Epoch 123/150 12/12 - 0s - loss: 0.1683 - accuracy: 0.9222 - val_loss: 0.2481 - val_accuracy: 0.9250 - 43ms/epoch - 4ms/step Epoch 124/150 12/12 - 0s - loss: 0.1714 - accuracy: 0.9139 - val_loss: 0.2426 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 125/150 12/12 - 0s - loss: 0.1941 - accuracy: 0.9111 - val_loss: 0.2437 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 126/150 12/12 - 0s - loss: 0.1827 - accuracy: 0.9111 - val_loss: 0.2516 - val_accuracy: 0.9250 - 29ms/epoch - 2ms/step Epoch 127/150 12/12 - 0s - loss: 0.1703 - accuracy: 0.9222 - val_loss: 0.2489 - val_accuracy: 0.9250 - 42ms/epoch - 4ms/step Epoch 128/150 12/12 - 0s - loss: 0.1824 - accuracy: 0.9167 - val_loss: 0.2540 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 129/150 12/12 - 0s - loss: 0.1762 - accuracy: 0.9222 - val_loss: 0.2447 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 130/150 12/12 - 0s - loss: 0.1769 - accuracy: 0.9306 - val_loss: 0.2507 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 131/150 12/12 - 0s - loss: 0.1786 - accuracy: 0.9194 - val_loss: 0.2470 - val_accuracy: 0.9250 - 28ms/epoch - 2ms/step Epoch 132/150 12/12 - 0s - loss: 0.1900 - accuracy: 0.9083 - val_loss: 0.2471 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 133/150 12/12 - 0s - loss: 0.1731 - accuracy: 0.9389 - val_loss: 0.2409 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 134/150 12/12 - 0s - loss: 0.1755 - accuracy: 0.9250 - val_loss: 0.2442 - val_accuracy: 0.9250 - 41ms/epoch - 3ms/step Epoch 135/150 12/12 - 0s - loss: 0.1704 - accuracy: 0.9250 - val_loss: 0.2451 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 136/150 12/12 - 0s - loss: 0.1739 - accuracy: 0.9167 - val_loss: 0.2508 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 137/150 12/12 - 0s - loss: 0.1786 - accuracy: 0.9222 - val_loss: 0.2564 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 138/150 12/12 - 0s - loss: 0.1654 - accuracy: 0.9250 - val_loss: 0.2580 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 139/150 12/12 - 0s - loss: 0.1913 - accuracy: 0.9111 - val_loss: 0.2514 - val_accuracy: 0.9000 - 36ms/epoch - 3ms/step Epoch 140/150 12/12 - 0s - loss: 0.1732 - accuracy: 0.9083 - val_loss: 0.2555 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 141/150 12/12 - 0s - loss: 0.1794 - accuracy: 0.9139 - val_loss: 0.2530 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 142/150 12/12 - 0s - loss: 0.1657 - accuracy: 0.9222 - val_loss: 0.2526 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 143/150 12/12 - 0s - loss: 0.1735 - accuracy: 0.9278 - val_loss: 0.2661 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 144/150 12/12 - 0s - loss: 0.1865 - accuracy: 0.9111 - val_loss: 0.2609 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 145/150 12/12 - 0s - loss: 0.1748 - accuracy: 0.9278 - val_loss: 0.2508 - val_accuracy: 0.9000 - 36ms/epoch - 3ms/step Epoch 146/150 12/12 - 0s - loss: 0.1768 - accuracy: 0.9194 - val_loss: 0.2559 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 147/150 12/12 - 0s - loss: 0.1656 - accuracy: 0.9333 - val_loss: 0.2558 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 148/150 12/12 - 0s - loss: 0.1860 - accuracy: 0.9278 - val_loss: 0.2594 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 149/150 12/12 - 0s - loss: 0.1750 - accuracy: 0.9250 - val_loss: 0.2585 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 150/150 12/12 - 0s - loss: 0.1863 - accuracy: 0.9083 - val_loss: 0.2544 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step
plt.plot(history_1.history['accuracy'])
plt.plot(history_1.history['val_accuracy'])
plt.title('Accuracy vs Epochs')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='lower right')
plt.show()
Observations:
Let's try to improve the model performance by hyper parameter tuning
- Let's try by changing the number of hidden layerr and neurons, activation function, optimzer, and number of epochs
# Clearing backend
from tensorflow.keras import backend
backend.clear_session()
# Fixing the seed for random number generators
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
model_2 = Sequential()
model_2.add(Dense(128, activation='tanh', input_shape=(11,)))
model_2.add(Dropout(0.1))
model_2.add(Dense(64, activation='tanh'))
model_2.add(Dropout(0.1))
model_2.add(Dense(32, activation='tanh'))
model_2.add(Dense(1, activation='sigmoid'))
model_2.compile(loss = 'binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model_2.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 128) 1536
dropout (Dropout) (None, 128) 0
dense_1 (Dense) (None, 64) 8256
dropout_1 (Dropout) (None, 64) 0
dense_2 (Dense) (None, 32) 2080
dense_3 (Dense) (None, 1) 33
=================================================================
Total params: 11,905
Trainable params: 11,905
Non-trainable params: 0
_________________________________________________________________
history_2 = model_2.fit(X_train_normalized,
y_train,
validation_split=0.1,
epochs=100,
verbose=2)
Epoch 1/100 12/12 - 1s - loss: 0.6109 - accuracy: 0.6389 - val_loss: 0.5549 - val_accuracy: 0.6500 - 559ms/epoch - 47ms/step Epoch 2/100 12/12 - 0s - loss: 0.4221 - accuracy: 0.8333 - val_loss: 0.3531 - val_accuracy: 0.8750 - 23ms/epoch - 2ms/step Epoch 3/100 12/12 - 0s - loss: 0.3422 - accuracy: 0.8611 - val_loss: 0.3053 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 4/100 12/12 - 0s - loss: 0.3199 - accuracy: 0.8722 - val_loss: 0.2768 - val_accuracy: 0.9000 - 44ms/epoch - 4ms/step Epoch 5/100 12/12 - 0s - loss: 0.3095 - accuracy: 0.8639 - val_loss: 0.2783 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 6/100 12/12 - 0s - loss: 0.2849 - accuracy: 0.8722 - val_loss: 0.2704 - val_accuracy: 0.9250 - 42ms/epoch - 3ms/step Epoch 7/100 12/12 - 0s - loss: 0.2672 - accuracy: 0.8750 - val_loss: 0.2880 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 8/100 12/12 - 0s - loss: 0.2618 - accuracy: 0.8861 - val_loss: 0.2567 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 9/100 12/12 - 0s - loss: 0.2413 - accuracy: 0.8972 - val_loss: 0.2567 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 10/100 12/12 - 0s - loss: 0.2469 - accuracy: 0.8917 - val_loss: 0.2573 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 11/100 12/12 - 0s - loss: 0.2181 - accuracy: 0.9111 - val_loss: 0.2798 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 12/100 12/12 - 0s - loss: 0.2324 - accuracy: 0.8917 - val_loss: 0.2245 - val_accuracy: 0.8750 - 31ms/epoch - 3ms/step Epoch 13/100 12/12 - 0s - loss: 0.2305 - accuracy: 0.8889 - val_loss: 0.2831 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 14/100 12/12 - 0s - loss: 0.2375 - accuracy: 0.8944 - val_loss: 0.2365 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 15/100 12/12 - 0s - loss: 0.2147 - accuracy: 0.9083 - val_loss: 0.2122 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 16/100 12/12 - 0s - loss: 0.2311 - accuracy: 0.8944 - val_loss: 0.2301 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 17/100 12/12 - 0s - loss: 0.2158 - accuracy: 0.9000 - val_loss: 0.2279 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 18/100 12/12 - 0s - loss: 0.2292 - accuracy: 0.9083 - val_loss: 0.1988 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 19/100 12/12 - 0s - loss: 0.2058 - accuracy: 0.8972 - val_loss: 0.2523 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 20/100 12/12 - 0s - loss: 0.1927 - accuracy: 0.9167 - val_loss: 0.2237 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 21/100 12/12 - 0s - loss: 0.1981 - accuracy: 0.9083 - val_loss: 0.2295 - val_accuracy: 0.9000 - 40ms/epoch - 3ms/step Epoch 22/100 12/12 - 0s - loss: 0.1791 - accuracy: 0.9250 - val_loss: 0.2171 - val_accuracy: 0.9000 - 30ms/epoch - 2ms/step Epoch 23/100 12/12 - 0s - loss: 0.1971 - accuracy: 0.9167 - val_loss: 0.2501 - val_accuracy: 0.9250 - 23ms/epoch - 2ms/step Epoch 24/100 12/12 - 0s - loss: 0.1891 - accuracy: 0.9167 - val_loss: 0.2381 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 25/100 12/12 - 0s - loss: 0.1900 - accuracy: 0.9056 - val_loss: 0.2164 - val_accuracy: 0.9250 - 40ms/epoch - 3ms/step Epoch 26/100 12/12 - 0s - loss: 0.1710 - accuracy: 0.9250 - val_loss: 0.2287 - val_accuracy: 0.9000 - 22ms/epoch - 2ms/step Epoch 27/100 12/12 - 0s - loss: 0.1662 - accuracy: 0.9139 - val_loss: 0.2475 - val_accuracy: 0.9250 - 41ms/epoch - 3ms/step Epoch 28/100 12/12 - 0s - loss: 0.1800 - accuracy: 0.9194 - val_loss: 0.2210 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 29/100 12/12 - 0s - loss: 0.1931 - accuracy: 0.9028 - val_loss: 0.2206 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 30/100 12/12 - 0s - loss: 0.2116 - accuracy: 0.9028 - val_loss: 0.2617 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 31/100 12/12 - 0s - loss: 0.1681 - accuracy: 0.9139 - val_loss: 0.2568 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 32/100 12/12 - 0s - loss: 0.1722 - accuracy: 0.9278 - val_loss: 0.2207 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 33/100 12/12 - 0s - loss: 0.1807 - accuracy: 0.9278 - val_loss: 0.2421 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 34/100 12/12 - 0s - loss: 0.1842 - accuracy: 0.9194 - val_loss: 0.2141 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 35/100 12/12 - 0s - loss: 0.1833 - accuracy: 0.9111 - val_loss: 0.2138 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 36/100 12/12 - 0s - loss: 0.1690 - accuracy: 0.9278 - val_loss: 0.2191 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 37/100 12/12 - 0s - loss: 0.1672 - accuracy: 0.9167 - val_loss: 0.2289 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 38/100 12/12 - 0s - loss: 0.1786 - accuracy: 0.9167 - val_loss: 0.2426 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 39/100 12/12 - 0s - loss: 0.1755 - accuracy: 0.9167 - val_loss: 0.2312 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 40/100 12/12 - 0s - loss: 0.1715 - accuracy: 0.9278 - val_loss: 0.2597 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 41/100 12/12 - 0s - loss: 0.1762 - accuracy: 0.9306 - val_loss: 0.2157 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 42/100 12/12 - 0s - loss: 0.1665 - accuracy: 0.9139 - val_loss: 0.2512 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 43/100 12/12 - 0s - loss: 0.1818 - accuracy: 0.9194 - val_loss: 0.2311 - val_accuracy: 0.9000 - 25ms/epoch - 2ms/step Epoch 44/100 12/12 - 0s - loss: 0.1725 - accuracy: 0.9167 - val_loss: 0.2425 - val_accuracy: 0.9000 - 40ms/epoch - 3ms/step Epoch 45/100 12/12 - 0s - loss: 0.1702 - accuracy: 0.9250 - val_loss: 0.2344 - val_accuracy: 0.9000 - 30ms/epoch - 3ms/step Epoch 46/100 12/12 - 0s - loss: 0.1697 - accuracy: 0.9222 - val_loss: 0.2289 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 47/100 12/12 - 0s - loss: 0.1660 - accuracy: 0.9111 - val_loss: 0.2298 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 48/100 12/12 - 0s - loss: 0.1589 - accuracy: 0.9250 - val_loss: 0.2354 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 49/100 12/12 - 0s - loss: 0.1629 - accuracy: 0.9278 - val_loss: 0.2315 - val_accuracy: 0.9000 - 33ms/epoch - 3ms/step Epoch 50/100 12/12 - 0s - loss: 0.1668 - accuracy: 0.9194 - val_loss: 0.2499 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 51/100 12/12 - 0s - loss: 0.1710 - accuracy: 0.9139 - val_loss: 0.2409 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 52/100 12/12 - 0s - loss: 0.1791 - accuracy: 0.9278 - val_loss: 0.2323 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 53/100 12/12 - 0s - loss: 0.1688 - accuracy: 0.9139 - val_loss: 0.2486 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 54/100 12/12 - 0s - loss: 0.1986 - accuracy: 0.9111 - val_loss: 0.2292 - val_accuracy: 0.9500 - 27ms/epoch - 2ms/step Epoch 55/100 12/12 - 0s - loss: 0.1730 - accuracy: 0.9111 - val_loss: 0.2390 - val_accuracy: 0.9250 - 40ms/epoch - 3ms/step Epoch 56/100 12/12 - 0s - loss: 0.1700 - accuracy: 0.9389 - val_loss: 0.2149 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 57/100 12/12 - 0s - loss: 0.1569 - accuracy: 0.9361 - val_loss: 0.2349 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 58/100 12/12 - 0s - loss: 0.1640 - accuracy: 0.9167 - val_loss: 0.2337 - val_accuracy: 0.9250 - 30ms/epoch - 3ms/step Epoch 59/100 12/12 - 0s - loss: 0.1732 - accuracy: 0.9028 - val_loss: 0.2456 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 60/100 12/12 - 0s - loss: 0.1712 - accuracy: 0.9111 - val_loss: 0.2361 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 61/100 12/12 - 0s - loss: 0.1601 - accuracy: 0.9333 - val_loss: 0.2302 - val_accuracy: 0.9000 - 30ms/epoch - 2ms/step Epoch 62/100 12/12 - 0s - loss: 0.1498 - accuracy: 0.9389 - val_loss: 0.2396 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 63/100 12/12 - 0s - loss: 0.1645 - accuracy: 0.9306 - val_loss: 0.2328 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 64/100 12/12 - 0s - loss: 0.1642 - accuracy: 0.9278 - val_loss: 0.2473 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 65/100 12/12 - 0s - loss: 0.1799 - accuracy: 0.9250 - val_loss: 0.2311 - val_accuracy: 0.9250 - 29ms/epoch - 2ms/step Epoch 66/100 12/12 - 0s - loss: 0.1661 - accuracy: 0.9222 - val_loss: 0.2337 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 67/100 12/12 - 0s - loss: 0.1835 - accuracy: 0.9222 - val_loss: 0.2625 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 68/100 12/12 - 0s - loss: 0.1745 - accuracy: 0.9194 - val_loss: 0.2506 - val_accuracy: 0.9250 - 33ms/epoch - 3ms/step Epoch 69/100 12/12 - 0s - loss: 0.1608 - accuracy: 0.9222 - val_loss: 0.2289 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 70/100 12/12 - 0s - loss: 0.1686 - accuracy: 0.9194 - val_loss: 0.2510 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 71/100 12/12 - 0s - loss: 0.1693 - accuracy: 0.9194 - val_loss: 0.2183 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 72/100 12/12 - 0s - loss: 0.1761 - accuracy: 0.9167 - val_loss: 0.2836 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 73/100 12/12 - 0s - loss: 0.1535 - accuracy: 0.9333 - val_loss: 0.2290 - val_accuracy: 0.9500 - 33ms/epoch - 3ms/step Epoch 74/100 12/12 - 0s - loss: 0.1799 - accuracy: 0.9278 - val_loss: 0.2846 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 75/100 12/12 - 0s - loss: 0.1869 - accuracy: 0.9111 - val_loss: 0.2342 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 76/100 12/12 - 0s - loss: 0.1644 - accuracy: 0.9278 - val_loss: 0.2474 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 77/100 12/12 - 0s - loss: 0.1529 - accuracy: 0.9333 - val_loss: 0.2263 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 78/100 12/12 - 0s - loss: 0.1489 - accuracy: 0.9250 - val_loss: 0.2390 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 79/100 12/12 - 0s - loss: 0.1631 - accuracy: 0.9278 - val_loss: 0.2350 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 80/100 12/12 - 0s - loss: 0.1729 - accuracy: 0.9111 - val_loss: 0.2416 - val_accuracy: 0.9000 - 30ms/epoch - 3ms/step Epoch 81/100 12/12 - 0s - loss: 0.1630 - accuracy: 0.9250 - val_loss: 0.2220 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 82/100 12/12 - 0s - loss: 0.1623 - accuracy: 0.9306 - val_loss: 0.2365 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 83/100 12/12 - 0s - loss: 0.1658 - accuracy: 0.9306 - val_loss: 0.2323 - val_accuracy: 0.9500 - 17ms/epoch - 1ms/step Epoch 84/100 12/12 - 0s - loss: 0.1552 - accuracy: 0.9333 - val_loss: 0.2327 - val_accuracy: 0.9250 - 19ms/epoch - 2ms/step Epoch 85/100 12/12 - 0s - loss: 0.1505 - accuracy: 0.9361 - val_loss: 0.2387 - val_accuracy: 0.9250 - 44ms/epoch - 4ms/step Epoch 86/100 12/12 - 0s - loss: 0.1575 - accuracy: 0.9250 - val_loss: 0.2387 - val_accuracy: 0.9000 - 29ms/epoch - 2ms/step Epoch 87/100 12/12 - 0s - loss: 0.1631 - accuracy: 0.9306 - val_loss: 0.2361 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 88/100 12/12 - 0s - loss: 0.1820 - accuracy: 0.9194 - val_loss: 0.2183 - val_accuracy: 0.9000 - 42ms/epoch - 4ms/step Epoch 89/100 12/12 - 0s - loss: 0.1595 - accuracy: 0.9333 - val_loss: 0.2350 - val_accuracy: 0.9000 - 30ms/epoch - 2ms/step Epoch 90/100 12/12 - 0s - loss: 0.1751 - accuracy: 0.9222 - val_loss: 0.2425 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 91/100 12/12 - 0s - loss: 0.1550 - accuracy: 0.9306 - val_loss: 0.2296 - val_accuracy: 0.9000 - 31ms/epoch - 3ms/step Epoch 92/100 12/12 - 0s - loss: 0.1570 - accuracy: 0.9278 - val_loss: 0.2393 - val_accuracy: 0.9250 - 32ms/epoch - 3ms/step Epoch 93/100 12/12 - 0s - loss: 0.1568 - accuracy: 0.9278 - val_loss: 0.2330 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 94/100 12/12 - 0s - loss: 0.1689 - accuracy: 0.9250 - val_loss: 0.2349 - val_accuracy: 0.9000 - 33ms/epoch - 3ms/step Epoch 95/100 12/12 - 0s - loss: 0.1516 - accuracy: 0.9306 - val_loss: 0.2386 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 96/100 12/12 - 0s - loss: 0.1649 - accuracy: 0.9194 - val_loss: 0.2337 - val_accuracy: 0.9000 - 32ms/epoch - 3ms/step Epoch 97/100 12/12 - 0s - loss: 0.1650 - accuracy: 0.9278 - val_loss: 0.2502 - val_accuracy: 0.9250 - 28ms/epoch - 2ms/step Epoch 98/100 12/12 - 0s - loss: 0.1591 - accuracy: 0.9278 - val_loss: 0.2341 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 99/100 12/12 - 0s - loss: 0.1775 - accuracy: 0.9111 - val_loss: 0.2599 - val_accuracy: 0.9250 - 30ms/epoch - 3ms/step Epoch 100/100 12/12 - 0s - loss: 0.1666 - accuracy: 0.9250 - val_loss: 0.2276 - val_accuracy: 0.9250 - 30ms/epoch - 3ms/step
plt.plot(history_2.history['accuracy'])
plt.plot(history_2.history['val_accuracy'])
plt.title('Accuracy vs Epochs')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='lower right')
plt.show()
Observations:
# Clearing the backend
from tensorflow.keras import backend
backend.clear_session()
# Fixing the seed for random number generators
np.random.seed(42)
import random
random.seed(42)
tf.random.set_seed(42)
model_3 = Sequential()
model_3.add(Dense(256, activation='tanh', input_shape=(11,)))
model_3.add(Dropout(0.1))
model_3.add(Dense(128, activation='tanh'))
model_3.add(Dropout(0.1))
model_3.add(Dense(64, activation='tanh'))
model_3.add(Dropout(0.1))
model_3.add(Dense(32, activation='tanh'))
model_3.add(Dense(1, activation='sigmoid'))
model_3.compile(loss = 'binary_crossentropy', optimizer=tf.keras.optimizers.Adam(learning_rate=0.001), metrics=['accuracy'])
model_3.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 256) 3072
dropout (Dropout) (None, 256) 0
dense_1 (Dense) (None, 128) 32896
dropout_1 (Dropout) (None, 128) 0
dense_2 (Dense) (None, 64) 8256
dropout_2 (Dropout) (None, 64) 0
dense_3 (Dense) (None, 32) 2080
dense_4 (Dense) (None, 1) 33
=================================================================
Total params: 46,337
Trainable params: 46,337
Non-trainable params: 0
_________________________________________________________________
Notice that the number of trainable parameters has increased substantially as compared to previous models.
history_3 = model_3.fit(X_train_normalized,
y_train,
validation_split=0.1,
epochs=200,
verbose=2)
Epoch 1/200 12/12 - 1s - loss: 0.5423 - accuracy: 0.7278 - val_loss: 0.3818 - val_accuracy: 0.9000 - 656ms/epoch - 55ms/step Epoch 2/200 12/12 - 0s - loss: 0.3642 - accuracy: 0.8611 - val_loss: 0.3379 - val_accuracy: 0.9000 - 45ms/epoch - 4ms/step Epoch 3/200 12/12 - 0s - loss: 0.3222 - accuracy: 0.8528 - val_loss: 0.2938 - val_accuracy: 0.9000 - 36ms/epoch - 3ms/step Epoch 4/200 12/12 - 0s - loss: 0.3090 - accuracy: 0.8694 - val_loss: 0.2875 - val_accuracy: 0.9250 - 22ms/epoch - 2ms/step Epoch 5/200 12/12 - 0s - loss: 0.2804 - accuracy: 0.8889 - val_loss: 0.2543 - val_accuracy: 0.9000 - 38ms/epoch - 3ms/step Epoch 6/200 12/12 - 0s - loss: 0.2878 - accuracy: 0.8722 - val_loss: 0.2619 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 7/200 12/12 - 0s - loss: 0.2469 - accuracy: 0.8861 - val_loss: 0.3036 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 8/200 12/12 - 0s - loss: 0.2286 - accuracy: 0.9139 - val_loss: 0.2800 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 9/200 12/12 - 0s - loss: 0.2340 - accuracy: 0.8944 - val_loss: 0.2364 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 10/200 12/12 - 0s - loss: 0.2057 - accuracy: 0.9139 - val_loss: 0.2412 - val_accuracy: 0.9250 - 39ms/epoch - 3ms/step Epoch 11/200 12/12 - 0s - loss: 0.2164 - accuracy: 0.8972 - val_loss: 0.3028 - val_accuracy: 0.9000 - 40ms/epoch - 3ms/step Epoch 12/200 12/12 - 0s - loss: 0.2042 - accuracy: 0.9056 - val_loss: 0.2487 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 13/200 12/12 - 0s - loss: 0.2097 - accuracy: 0.9000 - val_loss: 0.2663 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 14/200 12/12 - 0s - loss: 0.2282 - accuracy: 0.8889 - val_loss: 0.3329 - val_accuracy: 0.9000 - 37ms/epoch - 3ms/step Epoch 15/200 12/12 - 0s - loss: 0.2526 - accuracy: 0.8917 - val_loss: 0.2168 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 16/200 12/12 - 0s - loss: 0.2114 - accuracy: 0.8972 - val_loss: 0.2221 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 17/200 12/12 - 0s - loss: 0.2066 - accuracy: 0.9139 - val_loss: 0.2658 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 18/200 12/12 - 0s - loss: 0.2062 - accuracy: 0.9139 - val_loss: 0.2330 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 19/200 12/12 - 0s - loss: 0.2265 - accuracy: 0.8806 - val_loss: 0.2557 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 20/200 12/12 - 0s - loss: 0.1930 - accuracy: 0.9000 - val_loss: 0.2354 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 21/200 12/12 - 0s - loss: 0.1977 - accuracy: 0.9167 - val_loss: 0.2267 - val_accuracy: 0.9500 - 38ms/epoch - 3ms/step Epoch 22/200 12/12 - 0s - loss: 0.2029 - accuracy: 0.9139 - val_loss: 0.2237 - val_accuracy: 0.9000 - 37ms/epoch - 3ms/step Epoch 23/200 12/12 - 0s - loss: 0.1953 - accuracy: 0.9000 - val_loss: 0.2593 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 24/200 12/12 - 0s - loss: 0.1918 - accuracy: 0.9167 - val_loss: 0.2423 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 25/200 12/12 - 0s - loss: 0.1900 - accuracy: 0.9250 - val_loss: 0.2089 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 26/200 12/12 - 0s - loss: 0.1736 - accuracy: 0.9278 - val_loss: 0.2240 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 27/200 12/12 - 0s - loss: 0.1691 - accuracy: 0.9278 - val_loss: 0.2439 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 28/200 12/12 - 0s - loss: 0.1759 - accuracy: 0.9222 - val_loss: 0.2218 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 29/200 12/12 - 0s - loss: 0.2031 - accuracy: 0.9083 - val_loss: 0.2225 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 30/200 12/12 - 0s - loss: 0.1922 - accuracy: 0.9139 - val_loss: 0.2477 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 31/200 12/12 - 0s - loss: 0.1821 - accuracy: 0.9083 - val_loss: 0.2595 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 32/200 12/12 - 0s - loss: 0.1775 - accuracy: 0.9278 - val_loss: 0.2263 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 33/200 12/12 - 0s - loss: 0.1634 - accuracy: 0.9306 - val_loss: 0.2359 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 34/200 12/12 - 0s - loss: 0.1687 - accuracy: 0.9250 - val_loss: 0.2272 - val_accuracy: 0.9250 - 40ms/epoch - 3ms/step Epoch 35/200 12/12 - 0s - loss: 0.1733 - accuracy: 0.9139 - val_loss: 0.2205 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 36/200 12/12 - 0s - loss: 0.1794 - accuracy: 0.9167 - val_loss: 0.2343 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 37/200 12/12 - 0s - loss: 0.1691 - accuracy: 0.9083 - val_loss: 0.2241 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 38/200 12/12 - 0s - loss: 0.1627 - accuracy: 0.9306 - val_loss: 0.2337 - val_accuracy: 0.9000 - 38ms/epoch - 3ms/step Epoch 39/200 12/12 - 0s - loss: 0.1716 - accuracy: 0.9222 - val_loss: 0.2296 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 40/200 12/12 - 0s - loss: 0.1847 - accuracy: 0.9111 - val_loss: 0.2777 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 41/200 12/12 - 0s - loss: 0.1776 - accuracy: 0.9139 - val_loss: 0.2185 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 42/200 12/12 - 0s - loss: 0.1675 - accuracy: 0.9167 - val_loss: 0.2414 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 43/200 12/12 - 0s - loss: 0.1736 - accuracy: 0.9139 - val_loss: 0.2509 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 44/200 12/12 - 0s - loss: 0.1689 - accuracy: 0.9194 - val_loss: 0.2278 - val_accuracy: 0.9000 - 41ms/epoch - 3ms/step Epoch 45/200 12/12 - 0s - loss: 0.1643 - accuracy: 0.9333 - val_loss: 0.2224 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 46/200 12/12 - 0s - loss: 0.1686 - accuracy: 0.9222 - val_loss: 0.2191 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 47/200 12/12 - 0s - loss: 0.1633 - accuracy: 0.9278 - val_loss: 0.2202 - val_accuracy: 0.9250 - 39ms/epoch - 3ms/step Epoch 48/200 12/12 - 0s - loss: 0.1603 - accuracy: 0.9306 - val_loss: 0.2401 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 49/200 12/12 - 0s - loss: 0.1621 - accuracy: 0.9250 - val_loss: 0.2283 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 50/200 12/12 - 0s - loss: 0.1557 - accuracy: 0.9250 - val_loss: 0.2553 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 51/200 12/12 - 0s - loss: 0.1601 - accuracy: 0.9167 - val_loss: 0.2362 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 52/200 12/12 - 0s - loss: 0.1632 - accuracy: 0.9306 - val_loss: 0.2249 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 53/200 12/12 - 0s - loss: 0.1679 - accuracy: 0.9278 - val_loss: 0.2710 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 54/200 12/12 - 0s - loss: 0.1963 - accuracy: 0.9056 - val_loss: 0.2263 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 55/200 12/12 - 0s - loss: 0.1809 - accuracy: 0.9083 - val_loss: 0.2273 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 56/200 12/12 - 0s - loss: 0.1663 - accuracy: 0.9222 - val_loss: 0.2370 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 57/200 12/12 - 0s - loss: 0.1547 - accuracy: 0.9333 - val_loss: 0.2292 - val_accuracy: 0.9500 - 50ms/epoch - 4ms/step Epoch 58/200 12/12 - 0s - loss: 0.1570 - accuracy: 0.9417 - val_loss: 0.2321 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 59/200 12/12 - 0s - loss: 0.1879 - accuracy: 0.9028 - val_loss: 0.2576 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 60/200 12/12 - 0s - loss: 0.1583 - accuracy: 0.9306 - val_loss: 0.2330 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 61/200 12/12 - 0s - loss: 0.1558 - accuracy: 0.9250 - val_loss: 0.2385 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 62/200 12/12 - 0s - loss: 0.1534 - accuracy: 0.9361 - val_loss: 0.2402 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 63/200 12/12 - 0s - loss: 0.1681 - accuracy: 0.9139 - val_loss: 0.2342 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 64/200 12/12 - 0s - loss: 0.1473 - accuracy: 0.9361 - val_loss: 0.2455 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 65/200 12/12 - 0s - loss: 0.1642 - accuracy: 0.9278 - val_loss: 0.2365 - val_accuracy: 0.9000 - 37ms/epoch - 3ms/step Epoch 66/200 12/12 - 0s - loss: 0.1691 - accuracy: 0.9250 - val_loss: 0.2342 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 67/200 12/12 - 0s - loss: 0.1959 - accuracy: 0.9194 - val_loss: 0.2604 - val_accuracy: 0.9250 - 40ms/epoch - 3ms/step Epoch 68/200 12/12 - 0s - loss: 0.1824 - accuracy: 0.9167 - val_loss: 0.2428 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 69/200 12/12 - 0s - loss: 0.1634 - accuracy: 0.9278 - val_loss: 0.2301 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 70/200 12/12 - 0s - loss: 0.1536 - accuracy: 0.9306 - val_loss: 0.2351 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 71/200 12/12 - 0s - loss: 0.1588 - accuracy: 0.9278 - val_loss: 0.2299 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 72/200 12/12 - 0s - loss: 0.1563 - accuracy: 0.9278 - val_loss: 0.3029 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 73/200 12/12 - 0s - loss: 0.1565 - accuracy: 0.9278 - val_loss: 0.2332 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 74/200 12/12 - 0s - loss: 0.1445 - accuracy: 0.9417 - val_loss: 0.2911 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 75/200 12/12 - 0s - loss: 0.1841 - accuracy: 0.9083 - val_loss: 0.2349 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 76/200 12/12 - 0s - loss: 0.1484 - accuracy: 0.9306 - val_loss: 0.2409 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 77/200 12/12 - 0s - loss: 0.1530 - accuracy: 0.9306 - val_loss: 0.2322 - val_accuracy: 0.9500 - 34ms/epoch - 3ms/step Epoch 78/200 12/12 - 0s - loss: 0.1583 - accuracy: 0.9139 - val_loss: 0.2438 - val_accuracy: 0.9000 - 37ms/epoch - 3ms/step Epoch 79/200 12/12 - 0s - loss: 0.1604 - accuracy: 0.9222 - val_loss: 0.2364 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 80/200 12/12 - 0s - loss: 0.1662 - accuracy: 0.9222 - val_loss: 0.2506 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 81/200 12/12 - 0s - loss: 0.1588 - accuracy: 0.9361 - val_loss: 0.2366 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 82/200 12/12 - 0s - loss: 0.1471 - accuracy: 0.9333 - val_loss: 0.2444 - val_accuracy: 0.9000 - 36ms/epoch - 3ms/step Epoch 83/200 12/12 - 0s - loss: 0.1612 - accuracy: 0.9222 - val_loss: 0.2409 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 84/200 12/12 - 0s - loss: 0.1381 - accuracy: 0.9361 - val_loss: 0.2427 - val_accuracy: 0.9250 - 34ms/epoch - 3ms/step Epoch 85/200 12/12 - 0s - loss: 0.1550 - accuracy: 0.9306 - val_loss: 0.2363 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 86/200 12/12 - 0s - loss: 0.1413 - accuracy: 0.9278 - val_loss: 0.2448 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 87/200 12/12 - 0s - loss: 0.1468 - accuracy: 0.9361 - val_loss: 0.2490 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 88/200 12/12 - 0s - loss: 0.1662 - accuracy: 0.9028 - val_loss: 0.2290 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 89/200 12/12 - 0s - loss: 0.1437 - accuracy: 0.9278 - val_loss: 0.2439 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 90/200 12/12 - 0s - loss: 0.1412 - accuracy: 0.9306 - val_loss: 0.2447 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 91/200 12/12 - 0s - loss: 0.1404 - accuracy: 0.9417 - val_loss: 0.2482 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 92/200 12/12 - 0s - loss: 0.1423 - accuracy: 0.9333 - val_loss: 0.2453 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 93/200 12/12 - 0s - loss: 0.1402 - accuracy: 0.9417 - val_loss: 0.2408 - val_accuracy: 0.9500 - 23ms/epoch - 2ms/step Epoch 94/200 12/12 - 0s - loss: 0.1535 - accuracy: 0.9333 - val_loss: 0.2506 - val_accuracy: 0.9250 - 49ms/epoch - 4ms/step Epoch 95/200 12/12 - 0s - loss: 0.1583 - accuracy: 0.9306 - val_loss: 0.2510 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 96/200 12/12 - 0s - loss: 0.1624 - accuracy: 0.9250 - val_loss: 0.2409 - val_accuracy: 0.9500 - 32ms/epoch - 3ms/step Epoch 97/200 12/12 - 0s - loss: 0.1466 - accuracy: 0.9389 - val_loss: 0.2408 - val_accuracy: 0.9500 - 43ms/epoch - 4ms/step Epoch 98/200 12/12 - 0s - loss: 0.1394 - accuracy: 0.9472 - val_loss: 0.2423 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 99/200 12/12 - 0s - loss: 0.1612 - accuracy: 0.9111 - val_loss: 0.2612 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 100/200 12/12 - 0s - loss: 0.1314 - accuracy: 0.9333 - val_loss: 0.2427 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 101/200 12/12 - 0s - loss: 0.1434 - accuracy: 0.9361 - val_loss: 0.2363 - val_accuracy: 0.9500 - 25ms/epoch - 2ms/step Epoch 102/200 12/12 - 0s - loss: 0.1478 - accuracy: 0.9417 - val_loss: 0.2428 - val_accuracy: 0.9500 - 49ms/epoch - 4ms/step Epoch 103/200 12/12 - 0s - loss: 0.1441 - accuracy: 0.9278 - val_loss: 0.2889 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 104/200 12/12 - 0s - loss: 0.1591 - accuracy: 0.9222 - val_loss: 0.2469 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 105/200 12/12 - 0s - loss: 0.1388 - accuracy: 0.9417 - val_loss: 0.2549 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 106/200 12/12 - 0s - loss: 0.1540 - accuracy: 0.9361 - val_loss: 0.2402 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 107/200 12/12 - 0s - loss: 0.1482 - accuracy: 0.9278 - val_loss: 0.2399 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 108/200 12/12 - 0s - loss: 0.1359 - accuracy: 0.9361 - val_loss: 0.2484 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 109/200 12/12 - 0s - loss: 0.1497 - accuracy: 0.9250 - val_loss: 0.2524 - val_accuracy: 0.9000 - 34ms/epoch - 3ms/step Epoch 110/200 12/12 - 0s - loss: 0.1456 - accuracy: 0.9250 - val_loss: 0.2436 - val_accuracy: 0.9500 - 25ms/epoch - 2ms/step Epoch 111/200 12/12 - 0s - loss: 0.1638 - accuracy: 0.9167 - val_loss: 0.2809 - val_accuracy: 0.9250 - 48ms/epoch - 4ms/step Epoch 112/200 12/12 - 0s - loss: 0.1485 - accuracy: 0.9306 - val_loss: 0.2412 - val_accuracy: 0.9500 - 40ms/epoch - 3ms/step Epoch 113/200 12/12 - 0s - loss: 0.1397 - accuracy: 0.9361 - val_loss: 0.2495 - val_accuracy: 0.9500 - 25ms/epoch - 2ms/step Epoch 114/200 12/12 - 0s - loss: 0.1378 - accuracy: 0.9333 - val_loss: 0.2357 - val_accuracy: 0.9250 - 46ms/epoch - 4ms/step Epoch 115/200 12/12 - 0s - loss: 0.1482 - accuracy: 0.9278 - val_loss: 0.2543 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 116/200 12/12 - 0s - loss: 0.1311 - accuracy: 0.9361 - val_loss: 0.2377 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 117/200 12/12 - 0s - loss: 0.1418 - accuracy: 0.9444 - val_loss: 0.2588 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 118/200 12/12 - 0s - loss: 0.1590 - accuracy: 0.9194 - val_loss: 0.2548 - val_accuracy: 0.9500 - 25ms/epoch - 2ms/step Epoch 119/200 12/12 - 0s - loss: 0.1457 - accuracy: 0.9361 - val_loss: 0.2575 - val_accuracy: 0.9500 - 48ms/epoch - 4ms/step Epoch 120/200 12/12 - 0s - loss: 0.1443 - accuracy: 0.9250 - val_loss: 0.2575 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 121/200 12/12 - 0s - loss: 0.1355 - accuracy: 0.9389 - val_loss: 0.2463 - val_accuracy: 0.9500 - 28ms/epoch - 2ms/step Epoch 122/200 12/12 - 0s - loss: 0.1392 - accuracy: 0.9361 - val_loss: 0.2425 - val_accuracy: 0.9500 - 46ms/epoch - 4ms/step Epoch 123/200 12/12 - 0s - loss: 0.1325 - accuracy: 0.9389 - val_loss: 0.2549 - val_accuracy: 0.9500 - 39ms/epoch - 3ms/step Epoch 124/200 12/12 - 0s - loss: 0.1564 - accuracy: 0.9167 - val_loss: 0.2673 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 125/200 12/12 - 0s - loss: 0.1432 - accuracy: 0.9306 - val_loss: 0.2514 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 126/200 12/12 - 0s - loss: 0.1511 - accuracy: 0.9222 - val_loss: 0.2447 - val_accuracy: 0.9500 - 38ms/epoch - 3ms/step Epoch 127/200 12/12 - 0s - loss: 0.1356 - accuracy: 0.9278 - val_loss: 0.2615 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 128/200 12/12 - 0s - loss: 0.1431 - accuracy: 0.9333 - val_loss: 0.2502 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 129/200 12/12 - 0s - loss: 0.1537 - accuracy: 0.9167 - val_loss: 0.2573 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 130/200 12/12 - 0s - loss: 0.1319 - accuracy: 0.9361 - val_loss: 0.2438 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 131/200 12/12 - 0s - loss: 0.1386 - accuracy: 0.9306 - val_loss: 0.2573 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 132/200 12/12 - 0s - loss: 0.1445 - accuracy: 0.9278 - val_loss: 0.2508 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 133/200 12/12 - 0s - loss: 0.1429 - accuracy: 0.9222 - val_loss: 0.2633 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 134/200 12/12 - 0s - loss: 0.1345 - accuracy: 0.9250 - val_loss: 0.2462 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 135/200 12/12 - 0s - loss: 0.1303 - accuracy: 0.9417 - val_loss: 0.2662 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 136/200 12/12 - 0s - loss: 0.1347 - accuracy: 0.9333 - val_loss: 0.2461 - val_accuracy: 0.9500 - 29ms/epoch - 2ms/step Epoch 137/200 12/12 - 0s - loss: 0.1276 - accuracy: 0.9389 - val_loss: 0.2602 - val_accuracy: 0.9500 - 43ms/epoch - 4ms/step Epoch 138/200 12/12 - 0s - loss: 0.1392 - accuracy: 0.9333 - val_loss: 0.2678 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 139/200 12/12 - 0s - loss: 0.1384 - accuracy: 0.9361 - val_loss: 0.2815 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 140/200 12/12 - 0s - loss: 0.1354 - accuracy: 0.9278 - val_loss: 0.2483 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 141/200 12/12 - 0s - loss: 0.1364 - accuracy: 0.9472 - val_loss: 0.2705 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 142/200 12/12 - 0s - loss: 0.1472 - accuracy: 0.9306 - val_loss: 0.2489 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 143/200 12/12 - 0s - loss: 0.1551 - accuracy: 0.9278 - val_loss: 0.2510 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 144/200 12/12 - 0s - loss: 0.1484 - accuracy: 0.9361 - val_loss: 0.2678 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 145/200 12/12 - 0s - loss: 0.1327 - accuracy: 0.9361 - val_loss: 0.2510 - val_accuracy: 0.9500 - 23ms/epoch - 2ms/step Epoch 146/200 12/12 - 0s - loss: 0.1429 - accuracy: 0.9417 - val_loss: 0.2578 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 147/200 12/12 - 0s - loss: 0.1407 - accuracy: 0.9222 - val_loss: 0.2788 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 148/200 12/12 - 0s - loss: 0.1403 - accuracy: 0.9417 - val_loss: 0.2479 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 149/200 12/12 - 0s - loss: 0.1479 - accuracy: 0.9167 - val_loss: 0.2480 - val_accuracy: 0.9500 - 23ms/epoch - 2ms/step Epoch 150/200 12/12 - 0s - loss: 0.1395 - accuracy: 0.9361 - val_loss: 0.2537 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 151/200 12/12 - 0s - loss: 0.1323 - accuracy: 0.9417 - val_loss: 0.2489 - val_accuracy: 0.9250 - 31ms/epoch - 3ms/step Epoch 152/200 12/12 - 0s - loss: 0.1347 - accuracy: 0.9417 - val_loss: 0.2521 - val_accuracy: 0.9500 - 49ms/epoch - 4ms/step Epoch 153/200 12/12 - 0s - loss: 0.1355 - accuracy: 0.9361 - val_loss: 0.2511 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 154/200 12/12 - 0s - loss: 0.1445 - accuracy: 0.9361 - val_loss: 0.2797 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 155/200 12/12 - 0s - loss: 0.1427 - accuracy: 0.9333 - val_loss: 0.2603 - val_accuracy: 0.9500 - 27ms/epoch - 2ms/step Epoch 156/200 12/12 - 0s - loss: 0.1324 - accuracy: 0.9417 - val_loss: 0.2505 - val_accuracy: 0.9500 - 46ms/epoch - 4ms/step Epoch 157/200 12/12 - 0s - loss: 0.1324 - accuracy: 0.9389 - val_loss: 0.2770 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 158/200 12/12 - 0s - loss: 0.1406 - accuracy: 0.9306 - val_loss: 0.2639 - val_accuracy: 0.9250 - 38ms/epoch - 3ms/step Epoch 159/200 12/12 - 0s - loss: 0.1242 - accuracy: 0.9389 - val_loss: 0.2501 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 160/200 12/12 - 0s - loss: 0.1274 - accuracy: 0.9306 - val_loss: 0.2664 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 161/200 12/12 - 0s - loss: 0.1511 - accuracy: 0.9361 - val_loss: 0.2757 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 162/200 12/12 - 0s - loss: 0.1485 - accuracy: 0.9306 - val_loss: 0.2702 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 163/200 12/12 - 0s - loss: 0.1424 - accuracy: 0.9278 - val_loss: 0.2795 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 164/200 12/12 - 0s - loss: 0.1277 - accuracy: 0.9333 - val_loss: 0.2529 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 165/200 12/12 - 0s - loss: 0.1430 - accuracy: 0.9306 - val_loss: 0.2540 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 166/200 12/12 - 0s - loss: 0.1475 - accuracy: 0.9306 - val_loss: 0.2791 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 167/200 12/12 - 0s - loss: 0.1470 - accuracy: 0.9250 - val_loss: 0.2519 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 168/200 12/12 - 0s - loss: 0.1267 - accuracy: 0.9500 - val_loss: 0.2532 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 169/200 12/12 - 0s - loss: 0.1250 - accuracy: 0.9333 - val_loss: 0.2575 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 170/200 12/12 - 0s - loss: 0.1276 - accuracy: 0.9333 - val_loss: 0.2489 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 171/200 12/12 - 0s - loss: 0.1331 - accuracy: 0.9278 - val_loss: 0.2939 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 172/200 12/12 - 0s - loss: 0.1203 - accuracy: 0.9528 - val_loss: 0.2518 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 173/200 12/12 - 0s - loss: 0.1381 - accuracy: 0.9333 - val_loss: 0.2617 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 174/200 12/12 - 0s - loss: 0.1300 - accuracy: 0.9444 - val_loss: 0.2532 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 175/200 12/12 - 0s - loss: 0.1256 - accuracy: 0.9389 - val_loss: 0.2580 - val_accuracy: 0.9500 - 24ms/epoch - 2ms/step Epoch 176/200 12/12 - 0s - loss: 0.1240 - accuracy: 0.9389 - val_loss: 0.2568 - val_accuracy: 0.9500 - 50ms/epoch - 4ms/step Epoch 177/200 12/12 - 0s - loss: 0.1336 - accuracy: 0.9417 - val_loss: 0.2569 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 178/200 12/12 - 0s - loss: 0.1423 - accuracy: 0.9333 - val_loss: 0.2612 - val_accuracy: 0.9500 - 34ms/epoch - 3ms/step Epoch 179/200 12/12 - 0s - loss: 0.1187 - accuracy: 0.9528 - val_loss: 0.2588 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 180/200 12/12 - 0s - loss: 0.1271 - accuracy: 0.9361 - val_loss: 0.2568 - val_accuracy: 0.9250 - 36ms/epoch - 3ms/step Epoch 181/200 12/12 - 0s - loss: 0.1294 - accuracy: 0.9361 - val_loss: 0.2566 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 182/200 12/12 - 0s - loss: 0.1262 - accuracy: 0.9389 - val_loss: 0.3305 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 183/200 12/12 - 0s - loss: 0.1367 - accuracy: 0.9500 - val_loss: 0.2602 - val_accuracy: 0.9250 - 35ms/epoch - 3ms/step Epoch 184/200 12/12 - 0s - loss: 0.1413 - accuracy: 0.9250 - val_loss: 0.3078 - val_accuracy: 0.9250 - 25ms/epoch - 2ms/step Epoch 185/200 12/12 - 0s - loss: 0.1381 - accuracy: 0.9306 - val_loss: 0.2628 - val_accuracy: 0.9250 - 49ms/epoch - 4ms/step Epoch 186/200 12/12 - 0s - loss: 0.1411 - accuracy: 0.9333 - val_loss: 0.2582 - val_accuracy: 0.9500 - 37ms/epoch - 3ms/step Epoch 187/200 12/12 - 0s - loss: 0.1224 - accuracy: 0.9417 - val_loss: 0.2595 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 188/200 12/12 - 0s - loss: 0.1242 - accuracy: 0.9389 - val_loss: 0.2571 - val_accuracy: 0.9500 - 34ms/epoch - 3ms/step Epoch 189/200 12/12 - 0s - loss: 0.1240 - accuracy: 0.9361 - val_loss: 0.2583 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 190/200 12/12 - 0s - loss: 0.1293 - accuracy: 0.9333 - val_loss: 0.2574 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 191/200 12/12 - 0s - loss: 0.1299 - accuracy: 0.9389 - val_loss: 0.2635 - val_accuracy: 0.9500 - 38ms/epoch - 3ms/step Epoch 192/200 12/12 - 0s - loss: 0.1214 - accuracy: 0.9444 - val_loss: 0.2575 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 193/200 12/12 - 0s - loss: 0.1241 - accuracy: 0.9444 - val_loss: 0.2577 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 194/200 12/12 - 0s - loss: 0.1434 - accuracy: 0.9361 - val_loss: 0.3077 - val_accuracy: 0.9250 - 37ms/epoch - 3ms/step Epoch 195/200 12/12 - 0s - loss: 0.1362 - accuracy: 0.9417 - val_loss: 0.2577 - val_accuracy: 0.9500 - 42ms/epoch - 3ms/step Epoch 196/200 12/12 - 0s - loss: 0.1449 - accuracy: 0.9333 - val_loss: 0.2561 - val_accuracy: 0.9500 - 36ms/epoch - 3ms/step Epoch 197/200 12/12 - 0s - loss: 0.1335 - accuracy: 0.9361 - val_loss: 0.3176 - val_accuracy: 0.9250 - 39ms/epoch - 3ms/step Epoch 198/200 12/12 - 0s - loss: 0.1437 - accuracy: 0.9333 - val_loss: 0.2585 - val_accuracy: 0.9500 - 38ms/epoch - 3ms/step Epoch 199/200 12/12 - 0s - loss: 0.1255 - accuracy: 0.9417 - val_loss: 0.2586 - val_accuracy: 0.9500 - 35ms/epoch - 3ms/step Epoch 200/200 12/12 - 0s - loss: 0.1235 - accuracy: 0.9444 - val_loss: 0.2710 - val_accuracy: 0.9250 - 40ms/epoch - 3ms/step
plt.plot(history_3.history['accuracy'])
plt.plot(history_3.history['val_accuracy'])
plt.title('Accuracy vs Epochs')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'], loc='lower right')
plt.show()
Observations:
model_3.evaluate(X_test_normalized, y_test, verbose = 1)
test_pred = np.round(model_3.predict(X_test_normalized))
4/4 [==============================] - 0s 1ms/step - loss: 0.1021 - accuracy: 0.9600 4/4 [==============================] - 0s 1ms/step
The test accuracy is also coming out to be 95% which implies that our model is able to replicate the performance from the train and validation data on the test (unseen) data.
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
print(classification_report(y_test, test_pred))
cm = confusion_matrix(y_test, test_pred)
plt.figure(figsize=(8,5))
sns.heatmap(cm, annot=True, fmt='.0f',xticklabels=['Not Admitted', 'Admitted'], yticklabels=['Not Admitted', 'Admitted'])
plt.ylabel('Actual')
plt.xlabel('Predicted')
plt.show()
precision recall f1-score support
0 0.96 0.99 0.97 73
1 0.96 0.89 0.92 27
accuracy 0.96 100
macro avg 0.96 0.94 0.95 100
weighted avg 0.96 0.96 0.96 100
Observations:
Conclusion: In this case study,