introduction-to-deep-learning/Le Deep Learning de A a Z/Part 1 - Artificial_Neural_.../Overfit.ipynb

668 lines
32 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Ce script montre un exemple pratique de l'overfit\n",
"Le premier ANN entraîné a une structure complexe avec beaucoup de neurones\n",
"Du coup il arrive à obtenir une très bonne précision sur le jeu d'entraînement (environ 96%)\n",
"Mais il n'arrive pas à généraliser sur le jeu de test (précision à 81%)\n",
"C'est un cas classique d'overfitting (surentraînement)\n",
"\n",
"Le deuxième ANN utilise Dropout pour réduire ce problème.\n",
"La précision d'entraînement est plus faible (90%) et \n",
"la précision de test a augmenté (à 85%)\n",
"On a toujours un problème de surentraînement, mais bien mondre."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# Import libraries\n",
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# Import data\n",
"dataset = pd.read_csv('data/Churn_Modelling.csv')\n",
"X = dataset.iloc[:, 3:13]\n",
"y = dataset.iloc[:, 13]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"# Encode categorical data and scale continuous data\n",
"from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",
"from sklearn.compose import make_column_transformer\n",
"preprocess = make_column_transformer(\n",
" (OneHotEncoder(), ['Geography', 'Gender']),\n",
" (StandardScaler(), ['CreditScore', 'Age', 'Tenure', 'Balance',\n",
" 'NumOfProducts', 'HasCrCard', 'IsActiveMember', \n",
" 'EstimatedSalary']))\n",
"X = preprocess.fit_transform(X)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Split in train/test\n",
"y = y.values\n",
"from sklearn.model_selection import train_test_split\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Partie 2 - ANN"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"# Importing the Keras libraries and packages\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense\n",
"from keras.layers import Dropout"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"8000/8000 [==============================] - 3s 397us/step - loss: 0.4403 - accuracy: 0.8108\n",
"Epoch 2/100\n",
"8000/8000 [==============================] - 3s 370us/step - loss: 0.3851 - accuracy: 0.8430\n",
"Epoch 3/100\n",
"8000/8000 [==============================] - 4s 459us/step - loss: 0.3540 - accuracy: 0.8556\n",
"Epoch 4/100\n",
"8000/8000 [==============================] - 3s 327us/step - loss: 0.3479 - accuracy: 0.8572\n",
"Epoch 5/100\n",
"8000/8000 [==============================] - 4s 528us/step - loss: 0.3436 - accuracy: 0.8604\n",
"Epoch 6/100\n",
"8000/8000 [==============================] - 3s 329us/step - loss: 0.3435 - accuracy: 0.8612\n",
"Epoch 7/100\n",
"8000/8000 [==============================] - 3s 348us/step - loss: 0.3384 - accuracy: 0.8639\n",
"Epoch 8/100\n",
"8000/8000 [==============================] - 3s 361us/step - loss: 0.3368 - accuracy: 0.8625\n",
"Epoch 9/100\n",
"8000/8000 [==============================] - 3s 430us/step - loss: 0.3344 - accuracy: 0.8641\n",
"Epoch 10/100\n",
"8000/8000 [==============================] - 3s 421us/step - loss: 0.3325 - accuracy: 0.8651\n",
"Epoch 11/100\n",
"8000/8000 [==============================] - 3s 379us/step - loss: 0.3317 - accuracy: 0.8631\n",
"Epoch 12/100\n",
"8000/8000 [==============================] - 2s 290us/step - loss: 0.3283 - accuracy: 0.8673\n",
"Epoch 13/100\n",
"8000/8000 [==============================] - 3s 331us/step - loss: 0.3280 - accuracy: 0.8692\n",
"Epoch 14/100\n",
"8000/8000 [==============================] - 2s 293us/step - loss: 0.3232 - accuracy: 0.8671\n",
"Epoch 15/100\n",
"8000/8000 [==============================] - 4s 506us/step - loss: 0.3227 - accuracy: 0.8692\n",
"Epoch 16/100\n",
"8000/8000 [==============================] - 3s 389us/step - loss: 0.3194 - accuracy: 0.8692\n",
"Epoch 17/100\n",
"8000/8000 [==============================] - 13s 2ms/step - loss: 0.3200 - accuracy: 0.8716\n",
"Epoch 18/100\n",
"8000/8000 [==============================] - 3s 388us/step - loss: 0.3166 - accuracy: 0.8727\n",
"Epoch 19/100\n",
"8000/8000 [==============================] - 4s 482us/step - loss: 0.3141 - accuracy: 0.8727\n",
"Epoch 20/100\n",
"8000/8000 [==============================] - 3s 380us/step - loss: 0.3128 - accuracy: 0.8721\n",
"Epoch 21/100\n",
"8000/8000 [==============================] - 4s 510us/step - loss: 0.3111 - accuracy: 0.8746\n",
"Epoch 22/100\n",
"8000/8000 [==============================] - 3s 372us/step - loss: 0.3072 - accuracy: 0.8765\n",
"Epoch 23/100\n",
"8000/8000 [==============================] - 3s 387us/step - loss: 0.3058 - accuracy: 0.8773\n",
"Epoch 24/100\n",
"8000/8000 [==============================] - 3s 367us/step - loss: 0.3038 - accuracy: 0.8794\n",
"Epoch 25/100\n",
"8000/8000 [==============================] - 4s 508us/step - loss: 0.3019 - accuracy: 0.8786\n",
"Epoch 26/100\n",
"8000/8000 [==============================] - 3s 357us/step - loss: 0.3006 - accuracy: 0.8810\n",
"Epoch 27/100\n",
"8000/8000 [==============================] - 2s 312us/step - loss: 0.2964 - accuracy: 0.8811\n",
"Epoch 28/100\n",
"8000/8000 [==============================] - 3s 326us/step - loss: 0.2969 - accuracy: 0.8816\n",
"Epoch 29/100\n",
"8000/8000 [==============================] - 4s 445us/step - loss: 0.2942 - accuracy: 0.8813\n",
"Epoch 30/100\n",
"8000/8000 [==============================] - 5s 615us/step - loss: 0.2903 - accuracy: 0.8834\n",
"Epoch 31/100\n",
"8000/8000 [==============================] - 3s 426us/step - loss: 0.2901 - accuracy: 0.8823\n",
"Epoch 32/100\n",
"8000/8000 [==============================] - 4s 448us/step - loss: 0.2860 - accuracy: 0.8838\n",
"Epoch 33/100\n",
"8000/8000 [==============================] - 3s 400us/step - loss: 0.2848 - accuracy: 0.8849\n",
"Epoch 34/100\n",
"8000/8000 [==============================] - 5s 599us/step - loss: 0.2806 - accuracy: 0.8870\n",
"Epoch 35/100\n",
"8000/8000 [==============================] - 3s 382us/step - loss: 0.2739 - accuracy: 0.8903\n",
"Epoch 36/100\n",
"8000/8000 [==============================] - 4s 478us/step - loss: 0.2734 - accuracy: 0.8878\n",
"Epoch 37/100\n",
"8000/8000 [==============================] - 4s 467us/step - loss: 0.2721 - accuracy: 0.8892\n",
"Epoch 38/100\n",
"8000/8000 [==============================] - 4s 516us/step - loss: 0.2723 - accuracy: 0.8890\n",
"Epoch 39/100\n",
"8000/8000 [==============================] - 2s 312us/step - loss: 0.2668 - accuracy: 0.8898\n",
"Epoch 40/100\n",
"8000/8000 [==============================] - 3s 404us/step - loss: 0.2640 - accuracy: 0.8894\n",
"Epoch 41/100\n",
"8000/8000 [==============================] - 3s 402us/step - loss: 0.2573 - accuracy: 0.8924\n",
"Epoch 42/100\n",
"8000/8000 [==============================] - 5s 581us/step - loss: 0.2555 - accuracy: 0.8925\n",
"Epoch 43/100\n",
"8000/8000 [==============================] - 4s 502us/step - loss: 0.2516 - accuracy: 0.8971\n",
"Epoch 44/100\n",
"8000/8000 [==============================] - 3s 330us/step - loss: 0.2494 - accuracy: 0.8974\n",
"Epoch 45/100\n",
"8000/8000 [==============================] - 3s 431us/step - loss: 0.2421 - accuracy: 0.8986\n",
"Epoch 46/100\n",
"8000/8000 [==============================] - 3s 396us/step - loss: 0.2391 - accuracy: 0.8986\n",
"Epoch 47/100\n",
"8000/8000 [==============================] - 4s 539us/step - loss: 0.2332 - accuracy: 0.9005\n",
"Epoch 48/100\n",
"8000/8000 [==============================] - 3s 407us/step - loss: 0.2338 - accuracy: 0.8974\n",
"Epoch 49/100\n",
"8000/8000 [==============================] - 4s 513us/step - loss: 0.2363 - accuracy: 0.8984\n",
"Epoch 50/100\n",
"8000/8000 [==============================] - 3s 402us/step - loss: 0.2281 - accuracy: 0.9039\n",
"Epoch 51/100\n",
"8000/8000 [==============================] - 5s 590us/step - loss: 0.2201 - accuracy: 0.9049\n",
"Epoch 52/100\n",
"8000/8000 [==============================] - 3s 426us/step - loss: 0.2141 - accuracy: 0.9081\n",
"Epoch 53/100\n",
"8000/8000 [==============================] - 4s 514us/step - loss: 0.2168 - accuracy: 0.9034\n",
"Epoch 54/100\n",
"8000/8000 [==============================] - 3s 365us/step - loss: 0.2124 - accuracy: 0.9054\n",
"Epoch 55/100\n",
"8000/8000 [==============================] - 4s 542us/step - loss: 0.2149 - accuracy: 0.9069\n",
"Epoch 56/100\n",
"8000/8000 [==============================] - 3s 361us/step - loss: 0.2047 - accuracy: 0.9068\n",
"Epoch 57/100\n",
"8000/8000 [==============================] - 3s 396us/step - loss: 0.1935 - accuracy: 0.9135\n",
"Epoch 58/100\n",
"8000/8000 [==============================] - 3s 365us/step - loss: 0.2034 - accuracy: 0.9091\n",
"Epoch 59/100\n",
"8000/8000 [==============================] - 4s 487us/step - loss: 0.1959 - accuracy: 0.9126\n",
"Epoch 60/100\n",
"8000/8000 [==============================] - 3s 395us/step - loss: 0.1858 - accuracy: 0.9164\n",
"Epoch 61/100\n",
"8000/8000 [==============================] - 3s 338us/step - loss: 0.1920 - accuracy: 0.9134\n",
"Epoch 62/100\n",
"8000/8000 [==============================] - 3s 376us/step - loss: 0.1868 - accuracy: 0.9144\n",
"Epoch 63/100\n",
"8000/8000 [==============================] - 3s 355us/step - loss: 0.1773 - accuracy: 0.9181\n",
"Epoch 64/100\n",
"8000/8000 [==============================] - 4s 449us/step - loss: 0.1770 - accuracy: 0.9202\n",
"Epoch 65/100\n",
"8000/8000 [==============================] - 3s 356us/step - loss: 0.1775 - accuracy: 0.9205\n",
"Epoch 66/100\n",
"8000/8000 [==============================] - 3s 409us/step - loss: 0.1744 - accuracy: 0.9229\n",
"Epoch 67/100\n",
"8000/8000 [==============================] - 3s 431us/step - loss: 0.1636 - accuracy: 0.9256\n",
"Epoch 68/100\n",
"8000/8000 [==============================] - 4s 550us/step - loss: 0.1799 - accuracy: 0.9215\n",
"Epoch 69/100\n",
"8000/8000 [==============================] - 3s 379us/step - loss: 0.1590 - accuracy: 0.9264\n",
"Epoch 70/100\n",
"8000/8000 [==============================] - 3s 390us/step - loss: 0.1634 - accuracy: 0.9286\n",
"Epoch 71/100\n",
"8000/8000 [==============================] - 5s 587us/step - loss: 0.1572 - accuracy: 0.9287\n",
"Epoch 72/100\n",
"8000/8000 [==============================] - 4s 514us/step - loss: 0.1562 - accuracy: 0.9299\n",
"Epoch 73/100\n",
"8000/8000 [==============================] - 3s 364us/step - loss: 0.1571 - accuracy: 0.9336\n",
"Epoch 74/100\n",
"8000/8000 [==============================] - 4s 474us/step - loss: 0.1553 - accuracy: 0.9365\n",
"Epoch 75/100\n",
"8000/8000 [==============================] - 3s 367us/step - loss: 0.1416 - accuracy: 0.9371\n",
"Epoch 76/100\n",
"8000/8000 [==============================] - 3s 344us/step - loss: 0.1409 - accuracy: 0.9405\n",
"Epoch 77/100\n",
"8000/8000 [==============================] - 5s 573us/step - loss: 0.1541 - accuracy: 0.9351\n",
"Epoch 78/100\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"8000/8000 [==============================] - 3s 377us/step - loss: 0.1465 - accuracy: 0.9345\n",
"Epoch 79/100\n",
"8000/8000 [==============================] - 3s 405us/step - loss: 0.1317 - accuracy: 0.9451\n",
"Epoch 80/100\n",
"8000/8000 [==============================] - 8s 1000us/step - loss: 0.1264 - accuracy: 0.9441\n",
"Epoch 81/100\n",
"8000/8000 [==============================] - 3s 433us/step - loss: 0.1387 - accuracy: 0.9410\n",
"Epoch 82/100\n",
"8000/8000 [==============================] - 3s 406us/step - loss: 0.1484 - accuracy: 0.9365\n",
"Epoch 83/100\n",
"8000/8000 [==============================] - 3s 405us/step - loss: 0.1344 - accuracy: 0.9429\n",
"Epoch 84/100\n",
"8000/8000 [==============================] - 5s 565us/step - loss: 0.1274 - accuracy: 0.9446\n",
"Epoch 85/100\n",
"8000/8000 [==============================] - 3s 376us/step - loss: 0.1203 - accuracy: 0.9488\n",
"Epoch 86/100\n",
"8000/8000 [==============================] - 3s 321us/step - loss: 0.1153 - accuracy: 0.9485\n",
"Epoch 87/100\n",
"8000/8000 [==============================] - 4s 453us/step - loss: 0.1223 - accuracy: 0.9465\n",
"Epoch 88/100\n",
"8000/8000 [==============================] - 3s 423us/step - loss: 0.1292 - accuracy: 0.9445\n",
"Epoch 89/100\n",
"8000/8000 [==============================] - 4s 515us/step - loss: 0.1172 - accuracy: 0.9505\n",
"Epoch 90/100\n",
"8000/8000 [==============================] - 3s 347us/step - loss: 0.1062 - accuracy: 0.9540\n",
"Epoch 91/100\n",
"8000/8000 [==============================] - 3s 402us/step - loss: 0.1144 - accuracy: 0.9542\n",
"Epoch 92/100\n",
"8000/8000 [==============================] - 3s 397us/step - loss: 0.1186 - accuracy: 0.9494\n",
"Epoch 93/100\n",
"8000/8000 [==============================] - 4s 460us/step - loss: 0.1053 - accuracy: 0.9541\n",
"Epoch 94/100\n",
"8000/8000 [==============================] - 3s 350us/step - loss: 0.1135 - accuracy: 0.9514\n",
"Epoch 95/100\n",
"8000/8000 [==============================] - 3s 322us/step - loss: 0.1037 - accuracy: 0.9595\n",
"Epoch 96/100\n",
"8000/8000 [==============================] - 3s 424us/step - loss: 0.1055 - accuracy: 0.9567\n",
"Epoch 97/100\n",
"8000/8000 [==============================] - 3s 393us/step - loss: 0.0964 - accuracy: 0.9601\n",
"Epoch 98/100\n",
"8000/8000 [==============================] - 4s 511us/step - loss: 0.0986 - accuracy: 0.9592\n",
"Epoch 99/100\n",
"8000/8000 [==============================] - 4s 440us/step - loss: 0.0981 - accuracy: 0.9561\n",
"Epoch 100/100\n",
"8000/8000 [==============================] - 3s 348us/step - loss: 0.0981 - accuracy: 0.9572\n",
"8000/8000 [==============================] - 0s 52us/step\n",
"2000/2000 [==============================] - 0s 38us/step\n"
]
}
],
"source": [
"# ANN - Overfitting\n",
"classifier = Sequential()\n",
"classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = 13))\n",
"classifier.add(Dense(units = 64, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dense(units = 32, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dense(units = 16, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))\n",
"classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])\n",
"classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)\n",
"score_train = classifier.evaluate(X_train, y_train)\n",
"score_test = classifier.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.08616659009084106, 0.9646250009536743]\n"
]
}
],
"source": [
"print(score_train)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[1.208429063796997, 0.8205000162124634]\n"
]
}
],
"source": [
"print(score_test)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"8000/8000 [==============================] - 4s 516us/step - loss: 0.4533 - accuracy: 0.8023\n",
"Epoch 2/100\n",
"8000/8000 [==============================] - 5s 581us/step - loss: 0.3818 - accuracy: 0.8479\n",
"Epoch 3/100\n",
"8000/8000 [==============================] - 3s 364us/step - loss: 0.3679 - accuracy: 0.8555\n",
"Epoch 4/100\n",
"8000/8000 [==============================] - 5s 585us/step - loss: 0.3703 - accuracy: 0.8510\n",
"Epoch 5/100\n",
"8000/8000 [==============================] - 5s 576us/step - loss: 0.3595 - accuracy: 0.8561\n",
"Epoch 6/100\n",
"8000/8000 [==============================] - 3s 419us/step - loss: 0.3547 - accuracy: 0.8593\n",
"Epoch 7/100\n",
"8000/8000 [==============================] - 4s 552us/step - loss: 0.3541 - accuracy: 0.8602\n",
"Epoch 8/100\n",
"8000/8000 [==============================] - 3s 419us/step - loss: 0.3510 - accuracy: 0.8616\n",
"Epoch 9/100\n",
"8000/8000 [==============================] - 4s 551us/step - loss: 0.3507 - accuracy: 0.8593\n",
"Epoch 10/100\n",
"8000/8000 [==============================] - 4s 454us/step - loss: 0.3462 - accuracy: 0.8626\n",
"Epoch 11/100\n",
"8000/8000 [==============================] - 3s 397us/step - loss: 0.3457 - accuracy: 0.8606\n",
"Epoch 12/100\n",
"8000/8000 [==============================] - 4s 493us/step - loss: 0.3421 - accuracy: 0.8661\n",
"Epoch 13/100\n",
"8000/8000 [==============================] - 5s 576us/step - loss: 0.3408 - accuracy: 0.8643\n",
"Epoch 14/100\n",
"8000/8000 [==============================] - 4s 511us/step - loss: 0.3419 - accuracy: 0.8633\n",
"Epoch 15/100\n",
"8000/8000 [==============================] - 3s 407us/step - loss: 0.3373 - accuracy: 0.8656\n",
"Epoch 16/100\n",
"8000/8000 [==============================] - 3s 405us/step - loss: 0.3376 - accuracy: 0.8636\n",
"Epoch 17/100\n",
"8000/8000 [==============================] - 5s 579us/step - loss: 0.3353 - accuracy: 0.8651\n",
"Epoch 18/100\n",
"8000/8000 [==============================] - 4s 475us/step - loss: 0.3370 - accuracy: 0.8629\n",
"Epoch 19/100\n",
"8000/8000 [==============================] - 4s 547us/step - loss: 0.3380 - accuracy: 0.8650\n",
"Epoch 20/100\n",
"8000/8000 [==============================] - 3s 433us/step - loss: 0.3373 - accuracy: 0.8646\n",
"Epoch 21/100\n",
"8000/8000 [==============================] - 4s 529us/step - loss: 0.3338 - accuracy: 0.8645\n",
"Epoch 22/100\n",
"8000/8000 [==============================] - 3s 376us/step - loss: 0.3341 - accuracy: 0.8637\n",
"Epoch 23/100\n",
"8000/8000 [==============================] - 4s 446us/step - loss: 0.3307 - accuracy: 0.8664\n",
"Epoch 24/100\n",
"8000/8000 [==============================] - 3s 421us/step - loss: 0.3304 - accuracy: 0.8651\n",
"Epoch 25/100\n",
"8000/8000 [==============================] - 5s 626us/step - loss: 0.3311 - accuracy: 0.8708\n",
"Epoch 26/100\n",
"8000/8000 [==============================] - 4s 494us/step - loss: 0.3216 - accuracy: 0.8677\n",
"Epoch 27/100\n",
"8000/8000 [==============================] - 3s 437us/step - loss: 0.3303 - accuracy: 0.8684\n",
"Epoch 28/100\n",
"8000/8000 [==============================] - 3s 346us/step - loss: 0.3245 - accuracy: 0.8711\n",
"Epoch 29/100\n",
"8000/8000 [==============================] - 4s 477us/step - loss: 0.3274 - accuracy: 0.8673\n",
"Epoch 30/100\n",
"8000/8000 [==============================] - 3s 396us/step - loss: 0.3233 - accuracy: 0.8676\n",
"Epoch 31/100\n",
"8000/8000 [==============================] - 4s 489us/step - loss: 0.3224 - accuracy: 0.8691\n",
"Epoch 32/100\n",
"8000/8000 [==============================] - 4s 441us/step - loss: 0.3253 - accuracy: 0.8686\n",
"Epoch 33/100\n",
"8000/8000 [==============================] - 4s 513us/step - loss: 0.3225 - accuracy: 0.8687\n",
"Epoch 34/100\n",
"8000/8000 [==============================] - 4s 481us/step - loss: 0.3174 - accuracy: 0.8700\n",
"Epoch 35/100\n",
"8000/8000 [==============================] - 4s 463us/step - loss: 0.3209 - accuracy: 0.8684\n",
"Epoch 36/100\n",
"8000/8000 [==============================] - 4s 547us/step - loss: 0.3167 - accuracy: 0.8709\n",
"Epoch 37/100\n",
"8000/8000 [==============================] - 5s 644us/step - loss: 0.3178 - accuracy: 0.8706\n",
"Epoch 38/100\n",
"8000/8000 [==============================] - 4s 465us/step - loss: 0.3198 - accuracy: 0.8685\n",
"Epoch 39/100\n",
"8000/8000 [==============================] - 4s 481us/step - loss: 0.3181 - accuracy: 0.8723\n",
"Epoch 40/100\n",
"8000/8000 [==============================] - 3s 352us/step - loss: 0.3208 - accuracy: 0.8689\n",
"Epoch 41/100\n",
"8000/8000 [==============================] - 4s 537us/step - loss: 0.3146 - accuracy: 0.8716\n",
"Epoch 42/100\n",
"8000/8000 [==============================] - 3s 384us/step - loss: 0.3161 - accuracy: 0.8715\n",
"Epoch 43/100\n",
"8000/8000 [==============================] - 3s 422us/step - loss: 0.3159 - accuracy: 0.8719\n",
"Epoch 44/100\n",
"8000/8000 [==============================] - 3s 400us/step - loss: 0.3142 - accuracy: 0.8733\n",
"Epoch 45/100\n",
"8000/8000 [==============================] - 4s 526us/step - loss: 0.3116 - accuracy: 0.8723\n",
"Epoch 46/100\n",
"8000/8000 [==============================] - 4s 440us/step - loss: 0.3095 - accuracy: 0.8736\n",
"Epoch 47/100\n",
"8000/8000 [==============================] - 3s 436us/step - loss: 0.3109 - accuracy: 0.8746\n",
"Epoch 48/100\n",
"8000/8000 [==============================] - 4s 539us/step - loss: 0.3111 - accuracy: 0.8749\n",
"Epoch 49/100\n",
"8000/8000 [==============================] - 5s 603us/step - loss: 0.3077 - accuracy: 0.8763\n",
"Epoch 50/100\n",
"8000/8000 [==============================] - 3s 428us/step - loss: 0.3093 - accuracy: 0.8736\n",
"Epoch 51/100\n",
"8000/8000 [==============================] - 4s 534us/step - loss: 0.3023 - accuracy: 0.8766\n",
"Epoch 52/100\n",
"8000/8000 [==============================] - 4s 530us/step - loss: 0.3097 - accuracy: 0.8741\n",
"Epoch 53/100\n",
"8000/8000 [==============================] - 3s 432us/step - loss: 0.3061 - accuracy: 0.8752\n",
"Epoch 54/100\n",
"8000/8000 [==============================] - 4s 448us/step - loss: 0.3057 - accuracy: 0.8769\n",
"Epoch 55/100\n",
"8000/8000 [==============================] - 4s 560us/step - loss: 0.3078 - accuracy: 0.8751\n",
"Epoch 56/100\n",
"8000/8000 [==============================] - 5s 623us/step - loss: 0.3029 - accuracy: 0.8775\n",
"Epoch 57/100\n",
"8000/8000 [==============================] - 4s 502us/step - loss: 0.3029 - accuracy: 0.8774\n",
"Epoch 58/100\n",
"8000/8000 [==============================] - 3s 401us/step - loss: 0.3008 - accuracy: 0.8791\n",
"Epoch 59/100\n",
"8000/8000 [==============================] - 4s 452us/step - loss: 0.3046 - accuracy: 0.8770\n",
"Epoch 60/100\n",
"8000/8000 [==============================] - 6s 810us/step - loss: 0.3003 - accuracy: 0.8773\n",
"Epoch 61/100\n",
"8000/8000 [==============================] - 3s 370us/step - loss: 0.3027 - accuracy: 0.8773\n",
"Epoch 62/100\n",
"8000/8000 [==============================] - 4s 487us/step - loss: 0.2990 - accuracy: 0.8788\n",
"Epoch 63/100\n",
"8000/8000 [==============================] - 5s 595us/step - loss: 0.2933 - accuracy: 0.8801\n",
"Epoch 64/100\n",
"8000/8000 [==============================] - 4s 444us/step - loss: 0.3000 - accuracy: 0.8802\n",
"Epoch 65/100\n",
"8000/8000 [==============================] - 3s 387us/step - loss: 0.3003 - accuracy: 0.8781\n",
"Epoch 66/100\n",
"8000/8000 [==============================] - 4s 550us/step - loss: 0.2990 - accuracy: 0.8790\n",
"Epoch 67/100\n",
"8000/8000 [==============================] - 4s 535us/step - loss: 0.3059 - accuracy: 0.8766\n",
"Epoch 68/100\n",
"8000/8000 [==============================] - 3s 422us/step - loss: 0.2995 - accuracy: 0.8777\n",
"Epoch 69/100\n",
"8000/8000 [==============================] - 4s 446us/step - loss: 0.2911 - accuracy: 0.8784\n",
"Epoch 70/100\n",
"8000/8000 [==============================] - 3s 433us/step - loss: 0.2978 - accuracy: 0.8781\n",
"Epoch 71/100\n",
"8000/8000 [==============================] - 5s 646us/step - loss: 0.2937 - accuracy: 0.8786\n",
"Epoch 72/100\n",
"8000/8000 [==============================] - 3s 421us/step - loss: 0.2955 - accuracy: 0.8821\n",
"Epoch 73/100\n",
"8000/8000 [==============================] - 3s 377us/step - loss: 0.2924 - accuracy: 0.8806\n",
"Epoch 74/100\n",
"8000/8000 [==============================] - 3s 411us/step - loss: 0.2936 - accuracy: 0.8800\n",
"Epoch 75/100\n",
"8000/8000 [==============================] - 3s 363us/step - loss: 0.2941 - accuracy: 0.8792\n",
"Epoch 76/100\n",
"8000/8000 [==============================] - 4s 559us/step - loss: 0.2926 - accuracy: 0.8795\n",
"Epoch 77/100\n",
"8000/8000 [==============================] - 3s 398us/step - loss: 0.2919 - accuracy: 0.8820\n",
"Epoch 78/100\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"8000/8000 [==============================] - 3s 418us/step - loss: 0.2912 - accuracy: 0.8781\n",
"Epoch 79/100\n",
"8000/8000 [==============================] - 3s 429us/step - loss: 0.2867 - accuracy: 0.8814\n",
"Epoch 80/100\n",
"8000/8000 [==============================] - 5s 579us/step - loss: 0.2905 - accuracy: 0.8826\n",
"Epoch 81/100\n",
"8000/8000 [==============================] - 3s 379us/step - loss: 0.2858 - accuracy: 0.8819\n",
"Epoch 82/100\n",
"8000/8000 [==============================] - 5s 584us/step - loss: 0.2845 - accuracy: 0.8821\n",
"Epoch 83/100\n",
"8000/8000 [==============================] - 3s 360us/step - loss: 0.2865 - accuracy: 0.8819\n",
"Epoch 84/100\n",
"8000/8000 [==============================] - 4s 543us/step - loss: 0.2855 - accuracy: 0.8826\n",
"Epoch 85/100\n",
"8000/8000 [==============================] - 3s 382us/step - loss: 0.2843 - accuracy: 0.8801\n",
"Epoch 86/100\n",
"8000/8000 [==============================] - 3s 380us/step - loss: 0.2863 - accuracy: 0.8830\n",
"Epoch 87/100\n",
"8000/8000 [==============================] - 3s 385us/step - loss: 0.2809 - accuracy: 0.8855\n",
"Epoch 88/100\n",
"8000/8000 [==============================] - 4s 547us/step - loss: 0.2848 - accuracy: 0.8829\n",
"Epoch 89/100\n",
"8000/8000 [==============================] - 3s 357us/step - loss: 0.2834 - accuracy: 0.8813\n",
"Epoch 90/100\n",
"8000/8000 [==============================] - 3s 368us/step - loss: 0.2852 - accuracy: 0.8814\n",
"Epoch 91/100\n",
"8000/8000 [==============================] - 3s 428us/step - loss: 0.2861 - accuracy: 0.8791\n",
"Epoch 92/100\n",
"8000/8000 [==============================] - 4s 442us/step - loss: 0.2789 - accuracy: 0.8850\n",
"Epoch 93/100\n",
"8000/8000 [==============================] - 4s 530us/step - loss: 0.2836 - accuracy: 0.8831\n",
"Epoch 94/100\n",
"8000/8000 [==============================] - 4s 472us/step - loss: 0.2837 - accuracy: 0.8825\n",
"Epoch 95/100\n",
"8000/8000 [==============================] - 3s 434us/step - loss: 0.2822 - accuracy: 0.8809\n",
"Epoch 96/100\n",
"8000/8000 [==============================] - 3s 436us/step - loss: 0.2778 - accuracy: 0.8840\n",
"Epoch 97/100\n",
"8000/8000 [==============================] - 4s 532us/step - loss: 0.2821 - accuracy: 0.8860\n",
"Epoch 98/100\n",
"8000/8000 [==============================] - 4s 453us/step - loss: 0.2808 - accuracy: 0.8842\n",
"Epoch 99/100\n",
"8000/8000 [==============================] - 4s 539us/step - loss: 0.2798 - accuracy: 0.8875\n",
"Epoch 100/100\n",
"8000/8000 [==============================] - 4s 539us/step - loss: 0.2782 - accuracy: 0.8846\n",
"8000/8000 [==============================] - 0s 55us/step\n",
"2000/2000 [==============================] - 0s 33us/step\n"
]
}
],
"source": [
"# ANN - Dropout\n",
"\n",
"classifier = Sequential()\n",
"classifier.add(Dense(units = 128, kernel_initializer = 'uniform', activation = 'relu', input_dim = 13))\n",
"classifier.add(Dropout(0.2))\n",
"classifier.add(Dense(units = 64, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dropout(0.2))\n",
"classifier.add(Dense(units = 32, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dropout(0.2))\n",
"classifier.add(Dense(units = 16, kernel_initializer = 'uniform', activation = 'relu'))\n",
"classifier.add(Dropout(0.2))\n",
"classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))\n",
"classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])\n",
"classifier.fit(X_train, y_train, batch_size = 10, epochs = 100)\n",
"score_train = classifier.evaluate(X_train, y_train)\n",
"score_test = classifier.evaluate(X_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.2344212337732315, 0.9011250138282776]\n"
]
}
],
"source": [
"print(score_train)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[0.37778445982933045, 0.8554999828338623]\n"
]
}
],
"source": [
"print(score_test)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.6.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}