{"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":30646,"isInternetEnabled":false,"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-11-25T19:32:40.139562Z","iopub.execute_input":"2024-11-25T19:32:40.140949Z","iopub.status.idle":"2024-11-25T19:32:40.153218Z","shell.execute_reply.started":"2024-11-25T19:32:40.140885Z","shell.execute_reply":"2024-11-25T19:32:40.152042Z"},"trusted":true},"outputs":[],"execution_count":null},{"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')","metadata":{"execution":{"iopub.status.busy":"2024-11-25T19:32:40.155393Z","iopub.execute_input":"2024-11-25T19:32:40.155883Z","iopub.status.idle":"2024-11-25T19:32:44.256223Z","shell.execute_reply.started":"2024-11-25T19:32:40.155853Z","shell.execute_reply":"2024-11-25T19:32:44.255118Z"},"trusted":true},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.258206Z","iopub.execute_input":"2024-11-25T19:32:44.258558Z","iopub.status.idle":"2024-11-25T19:32:44.277965Z","shell.execute_reply.started":"2024-11-25T19:32:44.258530Z","shell.execute_reply":"2024-11-25T19:32:44.276640Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test_data.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.279246Z","iopub.execute_input":"2024-11-25T19:32:44.279658Z","iopub.status.idle":"2024-11-25T19:32:44.301404Z","shell.execute_reply.started":"2024-11-25T19:32:44.279628Z","shell.execute_reply":"2024-11-25T19:32:44.300118Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_labels= pd.DataFrame()\ntrain_labels= train_data['label'].values","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.303769Z","iopub.execute_input":"2024-11-25T19:32:44.304150Z","iopub.status.idle":"2024-11-25T19:32:44.314595Z","shell.execute_reply.started":"2024-11-25T19:32:44.304121Z","shell.execute_reply":"2024-11-25T19:32:44.313330Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data1=pd.DataFrame()\ntrain_data1= train_data.iloc[:, 1:]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.315904Z","iopub.execute_input":"2024-11-25T19:32:44.316295Z","iopub.status.idle":"2024-11-25T19:32:44.328419Z","shell.execute_reply.started":"2024-11-25T19:32:44.316268Z","shell.execute_reply":"2024-11-25T19:32:44.327104Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_data1= train_data1.astype('float32')/255\ntest_data= test_data.astype('float32')/255","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.329812Z","iopub.execute_input":"2024-11-25T19:32:44.330191Z","iopub.status.idle":"2024-11-25T19:32:44.535903Z","shell.execute_reply.started":"2024-11-25T19:32:44.330162Z","shell.execute_reply":"2024-11-25T19:32:44.534734Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_labels= to_categorical(train_labels)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.537494Z","iopub.execute_input":"2024-11-25T19:32:44.537924Z","iopub.status.idle":"2024-11-25T19:32:44.545120Z","shell.execute_reply.started":"2024-11-25T19:32:44.537888Z","shell.execute_reply":"2024-11-25T19:32:44.543678Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"def create_modified_cnn_model():\n    model_cnn = Sequential()\n\n    # Primera capa de convolución\n    model_cnn.add(Conv2D(32, kernel_size=(5, 5), activation='relu', input_shape=(28, 28, 1)))\n    model_cnn.add(MaxPooling2D(pool_size=(2, 2)))\n\n    # Segunda capa de convolución (nueva capa añadida)\n    model_cnn.add(Conv2D(64, kernel_size=(5, 5), activation='relu'))\n    model_cnn.add(MaxPooling2D(pool_size=(2, 2)))\n\n    # Tercera capa de convolución (nueva capa añadida)\n    model_cnn.add(Conv2D(128, kernel_size=(3, 3), activation='relu'))\n\n    # Flatten para transformar las características extraídas en vectores\n    model_cnn.add(Flatten())\n\n    # Primera capa Fully Connected\n    model_cnn.add(Dense(512, activation='relu'))\n\n    # Segunda capa Fully Connected (nueva capa añadida)\n    model_cnn.add(Dense(256, activation='relu'))\n\n    # Capa de salida con softmax para clasificación\n    model_cnn.add(Dense(10, activation='softmax'))\n\n    # Compilación del modelo\n    model_cnn.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n\n    return model_cnn","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.546395Z","iopub.execute_input":"2024-11-25T19:32:44.546704Z","iopub.status.idle":"2024-11-25T19:32:44.559819Z","shell.execute_reply.started":"2024-11-25T19:32:44.546679Z","shell.execute_reply":"2024-11-25T19:32:44.558720Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"train_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)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.561218Z","iopub.execute_input":"2024-11-25T19:32:44.561539Z","iopub.status.idle":"2024-11-25T19:32:44.779500Z","shell.execute_reply.started":"2024-11-25T19:32:44.561515Z","shell.execute_reply":"2024-11-25T19:32:44.778344Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"if train_data_reshaped.shape[0] == 0:\n    print(\"Training data is empty. Please check data loading and preprocessing.\")\nelse:\n    model_cnn = create_modified_cnn_model()\n    history = model_cnn.fit(\n    train_data_reshaped, \n    train_labels, \n    epochs=15,  # Aumentar épocas para observar convergencia\n    batch_size=64,  # Reducir tamaño del batch para más iteraciones por época\n    validation_split=0.25\n    )\n    validation_accuracy = history.history['val_accuracy'][-1]\n    print(f\"Validation Accuracy: {validation_accuracy * 100}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:32:44.782894Z","iopub.execute_input":"2024-11-25T19:32:44.783306Z","iopub.status.idle":"2024-11-25T19:37:31.600650Z","shell.execute_reply.started":"2024-11-25T19:32:44.783278Z","shell.execute_reply":"2024-11-25T19:37:31.599496Z"}},"outputs":[],"execution_count":null},{"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":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:37:31.602431Z","iopub.execute_input":"2024-11-25T19:37:31.602970Z","iopub.status.idle":"2024-11-25T19:37:38.479765Z","shell.execute_reply.started":"2024-11-25T19:37:31.602832Z","shell.execute_reply":"2024-11-25T19:37:38.478608Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"predicted_classes= np.argmax(predictions, axis=1)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:37:38.481245Z","iopub.execute_input":"2024-11-25T19:37:38.481565Z","iopub.status.idle":"2024-11-25T19:37:38.487310Z","shell.execute_reply.started":"2024-11-25T19:37:38.481540Z","shell.execute_reply":"2024-11-25T19:37:38.486106Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"results= 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":{"trusted":true,"execution":{"iopub.status.busy":"2024-11-25T19:37:38.488652Z","iopub.execute_input":"2024-11-25T19:37:38.489023Z","iopub.status.idle":"2024-11-25T19:37:38.522467Z","shell.execute_reply.started":"2024-11-25T19:37:38.488971Z","shell.execute_reply":"2024-11-25T19:37:38.521366Z"}},"outputs":[],"execution_count":null}]}