{"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":"markdown","source":"# Kannada MNIST\n[Kannada](https://en.wikipedia.org/wiki/Kannada) is a language spoken predominantly by people of Karnataka in southwestern India. The language has roughly 45 million native speakers and is written using the Kannada script. \n\nThe daataset is collected from the [Kannada MNIST dataset](https://github.com/vinayprabhu/Kannada_MNIST) repository on GitHub. This dataset was used in a [Kaggle Playground Code Competition](https://www.kaggle.com/c/Kannada-MNIST).","metadata":{"id":"wbrD8lOdOKiH"}},{"cell_type":"code","source":"import pandas as pd\n\n\nimport keras\nimport tensorflow as tf","metadata":{"id":"yLgU_ZcuNne3","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Import all data\ntrain = pd.read_csv('../input/Kannada-MNIST/train.csv')\ntest = pd.read_csv('../input/Kannada-MNIST/test.csv')\nsample = pd.read_csv('../input/Kannada-MNIST/sample_submission.csv')\nadditional = pd.read_csv('../input/Kannada-MNIST/Dig-MNIST.csv')","metadata":{"id":"CN2efgbVNtM0","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test.head()","metadata":{"id":"6COrsM70WoZn","outputId":"1b0c8ea4-a31f-4284-e49b-bdd7d2190b2d","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample.head()","metadata":{"id":"Qm9J5jRrWp7W","outputId":"8e7f67fa-b5eb-4f2a-c90d-26a62b369db7","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.head()","metadata":{"id":"CjuE7kVLPJXU","outputId":"a5a6866f-a6e3-49ae-a06f-304d8f96fe98","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.info()","metadata":{"id":"hrIbd8PlPMB_","outputId":"3129e89f-d778-4a7a-fb13-1bb7361b2f4a","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train['label'].value_counts() # data is balanced, 6k for each label from 0 to 9","metadata":{"id":"VfQ3lEg-PUu2","outputId":"fa33e9ff-5525-4085-8831-165bdc91608a","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\nfrom tensorflow import keras\nfrom tensorflow.keras import layers","metadata":{"id":"h1iqJ7q5PXhy","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# model paramaters\nnum_classes = 10\ninput_shape = (28, 28, 1)","metadata":{"id":"WINuK6NpPxwk","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_without_label = train.drop('label', axis=1)\ntrain_without_label.head()","metadata":{"id":"9OiFZvOyQtAO","outputId":"89a3c766-5ab9-4b81-e921-cba8a16bd02b","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train.shape","metadata":{"id":"xVFbQVEVSVg1","outputId":"f2efc89a-7643-4578-bb91-17c0d5f11e34","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = train.iloc[:, 1:].values.astype('float32') / 255","metadata":{"id":"LdP3FeoISZNL","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = train.iloc[:, 0] # labels","metadata":{"id":"HSxn-ttVTmbr","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# split data\nfrom sklearn.model_selection import train_test_split\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)","metadata":{"id":"0-1aJwcEP52D","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.shape","metadata":{"id":"uXILwHLwULOJ","outputId":"3ac504b9-a1d4-4348-8c82-2b0f0baaf2f7","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = np.expand_dims(X_train, -1)\nX_train.shape","metadata":{"id":"KxyYLm7iUycB","outputId":"fe5c1fb2-ffd2-45f8-887b-5d942fb06fa7","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.utils.np_utils import to_categorical","metadata":{"id":"-l-jl9OxUqiL","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train = X_train.reshape(-1, 28, 28, 1)\nX_test = X_test.reshape(-1, 28, 28, 1)\ny_train = to_categorical(y_train)\ny_test = to_categorical(y_test)","metadata":{"id":"oHvUa01LURM7","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X_train.shape","metadata":{"id":"GfRn_XcJUrun","outputId":"677b0a7d-5f3c-4d1f-ed14-2a3435923626","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_train.shape","metadata":{"id":"NbkxO-kyVGgz","outputId":"4159de43-0a27-4913-e360-59a575a061e3","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = keras.Sequential(\n    [keras.Input(shape=(28, 28, 1)),\n     layers.Conv2D(32, kernel_size=(3,3), activation='relu'),\n     layers.MaxPooling2D(pool_size=(2,2)),\n     layers.Flatten(),\n     layers.Dense(128, activation='relu'),\n     layers.Dense(10, activation='softmax')]\n)\nmodel.summary()","metadata":{"id":"fej899VJVW8V","outputId":"f7e94717-0346-4a00-e19a-3089b24b86b9","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"batch_size = 128\nepochs = 5\n\nmodel.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy'])\nmodel.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=0.1)","metadata":{"id":"WzGqAiAKV0pY","outputId":"251867ff-7686-4d87-ded0-310bf5717105","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"score = model.evaluate(X_test, y_test)\nprint(\"Test loss:\", score[0])\nprint(\"Test accuracy:\", score[1])","metadata":{"id":"VS6zcBWPWLR3","outputId":"7901bcc4-9b99-4c9b-aa6d-335826fd2c28","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample.head()","metadata":{"id":"yDhJ3uBLW07g","outputId":"5565c0dc-3d03-4e9f-ab6a-c0b25129e04f","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"\nraw_test = test","metadata":{"id":"MCCZus-1XNFW","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sample_sub=sample\nraw_test_id=raw_test.id\nraw_test=raw_test.drop(\"id\",axis=\"columns\")\nraw_test=raw_test / 255\ntest=raw_test.values.reshape(-1,28,28,1)\ntest.shape","metadata":{"id":"XF4bIMqiXl9Q","outputId":"c06873ae-df8a-40e2-9916-a1d3e428f8fb","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub=model.predict(test)     ##making prediction\nsub=np.argmax(sub,axis=1) ##changing the prediction intro labels\n\nsample_sub['label']=sub\nsample_sub.to_csv('submission.csv',index=False)","metadata":{"id":"zfiMSEx9Xv4W","trusted":true},"execution_count":null,"outputs":[]}]}