{ "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 }