{"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 library\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport pandas as pd\nfrom keras.models import Sequential\nfrom keras.layers import Dense,Dropout,Activation,Flatten,Conv2D,MaxPooling2D\nfrom keras.utils import np_utils","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:07.298557Z","iopub.execute_input":"2023-01-10T09:35:07.298955Z","iopub.status.idle":"2023-01-10T09:35:07.304954Z","shell.execute_reply.started":"2023-01-10T09:35:07.298912Z","shell.execute_reply":"2023-01-10T09:35:07.303574Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# prepare data\ntrain = pd.read_csv(\"/kaggle/input/Kannada-MNIST/train.csv\")\ntest = pd.read_csv(\"/kaggle/input/Kannada-MNIST/Dig-MNIST.csv\")\n","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:07.307151Z","iopub.execute_input":"2023-01-10T09:35:07.308059Z","iopub.status.idle":"2023-01-10T09:35:09.814170Z","shell.execute_reply.started":"2023-01-10T09:35:07.308023Z","shell.execute_reply":"2023-01-10T09:35:09.813180Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# data is file csv\ndef data_processing(data):\n    x = data.drop(\"label\",axis = 1)\n    y = data[\"label\"]\n    x_ = np.array(x)\n    y_ = np.array(y)\n    x_ = x_.reshape(x_.shape[0],28,28,1)\n    y_ = np_utils.to_categorical(y_, 10)\n    return x_,y_\nX_train,Y_train = data_processing(train)\nX_test,Y_test = data_processing(test)\nX_val,Y_val = X_train[50000:60000,:], Y_train[50000:60000]\nX_train, Y_train = X_train[:50000,:], Y_train[:50000]\n\n# show shape of matrix\nprint(X_train.shape)\nprint(X_test.shape)\nprint(Y_train.shape)\nprint(Y_test.shape)\n    ","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:09.815888Z","iopub.execute_input":"2023-01-10T09:35:09.816310Z","iopub.status.idle":"2023-01-10T09:35:10.105027Z","shell.execute_reply.started":"2023-01-10T09:35:09.816273Z","shell.execute_reply":"2023-01-10T09:35:10.103934Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#show data \n\nfor i in range(5):\n    plt.imshow(X_train[i*10+1],cmap = 'gray')\n    print(Y_train[i*10+1])\n    plt.pause(0.5)\n","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:10.108021Z","iopub.execute_input":"2023-01-10T09:35:10.108763Z","iopub.status.idle":"2023-01-10T09:35:13.588805Z","shell.execute_reply.started":"2023-01-10T09:35:10.108722Z","shell.execute_reply":"2023-01-10T09:35:13.587703Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#define model\nmodel = Sequential()\n\nmodel.add(Conv2D(64, (3, 3), activation='relu', input_shape=(28,28,1)))\n#  Convolutional layer\nmodel.add(Conv2D(64, (3, 3), activation='relu'))\n#  Max pooling layer\nmodel.add(MaxPooling2D(pool_size=(2,2)))\n\nmodel.add(Conv2D(128, (3, 3), activation='relu'))\n#  Convolutional layer\nmodel.add(Conv2D(128, (3, 3), activation='relu'))\n#  Max pooling layer\nmodel.add(MaxPooling2D(pool_size=(2,2)))\n\nmodel.add(Flatten())\nmodel.add(Dense(256, activation='relu'))\nmodel.add(Dense(128, activation='relu'))\nmodel.add(Dense(64, activation='relu'))\nmodel.add(Dense(32, activation='relu'))\nmodel.add(Dense(10, activation='softmax'))\n\nmodel.compile(loss='categorical_crossentropy',\noptimizer='adam',\nmetrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:13.593240Z","iopub.execute_input":"2023-01-10T09:35:13.593600Z","iopub.status.idle":"2023-01-10T09:35:13.688604Z","shell.execute_reply.started":"2023-01-10T09:35:13.593569Z","shell.execute_reply":"2023-01-10T09:35:13.686938Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"H = model.fit(X_train, Y_train, validation_data=(X_val, Y_val),\nbatch_size=32, epochs=20, verbose=2)","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:13.689980Z","iopub.status.idle":"2023-01-10T09:35:13.690781Z","shell.execute_reply.started":"2023-01-10T09:35:13.690530Z","shell.execute_reply":"2023-01-10T09:35:13.690555Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#check\nscore = model.evaluate(X_test, Y_test, verbose=0)\nprint(score)\n# plt.imshow(X_test[4].reshape(28,28), cmap='gray')\n# y_predict = model.predict(X_test[4].reshape(1,28,28,1))\n# print(np.argmax(y_predict))\n\n","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:13.692300Z","iopub.status.idle":"2023-01-10T09:35:13.693087Z","shell.execute_reply.started":"2023-01-10T09:35:13.692809Z","shell.execute_reply":"2023-01-10T09:35:13.692835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = []\nsubmit = pd.read_csv(\"/kaggle/input/Kannada-MNIST/test.csv\")\nX_submit = submit.drop(\"id\",axis = 1)\nX_sub = np.array(X_submit)\nX_sub = X_sub.reshape(X_sub.shape[0],28,28,1)\nfor i in range(len(X_sub)):\n    y_predict = model.predict(X_sub[i].reshape(1,28,28,1))\n    pred.append(np.argmax(y_predict))","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:13.694712Z","iopub.status.idle":"2023-01-10T09:35:13.695505Z","shell.execute_reply.started":"2023-01-10T09:35:13.695244Z","shell.execute_reply":"2023-01-10T09:35:13.695268Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image_id = [i for i in range(len(pred))]\noutfile = 'submission.csv'\nresult = {'id':image_id, 'label':pred}\ndf = pd.DataFrame(data=result)\ndf.to_csv(outfile, index=False)\nprint('Finished creating subsmission file {}'.format(outfile))","metadata":{"execution":{"iopub.status.busy":"2023-01-10T09:35:13.696955Z","iopub.status.idle":"2023-01-10T09:35:13.697752Z","shell.execute_reply.started":"2023-01-10T09:35:13.697494Z","shell.execute_reply":"2023-01-10T09:35:13.697518Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}