{"cells":[{"metadata":{"trusted":false,"_uuid":"3f6a186c15f42f26a3fb5572b40b4ea57863e670"},"cell_type":"code","source":"# Import Libraries\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n%matplotlib inline","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"8207fd8bb83ab5bf0ba806dd2f83c589168e2775"},"cell_type":"code","source":"# Import train datastet\ntrain = pd.read_csv('../input/train.csv')\ntrain.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"a63a127f17301274ad90ba7534a75dab774d0c94"},"cell_type":"code","source":"test=pd.read_csv('../input/test.csv')\ntest.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"f68c4f6e18e2e76cb33f4e22a3f3288695da74ca"},"cell_type":"code","source":"#Checking missing values\ndef find_missing(train,test):\n    count_missing_train=train.isnull().sum().values\n    count_missing_test=train.isnull().sum().values\n    total_train=train.shape[0]\n    total_test=test.shape[0]\n    ratio_missing_train=count_missing_train/total_train*100\n    ratio_missing_test=count_missing_test/total_test*100\n    return pd.DataFrame({'Missing_train':count_missing_train,'Missing_Ratio_Train':ratio_missing_train,\n                        'Missing_test':count_missing_test,'Missing_Ratio_Test':ratio_missing_test},\n                       index=train.columns)\ndf_missing=find_missing(train.drop(columns='label',axis=1),test)\ndf_missing=df_missing[df_missing['Missing_Ratio_Train']>0].sort_values(by='Missing_Ratio_Train',ascending=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"59227e4f90165098d6d476f0a24a2fd17b95f16a"},"cell_type":"code","source":"df_missing.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"eaf47be32d4df09e9fc82a03d061269feddd4aec"},"cell_type":"code","source":"# There is no missing values in train and test sets","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"9a0394148e5584daecdef294fc0057c1d9e37ed9"},"cell_type":"code","source":"# Splitting to target\ntrain_target=train.iloc[:,0].values","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"931cee8745418aff7210e9f7ca79a3d48e102cbb"},"cell_type":"code","source":"# Normalization\ntrain=train.drop(columns='label')/255.0\ntest=test/255.0\n# Reshape\ntrain=train.values.reshape(-1,28,28,1)\ntest=test.values.reshape(-1,28,28,1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"02fbe6bfbad0ca1c1a06566e4c09843abd602e52"},"cell_type":"code","source":"# Encoding the target\ntrain_target=pd.get_dummies(train_target)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"ffe75a87192d0322f38669f6be7946eb08052be4"},"cell_type":"code","source":"# Splitting the dataset\nfrom sklearn.model_selection import train_test_split\nx_train,x_test,y_train,y_test=train_test_split(train,train_target,test_size=0.2,random_state=0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"5120f898a909f747fce68c2f3d2304fcb711ed3e"},"cell_type":"code","source":"# Building the CNN\nfrom keras.models import Sequential\nfrom keras.layers import Convolution2D\nfrom keras.layers import MaxPooling2D\nfrom keras.layers import Flatten\nfrom keras.layers import Dense\nfrom keras.layers import Dropout\n\n# Initialising the CNN\nclassifier=Sequential()\n# Convolution\nclassifier.add(Convolution2D(32,5,5,input_shape=(28,28,1),activation='relu'))\nclassifier.add(Convolution2D(32,5,5,input_shape=(28,28,1),activation='relu'))\n# Pooling\nclassifier.add(MaxPooling2D(pool_size=(2,2)))\nclassifier.add(Dropout(0.25))\n\n# Another Convolution\nclassifier.add(Convolution2D(64,3,3,activation='relu'))\nclassifier.add(Convolution2D(64,3,3,activation='relu'))\n#Pooling\nclassifier.add(MaxPooling2D(pool_size=(2,2)))\nclassifier.add(Dropout(0.25))\n\n# Flatten\nclassifier.add(Flatten())\n\n# Full Connection\nclassifier.add(Dense(output_dim=128,activation='relu'))\nclassifier.add(Dropout(0.5))\nclassifier.add(Dense(output_dim=10,activation='sigmoid'))\n\n# Compiling the CNN\nclassifier.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"0e7841758cf19ab556888ca85ddd7d07f2adbc20"},"cell_type":"code","source":"from keras.preprocessing.image import ImageDataGenerator\ntrain_datagen=ImageDataGenerator(\n        shear_range=0.2,\n        zoom_range=0.2,\n        horizontal_flip=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"961935a239f03d8b3f705f1190694a9ce6ae8683"},"cell_type":"code","source":"train_datagen.fit(train)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"6cff706e404da4a8a08d861bf5420652ec5f042a"},"cell_type":"code","source":"classifier.fit_generator(\ntrain_datagen.flow(train,train_target,batch_size=84),nb_epoch=2,\n    validation_data=(x_train,y_train),verbose=2,samples_per_epoch=train.shape[0])","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"57b5335475061310fc30a66f7cdce78a7ff4a15c"},"cell_type":"code","source":"predictions=classifier.predict(test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"f2086444e723b28467e56cfb47eae2c4d0ab3fcb"},"cell_type":"code","source":"predictions=np.argmax(predictions,axis=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"7dead26539023b442e836a59d832b32e116efd35"},"cell_type":"code","source":"predictions=pd.Series(predictions)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"bd579c0081e5b2e01ffc13d572e42bb435f60fb8"},"cell_type":"code","source":"submission=pd.DataFrame({'ImageId':range(1,28001)})\nsubmission['label']=predictions\nsubmission.to_csv('submission.csv',index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":false,"_uuid":"32e883aacfac0016b66175dc2439e65eaa455332"},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"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.5"}},"nbformat":4,"nbformat_minor":1}