{"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":"gpu","dataSources":[{"sourceId":82654,"databundleVersionId":9073423,"sourceType":"competition"}],"dockerImageVersionId":30746,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nfrom keras.models import Sequential\nfrom keras.layers import Input, Dense, Conv2D, MaxPool2D, Dropout, Flatten","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:42:04.301947Z","iopub.execute_input":"2024-07-23T08:42:04.302394Z","iopub.status.idle":"2024-07-23T08:42:17.109197Z","shell.execute_reply.started":"2024-07-23T08:42:04.302363Z","shell.execute_reply":"2024-07-23T08:42:17.108387Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# CSVファイルからデータを読み込む\ntrain_df = pd.read_csv('../input/digit-recognizer-uec-clone/train.csv')\ntest_df = pd.read_csv('../input/digit-recognizer-uec-clone/test.csv')\n\n# データとラベルに分割する\nX_train = train_df.iloc[:40000, 1:].values.astype(np.float32) / 255.0  # 画像データ (0-255) を0-1の範囲に正規化\ny_train = train_df.iloc[:40000, 0].values  # ラベル (数字)\n\nX_valid = train_df.iloc[40000:, 1:].values.astype(np.float32) / 255.0\ny_valid = train_df.iloc[40000:, 0].values\n\nX_test = test_df.iloc[:, :].values.astype(np.float32) / 255.0","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:43:41.271684Z","iopub.execute_input":"2024-07-23T08:43:41.272095Z","iopub.status.idle":"2024-07-23T08:43:45.648698Z","shell.execute_reply.started":"2024-07-23T08:43:41.272066Z","shell.execute_reply":"2024-07-23T08:43:45.647859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = Sequential()\nmodel.add(Input(shape=(28, 28, 1)))\nmodel.add(Conv2D(16, (3, 3), activation=\"relu\"))\nmodel.add(Conv2D(16, (3, 3), activation=\"relu\"))\nmodel.add(MaxPool2D(2))\nmodel.add(Conv2D(32, (3, 3), activation=\"relu\"))\nmodel.add(Conv2D(32, (3, 3), activation=\"relu\"))\nmodel.add(MaxPool2D(2))\nmodel.add(Flatten())\nmodel.add(Dense(64, activation=\"relu\"))\nmodel.add(Dense(10, activation=\"softmax\"))","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:43:45.650516Z","iopub.execute_input":"2024-07-23T08:43:45.651157Z","iopub.status.idle":"2024-07-23T08:43:45.744156Z","shell.execute_reply.started":"2024-07-23T08:43:45.651122Z","shell.execute_reply":"2024-07-23T08:43:45.743407Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:43:45.745096Z","iopub.execute_input":"2024-07-23T08:43:45.745353Z","iopub.status.idle":"2024-07-23T08:43:45.768841Z","shell.execute_reply.started":"2024-07-23T08:43:45.745330Z","shell.execute_reply":"2024-07-23T08:43:45.768002Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer='Adam',\n              loss='sparse_categorical_crossentropy',\n              metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:43:48.869567Z","iopub.execute_input":"2024-07-23T08:43:48.869930Z","iopub.status.idle":"2024-07-23T08:43:48.879152Z","shell.execute_reply.started":"2024-07-23T08:43:48.869901Z","shell.execute_reply":"2024-07-23T08:43:48.878315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(\n    X_train.reshape((-1, 28, 28, 1)), y_train, batch_size=64,\n    epochs=10, validation_data=(X_valid.reshape((-1, 28, 28, 1)), y_valid)\n)","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:43:50.656789Z","iopub.execute_input":"2024-07-23T08:43:50.657723Z","iopub.status.idle":"2024-07-23T08:44:11.691812Z","shell.execute_reply.started":"2024-07-23T08:43:50.657687Z","shell.execute_reply":"2024-07-23T08:44:11.690932Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred_test = model.predict(X_test.reshape((-1, 28, 28, 1)))","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:44:21.349045Z","iopub.execute_input":"2024-07-23T08:44:21.349904Z","iopub.status.idle":"2024-07-23T08:44:23.335891Z","shell.execute_reply.started":"2024-07-23T08:44:21.349869Z","shell.execute_reply":"2024-07-23T08:44:23.334835Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_df = pd.read_csv(\"../input/digit-recognizer-uec-clone/sample_submission.csv\")\nsub_df[\"Label\"] = pred_test.argmax(axis=1)","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:45:09.677835Z","iopub.execute_input":"2024-07-23T08:45:09.678764Z","iopub.status.idle":"2024-07-23T08:45:09.693220Z","shell.execute_reply.started":"2024-07-23T08:45:09.678730Z","shell.execute_reply":"2024-07-23T08:45:09.692255Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub_df.to_csv(\"simple_keras.csv\", index=False)","metadata":{"execution":{"iopub.status.busy":"2024-07-23T08:45:10.577781Z","iopub.execute_input":"2024-07-23T08:45:10.578168Z","iopub.status.idle":"2024-07-23T08:45:10.615989Z","shell.execute_reply.started":"2024-07-23T08:45:10.578140Z","shell.execute_reply":"2024-07-23T08:45:10.615238Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}