Skip to content

Instantly share code, notes, and snippets.

@arthurbarros
Created July 31, 2017 20:56
  • Select an option

Select an option

Revisions

  1. arthurbarros created this gist Jul 31, 2017.
    1,253 changes: 1,253 additions & 0 deletions churn-keras-model.ipynb
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,1253 @@
    {
    "cells": [
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
    "## How to build a simple Keras model with Tensorflow backend to predict Churn\n",
    "\n",
    "The goal of this tutorial is how to build a simple prediction model based on real life problem using a fictional dataset"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 1,
    "metadata": {},
    "outputs": [
    {
    "name": "stderr",
    "output_type": "stream",
    "text": [
    "Using TensorFlow backend.\n"
    ]
    }
    ],
    "source": [
    "import numpy as np\n",
    "import pickle\n",
    "import pandas as pd\n",
    "from keras.wrappers.scikit_learn import KerasClassifier\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense\n",
    "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler"
    ]
    },
    {
    "cell_type": "markdown",
    "metadata": {},
    "source": [
    "We are importing from a CSV file a fictional dataset, is important have in mind thi dataset could be gotten from anywhere, quering a database directly and parsing just the relevant features of it."
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 2,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "dataset = pd.read_csv('Churn_Modelling.csv')\n",
    "X = dataset.iloc[:, 3:13].values\n",
    "y = dataset.iloc[:, 13].values"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 3,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "labelencoder_X_1 = LabelEncoder()\n",
    "X[:, 1] = labelencoder_X_1.fit_transform(X[:, 1])\n",
    "labelencoder_X_2 = LabelEncoder()\n",
    "X[:, 2] = labelencoder_X_2.fit_transform(X[:, 2])\n",
    "onehotencoder = OneHotEncoder(categorical_features = [1])\n",
    "X = onehotencoder.fit_transform(X).toarray()\n",
    "X = X[:, 1:]"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 4,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "# Splitting the dataset into the Training set and Test set\n",
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 5,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "# Feature Scaling\n",
    "sc = StandardScaler()\n",
    "X_train = sc.fit_transform(X_train)\n",
    "X_test = sc.transform(X_test)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 6,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "def build_classifier():\n",
    " classifier = Sequential()\n",
    " classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu', input_dim = 11))\n",
    " classifier.add(Dense(units = 6, kernel_initializer = 'uniform', activation = 'relu'))\n",
    " classifier.add(Dense(units = 1, kernel_initializer = 'uniform', activation = 'sigmoid'))\n",
    " classifier.compile(optimizer='rmsprop', loss = 'binary_crossentropy', metrics = ['accuracy'])\n",
    " return classifier"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 7,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "Epoch 1/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.5487 - acc: 0.7960 \n",
    "Epoch 2/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4387 - acc: 0.7960 \n",
    "Epoch 3/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4309 - acc: 0.7960 \n",
    "Epoch 4/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4264 - acc: 0.7960 \n",
    "Epoch 5/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4234 - acc: 0.7960 \n",
    "Epoch 6/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4206 - acc: 0.8147 \n",
    "Epoch 7/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4188 - acc: 0.8221 \n",
    "Epoch 8/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4173 - acc: 0.8235 \n",
    "Epoch 9/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4159 - acc: 0.8282 \n",
    "Epoch 10/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4145 - acc: 0.8290 \n",
    "Epoch 11/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4135 - acc: 0.8316 \n",
    "Epoch 12/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4127 - acc: 0.8322 \n",
    "Epoch 13/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4114 - acc: 0.8332 \n",
    "Epoch 14/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4106 - acc: 0.8341 \n",
    "Epoch 15/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4107 - acc: 0.8350 \n",
    "Epoch 16/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4099 - acc: 0.8342 \n",
    "Epoch 17/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4094 - acc: 0.8350 \n",
    "Epoch 18/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4088 - acc: 0.8345 \n",
    "Epoch 19/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4085 - acc: 0.8335 \n",
    "Epoch 20/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4082 - acc: 0.8332 \n",
    "Epoch 21/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4078 - acc: 0.8357 \n",
    "Epoch 22/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4070 - acc: 0.8347 \n",
    "Epoch 23/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4069 - acc: 0.8345 \n",
    "Epoch 24/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4062 - acc: 0.8355 \n",
    "Epoch 25/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4063 - acc: 0.8351 \n",
    "Epoch 26/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4054 - acc: 0.8356 \n",
    "Epoch 27/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4054 - acc: 0.8347 \n",
    "Epoch 28/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4052 - acc: 0.8350 \n",
    "Epoch 29/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4051 - acc: 0.8354 \n",
    "Epoch 30/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4045 - acc: 0.8352 \n",
    "Epoch 31/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4047 - acc: 0.8354 \n",
    "Epoch 32/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4041 - acc: 0.8350 \n",
    "Epoch 33/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4038 - acc: 0.8361 \n",
    "Epoch 34/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4038 - acc: 0.8344 \n",
    "Epoch 35/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4037 - acc: 0.8365 \n",
    "Epoch 36/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4037 - acc: 0.8347 \n",
    "Epoch 37/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4034 - acc: 0.8352 \n",
    "Epoch 38/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4035 - acc: 0.8361 \n",
    "Epoch 39/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4032 - acc: 0.8352 \n",
    "Epoch 40/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4030 - acc: 0.8347 \n",
    "Epoch 41/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4029 - acc: 0.8347 \n",
    "Epoch 42/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4030 - acc: 0.8356 \n",
    "Epoch 43/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4023 - acc: 0.8361 \n",
    "Epoch 44/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4027 - acc: 0.8355 \n",
    "Epoch 45/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4026 - acc: 0.8362 \n",
    "Epoch 46/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4027 - acc: 0.8366 \n",
    "Epoch 47/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4021 - acc: 0.8351 \n",
    "Epoch 48/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4024 - acc: 0.8359 \n",
    "Epoch 49/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4023 - acc: 0.8360 \n",
    "Epoch 50/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4019 - acc: 0.8355 \n",
    "Epoch 51/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4021 - acc: 0.8359 \n",
    "Epoch 52/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4022 - acc: 0.8342 \n",
    "Epoch 53/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4017 - acc: 0.8356 \n",
    "Epoch 54/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4021 - acc: 0.8356 \n",
    "Epoch 55/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4018 - acc: 0.8362 \n",
    "Epoch 56/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4017 - acc: 0.8344 \n",
    "Epoch 57/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4016 - acc: 0.8335 \n",
    "Epoch 58/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4017 - acc: 0.8346 \n",
    "Epoch 59/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4018 - acc: 0.8355 \n",
    "Epoch 60/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4016 - acc: 0.8354 \n",
    "Epoch 61/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4014 - acc: 0.8352 \n",
    "Epoch 62/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4018 - acc: 0.8355 \n",
    "Epoch 63/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4017 - acc: 0.8354 \n",
    "Epoch 64/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4015 - acc: 0.8344 \n",
    "Epoch 65/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4013 - acc: 0.8354 \n",
    "Epoch 66/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4015 - acc: 0.8359 \n",
    "Epoch 67/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4014 - acc: 0.8361 \n",
    "Epoch 68/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4012 - acc: 0.8351 \n",
    "Epoch 69/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4010 - acc: 0.8340 \n",
    "Epoch 70/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4012 - acc: 0.8341 \n",
    "Epoch 71/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4011 - acc: 0.8337 \n",
    "Epoch 72/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4006 - acc: 0.8337 \n",
    "Epoch 73/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4012 - acc: 0.8349 \n",
    "Epoch 74/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4009 - acc: 0.8342 \n",
    "Epoch 75/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4010 - acc: 0.8347 \n",
    "Epoch 76/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4009 - acc: 0.8342 \n",
    "Epoch 77/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4006 - acc: 0.8350 \n",
    "Epoch 78/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4011 - acc: 0.8345 \n",
    "Epoch 79/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8361 \n",
    "Epoch 80/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8351 \n",
    "Epoch 81/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4006 - acc: 0.8349 \n",
    "Epoch 82/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4008 - acc: 0.8350 \n",
    "Epoch 83/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8341 \n",
    "Epoch 84/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4007 - acc: 0.8356 \n",
    "Epoch 85/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8339 \n",
    "Epoch 86/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8337 \n",
    "Epoch 87/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8350 \n",
    "Epoch 88/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4003 - acc: 0.8354 \n",
    "Epoch 89/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8359 \n",
    "Epoch 90/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4005 - acc: 0.8357 \n",
    "Epoch 91/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8361 \n",
    "Epoch 92/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8359 \n",
    "Epoch 93/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8347 \n",
    "Epoch 94/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8354 \n",
    "Epoch 95/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8347 \n",
    "Epoch 96/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4003 - acc: 0.8357 \n",
    "Epoch 97/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8347 \n",
    "Epoch 98/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4006 - acc: 0.8360 \n",
    "Epoch 99/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4003 - acc: 0.8352 \n",
    "Epoch 100/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8354 \n",
    "Epoch 101/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8339 \n",
    "Epoch 102/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4004 - acc: 0.8351 \n",
    "Epoch 103/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4003 - acc: 0.8354 \n",
    "Epoch 104/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4004 - acc: 0.8349 \n",
    "Epoch 105/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8349 \n",
    "Epoch 106/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4004 - acc: 0.8356 \n",
    "Epoch 107/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8352 \n",
    "Epoch 108/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8364 \n",
    "Epoch 109/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8344 \n",
    "Epoch 110/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4004 - acc: 0.8356 \n",
    "Epoch 111/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8351 \n",
    "Epoch 112/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8346 \n",
    "Epoch 113/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8359 \n",
    "Epoch 114/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8364 \n",
    "Epoch 115/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8342 \n",
    "Epoch 116/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8365 \n",
    "Epoch 117/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8349 \n",
    "Epoch 118/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8355 \n",
    "Epoch 119/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8352 \n",
    "Epoch 120/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8345 \n",
    "Epoch 121/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8357 \n",
    "Epoch 122/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4003 - acc: 0.8355 \n",
    "Epoch 123/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8362 \n",
    "Epoch 124/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8367 \n",
    "Epoch 125/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4002 - acc: 0.8345 \n",
    "Epoch 126/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8346 \n",
    "Epoch 127/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8362 \n",
    "Epoch 128/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8344 \n",
    "Epoch 129/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8346 \n",
    "Epoch 130/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8360 \n",
    "Epoch 131/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8346 \n",
    "Epoch 132/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8354 \n",
    "Epoch 133/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8360 \n",
    "Epoch 134/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8354 \n",
    "Epoch 135/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8345 \n",
    "Epoch 136/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8361 \n",
    "Epoch 137/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8356 \n",
    "Epoch 138/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8329 \n",
    "Epoch 139/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8355 \n",
    "Epoch 140/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8350 \n",
    "Epoch 141/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8355 \n",
    "Epoch 142/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8347 \n",
    "Epoch 143/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8367 \n",
    "Epoch 144/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8355 \n",
    "Epoch 145/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8354 \n",
    "Epoch 146/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8346 \n",
    "Epoch 147/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8356 \n",
    "Epoch 148/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8359 \n",
    "Epoch 149/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8360 \n",
    "Epoch 150/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8372 \n",
    "Epoch 151/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4001 - acc: 0.8349 \n",
    "Epoch 152/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8352 \n",
    "Epoch 153/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8351 \n",
    "Epoch 154/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8354 \n",
    "Epoch 155/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.4000 - acc: 0.8351 \n",
    "Epoch 156/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8356 \n",
    "Epoch 157/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8349 \n",
    "Epoch 158/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8357 \n",
    "Epoch 159/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8357 \n",
    "Epoch 160/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8352 \n",
    "Epoch 161/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8361 \n",
    "Epoch 162/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8350 \n",
    "Epoch 163/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8362 \n",
    "Epoch 164/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8364 \n",
    "Epoch 165/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8356 \n",
    "Epoch 166/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8374 \n",
    "Epoch 167/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8360 \n",
    "Epoch 168/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8350 \n",
    "Epoch 169/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8334 \n",
    "Epoch 170/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8357 \n",
    "Epoch 171/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8356 \n",
    "Epoch 172/500\n"
    ]
    },
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8352 \n",
    "Epoch 173/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8356 \n",
    "Epoch 174/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8352 \n",
    "Epoch 175/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8321 \n",
    "Epoch 176/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8362 \n",
    "Epoch 177/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8356 \n",
    "Epoch 178/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8354 \n",
    "Epoch 179/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8357 \n",
    "Epoch 180/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8351 \n",
    "Epoch 181/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8356 \n",
    "Epoch 182/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8347 \n",
    "Epoch 183/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8360 \n",
    "Epoch 184/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8341 \n",
    "Epoch 185/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8350 \n",
    "Epoch 186/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8360 \n",
    "Epoch 187/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8352 \n",
    "Epoch 188/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8370 \n",
    "Epoch 189/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8357 \n",
    "Epoch 190/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3999 - acc: 0.8354 \n",
    "Epoch 191/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8357 \n",
    "Epoch 192/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8342 \n",
    "Epoch 193/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8349 \n",
    "Epoch 194/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3998 - acc: 0.8359 \n",
    "Epoch 195/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8356 \n",
    "Epoch 196/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8349 \n",
    "Epoch 197/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8352 \n",
    "Epoch 198/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8346 \n",
    "Epoch 199/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8366 \n",
    "Epoch 200/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8345 \n",
    "Epoch 201/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8369 \n",
    "Epoch 202/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8349 \n",
    "Epoch 203/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8367 \n",
    "Epoch 204/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3997 - acc: 0.8356 \n",
    "Epoch 205/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8355 \n",
    "Epoch 206/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8347 \n",
    "Epoch 207/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8359 \n",
    "Epoch 208/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8360 \n",
    "Epoch 209/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8347 \n",
    "Epoch 210/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8343 \n",
    "Epoch 211/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8355 \n",
    "Epoch 212/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8357 \n",
    "Epoch 213/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8349 \n",
    "Epoch 214/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8360 \n",
    "Epoch 215/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8365 \n",
    "Epoch 216/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8350 \n",
    "Epoch 217/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8362 \n",
    "Epoch 218/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8346 \n",
    "Epoch 219/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8351 \n",
    "Epoch 220/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8349 \n",
    "Epoch 221/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8355 \n",
    "Epoch 222/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8351 \n",
    "Epoch 223/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8361 \n",
    "Epoch 224/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8357 \n",
    "Epoch 225/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8347 \n",
    "Epoch 226/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8362 \n",
    "Epoch 227/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8346 \n",
    "Epoch 228/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8350 \n",
    "Epoch 229/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8357 \n",
    "Epoch 230/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8362 \n",
    "Epoch 231/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8359 \n",
    "Epoch 232/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8365 \n",
    "Epoch 233/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8346 \n",
    "Epoch 234/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8360 \n",
    "Epoch 235/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8371 \n",
    "Epoch 236/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8355 \n",
    "Epoch 237/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8339 \n",
    "Epoch 238/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8352 \n",
    "Epoch 239/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8361 \n",
    "Epoch 240/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8351 \n",
    "Epoch 241/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8341 \n",
    "Epoch 242/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8354 \n",
    "Epoch 243/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8351 \n",
    "Epoch 244/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8357 \n",
    "Epoch 245/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8355 \n",
    "Epoch 246/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8352 \n",
    "Epoch 247/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8365 \n",
    "Epoch 248/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8357 \n",
    "Epoch 249/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8351 \n",
    "Epoch 250/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8360 \n",
    "Epoch 251/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8351 \n",
    "Epoch 252/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8352 \n",
    "Epoch 253/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8352 \n",
    "Epoch 254/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8356 \n",
    "Epoch 255/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8361 \n",
    "Epoch 256/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8357 \n",
    "Epoch 257/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8355 \n",
    "Epoch 258/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8350 \n",
    "Epoch 259/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8349 \n",
    "Epoch 260/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8362 \n",
    "Epoch 261/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8374 \n",
    "Epoch 262/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8342 \n",
    "Epoch 263/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3996 - acc: 0.8352 \n",
    "Epoch 264/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8349 \n",
    "Epoch 265/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8366 \n",
    "Epoch 266/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8361 \n",
    "Epoch 267/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8356 \n",
    "Epoch 268/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8370 \n",
    "Epoch 269/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8344 \n",
    "Epoch 270/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8346 \n",
    "Epoch 271/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8357 \n",
    "Epoch 272/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8342 \n",
    "Epoch 273/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8337 \n",
    "Epoch 274/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8361 \n",
    "Epoch 275/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8365 \n",
    "Epoch 276/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8361 \n",
    "Epoch 277/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8362 \n",
    "Epoch 278/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8337 \n",
    "Epoch 279/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8357 \n",
    "Epoch 280/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8360 \n",
    "Epoch 281/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8362 \n",
    "Epoch 282/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8341 \n",
    "Epoch 283/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3985 - acc: 0.8349 \n",
    "Epoch 284/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8357 \n",
    "Epoch 285/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8339 \n",
    "Epoch 286/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8355 \n",
    "Epoch 287/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8350 \n",
    "Epoch 288/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8346 \n",
    "Epoch 289/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8347 \n",
    "Epoch 290/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8352 \n",
    "Epoch 291/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8361 \n",
    "Epoch 292/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8359 \n",
    "Epoch 293/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8356 \n",
    "Epoch 294/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8351 \n",
    "Epoch 295/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8345 \n",
    "Epoch 296/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8369 \n",
    "Epoch 297/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8355 \n",
    "Epoch 298/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8339 - ETA: 0s - loss: 0.4255 - acc\n",
    "Epoch 299/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8352 \n",
    "Epoch 300/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8350 \n",
    "Epoch 301/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8346 \n",
    "Epoch 302/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8349 \n",
    "Epoch 303/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8370 \n",
    "Epoch 304/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8342 \n",
    "Epoch 305/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8352 \n",
    "Epoch 306/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8359 \n",
    "Epoch 307/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3985 - acc: 0.8360 \n",
    "Epoch 308/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8345 \n",
    "Epoch 309/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8351 \n",
    "Epoch 310/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8365 \n",
    "Epoch 311/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8354 \n",
    "Epoch 312/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8351 \n",
    "Epoch 313/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8356 \n",
    "Epoch 314/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8340 \n",
    "Epoch 315/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8344 \n",
    "Epoch 316/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8349 \n",
    "Epoch 317/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8341 \n",
    "Epoch 318/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8354 \n",
    "Epoch 319/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8364 \n",
    "Epoch 320/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8335 \n",
    "Epoch 321/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8359 \n",
    "Epoch 322/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8336 \n",
    "Epoch 323/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8351 \n",
    "Epoch 324/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 325/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 326/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8355 \n",
    "Epoch 327/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8354 \n",
    "Epoch 328/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8360 \n",
    "Epoch 329/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8357 \n",
    "Epoch 330/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8342 \n",
    "Epoch 331/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8350 \n",
    "Epoch 332/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8359 \n",
    "Epoch 333/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8359 \n",
    "Epoch 334/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8354 \n",
    "Epoch 335/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8336 \n",
    "Epoch 336/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8347 \n",
    "Epoch 337/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8347 \n",
    "Epoch 338/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8337 \n",
    "Epoch 339/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8350 \n",
    "Epoch 340/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8344 \n",
    "Epoch 341/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 342/500\n"
    ]
    },
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8347 \n",
    "Epoch 343/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8361 - ETA: 0s - loss: 0.4201 - acc: 0\n",
    "Epoch 344/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8352 \n",
    "Epoch 345/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8351 \n",
    "Epoch 346/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8349 \n",
    "Epoch 347/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8355 \n",
    "Epoch 348/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8349 \n",
    "Epoch 349/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8356 \n",
    "Epoch 350/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8347 \n",
    "Epoch 351/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8345 \n",
    "Epoch 352/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8345 \n",
    "Epoch 353/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8342 \n",
    "Epoch 354/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8362 \n",
    "Epoch 355/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3983 - acc: 0.8345 \n",
    "Epoch 356/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8359 \n",
    "Epoch 357/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8355 \n",
    "Epoch 358/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8359 \n",
    "Epoch 359/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8339 \n",
    "Epoch 360/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8347 \n",
    "Epoch 361/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8352 \n",
    "Epoch 362/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8362 \n",
    "Epoch 363/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8355 \n",
    "Epoch 364/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8351 \n",
    "Epoch 365/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8352 \n",
    "Epoch 366/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8360 \n",
    "Epoch 367/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8366 \n",
    "Epoch 368/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3985 - acc: 0.8340 \n",
    "Epoch 369/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8379 \n",
    "Epoch 370/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8364 \n",
    "Epoch 371/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8339 \n",
    "Epoch 372/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8376 \n",
    "Epoch 373/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3983 - acc: 0.8356 \n",
    "Epoch 374/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8374 \n",
    "Epoch 375/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8364 \n",
    "Epoch 376/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8357 \n",
    "Epoch 377/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8337 \n",
    "Epoch 378/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8349 \n",
    "Epoch 379/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8356 \n",
    "Epoch 380/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8359 \n",
    "Epoch 381/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8347 \n",
    "Epoch 382/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8355 \n",
    "Epoch 383/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8335 \n",
    "Epoch 384/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8339 \n",
    "Epoch 385/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8356 \n",
    "Epoch 386/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8356 \n",
    "Epoch 387/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8340 \n",
    "Epoch 388/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8347 \n",
    "Epoch 389/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8350 \n",
    "Epoch 390/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8336 \n",
    "Epoch 391/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 392/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8350 \n",
    "Epoch 393/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 394/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 395/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8340 \n",
    "Epoch 396/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3985 - acc: 0.8362 \n",
    "Epoch 397/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8350 \n",
    "Epoch 398/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8352 \n",
    "Epoch 399/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8337 \n",
    "Epoch 400/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8346 \n",
    "Epoch 401/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8346 \n",
    "Epoch 402/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8356 \n",
    "Epoch 403/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8344 \n",
    "Epoch 404/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8357 \n",
    "Epoch 405/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8350 \n",
    "Epoch 406/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8362 \n",
    "Epoch 407/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8362 \n",
    "Epoch 408/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8349 \n",
    "Epoch 409/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8355 \n",
    "Epoch 410/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8345 \n",
    "Epoch 411/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 412/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8346 \n",
    "Epoch 413/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8354 \n",
    "Epoch 414/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8375 \n",
    "Epoch 415/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8360 \n",
    "Epoch 416/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8350 \n",
    "Epoch 417/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 418/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8347 \n",
    "Epoch 419/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8360 \n",
    "Epoch 420/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8354 \n",
    "Epoch 421/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8361 \n",
    "Epoch 422/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 423/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3984 - acc: 0.8335 \n",
    "Epoch 424/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8342 \n",
    "Epoch 425/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8360 \n",
    "Epoch 426/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8360 \n",
    "Epoch 427/500\n"
    ]
    },
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8354 \n",
    "Epoch 428/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8349 \n",
    "Epoch 429/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8362 \n",
    "Epoch 430/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8361 \n",
    "Epoch 431/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8361 \n",
    "Epoch 432/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3994 - acc: 0.8350 \n",
    "Epoch 433/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8351 \n",
    "Epoch 434/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8356 \n",
    "Epoch 435/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8364 \n",
    "Epoch 436/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3984 - acc: 0.8366 \n",
    "Epoch 437/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8360 \n",
    "Epoch 438/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8361 \n",
    "Epoch 439/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8371 \n",
    "Epoch 440/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8357 \n",
    "Epoch 441/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8362 \n",
    "Epoch 442/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8347 \n",
    "Epoch 443/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8347 \n",
    "Epoch 444/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8366 \n",
    "Epoch 445/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8355 \n",
    "Epoch 446/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 447/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8354 \n",
    "Epoch 448/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8352 \n",
    "Epoch 449/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8349 \n",
    "Epoch 450/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8356 \n",
    "Epoch 451/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8364 \n",
    "Epoch 452/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 453/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8352 \n",
    "Epoch 454/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 455/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8369 \n",
    "Epoch 456/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8346 \n",
    "Epoch 457/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8362 \n",
    "Epoch 458/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8365 \n",
    "Epoch 459/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8361 \n",
    "Epoch 460/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8354 \n",
    "Epoch 461/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8349 \n",
    "Epoch 462/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3983 - acc: 0.8346 \n",
    "Epoch 463/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8359 \n",
    "Epoch 464/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8359 \n",
    "Epoch 465/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8354 \n",
    "Epoch 466/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8342 \n",
    "Epoch 467/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3987 - acc: 0.8356 \n",
    "Epoch 468/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3984 - acc: 0.8347 \n",
    "Epoch 469/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8345 \n",
    "Epoch 470/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8361 \n",
    "Epoch 471/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8357 \n",
    "Epoch 472/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8360 \n",
    "Epoch 473/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3985 - acc: 0.8355 \n",
    "Epoch 474/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8351 \n",
    "Epoch 475/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8347 \n",
    "Epoch 476/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8361 \n",
    "Epoch 477/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8356 \n",
    "Epoch 478/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8354 \n",
    "Epoch 479/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8366 \n",
    "Epoch 480/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8339 \n",
    "Epoch 481/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8351 \n",
    "Epoch 482/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3993 - acc: 0.8341 \n",
    "Epoch 483/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8347 \n",
    "Epoch 484/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3979 - acc: 0.8341 \n",
    "Epoch 485/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8349 \n",
    "Epoch 486/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3986 - acc: 0.8346 \n",
    "Epoch 487/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8349 \n",
    "Epoch 488/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8346 \n",
    "Epoch 489/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8357 \n",
    "Epoch 490/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8347 \n",
    "Epoch 491/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8347 \n",
    "Epoch 492/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8352 \n",
    "Epoch 493/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3989 - acc: 0.8344 \n",
    "Epoch 494/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3991 - acc: 0.8356 \n",
    "Epoch 495/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3995 - acc: 0.8354 \n",
    "Epoch 496/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8372 \n",
    "Epoch 497/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3988 - acc: 0.8357 \n",
    "Epoch 498/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3990 - acc: 0.8356 \n",
    "Epoch 499/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8347 \n",
    "Epoch 500/500\n",
    "8000/8000 [==============================] - 0s - loss: 0.3992 - acc: 0.8345 \n"
    ]
    },
    {
    "data": {
    "text/plain": [
    "<keras.callbacks.History at 0x7fae5d3b5a58>"
    ]
    },
    "execution_count": 7,
    "metadata": {},
    "output_type": "execute_result"
    }
    ],
    "source": [
    "classifier = KerasClassifier(build_fn=build_classifier, batch_size=25, epochs=500)\n",
    "classifier.fit(X_train, y_train)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 8,
    "metadata": {
    "collapsed": true
    },
    "outputs": [],
    "source": [
    "# Predicting a single new observation\n",
    "#\n",
    "# Predict if the customer with the following informations will leave the bank:\n",
    "# Geography: France\n",
    "# Credit Score: 600\n",
    "# Gender: Male\n",
    "# Age: 40\n",
    "# Tenure: 3\n",
    "# Balance: 60000\n",
    "# Number of Products: 2\n",
    "# Has Credit Card: Yes\n",
    "# Is Active Member: Yes\n",
    "# Estimated Salary: 50000"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 13,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "1/1 [==============================] - 0s\n"
    ]
    }
    ],
    "source": [
    "single_data = np.array([[0.0, 0, 600, 1, 40, 3, 60000, 2, 1, 1, 50000]])\n",
    "single_data_transformed = sc.transform(single_data)\n",
    "new_prediction = classifier.predict(single_data_transformed)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": 14,
    "metadata": {},
    "outputs": [
    {
    "name": "stdout",
    "output_type": "stream",
    "text": [
    "[[False]]\n"
    ]
    }
    ],
    "source": [
    "new_prediction = (new_prediction > 0.5)\n",
    "print(new_prediction)"
    ]
    },
    {
    "cell_type": "code",
    "execution_count": null,
    "metadata": {
    "collapsed": true
    },
    "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.5.2"
    }
    },
    "nbformat": 4,
    "nbformat_minor": 2
    }
    10,001 changes: 10,001 additions & 0 deletions churn_model.csv
    10,001 additions, 0 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
    24 changes: 24 additions & 0 deletions requirements.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,24 @@
    backports.weakref==1.0rc1
    bleach==1.5.0
    cycler==0.10.0
    h5py==2.7.0
    html5lib==0.9999999
    Keras==2.0.6
    Markdown==2.6.8
    matplotlib==2.0.2
    numpy==1.13.1
    olefile==0.44
    pandas==0.20.3
    Pillow==4.2.1
    protobuf==3.3.0
    pyparsing==2.2.0
    python-dateutil==2.6.1
    pytz==2017.2
    PyYAML==3.12
    scikit-learn==0.18.2
    scipy==0.19.1
    six==1.10.0
    sklearn==0.0
    tensorflow==1.2.1
    Theano==0.9.0
    Werkzeug==0.12.2