{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":3004,"databundleVersionId":861823,"sourceType":"competition"}],"dockerImageVersionId":30664,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nfrom tensorflow.keras.utils import to_categorical\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Dense, Flatten, Conv2D, MaxPooling2D\nimport numpy as np","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-03-03T18:26:16.736367Z","iopub.execute_input":"2024-03-03T18:26:16.736699Z","iopub.status.idle":"2024-03-03T18:26:29.976732Z","shell.execute_reply.started":"2024-03-03T18:26:16.736672Z","shell.execute_reply":"2024-03-03T18:26:29.975852Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_data= pd.read_csv('/kaggle/input/digit-recognizer/train.csv')\ntest_data= pd.read_csv('/kaggle/input/digit-recognizer/test.csv')\ntrain_data.head()\ntest_data.head()","metadata":{"execution":{"iopub.status.busy":"2024-03-03T18:26:55.417445Z","iopub.execute_input":"2024-03-03T18:26:55.417994Z","iopub.status.idle":"2024-03-03T18:26:59.180306Z","shell.execute_reply.started":"2024-03-03T18:26:55.417967Z","shell.execute_reply":"2024-03-03T18:26:59.179057Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"train_labels= pd.DataFrame()\ntrain_labels= train_data['label'].values\ntrain_data1=pd.DataFrame()\ntrain_data1= train_data.iloc[:, 1:]\ntrain_data1= train_data1.astype('float32')/255\ntest_data= test_data.astype('float32')/255\ntrain_labels= to_categorical(train_labels)\ndef create_cnn_model():\n    model_cnn= Sequential()\n    model_cnn.add(Conv2D(32, kernel_size= (3,3), activation= 'relu', input_shape= (28,28,1)))\n    model_cnn.add(MaxPooling2D(pool_size= (2,2)))\n    model_cnn.add(Conv2D(64, kernel_size= (3,3), activation= 'relu'))\n    model_cnn.add(MaxPooling2D(pool_size= (2,2)))\n    model_cnn.add(Flatten())\n    model_cnn.add(Dense(384, activation= 'relu'))\n    model_cnn.add(Dense(384, activation= 'relu'))\n    model_cnn.add(Dense(10, activation = 'softmax'))\n    model_cnn.compile(optimizer= 'adam', loss= 'categorical_crossentropy', metrics= ['accuracy'])\n    return model_cnn\ntrain_labels = train_data['label'].values\ntrain_data = train_data.drop(columns=['label'])\ntrain_data_reshaped = train_data.values.reshape(-1, 28, 28, 1)\ntrain_data_reshaped = train_data_reshaped.astype('float32') / 255.0\ntrain_labels = to_categorical(train_labels)\nif train_data_reshaped.shape[0] == 0:\n    print(\"Training data is empty. Please check data loading and preprocessing.\")\nelse:\n    model_cnn = create_cnn_model()\n    history = model_cnn.fit(train_data_reshaped, train_labels, epochs=10, batch_size=128, validation_split=0.25)\n    validation_accuracy = history.history['val_accuracy'][-1]\n    print(f\"Validation Accuracy: {validation_accuracy * 100}\")\n","metadata":{"execution":{"iopub.status.busy":"2024-03-03T18:26:59.321846Z","iopub.execute_input":"2024-03-03T18:26:59.322169Z","iopub.status.idle":"2024-03-03T18:29:25.961371Z","shell.execute_reply.started":"2024-03-03T18:26:59.322143Z","shell.execute_reply":"2024-03-03T18:29:25.960348Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data_arr= test_data.to_numpy()\ntest_data_reshaped= test_data_arr.reshape((-1,28,28,1))\npredictions= model_cnn.predict(test_data_reshaped)","metadata":{"execution":{"iopub.status.busy":"2024-03-03T18:29:33.563691Z","iopub.execute_input":"2024-03-03T18:29:33.564087Z","iopub.status.idle":"2024-03-03T18:29:39.049036Z","shell.execute_reply.started":"2024-03-03T18:29:33.564056Z","shell.execute_reply":"2024-03-03T18:29:39.047744Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predicted_classes= np.argmax(predictions, axis=1)\nresults= pd.Series(predicted_classes, name=\"Label\")\nsubmission= pd.concat([pd.Series(range(1,28001), name=\"ImageId\"), results], axis=1)\nsubmission.to_csv(\"submission.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2024-03-03T18:30:01.086569Z","iopub.execute_input":"2024-03-03T18:30:01.086977Z","iopub.status.idle":"2024-03-03T18:30:01.112227Z","shell.execute_reply.started":"2024-03-03T18:30:01.086951Z","shell.execute_reply":"2024-03-03T18:30:01.111211Z"},"trusted":true},"execution_count":null,"outputs":[]}]}