{"cells":[{"cell_type":"markdown","metadata":{"_cell_guid":"9692a1c0-ad8f-033f-015a-b1c72bdc69e9"},"source":"Notebook for Digits Recognizer"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"a35505ce-2f70-191b-efb8-3c751f1e6415"},"outputs":[],"source":"import numpy as np\nimport pandas as pd\nfrom keras.datasets import mnist\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Dropout, Activation, Flatten\nfrom keras.layers import Convolution2D, MaxPooling2D\nfrom keras.utils import np_utils\nfrom keras import backend as K\nfrom sklearn.cross_validation import train_test_split\nimport matplotlib.pyplot as plt\n\nbatch_size = 128\nnb_classes = 10\nnb_epoch = 1\n\n# input image dimensions\nimg_rows, img_cols = 28, 28\n# number of convolutional filters to use\nnb_filters = 32\n# size of pooling area for max pooling\npool_size = (2, 2)\n# convolution kernel size\nkernel_size = (3, 3)\n\ndf1 = pd.read_csv('../input/train.csv')\ndf2 = pd.read_csv('../input/test.csv')\n"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"df1b2446-5ec8-0385-2b42-3eb1c40c663d"},"outputs":[],"source":"print(len(df1))\n#print(df1.columns.values)\n\ny_train = np.array(df1['label'].astype(float))\nX_train = np.array(df1.drop(['label'], 1).astype(float))\n\nX_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size = 0.2, random_state = 4)\nX_test = np.array(df2).reshape(28000, 784)\n\nprint(y_train.shape, X_train.shape)\nprint(y_val.shape, X_val.shape)\nprint(K.image_dim_ordering())\nprint(X_test.shape)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"d6313c1f-5489-d211-8607-ef196ea50964"},"outputs":[],"source":"X_train = X_train.reshape(X_train.shape[0], img_rows, img_cols, 1)\nX_val = X_val.reshape(X_val.shape[0], img_rows, img_cols, 1)\nX_test = X_test.reshape(X_test.shape[0], img_rows, img_cols, 1)\ninput_shape = (img_rows, img_cols, 1)\n\nX_train = X_train.astype('float32')\nX_val = X_val.astype('float32')\nX_test = X_test.astype('float32')\nX_train /= 255\nX_val /= 255\nX_test /= 255\nprint(X_train.shape, 'X_train shape')\nprint(X_train.shape[0], 'train samples')\nprint(X_val.shape[0], 'validation samples')\nprint(X_test.shape[0], 'test samples')\n\n# convert class vectors to binary class matrices\nY_train = np_utils.to_categorical(y_train, nb_classes)\nY_val = np_utils.to_categorical(y_val, nb_classes)"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"a771b559-8de5-d02b-f143-2f43d9e18044"},"outputs":[],"source":"model = Sequential()\n\nmodel.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1], border_mode='valid', input_shape=input_shape))\nmodel.add(Activation('relu'))\nmodel.add(Convolution2D(nb_filters, kernel_size[0], kernel_size[1]))\nmodel.add(Activation('relu'))\nmodel.add(MaxPooling2D(pool_size=pool_size))\nmodel.add(Dropout(0.25))\n\nmodel.add(Flatten())\nmodel.add(Dense(128))\nmodel.add(Activation('relu'))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(nb_classes))\nmodel.add(Activation('softmax'))\n\nmodel.compile(loss='categorical_crossentropy', optimizer='adadelta', metrics=['accuracy'])\n\nmodel.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_data=(X_val, Y_val))\nscore = model.evaluate(X_val, Y_val, verbose=0)\nprint('Test score:', score[0])\nprint('Test accuracy:', score[1])\n\ny_pred = model.predict_classes(X_test)\n"},{"cell_type":"code","execution_count":null,"metadata":{"_cell_guid":"e3e66d01-f80e-e742-0cb4-aafc6bc9b4dd"},"outputs":[],"source":"print(y_pred[:25])\n#print(y_test[0:25])\n\nfig, axes = plt.subplots(12,12, figsize = (28,28))\nfig.subplots_adjust(hspace = 0.1, wspace = 0.1)\n\nprint(axes.shape)\n\n# Plot the impages starting from i = 1\nfor i, ax in enumerate(axes.flat):\n    a = i+100\n    im = np.reshape(X_test[a], (28,28))\n    ax.imshow(im, cmap = 'binary')\n    ax.text(0.95, 0.05, 'Predict={0}'.format(y_pred[a]), ha='right', transform = ax.transAxes, color = 'blue', size=20)\n    ax.set_xticks([])\n    ax.set_yticks([])"}],"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}