{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":3004,"databundleVersionId":861823}],"dockerImageVersionId":31286,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:20:05.772492Z","iopub.execute_input":"2026-03-01T14:20:05.772871Z","iopub.status.idle":"2026-03-01T14:20:06.142927Z","shell.execute_reply.started":"2026-03-01T14:20:05.772841Z","shell.execute_reply":"2026-03-01T14:20:06.141967Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df = pd.read_csv(\"/kaggle/input/competitions/digit-recognizer/train.csv\")\n\ndf.head()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:20:06.144388Z","iopub.execute_input":"2026-03-01T14:20:06.144796Z","iopub.status.idle":"2026-03-01T14:20:08.805179Z","shell.execute_reply.started":"2026-03-01T14:20:06.144768Z","shell.execute_reply":"2026-03-01T14:20:08.804098Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df.info()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:20:08.806271Z","iopub.execute_input":"2026-03-01T14:20:08.806526Z","iopub.status.idle":"2026-03-01T14:20:08.842284Z","shell.execute_reply.started":"2026-03-01T14:20:08.806501Z","shell.execute_reply":"2026-03-01T14:20:08.841105Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"df.isnull().sum().sum()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:20:08.844131Z","iopub.execute_input":"2026-03-01T14:20:08.844399Z","iopub.status.idle":"2026-03-01T14:20:08.913940Z","shell.execute_reply.started":"2026-03-01T14:20:08.844373Z","shell.execute_reply":"2026-03-01T14:20:08.912980Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"X = df.drop('label', axis=1)/255.0\ny = df[\"label\"]","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:20:08.915056Z","iopub.execute_input":"2026-03-01T14:20:08.915409Z","iopub.status.idle":"2026-03-01T14:20:09.083947Z","shell.execute_reply.started":"2026-03-01T14:20:08.915370Z","shell.execute_reply":"2026-03-01T14:20:09.082846Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from 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":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:24:00.092780Z","iopub.execute_input":"2026-03-01T14:24:00.093110Z","iopub.status.idle":"2026-03-01T14:24:01.215901Z","shell.execute_reply.started":"2026-03-01T14:24:00.093083Z","shell.execute_reply":"2026-03-01T14:24:01.215053Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.neighbors import KNeighborsClassifier\n\nknn = KNeighborsClassifier(n_neighbors=5)\nknn.fit(X_train, y_train)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:24:10.533762Z","iopub.execute_input":"2026-03-01T14:24:10.534243Z","iopub.status.idle":"2026-03-01T14:24:10.974732Z","shell.execute_reply.started":"2026-03-01T14:24:10.534210Z","shell.execute_reply":"2026-03-01T14:24:10.973505Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"from sklearn.metrics import accuracy_score, classification_report\n\ny_pred = knn.predict(X_test)\nprint(accuracy_score(y_test, y_pred))\nprint(classification_report(y_test, y_pred))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:24:23.373544Z","iopub.execute_input":"2026-03-01T14:24:23.374065Z","iopub.status.idle":"2026-03-01T14:24:32.884914Z","shell.execute_reply.started":"2026-03-01T14:24:23.374033Z","shell.execute_reply":"2026-03-01T14:24:32.884019Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"for k in range(1, 11):\n    knn = KNeighborsClassifier(n_neighbors=k)\n    knn.fit(X_train, y_train)\n    print(f\"K={k}, Accuracy={accuracy_score(y_test, knn.predict(X_test)):.4f}\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:26:08.344303Z","iopub.execute_input":"2026-03-01T14:26:08.344688Z","iopub.status.idle":"2026-03-01T14:27:43.982216Z","shell.execute_reply.started":"2026-03-01T14:26:08.344584Z","shell.execute_reply":"2026-03-01T14:27:43.981288Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"test = pd.read_csv(\"/kaggle/input/competitions/digit-recognizer/test.csv\") / 255.0\npredictions = knn.predict(test)\n\nsubmission = pd.DataFrame({'ImageId': range(1, len(predictions)+1), 'Label': predictions})\nsubmission.to_csv('submission.csv', index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-01T14:33:40.340190Z","iopub.execute_input":"2026-03-01T14:33:40.340503Z","iopub.status.idle":"2026-03-01T14:34:11.894726Z","shell.execute_reply.started":"2026-03-01T14:33:40.340475Z","shell.execute_reply":"2026-03-01T14:34:11.893744Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}