{
  "cells": [
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "c893a647-44cb-7624-4c4f-586adda094e3"
      },
      "outputs": [],
      "source": [
        "# This Python 3 environment comes with many helpful analytics libraries installed\n",
        "# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n",
        "# For example, here's several helpful packages to load in \n",
        "\n",
        "import numpy as np # linear algebra\n",
        "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n",
        "\n",
        "# Input data files are available in the \"../input/\" directory.\n",
        "# For example, running this (by clicking run or pressing Shift+Enter) will list the files in the input directory\n",
        "\n",
        "from subprocess import check_output\n",
        "print(check_output([\"ls\", \"../input\"]).decode(\"utf8\"))\n",
        "\n",
        "# Any results you write to the current directory are saved as output."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "9adadad2-379e-3333-c34b-dc5636607992"
      },
      "outputs": [],
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "from keras.utils import np_utils\n",
        "import tensorflow as tf\n",
        "\n",
        "tf.logging.set_verbosity(tf.logging.INFO)\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings('ignore')"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "85731903-dd20-6bab-86da-9c451cf94608"
      },
      "outputs": [],
      "source": [
        "train_file = \"../input/train.csv\"\n",
        "test_file = \"../input/test.csv\"\n",
        "\n",
        "# Loading data\n",
        "X_train = pd.read_csv(train_file)\n",
        "X_test  = pd.read_csv(test_file)\n",
        "\n",
        "# Separating data and labels\n",
        "y_train=X_train['label']\n",
        "X_train=X_train.drop('label',axis=1)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "e88bb717-b69c-bdf9-f01d-7816d9e9a163"
      },
      "outputs": [],
      "source": [
        "# Normalizing data\n",
        "X_train /= 255.0\n",
        "X_test /= 255.0\n",
        "\n",
        "#I don't believe tensorflow supports float64\n",
        "X_train = X_train.astype(\"float32\")\n",
        "X_test  = X_test.astype(\"float32\")\n",
        "y_train = y_train.astype('int32')\n",
        "\n",
        "#number of features\n",
        "num_features = len(X_train.columns)\n",
        "\n",
        "#arrays\n",
        "X_train=np.array(X_train)\n",
        "X_test = np.array(X_test)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "af1f66c9-0559-3d20-26f1-c68b92d23169"
      },
      "outputs": [],
      "source": [
        "validation_monitor = tf.contrib.learn.monitors.ValidationMonitor(X_train,y_train,every_n_steps=100,\n",
        "                                                                 early_stopping_metric=\"accuracy\",\n",
        "                                                                 early_stopping_metric_minimize=False,\n",
        "                                                                 early_stopping_rounds=200)\n",
        "\n",
        "# Build 3 layer DNN with 10, 20, 10 units respectively.\n",
        "classifier = tf.contrib.learn.DNNClassifier(feature_columns=[tf.contrib.layers.real_valued_column(\"\", dimension=num_features)],\n",
        "                                            hidden_units=[500,800,500],\n",
        "                                            n_classes=10,\n",
        "                                            dropout=0.5)\n",
        "\n",
        "# Fit model\n",
        "classifier.fit(x=X_train, y=y_train, steps=100000,monitors=[validation_monitor])\n",
        "\n",
        "accuracy_score = classifier.evaluate(x=X_train, y=y_train)[\"accuracy\"]\n",
        "print('Accuracy: {0:f}'.format(accuracy_score))"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "_cell_guid": "ee1c23eb-cd0b-7e2c-2f50-073bcda48156"
      },
      "outputs": [],
      "source": [
        "predictions=list(classifier.predict(X_test, as_iterable=True))\n",
        "\n",
        "submission=pd.read_csv('../input/sample_submission.csv')\n",
        "submission['Label']=predictions\n",
        "submission.to_csv('submission_.csv',index=False)"
      ]
    }
  ],
  "metadata": {
    "_change_revision": 0,
    "_is_fork": false,
    "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.0"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}