{"metadata":{"language_info":{"file_extension":".py","mimetype":"text/x-python","nbconvert_exporter":"python","codemirror_mode":{"version":3,"name":"ipython"},"version":"3.6.4","name":"python","pygments_lexer":"ipython3"},"kernelspec":{"language":"python","name":"python3","display_name":"Python 3"}},"cells":[{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\nfrom keras.utils import to_categorical\nimport seaborn as sns\nnp.random.seed(2)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"train=pd.read_csv('../input/train.csv')\ntest=pd.read_csv('../input/test.csv')","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{},"source":"Y_train=train['label']\nX_train=train.drop(labels=['label'],axis=1)\n# del train\nY_train.value_counts()\nX_train.isnull().any().describe()\ntest.isnull().any().describe()","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"X_train=X_train/255.0\ntest=test/255.0","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"X_train = X_train.values.reshape(-1,28,28,1)\ntest = test.values.reshape(-1,28,28,1)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"Y_train = to_categorical(Y_train, num_classes = 10)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"from sklearn.model_selection import train_test_split\nfrom sklearn.metrics import confusion_matrix\nimport itertools\n# Split the train and the validation set for the fitting\nX_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size = 0.2, \n                                                  random_state=33)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"from keras import layers\nfrom keras import models\nmodel = models.Sequential()\nmodel.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))\nmodel.add(layers.MaxPooling2D((2, 2)))\nmodel.add(layers.Conv2D(64, (3, 3), activation='relu'))\nmodel.add(layers.MaxPooling2D((2, 2)))\nmodel.add(layers.Conv2D(64, (3, 3), activation='relu'))","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{},"source":"model.add(layers.Flatten())\nmodel.add(layers.Dense(64, activation='relu'))\nmodel.add(layers.Dense(10, activation='softmax'))\nmodel.summary()","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{},"source":"\nX_train2 = to_categorical(X_train)\nY_train2 = to_categorical(Y_train)\nmodel.compile(optimizer='rmsprop',\n              loss='categorical_crossentropy',\n              metrics=['accuracy'])\nmodel.fit(X_train, Y_train, epochs=5, batch_size=64)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"Y_test=model.predict(X_val)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"results = model.predict(test)\nresults = np.argmax(results,axis=1)\nresults = pd.Series(results,name='Label')","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{},"source":"results.shape","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"submission = pd.concat([pd.Series(range(1,28001),name = \"ImageId\"),results],axis = 1)\nsubmission.to_csv('CNN_digit_recognizer_v3.csv',\n                  index=False)","outputs":[]},{"cell_type":"code","execution_count":null,"metadata":{"collapsed":true},"source":"","outputs":[]}],"nbformat":4,"nbformat_minor":1}