{"cells":[{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"f4bb0d5a-8e8f-ecff-5626-7c4eed81fa01"},"outputs":[],"source":"import numpy as np\nimport pandas as pd\n\nfrom keras.models import Sequential\nfrom keras.layers import Activation, Dense, Dropout, Flatten\nfrom keras.layers import Convolution2D, MaxPooling2D\nfrom keras.utils import np_utils\nfrom keras import backend as K"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"8d4c362b-057f-1316-56f0-5a792b66ea38"},"outputs":[],"source":"# load_data\ntrain_data = pd.read_csv('../input/train.csv')\n\nlabels = train_data.label.values.astype('int32')\ntrain_data = train_data.drop('label', axis=1).as_matrix().astype('float32')\n\ntest_data = pd.read_csv('../input/test.csv').as_matrix().astype('float32')\n\n# make label vectors\ny_train = np_utils.to_categorical(labels) "},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"0c9f7c1b-f86a-cb4e-03d6-d152e2972b86"},"outputs":[],"source":"# normalize 0-1, max is 255, so...\nX_train = train_data / np.max(train_data)\nX_test = test_data / np.max(train_data)\n\n# maybe norm by mean too?\n# X_train = train_data / np.mean(X_train)\n# X_test = test_data / np.mean(X_train)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"66c57e80-a421-630d-df80-7157dfff9bd9"},"outputs":[],"source":"img_size = (28, 28)\n\nX_train = X_train.reshape(X_train.shape[0], img_size[0], img_size[1], 1)\nX_test = X_test.reshape(X_test.shape[0], img_size[0], img_size[1], 1)\nimage_shape = (img_size[0], img_size[1], 1)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"94ed2b6a-a877-e11f-9adb-c810a8901cc2"},"outputs":[],"source":"\n# number of convolutional filters to use\nfilters = 8\npool = (2, 2)\nkernel = (3, 3)\ndense = 128\ndp = 0.2\n\nmodel = Sequential()\nmodel.add(Convolution2D(filters, \n                        kernel[0], \n                        kernel[1],\n                        border_mode='same',\n                        input_shape=image_shape))\nmodel.add(Activation('relu'))\nmodel.add(Convolution2D(filters, kernel[0], kernel[1]))\nmodel.add(Activation('relu'))\nmodel.add(Convolution2D(filters, kernel[0], kernel[1]))\nmodel.add(Activation('relu'))\nmodel.add(Convolution2D(filters, kernel[0], kernel[1]))\nmodel.add(Activation('relu'))\nmodel.add(MaxPooling2D(pool_size=pool))\nmodel.add(Dropout(dp))\nmodel.add(Flatten())\nmodel.add(Dense(dense))\nmodel.add(Activation('relu'))\nmodel.add(Dropout(dp))\nmodel.add(Dense(y_train.shape[1]))\nmodel.add(Activation('softmax'))\n\nmodel.compile(loss='categorical_crossentropy',\n              optimizer='adadelta',\n              metrics=['accuracy'])"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"71404249-0876-23a0-50cc-ebf327e7f698"},"outputs":[],"source":"print(\"Moneky see...\")\nmodel.fit(X_train, \n          y_train, \n          nb_epoch=10, \n          batch_size=32, \n          validation_split=0.1, \n          shuffle=True,\n          verbose=1)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"529c5c78-f0d3-e322-c7d8-4dedbbb05ab8"},"outputs":[],"source":"print(\"Monkey test...\")\ny_hat = model.predict_classes(X_train, verbose=0)\nacc = sum(y_hat==labels)/len(labels)\nbest_so_far = 0.993119047619\nprint(acc, acc - best_so_far)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"aa1dada1-5e11-31f1-a3d3-fd8295df852b"},"outputs":[],"source":"print(\"Monkey do...\")\npredictions = model.predict_classes(X_test, verbose=0)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"84954964-761e-67dd-d93f-ce29c8cdb392"},"outputs":[],"source":"save_me = pd.DataFrame({\"Label\": predictions})\nsave_me.index = save_me.index + 1\n\nsave_me.to_csv(\"keras_mnist_v0.1.csv\",index_label='ImageId')\n\nsave_me.head()"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"09a7d4fa-046b-e6ae-96db-7a8cc6aa8dce"},"outputs":[],"source":""}],"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.5.2"}},"nbformat":4,"nbformat_minor":0}