{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import tensorflow as tf\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\n\n# Make numpy values easier to read.\nnp.set_printoptions(precision=3, suppress=True)\n\nfrom tensorflow.keras import layers\nfrom tensorflow.keras.layers.experimental import preprocessing","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19"},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train = pd.read_csv(\"../input/digit-recognizer/train.csv\")\ntest = pd.read_csv(\"../input/digit-recognizer/test.csv\")\n\ntest.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_features = train.copy()\ntrain_labels = train_features.pop('label')\n\nnames=[\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"]","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_features = np.array(train_features)\ntrain_labels = np.array(train_labels)\n\ntest_features = np.array(test)\n\ntrain_features_preview = tf.reshape(train_features, [42000, 28, -1])\ntest_features_preview = tf.reshape(test_features, [28000, 28, -1])\n\n\n\nprint(train_features_preview.shape)\nprint(train_features.shape)\nprint(train_labels.shape)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure()\nplt.imshow(train_features_preview[2000])\nplt.colorbar()\nplt.grid(False)\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.figure(figsize=(12,12))\nfor i in range(24):\n    plt.subplot(6,6,i+1)\n    plt.xticks([])\n    plt.yticks([])\n    plt.grid(False)\n    plt.imshow(train_features_preview[i], cmap=plt.cm.binary)\n    plt.xlabel(names[train_labels[i]])\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_features = train_features / 255.0;","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = tf.keras.Sequential([\n    tf.keras.layers.Dense(784), # tf.keras.layers.Flatten(input_shape=(28, 28)),\n    tf.keras.layers.Dense(128, activation='relu'),\n    tf.keras.layers.Dense(10)\n])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer='adam',\n              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),\n              metrics=['accuracy'])","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(train_features, train_labels, epochs = 50)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"probability_model = tf.keras.Sequential([model, tf.keras.layers.Softmax()])\n\npredictions = probability_model.predict(test_features)","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"n_test = 72\n\n# for i in range(0,n_test):\n#     predict = np.argmax(predictions[i]);\n#     print(\"Predict: \" + str(predict))\n\nplt.figure(figsize=(12,24))\nfor i in range(n_test):\n    predict = np.argmax(predictions[i]);\n    plt.subplot(12,6,i+1)\n    plt.xticks([])\n    plt.yticks([])\n    plt.grid(False)\n    plt.imshow(test_features_preview[i], cmap=plt.cm.binary)\n    plt.xlabel(names[predict])\nplt.show()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import csv\n\nf = open('submission.csv', 'w')\nwriter = csv.writer(f)\nwriter.writerow([\"ImageId\",\"Label\"])\n\nfor i in range(0,len(predictions)):\n    predict = np.argmax(predictions[i]);\n    writer.writerow([i+1,predict])\n\nf.close()\n\nsubmission = pd.read_csv(\"submission.csv\")\nsubmission.head()","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}