Skip to content

Comments

Kaggle Notebook | Physical Activity Prediction | Version 3#1

Open
ManviNagdev wants to merge 1 commit intomainfrom
KNN
Open

Kaggle Notebook | Physical Activity Prediction | Version 3#1
ManviNagdev wants to merge 1 commit intomainfrom
KNN

Conversation

@ManviNagdev
Copy link
Owner

No description provided.

@ManviNagdev ManviNagdev requested a review from coderpotter August 6, 2023 23:00
@ManviNagdev ManviNagdev self-assigned this Aug 6, 2023
@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #2.    y = dataset.iloc[:, 0].values

activity_id = dataset.activityID

Convert it to a list if you need to but generally pandas DSs are more efficient.


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #4.    print(y)

don't use print statements in jupyterhub unless you want formatted output


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #3.    from matplotlib import pyplot

Handle imports in one of these 2 ways:

  1. All at the top in the 1st cell (alphabetically sorted)
  2. All the ones relevant for a section at the top of each section (alphabetically sorted)

Convention is to write import matplotlib.pyplot as plt


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #6.    y_temp = le.fit_transform(y)

Rename. If a variable is truly temporary (which this is not), adding an _ at the end should suffice.


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #4.    X = imputer.transform(X)

create a new variable. Now X is lost forever


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #2.    print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))

no print needed


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsiZdhFpaWrRixQq5XC7ZbDZ973vfC9huGIbKysrkcrkUHh6uxYsX6/Tp0wGZ4eFhrVu3TjExMYqIiFBubq4uXboUkPH5fPJ4PHI4HHI4HPJ4PLp27VpApqenRytWrFBERIRiYmJUVFSkkZGRgMypU6eUkZGh8PBwzZ49W5s3b5ZhGJM9bAAAMAVNugjdvHlTH/vYx1RTU3Pf7Vu3blVVVZVqamrU3t4up9OpzMxMXb9+3cwUFxersbFRDQ0Nam1t1Y0bN5STk6OxsTEz43a71dXVpaamJjU1Namrq0sej8fcPjY2puXLl+vmzZtqbW1VQ0ODDhw4oNLSUjMzODiozMxMuVwutbe3q7q6WpWVlaqqqprsYQMAgCkodLJvePbZZ/Xss8/ed5thGNqxY4c2bdqklStXSpL27t2ruLg47d+/X2vXrpXf79eePXu0b98+LV26VJJUV1en+Ph4HT58WNnZ2Tp79qyamprU1tamtLQ0SdLu3buVnp6uc+fOKTExUV6vV2fOnFFvb69cLpckadu2bcrLy9OWLVsUFRWl+vp63bp1S7W1tbLb7UpKStL58+dVVVWlkpIS2Wy2BzppAABganhP7xG6cOGC+vv7lZWVZa6z2+3KyMjQsWPHJEkdHR0aHR0NyLhcLiUlJZmZ48ePy+FwmCVIkhYsWCCHwxGQSUpKMkuQJGVnZ2t4eFgdHR1mJiMjQ3a7PSBz+fJlXbx48b7HMDw8rMHBwYAFAABMTe9pEerv75ckxcXFBayPi4szt/X39yssLEzR0dETZmJjY+/5/NjY2IDM3fuJjo5WWFjYhJk7r+9k7lZRUWHel+RwOBQfH//OBw4AAB5Jv5enxu7+yskwjHf8GuruzP3y70Xmzo3S482zceNG+f1+c+nt7Z1wbgAA8Oh6T4uQ0+mUdO/VloGBAfNKjNPp1MjIiHw+34SZK1eu3PP5V69eDcjcvR+fz6fR0dEJMwMDA5LuvWp1h91uV1RUVMACAACmpve0CCUkJMjpdKq5udlcNzIyoqNHj2rhwoWSpJSUFE2bNi0g09fXp+7ubjOTnp4uv9+vkydPmpkTJ07I7/cHZLq7u9XX12dmvF6v7Ha7UlJSzExLS0vAI/Ver1cul0tz5859Lw8dAAA8giZdhG7cuKGuri51dXVJevsG6a6uLvX09Mhms6m4uFjl5eVqbGxUd3e38vLyNGPGDLndbkmSw+HQmjVrVFpaqiNHjqizs1OrV69WcnKy+RTZvHnztGzZMuXn56utrU1tbW3Kz89XTk6OEhMTJUlZWVmaP3++PB6POjs7deTIEa1fv175+fnmVRy32y273a68vDx1d3ersbFR5eXlPDEGAAAkPcDj8z/96U/1Z3/2Z+brkpISSdLzzz+v2tpabdiwQUNDQyooKJDP51NaWpq8Xq8iIyPN92zfvl2hoaFatWqVhoaGtGTJEtXW1iokJMTM1NfXq6ioyHy6LDc3N+B3F4WEhOjQoUMqKCjQokWLFB4eLrfbrcrKSjPjcDjU3NyswsJCpaamKjo6WiUlJebMAADA2iZdhBYvXjzhb2a22WwqKytTWVnZuJnp06erurpa1dXV42Zmzpypurq6CWeZM2eODh48OGEmOTlZLS0tE2YAAIA18bfGAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVmiCH3zm99UQkKCpk+frpSUFP3kJz8J9kgAAOAhMOWL0He+8x0VFxdr06ZN6uzs1Cc/+Uk9++yz6unpCfZoAAAgyKZ8EaqqqtKaNWv0xS9+UfPmzdOOHTsUHx+vnTt3Bns0AAAQZKHBHuD3aWRkRB0dHXrllVcC1mdlZenYsWP3fc/w8LCGh4fN136/X5I0ODj4e5nx9vBvfy+fO56JjoNZ7s/Ks0gP1zzMcn8P0yzSwzUPs9zfozLLe/G5hmFMHDSmsF/+8peGJOO///u/A9Zv2bLF+OM//uP7vuerX/2qIYmFhYWFhYVlCiy9vb0TdoUpfUXoDpvNFvDaMIx71t2xceNGlZSUmK9v376t3/zmN5o1a9a473m/DQ4OKj4+Xr29vYqKigr2OA8Nzsv4ODf3x3m5P87L+Dg39/cwnhfDMHT9+nW5XK4Jc1O6CMXExCgkJET9/f0B6wcGBhQXF3ff99jtdtnt9oB1H/zgB39fI74rUVFRD82/cA8Tzsv4ODf3x3m5P87L+Dg39/ewnReHw/GOmSl9s3RYWJhSUlLU3NwcsL65uVkLFy4M0lQAAOBhMaWvCElSSUmJPB6PUlNTlZ6erl27dqmnp0cvvvhisEcDAABBNuWL0F//9V/r17/+tTZv3qy+vj4lJSXpv/7rv/TEE08Ee7QHZrfb9dWvfvWer/CsjvMyPs7N/XFe7o/zMj7Ozf09yufFZhjv9FwZAADA1DSl7xECAACYCEUIAABYFkUIAABYFkUIAABYFkXoEfPNb35TCQkJmj59ulJSUvSTn/wk2CMFXUVFhT7xiU8oMjJSsbGx+vSnP61z584Fe6yHTkVFhWw2m4qLi4M9ykPhl7/8pVavXq1Zs2ZpxowZ+vjHP66Ojo5gjxVUv/vd7/T3f//3SkhIUHh4uD784Q9r8+bNun37drBHe9+1tLRoxYoVcrlcstls+t73vhew3TAMlZWVyeVyKTw8XIsXL9bp06eDM+z7aKLzMjo6qi9/+ctKTk5WRESEXC6XvvCFL+jy5cvBG/j/gCL0CPnOd76j4uJibdq0SZ2dnfrkJz+pZ599Vj09PcEeLaiOHj2qwsJCtbW1qbm5Wb/73e+UlZWlmzdvBnu0h0Z7e7t27dqlp556KtijPBR8Pp8WLVqkadOm6fvf/77OnDmjbdu2PbS/Rf798vWvf13f+ta3VFNTo7Nnz2rr1q36xje+oerq6mCP9r67efOmPvaxj6mmpua+27du3aqqqirV1NSovb1dTqdTmZmZun79+vs86ftrovPy29/+Vm+88Yb+4R/+QW+88Ya++93v6vz588rNzQ3CpJPwXvxxU7w//vRP/9R48cUXA9Z95CMfMV555ZUgTfRwGhgYMCQZR48eDfYoD4Xr168bTz75pNHc3GxkZGQYL7/8crBHCrovf/nLxjPPPBPsMR46y5cvN1544YWAdStXrjRWr14dpIkeDpKMxsZG8/Xt27cNp9NpvPrqq+a6W7duGQ6Hw/jWt74VhAmD4+7zcj8nT540JBlvvfXW+zPUA+CK0CNiZGREHR0dysrKCliflZWlY8eOBWmqh5Pf75ckzZw5M8iTPBwKCwu1fPlyLV26NNijPDRef/11paam6rOf/axiY2P19NNPa/fu3cEeK+ieeeYZHTlyROfPn5ck/c///I9aW1v1F3/xF0Ge7OFy4cIF9ff3B/w8ttvtysjI4OfxXfx+v2w220N9tXXK/2bpqeJXv/qVxsbG7vljsXFxcff8UVkrMwxDJSUleuaZZ5SUlBTscYKuoaFBb7zxhtrb24M9ykPlF7/4hXbu3KmSkhJ95Stf0cmTJ1VUVCS73a4vfOELwR4vaL785S/L7/frIx/5iEJCQjQ2NqYtW7bo85//fLBHe6jc+Zl7v5/Hb731VjBGeijdunVLr7zyitxu90P1h1jvRhF6xNhstoDXhmHcs87KXnrpJf3sZz9Ta2trsEcJut7eXr388svyer2aPn16sMd5qNy+fVupqakqLy+XJD399NM6ffq0du7caeki9J3vfEd1dXXav3+/PvrRj6qrq0vFxcVyuVx6/vnngz3eQ4efx+MbHR3V5z73Od2+fVvf/OY3gz3OhChCj4iYmBiFhITcc/VnYGDgnv8rsap169bp9ddfV0tLix5//PFgjxN0HR0dGhgYUEpKirlubGxMLS0tqqmp0fDwsEJCQoI4YfA89thjmj9/fsC6efPm6cCBA0Ga6OHwd3/3d3rllVf0uc99TpKUnJyst956SxUVFRSh/8XpdEp6+8rQY489Zq7n5/HbRkdHtWrVKl24cEE//OEPH+qrQRJPjT0ywsLClJKSoubm5oD1zc3NWrhwYZCmejgYhqGXXnpJ3/3ud/XDH/5QCQkJwR7pobBkyRKdOnVKXV1d5pKamqrnnntOXV1dli1BkrRo0aJ7fsXC+fPnH+k/xvxe+O1vf6sPfCDwPwshISGWfHx+IgkJCXI6nQE/j0dGRnT06FHL/zy+U4LefPNNHT58WLNmzQr2SO+IK0KPkJKSEnk8HqWmpio9PV27du1ST0+PXnzxxWCPFlSFhYXav3+//uM//kORkZHmVTOHw6Hw8PAgTxc8kZGR99wnFRERoVmzZln+/qkvfelLWrhwocrLy7Vq1SqdPHlSu3bt0q5du4I9WlCtWLFCW7Zs0Zw5c/TRj35UnZ2dqqqq0gsvvBDs0d53N27c0M9//nPz9YULF9TV1aWZM2dqzpw5Ki4uVnl5uZ588kk9+eSTKi8v14wZM+R2u4M49e/fROfF5XLpM5/5jN544w0dPHhQY2Nj5s/jmTNnKiwsLFhjTyy4D61hsv71X//VeOKJJ4ywsDDjT/7kT3hE3Hj7Ec77La+99lqwR3vo8Pj8//ef//mfRlJSkmG3242PfOQjxq5du4I9UtANDg4aL7/8sjFnzhxj+vTpxoc//GFj06ZNxvDwcLBHe9/96Ec/uu/Pleeff94wjLcfof/qV79qOJ1Ow263G5/61KeMU6dOBXfo98FE5+XChQvj/jz+0Y9+FOzRx2UzDMN4P4sXAADAw4J7hAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGX9P0loR8XICL1FAAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this a section?


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"iVBORw0KGgoAAAANSUhEUgAAAkIAAAGdCAYAAAD+JxxnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1bUlEQVR4nO3dcVCUiX3/8c8GZEUKG5TA3np4kvZKNHDJFVJEL8FWAa8izdjEJntujjlDvcLJEbDmjG1DnAoXg2gLjamOcxjBkj8M6VUbsmgSCVWUcNCIOnqZ6IERxCTrogaB4PP748bn11Xhine5VZ73a+aZuX2ez+7zfZ654T737POAzTAMQwAAABb0gWAPAAAAECwUIQAAYFkUIQAAYFkUIQAAYFkUIQAAYFkUIQAAYFkUIQAAYFkUIQAAYFmhwR7gYXf79m1dvnxZkZGRstlswR4HAAD8HxiGoevXr8vlcukDHxj/ug9F6B1cvnxZ8fHxwR4DAAA8gN7eXj3++OPjbqcIvYPIyEhJb5/IqKioIE8DAAD+LwYHBxUfH2/+d3w8FKF3cOfrsKioKIoQAACPmHe6rYWbpQEAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGWFBnsAq5v7yqH3dX8XX10+7jZmuT8rzyI9XPMwy/09TLNID9c8zHJ/j8os7weuCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuaVBGaO3eubDbbPUthYaEkyTAMlZWVyeVyKTw8XIsXL9bp06cDPmN4eFjr1q1TTEyMIiIilJubq0uXLgVkfD6fPB6PHA6HHA6HPB6Prl27FpDp6enRihUrFBERoZiYGBUVFWlkZCQgc+rUKWVkZCg8PFyzZ8/W5s2bZRjGZA4ZAABMYZMqQu3t7err6zOX5uZmSdJnP/tZSdLWrVtVVVWlmpoatbe3y+l0KjMzU9evXzc/o7i4WI2NjWpoaFBra6tu3LihnJwcjY2NmRm3262uri41NTWpqalJXV1d8ng85vaxsTEtX75cN2/eVGtrqxoaGnTgwAGVlpaamcHBQWVmZsrlcqm9vV3V1dWqrKxUVVXVg50pAAAw5YROJvyhD30o4PWrr76qP/zDP1RGRoYMw9COHTu0adMmrVy5UpK0d+9excXFaf/+/Vq7dq38fr/27Nmjffv2aenSpZKkuro6xcfH6/Dhw8rOztbZs2fV1NSktrY2paWlSZJ2796t9PR0nTt3TomJifJ6vTpz5ox6e3vlcrkkSdu2bVNeXp62bNmiqKgo1dfX69atW6qtrZXdbldSUpLOnz+vqqoqlZSUyGazveuTBwAAHm0PfI/QyMiI6urq9MILL8hms+nChQvq7+9XVlaWmbHb7crIyNCxY8ckSR0dHRodHQ3IuFwuJSUlmZnjx4/L4XCYJUiSFixYIIfDEZBJSkoyS5AkZWdna3h4WB0dHWYmIyNDdrs9IHP58mVdvHhx3OMaHh7W4OBgwAIAAKamBy5C3/ve93Tt2jXl5eVJkvr7+yVJcXFxAbm4uDhzW39/v8LCwhQdHT1hJjY29p79xcbGBmTu3k90dLTCwsImzNx5fSdzPxUVFea9SQ6HQ/Hx8eOfBAAA8Eh74CK0Z88ePfvsswFXZSTd85WTYRjv+DXU3Zn75d+LzJ0bpSeaZ+PGjfL7/ebS29s74ewAAODR9UBF6K233tLhw4f1xS9+0VzndDol3Xu1ZWBgwLwS43Q6NTIyIp/PN2HmypUr9+zz6tWrAZm79+Pz+TQ6OjphZmBgQNK9V63+N7vdrqioqIAFAABMTQ9UhF577TXFxsZq+fLl5rqEhAQ5nU7zSTLp7fuIjh49qoULF0qSUlJSNG3atIBMX1+furu7zUx6err8fr9OnjxpZk6cOCG/3x+Q6e7uVl9fn5nxer2y2+1KSUkxMy0tLQGP1Hu9XrlcLs2dO/dBDhsAAEwxky5Ct2/f1muvvabnn39eoaH//6Ezm82m4uJilZeXq7GxUd3d3crLy9OMGTPkdrslSQ6HQ2vWrFFpaamOHDmizs5OrV69WsnJyeZTZPPmzdOyZcuUn5+vtrY2tbW1KT8/Xzk5OUpMTJQkZWVlaf78+fJ4POrs7NSRI0e0fv165efnm1dw3G637Ha78vLy1N3drcbGRpWXl/PEGAAAME3q8XlJOnz4sHp6evTCCy/cs23Dhg0aGhpSQUGBfD6f0tLS5PV6FRkZaWa2b9+u0NBQrVq1SkNDQ1qyZIlqa2sVEhJiZurr61VUVGQ+XZabm6uamhpze0hIiA4dOqSCggItWrRI4eHhcrvdqqysNDMOh0PNzc0qLCxUamqqoqOjVVJSopKSkskeMgAAmKImXYSysrLG/e3MNptNZWVlKisrG/f906dPV3V1taqrq8fNzJw5U3V1dRPOMWfOHB08eHDCTHJyslpaWibMAAAA6+JvjQEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuiCAEAAMuadBH65S9/qdWrV2vWrFmaMWOGPv7xj6ujo8PcbhiGysrK5HK5FB4ersWLF+v06dMBnzE8PKx169YpJiZGERERys3N1aVLlwIyPp9PHo9HDodDDodDHo9H165dC8j09PRoxYoVioiIUExMjIqKijQyMhKQOXXqlDIyMhQeHq7Zs2dr8+bNMgxjsocNAACmoEkVIZ/Pp0WLFmnatGn6/ve/rzNnzmjbtm364Ac/aGa2bt2qqqoq1dTUqL29XU6nU5mZmbp+/bqZKS4uVmNjoxoaGtTa2qobN24oJydHY2NjZsbtdqurq0tNTU1qampSV1eXPB6PuX1sbEzLly/XzZs31draqoaGBh04cEClpaVmZnBwUJmZmXK5XGpvb1d1dbUqKytVVVX1IOcKAABMMaGTCX/9619XfHy8XnvtNXPd3LlzzX82DEM7duzQpk2btHLlSknS3r17FRcXp/3792vt2rXy+/3as2eP9u3bp6VLl0qS6urqFB8fr8OHDys7O1tnz55VU1OT2tralJaWJknavXu30tPTde7cOSUmJsrr9erMmTPq7e2Vy+WSJG3btk15eXnasmWLoqKiVF9fr1u3bqm2tlZ2u11JSUk6f/68qqqqVFJSIpvN9q5OHgAAeLRN6orQ66+/rtTUVH32s59VbGysnn76ae3evdvcfuHCBfX39ysrK8tcZ7fblZGRoWPHjkmSOjo6NDo6GpBxuVxKSkoyM8ePH5fD4TBLkCQtWLBADocjIJOUlGSWIEnKzs7W8PCw+VXd8ePHlZGRIbvdHpC5fPmyLl68OJlDBwAAU9CkitAvfvEL7dy5U08++aR+8IMf6MUXX1RRUZG+/e1vS5L6+/slSXFxcQHvi4uLM7f19/crLCxM0dHRE2ZiY2Pv2X9sbGxA5u79REdHKywsbMLMndd3MncbHh7W4OBgwAIAAKamSX01dvv2baWmpqq8vFyS9PTTT+v06dPauXOnvvCFL5i5u79yMgzjHb+Gujtzv/x7kblzo/R481RUVOhrX/vahLMCAICpYVJXhB577DHNnz8/YN28efPU09MjSXI6nZLuvdoyMDBgXolxOp0aGRmRz+ebMHPlypV79n/16tWAzN378fl8Gh0dnTAzMDAg6d6rVnds3LhRfr/fXHp7e++bAwAAj75JFaFFixbp3LlzAevOnz+vJ554QpKUkJAgp9Op5uZmc/vIyIiOHj2qhQsXSpJSUlI0bdq0gExfX5+6u7vNTHp6uvx+v06ePGlmTpw4Ib/fH5Dp7u5WX1+fmfF6vbLb7UpJSTEzLS0tAY/Ue71euVyugJu8/ze73a6oqKiABQAATE2TKkJf+tKX1NbWpvLycv385z/X/v37tWvXLhUWFkp6++um4uJilZeXq7GxUd3d3crLy9OMGTPkdrslSQ6HQ2vWrFFpaamOHDmizs5OrV69WsnJyeZTZPPmzdOyZcuUn5+vtrY2tbW1KT8/Xzk5OUpMTJQkZWVlaf78+fJ4POrs7NSRI0e0fv165efnm+XF7XbLbrcrLy9P3d3damxsVHl5OU+MAQAASZO8R+gTn/iEGhsbtXHjRm3evFkJCQnasWOHnnvuOTOzYcMGDQ0NqaCgQD6fT2lpafJ6vYqMjDQz27dvV2hoqFatWqWhoSEtWbJEtbW1CgkJMTP19fUqKioyny7Lzc1VTU2NuT0kJESHDh1SQUGBFi1apPDwcLndblVWVpoZh8Oh5uZmFRYWKjU1VdHR0SopKVFJScnkzxQAAJhyJlWEJCknJ0c5OTnjbrfZbCorK1NZWdm4menTp6u6ulrV1dXjZmbOnKm6uroJZ5kzZ44OHjw4YSY5OVktLS0TZgAAgDXxt8YAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlUYQAAIBlTaoIlZWVyWazBSxOp9PcbhiGysrK5HK5FB4ersWLF+v06dMBnzE8PKx169YpJiZGERERys3N1aVLlwIyPp9PHo9HDodDDodDHo9H165dC8j09PRoxYoVioiIUExMjIqKijQyMhKQOXXqlDIyMhQeHq7Zs2dr8+bNMgxjMocMAACmsElfEfroRz+qvr4+czl16pS5bevWraqqqlJNTY3a29vldDqVmZmp69evm5ni4mI1NjaqoaFBra2tunHjhnJycjQ2NmZm3G63urq61NTUpKamJnV1dcnj8Zjbx8bGtHz5ct28eVOtra1qaGjQgQMHVFpaamYGBweVmZkpl8ul9vZ2VVdXq7KyUlVVVZM+SQAAYGoKnfQbQkMDrgLdYRiGduzYoU2bNmnlypWSpL179youLk779+/X2rVr5ff7tWfPHu3bt09Lly6VJNXV1Sk+Pl6HDx9Wdna2zp49q6amJrW1tSktLU2StHv3bqWnp+vcuXNKTEyU1+vVmTNn1NvbK5fLJUnatm2b8vLytGXLFkVFRam+vl63bt1SbW2t7Ha7kpKSdP78eVVVVamkpEQ2m+2BTxoAAJgaJn1F6M0335TL5VJCQoI+97nP6Re/+IUk6cKFC+rv71dWVpaZtdvtysjI0LFjxyRJHR0dGh0dDci4XC4lJSWZmePHj8vhcJglSJIWLFggh8MRkElKSjJLkCRlZ2dreHhYHR0dZiYjI0N2uz0gc/nyZV28eHHc4xseHtbg4GDAAgAApqZJFaG0tDR9+9vf1g9+8APt3r1b/f39WrhwoX7961+rv79fkhQXFxfwnri4OHNbf3+/wsLCFB0dPWEmNjb2nn3HxsYGZO7eT3R0tMLCwibM3Hl9J3M/FRUV5r1JDodD8fHxE58UAADwyJpUEXr22Wf1V3/1V0pOTtbSpUt16NAhSW9/BXbH3V85GYbxjl9D3Z25X/69yNy5UXqieTZu3Ci/328uvb29E84OAAAeXe/q8fmIiAglJyfrzTffNO8buvtqy8DAgHklxul0amRkRD6fb8LMlStX7tnX1atXAzJ378fn82l0dHTCzMDAgKR7r1r9b3a7XVFRUQELAACYmt5VERoeHtbZs2f12GOPKSEhQU6nU83Nzeb2kZERHT16VAsXLpQkpaSkaNq0aQGZvr4+dXd3m5n09HT5/X6dPHnSzJw4cUJ+vz8g093drb6+PjPj9Xplt9uVkpJiZlpaWgIeqfd6vXK5XJo7d+67OWwAADBFTKoIrV+/XkePHtWFCxd04sQJfeYzn9Hg4KCef/552Ww2FRcXq7y8XI2Njeru7lZeXp5mzJght9stSXI4HFqzZo1KS0t15MgRdXZ2avXq1eZXbZI0b948LVu2TPn5+Wpra1NbW5vy8/OVk5OjxMRESVJWVpbmz58vj8ejzs5OHTlyROvXr1d+fr55BcftdstutysvL0/d3d1qbGxUeXk5T4wBAADTpB6fv3Tpkj7/+c/rV7/6lT70oQ9pwYIFamtr0xNPPCFJ2rBhg4aGhlRQUCCfz6e0tDR5vV5FRkaan7F9+3aFhoZq1apVGhoa0pIlS1RbW6uQkBAzU19fr6KiIvPpstzcXNXU1JjbQ0JCdOjQIRUUFGjRokUKDw+X2+1WZWWlmXE4HGpublZhYaFSU1MVHR2tkpISlZSUPNiZAgAAU86kilBDQ8OE2202m8rKylRWVjZuZvr06aqurlZ1dfW4mZkzZ6qurm7Cfc2ZM0cHDx6cMJOcnKyWlpYJMwAAwLr4W2MAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCyKEIAAMCy3lURqqiokM1mU3FxsbnOMAyVlZXJ5XIpPDxcixcv1unTpwPeNzw8rHXr1ikmJkYRERHKzc3VpUuXAjI+n08ej0cOh0MOh0Mej0fXrl0LyPT09GjFihWKiIhQTEyMioqKNDIyEpA5deqUMjIyFB4ertmzZ2vz5s0yDOPdHDYAAJgiHrgItbe3a9euXXrqqacC1m/dulVVVVWqqalRe3u7nE6nMjMzdf36dTNTXFysxsZGNTQ0qLW1VTdu3FBOTo7GxsbMjNvtVldXl5qamtTU1KSuri55PB5z+9jYmJYvX66bN2+qtbVVDQ0NOnDggEpLS83M4OCgMjMz5XK51N7erurqalVWVqqqqupBDxsAAEwhoQ/yphs3bui5557T7t279U//9E/mesMwtGPHDm3atEkrV66UJO3du1dxcXHav3+/1q5dK7/frz179mjfvn1aunSpJKmurk7x8fE6fPiwsrOzdfbsWTU1NamtrU1paWmSpN27dys9PV3nzp1TYmKivF6vzpw5o97eXrlcLknStm3blJeXpy1btigqKkr19fW6deuWamtrZbfblZSUpPPnz6uqqkolJSWy2Wzv6uQBAIBH2wNdESosLNTy5cvNInPHhQsX1N/fr6ysLHOd3W5XRkaGjh07Jknq6OjQ6OhoQMblcikpKcnMHD9+XA6HwyxBkrRgwQI5HI6ATFJSklmCJCk7O1vDw8Pq6OgwMxkZGbLb7QGZy5cv6+LFi/c9tuHhYQ0ODgYsAABgapp0EWpoaNAbb7yhioqKe7b19/dLkuLi4gLWx8XFmdv6+/sVFham6OjoCTOxsbH3fH5sbGxA5u79REdHKywsbMLMndd3MnerqKgw70tyOByKj4+/bw4AADz6JlWEent79fLLL6uurk7Tp08fN3f3V06GYbzj11B3Z+6Xfy8yd26UHm+ejRs3yu/3m0tvb++EcwMAgEfXpIpQR0eHBgYGlJKSotDQUIWGhuro0aP6l3/5F4WGho57tWVgYMDc5nQ6NTIyIp/PN2HmypUr9+z/6tWrAZm79+Pz+TQ6OjphZmBgQNK9V63usNvtioqKClgAAMDUNKkitGTJEp06dUpdXV3mkpqaqueee05dXV368Ic/LKfTqebmZvM9IyMjOnr0qBYuXChJSklJ0bRp0wIyfX196u7uNjPp6eny+/06efKkmTlx4oT8fn9Apru7W319fWbG6/XKbrcrJSXFzLS0tAQ8Uu/1euVyuTR37tzJHDoAAJiCJvXUWGRkpJKSkgLWRUREaNasWeb64uJilZeX68knn9STTz6p8vJyzZgxQ263W5LkcDi0Zs0alZaWatasWZo5c6bWr1+v5ORk8+brefPmadmyZcrPz9e//du/SZL+5m/+Rjk5OUpMTJQkZWVlaf78+fJ4PPrGN76h3/zmN1q/fr3y8/PNqzhut1tf+9rXlJeXp6985St68803VV5ern/8x3/kiTEAAPBgj89PZMOGDRoaGlJBQYF8Pp/S0tLk9XoVGRlpZrZv367Q0FCtWrVKQ0NDWrJkiWpraxUSEmJm6uvrVVRUZD5dlpubq5qaGnN7SEiIDh06pIKCAi1atEjh4eFyu92qrKw0Mw6HQ83NzSosLFRqaqqio6NVUlKikpKS9/qwAQDAI+hdF6Ef//jHAa9tNpvKyspUVlY27numT5+u6upqVVdXj5uZOXOm6urqJtz3nDlzdPDgwQkzycnJamlpmTADAACsib81BgAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALIsiBAAALGtSRWjnzp166qmnFBUVpaioKKWnp+v73/++ud0wDJWVlcnlcik8PFyLFy/W6dOnAz5jeHhY69atU0xMjCIiIpSbm6tLly4FZHw+nzwejxwOhxwOhzwej65duxaQ6enp0YoVKxQREaGYmBgVFRVpZGQkIHPq1CllZGQoPDxcs2fP1ubNm2UYxmQOGQAATGGTKkKPP/64Xn31Vf30pz/VT3/6U/35n/+5/vIv/9IsO1u3blVVVZVqamrU3t4up9OpzMxMXb9+3fyM4uJiNTY2qqGhQa2trbpx44ZycnI0NjZmZtxut7q6utTU1KSmpiZ1dXXJ4/GY28fGxrR8+XLdvHlTra2tamho0IEDB1RaWmpmBgcHlZmZKZfLpfb2dlVXV6uyslJVVVUPfLIAAMDUEjqZ8IoVKwJeb9myRTt37lRbW5vmz5+vHTt2aNOmTVq5cqUkae/evYqLi9P+/fu1du1a+f1+7dmzR/v27dPSpUslSXV1dYqPj9fhw4eVnZ2ts2fPqqmpSW1tbUpLS5Mk7d69W+np6Tp37pwSExPl9Xp15swZ9fb2yuVySZK2bdumvLw8bdmyRVFRUaqvr9etW7dUW1sru92upKQknT9/XlVVVSopKZHNZnvXJw8AADzaHvgeobGxMTU0NOjmzZtKT0/XhQsX1N/fr6ysLDNjt9uVkZGhY8eOSZI6Ojo0OjoakHG5XEpKSjIzx48fl8PhMEuQJC1YsEAOhyMgk5SUZJYgScrOztbw8LA6OjrMTEZGhux2e0Dm8uXLunjx4rjHNTw8rMHBwYAFAABMTZMuQqdOndIf/MEfyG6368UXX1RjY6Pmz5+v/v5+SVJcXFxAPi4uztzW39+vsLAwRUdHT5iJjY29Z7+xsbEBmbv3Ex0drbCwsAkzd17fydxPRUWFeW+Sw+FQfHz8xCcEAAA8siZdhBITE9XV1aW2tjb97d/+rZ5//nmdOXPG3H73V06GYbzj11B3Z+6Xfy8yd26UnmiejRs3yu/3m0tvb++EswMAgEfXpItQWFiY/uiP/kipqamqqKjQxz72Mf3zP/+znE6npHuvtgwMDJhXYpxOp0ZGRuTz+SbMXLly5Z79Xr16NSBz9358Pp9GR0cnzAwMDEi696rV/2a3282n4u4sAABganrXv0fIMAwNDw8rISFBTqdTzc3N5raRkREdPXpUCxculCSlpKRo2rRpAZm+vj51d3ebmfT0dPn9fp08edLMnDhxQn6/PyDT3d2tvr4+M+P1emW325WSkmJmWlpaAh6p93q9crlcmjt37rs9bAAAMAVMqgh95Stf0U9+8hNdvHhRp06d0qZNm/TjH/9Yzz33nGw2m4qLi1VeXq7GxkZ1d3crLy9PM2bMkNvtliQ5HA6tWbNGpaWlOnLkiDo7O7V69WolJyebT5HNmzdPy5YtU35+vtra2tTW1qb8/Hzl5OQoMTFRkpSVlaX58+fL4/Gos7NTR44c0fr165Wfn29ewXG73bLb7crLy1N3d7caGxtVXl7OE2MAAMA0qcfnr1y5Io/Ho76+PjkcDj311FNqampSZmamJGnDhg0aGhpSQUGBfD6f0tLS5PV6FRkZaX7G9u3bFRoaqlWrVmloaEhLlixRbW2tQkJCzEx9fb2KiorMp8tyc3NVU1Njbg8JCdGhQ4dUUFCgRYsWKTw8XG63W5WVlWbG4XCoublZhYWFSk1NVXR0tEpKSlRSUvJgZwoAAEw5kypCe/bsmXC7zWZTWVmZysrKxs1Mnz5d1dXVqq6uHjczc+ZM1dXVTbivOXPm6ODBgxNmkpOT1dLSMmEGAABYF39rDAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWBZFCAAAWNakilBFRYU+8YlPKDIyUrGxsfr0pz+tc+fOBWQMw1BZWZlcLpfCw8O1ePFinT59OiAzPDysdevWKSYmRhEREcrNzdWlS5cCMj6fTx6PRw6HQw6HQx6PR9euXQvI9PT0aMWKFYqIiFBMTIyKioo0MjISkDl16pQyMjIUHh6u2bNna/PmzTIMYzKHDQAApqhJFaGjR4+qsLBQbW1tam5u1u9+9ztlZWXp5s2bZmbr1q2qqqpSTU2N2tvb5XQ6lZmZqevXr5uZ4uJiNTY2qqGhQa2trbpx44ZycnI0NjZmZtxut7q6utTU1KSmpiZ1dXXJ4/GY28fGxrR8+XLdvHlTra2tamho0IEDB1RaWmpmBgcHlZmZKZfLpfb2dlVXV6uyslJVVVUPdLIAAMDUEjqZcFNTU8Dr1157TbGxsero6NCnPvUpGYahHTt2aNOmTVq5cqUkae/evYqLi9P+/fu1du1a+f1+7dmzR/v27dPSpUslSXV1dYqPj9fhw4eVnZ2ts2fPqqmpSW1tbUpLS5Mk7d69W+np6Tp37pwSExPl9Xp15swZ9fb2yuVySZK2bdumvLw8bdmyRVFRUaqvr9etW7dUW1sru92upKQknT9/XlVVVSopKZHNZnvXJxAAADy63tU9Qn6/X5I0c+ZMSdKFCxfU39+vrKwsM2O325WRkaFjx45Jkjo6OjQ6OhqQcblcSkpKMjPHjx+Xw+EwS5AkLViwQA6HIyCTlJRkliBJys7O1vDwsDo6OsxMRkaG7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsiZdhFpaWrRixQq5XC7ZbDZ973vfC9huGIbKysrkcrkUHh6uxYsX6/Tp0wGZ4eFhrVu3TjExMYqIiFBubq4uXboUkPH5fPJ4PHI4HHI4HPJ4PLp27VpApqenRytWrFBERIRiYmJUVFSkkZGRgMypU6eUkZGh8PBwzZ49W5s3b5ZhGJM9bAAAMAVNugjdvHlTH/vYx1RTU3Pf7Vu3blVVVZVqamrU3t4up9OpzMxMXb9+3cwUFxersbFRDQ0Nam1t1Y0bN5STk6OxsTEz43a71dXVpaamJjU1Namrq0sej8fcPjY2puXLl+vmzZtqbW1VQ0ODDhw4oNLSUjMzODiozMxMuVwutbe3q7q6WpWVlaqqqprsYQMAgCkodLJvePbZZ/Xss8/ed5thGNqxY4c2bdqklStXSpL27t2ruLg47d+/X2vXrpXf79eePXu0b98+LV26VJJUV1en+Ph4HT58WNnZ2Tp79qyamprU1tamtLQ0SdLu3buVnp6uc+fOKTExUV6vV2fOnFFvb69cLpckadu2bcrLy9OWLVsUFRWl+vp63bp1S7W1tbLb7UpKStL58+dVVVWlkpIS2Wy2BzppAABganhP7xG6cOGC+vv7lZWVZa6z2+3KyMjQsWPHJEkdHR0aHR0NyLhcLiUlJZmZ48ePy+FwmCVIkhYsWCCHwxGQSUpKMkuQJGVnZ2t4eFgdHR1mJiMjQ3a7PSBz+fJlXbx48b7HMDw8rMHBwYAFAABMTe9pEerv75ckxcXFBayPi4szt/X39yssLEzR0dETZmJjY+/5/NjY2IDM3fuJjo5WWFjYhJk7r+9k7lZRUWHel+RwOBQfH//OBw4AAB5Jv5enxu7+yskwjHf8GuruzP3y70Xmzo3S482zceNG+f1+c+nt7Z1wbgAA8Oh6T4uQ0+mUdO/VloGBAfNKjNPp1MjIiHw+34SZK1eu3PP5V69eDcjcvR+fz6fR0dEJMwMDA5LuvWp1h91uV1RUVMACAACmpve0CCUkJMjpdKq5udlcNzIyoqNHj2rhwoWSpJSUFE2bNi0g09fXp+7ubjOTnp4uv9+vkydPmpkTJ07I7/cHZLq7u9XX12dmvF6v7Ha7UlJSzExLS0vAI/Ver1cul0tz5859Lw8dAAA8giZdhG7cuKGuri51dXVJevsG6a6uLvX09Mhms6m4uFjl5eVqbGxUd3e38vLyNGPGDLndbkmSw+HQmjVrVFpaqiNHjqizs1OrV69WcnKy+RTZvHnztGzZMuXn56utrU1tbW3Kz89XTk6OEhMTJUlZWVmaP3++PB6POjs7deTIEa1fv175+fnmVRy32y273a68vDx1d3ersbFR5eXlPDEGAAAkPcDj8z/96U/1Z3/2Z+brkpISSdLzzz+v2tpabdiwQUNDQyooKJDP51NaWpq8Xq8iIyPN92zfvl2hoaFatWqVhoaGtGTJEtXW1iokJMTM1NfXq6ioyHy6LDc3N+B3F4WEhOjQoUMqKCjQokWLFB4eLrfbrcrKSjPjcDjU3NyswsJCpaamKjo6WiUlJebMAADA2iZdhBYvXjzhb2a22WwqKytTWVnZuJnp06erurpa1dXV42Zmzpypurq6CWeZM2eODh48OGEmOTlZLS0tE2YAAIA18bfGAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVGEAACAZVmiCH3zm99UQkKCpk+frpSUFP3kJz8J9kgAAOAhMOWL0He+8x0VFxdr06ZN6uzs1Cc/+Uk9++yz6unpCfZoAAAgyKZ8EaqqqtKaNWv0xS9+UfPmzdOOHTsUHx+vnTt3Bns0AAAQZKHBHuD3aWRkRB0dHXrllVcC1mdlZenYsWP3fc/w8LCGh4fN136/X5I0ODj4e5nx9vBvfy+fO56JjoNZ7s/Ks0gP1zzMcn8P0yzSwzUPs9zfozLLe/G5hmFMHDSmsF/+8peGJOO///u/A9Zv2bLF+OM//uP7vuerX/2qIYmFhYWFhYVlCiy9vb0TdoUpfUXoDpvNFvDaMIx71t2xceNGlZSUmK9v376t3/zmN5o1a9a473m/DQ4OKj4+Xr29vYqKigr2OA8Nzsv4ODf3x3m5P87L+Dg39/cwnhfDMHT9+nW5XK4Jc1O6CMXExCgkJET9/f0B6wcGBhQXF3ff99jtdtnt9oB1H/zgB39fI74rUVFRD82/cA8Tzsv4ODf3x3m5P87L+Dg39/ewnReHw/GOmSl9s3RYWJhSUlLU3NwcsL65uVkLFy4M0lQAAOBhMaWvCElSSUmJPB6PUlNTlZ6erl27dqmnp0cvvvhisEcDAABBNuWL0F//9V/r17/+tTZv3qy+vj4lJSXpv/7rv/TEE08Ee7QHZrfb9dWvfvWer/CsjvMyPs7N/XFe7o/zMj7Ozf09yufFZhjv9FwZAADA1DSl7xECAACYCEUIAABYFkUIAABYFkUIAABYFkXoEfPNb35TCQkJmj59ulJSUvSTn/wk2CMFXUVFhT7xiU8oMjJSsbGx+vSnP61z584Fe6yHTkVFhWw2m4qLi4M9ykPhl7/8pVavXq1Zs2ZpxowZ+vjHP66Ojo5gjxVUv/vd7/T3f//3SkhIUHh4uD784Q9r8+bNun37drBHe9+1tLRoxYoVcrlcstls+t73vhew3TAMlZWVyeVyKTw8XIsXL9bp06eDM+z7aKLzMjo6qi9/+ctKTk5WRESEXC6XvvCFL+jy5cvBG/j/gCL0CPnOd76j4uJibdq0SZ2dnfrkJz+pZ599Vj09PcEeLaiOHj2qwsJCtbW1qbm5Wb/73e+UlZWlmzdvBnu0h0Z7e7t27dqlp556KtijPBR8Pp8WLVqkadOm6fvf/77OnDmjbdu2PbS/Rf798vWvf13f+ta3VFNTo7Nnz2rr1q36xje+oerq6mCP9r67efOmPvaxj6mmpua+27du3aqqqirV1NSovb1dTqdTmZmZun79+vs86ftrovPy29/+Vm+88Yb+4R/+QW+88Ya++93v6vz588rNzQ3CpJPwXvxxU7w//vRP/9R48cUXA9Z95CMfMV555ZUgTfRwGhgYMCQZR48eDfYoD4Xr168bTz75pNHc3GxkZGQYL7/8crBHCrovf/nLxjPPPBPsMR46y5cvN1544YWAdStXrjRWr14dpIkeDpKMxsZG8/Xt27cNp9NpvPrqq+a6W7duGQ6Hw/jWt74VhAmD4+7zcj8nT540JBlvvfXW+zPUA+CK0CNiZGREHR0dysrKCliflZWlY8eOBWmqh5Pf75ckzZw5M8iTPBwKCwu1fPlyLV26NNijPDRef/11paam6rOf/axiY2P19NNPa/fu3cEeK+ieeeYZHTlyROfPn5ck/c///I9aW1v1F3/xF0Ge7OFy4cIF9ff3B/w8ttvtysjI4OfxXfx+v2w220N9tXXK/2bpqeJXv/qVxsbG7vljsXFxcff8UVkrMwxDJSUleuaZZ5SUlBTscYKuoaFBb7zxhtrb24M9ykPlF7/4hXbu3KmSkhJ95Stf0cmTJ1VUVCS73a4vfOELwR4vaL785S/L7/frIx/5iEJCQjQ2NqYtW7bo85//fLBHe6jc+Zl7v5/Hb731VjBGeijdunVLr7zyitxu90P1h1jvRhF6xNhstoDXhmHcs87KXnrpJf3sZz9Ta2trsEcJut7eXr388svyer2aPn16sMd5qNy+fVupqakqLy+XJD399NM6ffq0du7caeki9J3vfEd1dXXav3+/PvrRj6qrq0vFxcVyuVx6/vnngz3eQ4efx+MbHR3V5z73Od2+fVvf/OY3gz3OhChCj4iYmBiFhITcc/VnYGDgnv8rsap169bp9ddfV0tLix5//PFgjxN0HR0dGhgYUEpKirlubGxMLS0tqqmp0fDwsEJCQoI4YfA89thjmj9/fsC6efPm6cCBA0Ga6OHwd3/3d3rllVf0uc99TpKUnJyst956SxUVFRSh/8XpdEp6+8rQY489Zq7n5/HbRkdHtWrVKl24cEE//OEPH+qrQRJPjT0ywsLClJKSoubm5oD1zc3NWrhwYZCmejgYhqGXXnpJ3/3ud/XDH/5QCQkJwR7pobBkyRKdOnVKXV1d5pKamqrnnntOXV1dli1BkrRo0aJ7fsXC+fPnH+k/xvxe+O1vf6sPfCDwPwshISGWfHx+IgkJCXI6nQE/j0dGRnT06FHL/zy+U4LefPNNHT58WLNmzQr2SO+IK0KPkJKSEnk8HqWmpio9PV27du1ST0+PXnzxxWCPFlSFhYXav3+//uM//kORkZHmVTOHw6Hw8PAgTxc8kZGR99wnFRERoVmzZln+/qkvfelLWrhwocrLy7Vq1SqdPHlSu3bt0q5du4I9WlCtWLFCW7Zs0Zw5c/TRj35UnZ2dqqqq0gsvvBDs0d53N27c0M9//nPz9YULF9TV1aWZM2dqzpw5Ki4uVnl5uZ588kk9+eSTKi8v14wZM+R2u4M49e/fROfF5XLpM5/5jN544w0dPHhQY2Nj5s/jmTNnKiwsLFhjTyy4D61hsv71X//VeOKJJ4ywsDDjT/7kT3hE3Hj7Ec77La+99lqwR3vo8Pj8//ef//mfRlJSkmG3242PfOQjxq5du4I9UtANDg4aL7/8sjFnzhxj+vTpxoc//GFj06ZNxvDwcLBHe9/96Ec/uu/Pleeff94wjLcfof/qV79qOJ1Ow263G5/61KeMU6dOBXfo98FE5+XChQvj/jz+0Y9+FOzRx2UzDMN4P4sXAADAw4J7hAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGVRhAAAgGX9P0loR8XICL1FAAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DYM method 3? This section needs a lot of work. Retry


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Line #1.    from imblearn.over_sampling import SMOTE

why SMOTE? Did you try anything else? Do you think oversampling is the best way to go here?


Reply via ReviewNB

@@ -0,0 +1 @@
{"cells":[{"source":"<a href=\"https://www.kaggle.com/code/manvinagdev/physical-activity-prediction?scriptVersionId=138941879\" target=\"_blank\"><img align=\"left\" alt=\"Kaggle\" title=\"Open in Kaggle\" src=\"https://kaggle.com/static/images/open-in-kaggle.svg\"></a>","metadata":{},"cell_type":"markdown"},{"cell_type":"markdown","id":"fea86c76","metadata":{"papermill":{"duration":0.008893,"end_time":"2023-08-05T00:06:53.536089","exception":false,"start_time":"2023-08-05T00:06:53.527196","status":"completed"},"tags":[]},"source":["## Importing libraries"]},{"cell_type":"code","execution_count":1,"id":"89d8bcdb","metadata":{"_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","execution":{"iopub.execute_input":"2023-08-05T00:06:53.554723Z","iopub.status.busy":"2023-08-05T00:06:53.554321Z","iopub.status.idle":"2023-08-05T00:07:02.412402Z","shell.execute_reply":"2023-08-05T00:07:02.410962Z"},"papermill":{"duration":8.870272,"end_time":"2023-08-05T00:07:02.414899","exception":false,"start_time":"2023-08-05T00:06:53.544627","status":"completed"},"tags":[]},"outputs":[{"name":"stderr","output_type":"stream","text":["/opt/conda/lib/python3.10/site-packages/scipy/__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.23.5\n"," warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:98: UserWarning: unable to load libtensorflow_io_plugins.so: unable to open file: libtensorflow_io_plugins.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io_plugins.so: undefined symbol: _ZN3tsl6StatusC1EN10tensorflow5error4CodeESt17basic_string_viewIcSt11char_traitsIcEENS_14SourceLocationE']\n"," warnings.warn(f\"unable to load libtensorflow_io_plugins.so: {e}\")\n","/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/__init__.py:104: UserWarning: file system plugins are not loaded: unable to open file: libtensorflow_io.so, from paths: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so']\n","caused by: ['/opt/conda/lib/python3.10/site-packages/tensorflow_io/python/ops/libtensorflow_io.so: undefined symbol: _ZTVN10tensorflow13GcsFileSystemE']\n"," warnings.warn(f\"file system plugins are not loaded: {e}\")\n"]},{"name":"stdout","output_type":"stream","text":["/kaggle/input/fisical-activity-dataset/dataset2.csv\n"]}],"source":["import numpy as np\n","import pandas as pd\n","import tensorflow as tf\n","\n","import os\n","for dirname, _, filenames in os.walk('/kaggle/input'):\n"," for filename in filenames:\n"," print(os.path.join(dirname, filename))"]},{"cell_type":"markdown","id":"e1dee26f","metadata":{"papermill":{"duration":0.008233,"end_time":"2023-08-05T00:07:02.431643","exception":false,"start_time":"2023-08-05T00:07:02.42341","status":"completed"},"tags":[]},"source":["## Loading the dataset"]},{"cell_type":"code","execution_count":2,"id":"ce6fe559","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:02.452779Z","iopub.status.busy":"2023-08-05T00:07:02.451213Z","iopub.status.idle":"2023-08-05T00:07:24.443285Z","shell.execute_reply":"2023-08-05T00:07:24.442116Z"},"papermill":{"duration":22.004325,"end_time":"2023-08-05T00:07:24.445861","exception":false,"start_time":"2023-08-05T00:07:02.441536","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<div>\n","<style scoped>\n"," .dataframe tbody tr th:only-of-type {\n"," vertical-align: middle;\n"," }\n","\n"," .dataframe tbody tr th {\n"," vertical-align: top;\n"," }\n","\n"," .dataframe thead th {\n"," text-align: right;\n"," }\n","</style>\n","<table border=\"1\" class=\"dataframe\">\n"," <thead>\n"," <tr style=\"text-align: right;\">\n"," <th></th>\n"," <th>activityID</th>\n"," <th>heart_rate</th>\n"," <th>hand temperature (°C)</th>\n"," <th>hand acceleration X ±16g</th>\n"," <th>hand acceleration Y ±16g</th>\n"," <th>hand acceleration Z ±16g</th>\n"," <th>hand gyroscope X</th>\n"," <th>hand gyroscope Y</th>\n"," <th>hand gyroscope Z</th>\n"," <th>hand magnetometer X</th>\n"," <th>...</th>\n"," <th>ankle acceleration X ±16g</th>\n"," <th>ankle acceleration Y ±16g</th>\n"," <th>ankle acceleration Z ±16g</th>\n"," <th>ankle gyroscope X</th>\n"," <th>ankle gyroscope Y</th>\n"," <th>ankle gyroscope Z</th>\n"," <th>ankle magnetometer X</th>\n"," <th>ankle magnetometer Y</th>\n"," <th>ankle magnetometer Z</th>\n"," <th>PeopleId</th>\n"," </tr>\n"," </thead>\n"," <tbody>\n"," <tr>\n"," <th>0</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37223</td>\n"," <td>8.60074</td>\n"," <td>3.51048</td>\n"," <td>-0.092217</td>\n"," <td>0.056812</td>\n"," <td>-0.015845</td>\n"," <td>14.6806</td>\n"," <td>...</td>\n"," <td>9.65918</td>\n"," <td>-1.65569</td>\n"," <td>-0.099797</td>\n"," <td>0.008300</td>\n"," <td>0.009250</td>\n"," <td>-0.017580</td>\n"," <td>-61.1888</td>\n"," <td>-38.9599</td>\n"," <td>-58.1438</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>1</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.18837</td>\n"," <td>8.56560</td>\n"," <td>3.66179</td>\n"," <td>-0.024413</td>\n"," <td>0.047759</td>\n"," <td>0.006474</td>\n"," <td>14.8991</td>\n"," <td>...</td>\n"," <td>9.69370</td>\n"," <td>-1.57902</td>\n"," <td>-0.215687</td>\n"," <td>-0.006577</td>\n"," <td>-0.004638</td>\n"," <td>0.000368</td>\n"," <td>-59.8479</td>\n"," <td>-38.8919</td>\n"," <td>-58.5253</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>2</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.37357</td>\n"," <td>8.60107</td>\n"," <td>3.54898</td>\n"," <td>-0.057976</td>\n"," <td>0.032574</td>\n"," <td>-0.006988</td>\n"," <td>14.2420</td>\n"," <td>...</td>\n"," <td>9.58944</td>\n"," <td>-1.73276</td>\n"," <td>0.092914</td>\n"," <td>0.003014</td>\n"," <td>0.000148</td>\n"," <td>0.022495</td>\n"," <td>-60.7361</td>\n"," <td>-39.4138</td>\n"," <td>-58.3999</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>3</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.07473</td>\n"," <td>8.52853</td>\n"," <td>3.66021</td>\n"," <td>-0.002352</td>\n"," <td>0.032810</td>\n"," <td>-0.003747</td>\n"," <td>14.8908</td>\n"," <td>...</td>\n"," <td>9.58814</td>\n"," <td>-1.77040</td>\n"," <td>0.054545</td>\n"," <td>0.003175</td>\n"," <td>-0.020301</td>\n"," <td>0.011275</td>\n"," <td>-60.4091</td>\n"," <td>-38.7635</td>\n"," <td>-58.3956</td>\n"," <td>1</td>\n"," </tr>\n"," <tr>\n"," <th>4</th>\n"," <td>transient activities</td>\n"," <td>104.0</td>\n"," <td>30.0</td>\n"," <td>2.22936</td>\n"," <td>8.83122</td>\n"," <td>3.70000</td>\n"," <td>0.012269</td>\n"," <td>0.018305</td>\n"," <td>-0.053325</td>\n"," <td>15.5612</td>\n"," <td>...</td>\n"," <td>9.69771</td>\n"," <td>-1.65625</td>\n"," <td>-0.060809</td>\n"," <td>0.012698</td>\n"," <td>-0.014303</td>\n"," <td>-0.002823</td>\n"," <td>-61.5199</td>\n"," <td>-39.3879</td>\n"," <td>-58.2694</td>\n"," <td>1</td>\n"," </tr>\n"," </tbody>\n","</table>\n","<p>5 rows × 33 columns</p>\n","</div>"],"text/plain":[" activityID heart_rate hand temperature (°C) \\\n","0 transient activities 104.0 30.0 \n","1 transient activities 104.0 30.0 \n","2 transient activities 104.0 30.0 \n","3 transient activities 104.0 30.0 \n","4 transient activities 104.0 30.0 \n","\n"," hand acceleration X ±16g hand acceleration Y ±16g \\\n","0 2.37223 8.60074 \n","1 2.18837 8.56560 \n","2 2.37357 8.60107 \n","3 2.07473 8.52853 \n","4 2.22936 8.83122 \n","\n"," hand acceleration Z ±16g hand gyroscope X hand gyroscope Y \\\n","0 3.51048 -0.092217 0.056812 \n","1 3.66179 -0.024413 0.047759 \n","2 3.54898 -0.057976 0.032574 \n","3 3.66021 -0.002352 0.032810 \n","4 3.70000 0.012269 0.018305 \n","\n"," hand gyroscope Z hand magnetometer X ... ankle acceleration X ±16g \\\n","0 -0.015845 14.6806 ... 9.65918 \n","1 0.006474 14.8991 ... 9.69370 \n","2 -0.006988 14.2420 ... 9.58944 \n","3 -0.003747 14.8908 ... 9.58814 \n","4 -0.053325 15.5612 ... 9.69771 \n","\n"," ankle acceleration Y ±16g ankle acceleration Z ±16g ankle gyroscope X \\\n","0 -1.65569 -0.099797 0.008300 \n","1 -1.57902 -0.215687 -0.006577 \n","2 -1.73276 0.092914 0.003014 \n","3 -1.77040 0.054545 0.003175 \n","4 -1.65625 -0.060809 0.012698 \n","\n"," ankle gyroscope Y ankle gyroscope Z ankle magnetometer X \\\n","0 0.009250 -0.017580 -61.1888 \n","1 -0.004638 0.000368 -59.8479 \n","2 0.000148 0.022495 -60.7361 \n","3 -0.020301 0.011275 -60.4091 \n","4 -0.014303 -0.002823 -61.5199 \n","\n"," ankle magnetometer Y ankle magnetometer Z PeopleId \n","0 -38.9599 -58.1438 1 \n","1 -38.8919 -58.5253 1 \n","2 -39.4138 -58.3999 1 \n","3 -38.7635 -58.3956 1 \n","4 -39.3879 -58.2694 1 \n","\n","[5 rows x 33 columns]"]},"execution_count":2,"metadata":{},"output_type":"execute_result"}],"source":["dataset = pd.read_csv('/kaggle/input/fisical-activity-dataset/dataset2.csv')\n","dataset.head()"]},{"cell_type":"code","execution_count":3,"id":"4c7d3445","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.466165Z","iopub.status.busy":"2023-08-05T00:07:24.465496Z","iopub.status.idle":"2023-08-05T00:07:24.70062Z","shell.execute_reply":"2023-08-05T00:07:24.699179Z"},"papermill":{"duration":0.24804,"end_time":"2023-08-05T00:07:24.703053","exception":false,"start_time":"2023-08-05T00:07:24.455013","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[104. 30. 2.37223 ... -61.1888 -38.9599 -58.1438 ]\n"," [104. 30. 2.18837 ... -59.8479 -38.8919 -58.5253 ]\n"," [104. 30. 2.37357 ... -60.7361 -39.4138 -58.3999 ]\n"," ...\n"," [140. 30.8125 -9.42745 ... -38.5541 -16.0535 24.6936 ]\n"," [140. 30.8125 -9.47246 ... -38.8064 -16.04 24.9763 ]\n"," [140. 30.8125 -9.66621 ... -38.6814 -15.9175 24.9766 ]]\n","['transient activities' 'transient activities' 'transient activities' ...\n"," 'transient activities' 'transient activities' 'transient activities']\n"]}],"source":["X = dataset.iloc[:, 1:-1].values\n","y = dataset.iloc[:, 0].values\n","print(X)\n","print(y)"]},{"cell_type":"markdown","id":"e73af995","metadata":{"papermill":{"duration":0.00873,"end_time":"2023-08-05T00:07:24.720797","exception":false,"start_time":"2023-08-05T00:07:24.712067","status":"completed"},"tags":[]},"source":["## Encoding categorical data"]},{"cell_type":"code","execution_count":4,"id":"b2055003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:24.740481Z","iopub.status.busy":"2023-08-05T00:07:24.740069Z","iopub.status.idle":"2023-08-05T00:07:26.930985Z","shell.execute_reply":"2023-08-05T00:07:26.929671Z"},"papermill":{"duration":2.203646,"end_time":"2023-08-05T00:07:26.933552","exception":false,"start_time":"2023-08-05T00:07:24.729906","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["['Nordic walking', 'ascending stairs', 'cycling', 'descending stairs', 'ironing', 'lying', 'rope jumping', 'running', 'sitting', 'standing', 'transient activities', 'vacuum cleaning', 'walking']\n","Counter({10: 927575, 12: 238761, 4: 238690, 5: 192523, 9: 189931, 0: 188107, 8: 185188, 11: 175353, 2: 164600, 1: 117216, 3: 104944, 7: 98199, 6: 42969})\n","Class=10, n=927575 (32.387%)\n","Class=5, n=192523 (6.722%)\n","Class=8, n=185188 (6.466%)\n","Class=9, n=189931 (6.632%)\n","Class=4, n=238690 (8.334%)\n","Class=11, n=175353 (6.123%)\n","Class=1, n=117216 (4.093%)\n","Class=3, n=104944 (3.664%)\n","Class=12, n=238761 (8.336%)\n","Class=0, n=188107 (6.568%)\n","Class=2, n=164600 (5.747%)\n","Class=7, n=98199 (3.429%)\n","Class=6, n=42969 (1.500%)\n"]},{"data":{"image/png":"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1vJl/F7LsoYftMaxDz74wJJk/fGPf/TbvnHjRuvv/u7vhrzPM888Y0nixo0bN27cuI2DW3t7+7CtMK6vCF0RFBTk97NlWYO2XVFUVKTCwkL758uXL+ujjz7SlClTrnmf0dbT06O4uDi1t7crMjIy0MsZMzgv18a5GRrnZWicl2vj3AxtLJ4Xy7J0/vx5ud3uYefGdQhFR0crODhYXV1dftu7u7sVGxs75H0cDoccDofftq997Wtf1RL/JpGRkWPmP7ixhPNybZyboXFehsZ5uTbOzdDG2nlxOp3XnRnXb5YODQ1VUlKS6urq/LbX1dVp7ty5AVoVAAAYK8b1FSFJKiwslMfjUXJyslJSUrR161a1tbXp0UcfDfTSAABAgI37EHrggQf0v//7v9qwYYM6OzuVmJioN998U3feeWegl/aFORwOPfPMM4NewjMd5+XaODdD47wMjfNybZybod3M5yXIsq73uTIAAIDxaVy/RwgAAGA4hBAAADAWIQQAAIxFCAEAAGMRQjeZl156SfHx8Zo4caKSkpL09ttvB3pJAVdSUqJ7771XERERiomJ0fe//3299957gV7WmFNSUqKgoCAVFBQEeiljwgcffKBly5ZpypQpmjRpku655x41NzcHelkB9dlnn+nnP/+54uPjFRYWprvuuksbNmzQ5cuXA720Ubd//34tWbJEbrdbQUFB+o//+A+//ZZlaf369XK73QoLC9OCBQt0/PjxwCx2FA13Xvr7+7V27VrNmjVL4eHhcrvdevjhh9XR0RG4Bd8AQugm8vrrr6ugoEBPPfWUjh49qm9/+9v67ne/q7a2tkAvLaDq6+uVl5enxsZG1dXV6bPPPlN6erouXrwY6KWNGU1NTdq6dau+8Y1vBHopY4LX69W8efM0YcIE7d27V++8846ef/75Mfst8qNl8+bNevnll1VRUaETJ05oy5Yteu6551ReXh7opY26ixcv6u///u9VUVEx5P4tW7aorKxMFRUVampqksvlUlpams6fPz/KKx1dw52XTz75REeOHNEvfvELHTlyRL/5zW908uRJZWVlBWClI/Bl/HFTjI5vfetb1qOPPuq37e6777bWrVsXoBWNTd3d3ZYkq76+PtBLGRPOnz9vTZ8+3aqrq7NSU1Otxx9/PNBLCri1a9da8+fPD/QyxpyMjAzrxz/+sd+2H/zgB9ayZcsCtKKxQZJVXV1t/3z58mXL5XJZmzZtsrd9+umnltPptF5++eUArDAwrj4vQzl8+LAlyTpz5szoLOoL4IrQTaKvr0/Nzc1KT0/3256enq4DBw4EaFVjk8/nkyRNnjw5wCsZG/Ly8pSRkaFFixYFeiljxhtvvKHk5GT98Ic/VExMjGbPnq1XXnkl0MsKuPnz52vfvn06efKkJOlPf/qTGhoa9L3vfS/AKxtbTp06pa6uLr/nY4fDodTUVJ6Pr+Lz+RQUFDSmr7aO+2+WHi/+53/+RwMDA4P+WGxsbOygPyprMsuyVFhYqPnz5ysxMTHQywm4qqoqHTlyRE1NTYFeypjy17/+VZWVlSosLNSTTz6pw4cPKz8/Xw6HQw8//HCglxcwa9eulc/n0913363g4GANDAxo48aN+tGPfhTopY0pV55zh3o+PnPmTCCWNCZ9+umnWrdunbKzs8fUH2K9GiF0kwkKCvL72bKsQdtM9thjj+nPf/6zGhoaAr2UgGtvb9fjjz+u2tpaTZw4MdDLGVMuX76s5ORkFRcXS5Jmz56t48ePq7Ky0ugQev3117Vjxw7t2rVLX//619XS0qKCggK53W498sgjgV7emMPz8bX19/frwQcf1OXLl/XSSy8FejnDIoRuEtHR0QoODh509ae7u3vQ/5WYatWqVXrjjTe0f/9+3X777YFeTsA1Nzeru7tbSUlJ9raBgQHt379fFRUV6u3tVXBwcABXGDhTp05VQkKC37aZM2dq9+7dAVrR2PCzn/1M69at04MPPihJmjVrls6cOaOSkhJC6P9wuVySPr8yNHXqVHs7z8ef6+/v19KlS3Xq1Cn94Q9/GNNXgyQ+NXbTCA0NVVJSkurq6vy219XVae7cuQFa1dhgWZYee+wx/eY3v9Ef/vAHxcfHB3pJY8LChQt17NgxtbS02Lfk5GQ99NBDamlpMTaCJGnevHmDvmLh5MmTN/UfY/4yfPLJJ7rlFv9/FoKDg438+Pxw4uPj5XK5/J6P+/r6VF9fb/zz8ZUIev/99/X73/9eU6ZMCfSSrosrQjeRwsJCeTweJScnKyUlRVu3blVbW5seffTRQC8toPLy8rRr1y799re/VUREhH3VzOl0KiwsLMCrC5yIiIhB75MKDw/XlClTjH//1E9/+lPNnTtXxcXFWrp0qQ4fPqytW7dq69atgV5aQC1ZskQbN27UHXfcoa9//es6evSoysrK9OMf/zjQSxt1Fy5c0F/+8hf751OnTqmlpUWTJ0/WHXfcoYKCAhUXF2v69OmaPn26iouLNWnSJGVnZwdw1V+94c6L2+3WP/3TP+nIkSP63e9+p4GBAfv5ePLkyQoNDQ3UsocX2A+tYaT+9V//1brzzjut0NBQ65vf/CYfEbc+/wjnULdXX3010Esbc/j4/P/3n//5n1ZiYqLlcDisu+++29q6dWuglxRwPT091uOPP27dcccd1sSJE6277rrLeuqpp6ze3t5AL23UvfXWW0M+rzzyyCOWZX3+EfpnnnnGcrlclsPhsL7zne9Yx44dC+yiR8Fw5+XUqVPXfD5+6623Ar30awqyLMsazfACAAAYK3iPEAAAMBYhBAAAjEUIAQAAYxFCAADAWIQQAAAwFiEEAACMRQgBAABjEUIAAMBYhBAAADAWIQQAAIxFCAEAAGMRQgAAwFj/D0q8XeCh0Mj+AAAAAElFTkSuQmCC","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from collections import Counter\n","from sklearn.preprocessing import LabelEncoder\n","from matplotlib import pyplot\n","\n","le = LabelEncoder()\n","y_temp = le.fit_transform(y)\n","print(list(le.classes_))\n","counter = Counter(y_temp)\n","\n","print(counter)\n","for k,v in counter.items():\n"," per = v / len(y_temp) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"markdown","id":"2d62ec16","metadata":{"papermill":{"duration":0.009288,"end_time":"2023-08-05T00:07:26.952484","exception":false,"start_time":"2023-08-05T00:07:26.943196","status":"completed"},"tags":[]},"source":["## Method 1: Using Random Forest Classifier "]},{"cell_type":"markdown","id":"ec9d9fce","metadata":{"papermill":{"duration":0.009112,"end_time":"2023-08-05T00:07:26.971127","exception":false,"start_time":"2023-08-05T00:07:26.962015","status":"completed"},"tags":[]},"source":["## Handling missing values"]},{"cell_type":"code","execution_count":5,"id":"68d72f52","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:26.992642Z","iopub.status.busy":"2023-08-05T00:07:26.992214Z","iopub.status.idle":"2023-08-05T00:07:29.167243Z","shell.execute_reply":"2023-08-05T00:07:29.166002Z"},"papermill":{"duration":2.188981,"end_time":"2023-08-05T00:07:29.169898","exception":false,"start_time":"2023-08-05T00:07:26.980917","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.impute import SimpleImputer\n","imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n","imputer.fit(X)\n","X = imputer.transform(X)"]},{"cell_type":"markdown","id":"b99c6d79","metadata":{"papermill":{"duration":0.009124,"end_time":"2023-08-05T00:07:29.188693","exception":false,"start_time":"2023-08-05T00:07:29.179569","status":"completed"},"tags":[]},"source":["## Encoding"]},{"cell_type":"code","execution_count":6,"id":"57a332ea","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.209213Z","iopub.status.busy":"2023-08-05T00:07:29.20881Z","iopub.status.idle":"2023-08-05T00:07:29.792137Z","shell.execute_reply":"2023-08-05T00:07:29.791044Z"},"papermill":{"duration":0.596644,"end_time":"2023-08-05T00:07:29.794779","exception":false,"start_time":"2023-08-05T00:07:29.198135","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import LabelEncoder\n","le = LabelEncoder()\n","y = le.fit_transform(y)"]},{"cell_type":"code","execution_count":7,"id":"974612a4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:29.81627Z","iopub.status.busy":"2023-08-05T00:07:29.815829Z","iopub.status.idle":"2023-08-05T00:07:31.145986Z","shell.execute_reply":"2023-08-05T00:07:31.144799Z"},"papermill":{"duration":1.343317,"end_time":"2023-08-05T00:07:31.148501","exception":false,"start_time":"2023-08-05T00:07:29.805184","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"8edfbb5a","metadata":{"papermill":{"duration":0.008929,"end_time":"2023-08-05T00:07:31.166893","exception":false,"start_time":"2023-08-05T00:07:31.157964","status":"completed"},"tags":[]},"source":["## Feature Scaling"]},{"cell_type":"code","execution_count":8,"id":"ba643853","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:31.187287Z","iopub.status.busy":"2023-08-05T00:07:31.186875Z","iopub.status.idle":"2023-08-05T00:07:32.475029Z","shell.execute_reply":"2023-08-05T00:07:32.474185Z"},"papermill":{"duration":1.301347,"end_time":"2023-08-05T00:07:32.477471","exception":false,"start_time":"2023-08-05T00:07:31.176124","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"markdown","id":"14ac9a68","metadata":{"papermill":{"duration":0.009663,"end_time":"2023-08-05T00:07:32.496576","exception":false,"start_time":"2023-08-05T00:07:32.486913","status":"completed"},"tags":[]},"source":["## Training RandomForestClassifier"]},{"cell_type":"code","execution_count":9,"id":"1dfae9c0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:07:32.517561Z","iopub.status.busy":"2023-08-05T00:07:32.517142Z","iopub.status.idle":"2023-08-05T00:15:35.089903Z","shell.execute_reply":"2023-08-05T00:15:35.088663Z"},"papermill":{"duration":482.594606,"end_time":"2023-08-05T00:15:35.101103","exception":false,"start_time":"2023-08-05T00:07:32.506497","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-1 {color: black;background-color: white;}#sk-container-id-1 pre{padding: 0;}#sk-container-id-1 div.sk-toggleable {background-color: white;}#sk-container-id-1 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-1 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-1 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-1 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-1 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-1 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-1 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-1 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-1 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-1 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-1 div.sk-item {position: relative;z-index: 1;}#sk-container-id-1 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-1 div.sk-item::before, #sk-container-id-1 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-1 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-1 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-1 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-1 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-1 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-1 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-1 div.sk-label-container {text-align: center;}#sk-container-id-1 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-1 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">RandomForestClassifier</label><div class=\"sk-toggleable__content\"><pre>RandomForestClassifier(criterion=&#x27;entropy&#x27;, n_estimators=10, random_state=0)</pre></div></div></div></div></div>"],"text/plain":["RandomForestClassifier(criterion='entropy', n_estimators=10, random_state=0)"]},"execution_count":9,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.ensemble import RandomForestClassifier\n","classifier = RandomForestClassifier(n_estimators=10, criterion='entropy', random_state=0)\n","classifier.fit(X_train, y_train)"]},{"cell_type":"markdown","id":"a6207e57","metadata":{"papermill":{"duration":0.009341,"end_time":"2023-08-05T00:15:35.120003","exception":false,"start_time":"2023-08-05T00:15:35.110662","status":"completed"},"tags":[]},"source":["## Predicting Results"]},{"cell_type":"code","execution_count":10,"id":"a963263d","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:35.140981Z","iopub.status.busy":"2023-08-05T00:15:35.140561Z","iopub.status.idle":"2023-08-05T00:15:37.22477Z","shell.execute_reply":"2023-08-05T00:15:37.223543Z"},"papermill":{"duration":2.097825,"end_time":"2023-08-05T00:15:37.227329","exception":false,"start_time":"2023-08-05T00:15:35.129504","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["y_pred = classifier.predict(X_test)\n","print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"7846df5c","metadata":{"papermill":{"duration":0.009748,"end_time":"2023-08-05T00:15:37.247066","exception":false,"start_time":"2023-08-05T00:15:37.237318","status":"completed"},"tags":[]},"source":["## Calculating Accuracy"]},{"cell_type":"code","execution_count":11,"id":"ed6e3e8a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.268284Z","iopub.status.busy":"2023-08-05T00:15:37.267859Z","iopub.status.idle":"2023-08-05T00:15:37.436445Z","shell.execute_reply":"2023-08-05T00:15:37.435065Z"},"papermill":{"duration":0.182461,"end_time":"2023-08-05T00:15:37.439113","exception":false,"start_time":"2023-08-05T00:15:37.256652","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 37634 0 0 0 0 0 0 0 0 0\n"," 8 0 0]\n"," [ 0 23179 0 23 0 0 0 0 0 0\n"," 81 0 0]\n"," [ 0 0 32839 0 0 0 0 0 0 0\n"," 21 0 0]\n"," [ 0 14 0 20904 0 0 0 0 0 0\n"," 43 0 0]\n"," [ 0 0 0 0 47928 0 0 0 0 14\n"," 6 0 0]\n"," [ 0 0 0 0 0 38287 0 0 3 0\n"," 17 0 0]\n"," [ 0 0 1 0 0 0 8591 2 0 0\n"," 5 0 0]\n"," [ 0 0 0 0 0 0 0 19492 0 0\n"," 8 1 0]\n"," [ 0 0 0 0 0 0 0 0 36812 2\n"," 32 0 0]\n"," [ 0 0 0 0 22 0 0 0 4 38082\n"," 57 0 0]\n"," [ 28 61 12 57 25 32 8 24 31 22\n"," 185589 24 20]\n"," [ 0 0 0 0 0 0 0 0 0 0\n"," 41 35025 0]\n"," [ 1 0 0 0 0 0 0 0 0 0\n"," 41 0 47659]]\n"]},{"data":{"text/plain":["0.9986190931754223"]},"execution_count":11,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.metrics import confusion_matrix, accuracy_score\n","cm = confusion_matrix(y_test, y_pred)\n","print(cm)\n","accuracy_score(y_test, y_pred)"]},{"cell_type":"code","execution_count":12,"id":"e609b003","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:37.462377Z","iopub.status.busy":"2023-08-05T00:15:37.461702Z","iopub.status.idle":"2023-08-05T00:15:39.654083Z","shell.execute_reply":"2023-08-05T00:15:39.652958Z"},"papermill":{"duration":2.206834,"end_time":"2023-08-05T00:15:39.656344","exception":false,"start_time":"2023-08-05T00:15:37.44951","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":[" <script type=\"text/javascript\">\n"," window.PlotlyConfig = {MathJaxConfig: 'local'};\n"," if (window.MathJax && window.MathJax.Hub && window.MathJax.Hub.Config) {window.MathJax.Hub.Config({SVG: {font: \"STIX-Web\"}});}\n"," if (typeof require !== 'undefined') {\n"," require.undef(\"plotly\");\n"," requirejs.config({\n"," paths: {\n"," 'plotly': ['https://cdn.plot.ly/plotly-2.24.1.min']\n"," }\n"," });\n"," require(['plotly'], function(Plotly) {\n"," window._Plotly = Plotly;\n"," });\n"," }\n"," </script>\n"," "]},"metadata":{},"output_type":"display_data"},{"data":{"text/html":["<div> <div id=\"be7930db-6c4e-497b-b832-416da626298c\" class=\"plotly-graph-div\" style=\"height:525px; width:100%;\"></div> <script type=\"text/javascript\"> require([\"plotly\"], function(Plotly) { window.PLOTLYENV=window.PLOTLYENV || {}; if (document.getElementById(\"be7930db-6c4e-497b-b832-416da626298c\")) { Plotly.newPlot( \"be7930db-6c4e-497b-b832-416da626298c\", [{\"coloraxis\":\"coloraxis\",\"name\":\"0\",\"texttemplate\":\"%{z}\",\"z\":[[37634,0,0,0,0,0,0,0,0,0,8,0,0],[0,23179,0,23,0,0,0,0,0,0,81,0,0],[0,0,32839,0,0,0,0,0,0,0,21,0,0],[0,14,0,20904,0,0,0,0,0,0,43,0,0],[0,0,0,0,47928,0,0,0,0,14,6,0,0],[0,0,0,0,0,38287,0,0,3,0,17,0,0],[0,0,1,0,0,0,8591,2,0,0,5,0,0],[0,0,0,0,0,0,0,19492,0,0,8,1,0],[0,0,0,0,0,0,0,0,36812,2,32,0,0],[0,0,0,0,22,0,0,0,4,38082,57,0,0],[28,61,12,57,25,32,8,24,31,22,185589,24,20],[0,0,0,0,0,0,0,0,0,0,41,35025,0],[1,0,0,0,0,0,0,0,0,0,41,0,47659]],\"type\":\"heatmap\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"hovertemplate\":\"x: %{x}\\u003cbr\\u003ey: %{y}\\u003cbr\\u003ecolor: %{z}\\u003cextra\\u003e\\u003c\\u002fextra\\u003e\"}], {\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmapgl\":[{\"type\":\"heatmapgl\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,1.0]},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"autorange\":\"reversed\"},\"coloraxis\":{\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]},\"margin\":{\"t\":60}}, {\"responsive\": true} ).then(function(){\n"," \n","var gd = document.getElementById('be7930db-6c4e-497b-b832-416da626298c');\n","var x = new MutationObserver(function (mutations, observer) {{\n"," var display = window.getComputedStyle(gd).display;\n"," if (!display || display === 'none') {{\n"," console.log([gd, 'removed!']);\n"," Plotly.purge(gd);\n"," observer.disconnect();\n"," }}\n","}});\n","\n","// Listen for the removal of the full notebook cells\n","var notebookContainer = gd.closest('#notebook-container');\n","if (notebookContainer) {{\n"," x.observe(notebookContainer, {childList: true});\n","}}\n","\n","// Listen for the clearing of the current output cell\n","var outputEl = gd.closest('.output');\n","if (outputEl) {{\n"," x.observe(outputEl, {childList: true});\n","}}\n","\n"," }) }; }); </script> </div>"]},"metadata":{},"output_type":"display_data"}],"source":["# import matplotlib.pyplot as plt\n","# from sklearn.metrics import ConfusionMatrixDisplay\n","# disp = ConfusionMatrixDisplay(confusion_matrix=cm,\n","# display_labels=classifier.classes_)\n","# disp.plot()\n","# plt.show()\n","import plotly.express as px\n","fig = px.imshow(cm, text_auto=True, aspect=\"auto\")\n","fig.show()"]},{"cell_type":"markdown","id":"6b68fad1","metadata":{"papermill":{"duration":0.010207,"end_time":"2023-08-05T00:15:39.677156","exception":false,"start_time":"2023-08-05T00:15:39.666949","status":"completed"},"tags":[]},"source":["Method 2: KNN"]},{"cell_type":"code","execution_count":13,"id":"219416d1","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:39.699914Z","iopub.status.busy":"2023-08-05T00:15:39.699066Z","iopub.status.idle":"2023-08-05T00:15:40.015603Z","shell.execute_reply":"2023-08-05T00:15:40.014559Z"},"papermill":{"duration":0.330691,"end_time":"2023-08-05T00:15:40.0181","exception":false,"start_time":"2023-08-05T00:15:39.687409","status":"completed"},"tags":[]},"outputs":[{"data":{"text/html":["<style>#sk-container-id-2 {color: black;background-color: white;}#sk-container-id-2 pre{padding: 0;}#sk-container-id-2 div.sk-toggleable {background-color: white;}#sk-container-id-2 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-2 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-2 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-2 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-2 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-2 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-2 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-2 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-2 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-2 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-2 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-2 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-2 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-2 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-2 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-2 div.sk-item {position: relative;z-index: 1;}#sk-container-id-2 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-2 div.sk-item::before, #sk-container-id-2 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-2 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-2 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-2 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-2 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-2 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-2 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-2 div.sk-label-container {text-align: center;}#sk-container-id-2 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-2 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-2\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>KNeighborsClassifier()</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-2\" type=\"checkbox\" checked><label for=\"sk-estimator-id-2\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">KNeighborsClassifier</label><div class=\"sk-toggleable__content\"><pre>KNeighborsClassifier()</pre></div></div></div></div></div>"],"text/plain":["KNeighborsClassifier()"]},"execution_count":13,"metadata":{},"output_type":"execute_result"}],"source":["from sklearn.neighbors import KNeighborsClassifier\n","knn_clf = KNeighborsClassifier()\n","knn_clf.fit(X_train,y_train)"]},{"cell_type":"code","execution_count":14,"id":"fe6052b4","metadata":{"execution":{"iopub.execute_input":"2023-08-05T00:15:40.041026Z","iopub.status.busy":"2023-08-05T00:15:40.040612Z","iopub.status.idle":"2023-08-05T01:09:53.645091Z","shell.execute_reply":"2023-08-05T01:09:53.643871Z"},"papermill":{"duration":3253.619328,"end_time":"2023-08-05T01:09:53.648066","exception":false,"start_time":"2023-08-05T00:15:40.028738","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred=knn_clf.predict(X_test)"]},{"cell_type":"code","execution_count":15,"id":"80d0ea82","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.674186Z","iopub.status.busy":"2023-08-05T01:09:53.673791Z","iopub.status.idle":"2023-08-05T01:09:53.682771Z","shell.execute_reply":"2023-08-05T01:09:53.681553Z"},"papermill":{"duration":0.023497,"end_time":"2023-08-05T01:09:53.685168","exception":false,"start_time":"2023-08-05T01:09:53.661671","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[[ 4 4]\n"," [10 10]\n"," [ 8 8]\n"," ...\n"," [ 7 7]\n"," [ 8 8]\n"," [ 3 3]]\n"]}],"source":["print(np.concatenate((y_pred.reshape(len(y_pred),1), y_test.reshape(len(y_test),1)),1))"]},{"cell_type":"markdown","id":"30642482","metadata":{"papermill":{"duration":0.01112,"end_time":"2023-08-05T01:09:53.711764","exception":false,"start_time":"2023-08-05T01:09:53.700644","status":"completed"},"tags":[]},"source":["## Method 2: Using ANN"]},{"cell_type":"code","execution_count":16,"id":"9fe82be2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:53.739787Z","iopub.status.busy":"2023-08-05T01:09:53.738634Z","iopub.status.idle":"2023-08-05T01:09:55.132546Z","shell.execute_reply":"2023-08-05T01:09:55.131479Z"},"papermill":{"duration":1.410752,"end_time":"2023-08-05T01:09:55.135242","exception":false,"start_time":"2023-08-05T01:09:53.72449","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.model_selection import train_test_split\n","X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=0)"]},{"cell_type":"markdown","id":"571dcd4c","metadata":{"papermill":{"duration":0.010439,"end_time":"2023-08-05T01:09:55.156709","exception":false,"start_time":"2023-08-05T01:09:55.14627","status":"completed"},"tags":[]},"source":["## Oversampling the minority classes"]},{"cell_type":"code","execution_count":17,"id":"32271f2b","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:09:55.181016Z","iopub.status.busy":"2023-08-05T01:09:55.180057Z","iopub.status.idle":"2023-08-05T01:19:23.222784Z","shell.execute_reply":"2023-08-05T01:19:23.221544Z"},"papermill":{"duration":568.057647,"end_time":"2023-08-05T01:19:23.225424","exception":false,"start_time":"2023-08-05T01:09:55.167777","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Class=4, n=741642 (7.692%)\n","Class=12, n=741642 (7.692%)\n","Class=10, n=741642 (7.692%)\n","Class=2, n=741642 (7.692%)\n","Class=9, n=741642 (7.692%)\n","Class=8, n=741642 (7.692%)\n","Class=0, n=741642 (7.692%)\n","Class=5, n=741642 (7.692%)\n","Class=1, n=741642 (7.692%)\n","Class=11, n=741642 (7.692%)\n","Class=6, n=741642 (7.692%)\n","Class=3, n=741642 (7.692%)\n","Class=7, n=741642 (7.692%)\n"]},{"data":{"image/png":"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7HZ7QOby5cu6ePHifY9peHhYg4ODAQsAAJiaHrgIGYahkpISPfPMM0pKSpIk9ff3S5Li4uICsnFxcea2/v5+hYWFKTo6esJMbGzsPfuMjY0NyNy9n+joaIWFhU2YufP6TuZuFRUV5n1JDodD8fHx73AmAADAo+qBi9BLL72kn/3sZ/r3f//3e7bd/ZWTYRjv+DXU3Zn75d+LzJ0bpcebZ+PGjfL7/ebS29s74dwAAODR9UBFaN26dXr99df1ox/9SI8//ri53ul0Srr3asvAwIB5JcbpdGpkZEQ+n2/CzJUrV+7Z79WrVwMyd+/H5/NpdHR0wszAwICke69a3WG32xUVFRWwAACAqWlSRcgwDL300kv67ne/qx/+8IdKSEgI2J6QkCCn06nm5mZz3cjIiI4ePaqFCxdKklJSUjRt2rSATF9fn7q7u81Menq6/H6/Tp48aWZOnDghv98fkOnu7lZfX5+Z8Xq9stvtSklJMTMtLS0Bj9R7vV65XC7NnTt3MocOAACmoEkVocLCQtXV1Wn//v2KjIxUf3+/+vv7NTQ0JOntr5uKi4tVXl6uxsZGdXd3Ky8vTzNmzJDb7ZYkORwOrVmzRqWlpTpy5Ig6Ozu1evVqJScnm0+RzZs3T8uWLVN+fr7a2trU1tam/Px85eTkKDExUZKUlZWl+fPny+PxqLOzU0eOHNH69euVn59vXsVxu92y2+3Ky8tTd3e3GhsbVV5ezhNjAABA0iQfn9+5c6ckafHixQHrX3vtNeXl5UmSNmzYoKGhIRUUFMjn8yktLU1er1eRkZFmfvv27QoNDdWqVas0NDSkJUuWqLa2ViEhIWamvr5eRUVF5tNlubm5qqmpMbeHhITo0KFDKigo0KJFixQeHi63263Kykoz43A41NzcrMLCQqWmpio6OlolJSUqKSmZzGEDAIApalJF6P/yG5ltNpvKyspUVlY2bmb69Omqrq5WdXX1uJmZM2eqrq5uwn3NmTNHBw8enDCTnJyslpaWCTMAAMCa+FtjAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihCAADAsihC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","text/plain":["<Figure size 640x480 with 1 Axes>"]},"metadata":{},"output_type":"display_data"}],"source":["from imblearn.over_sampling import SMOTE\n","oversample = SMOTE()\n","y_train = le.fit_transform(y_train)\n","X_train, y_train = oversample.fit_resample(X_train, y_train)\n","# summarize distribution\n","counter = Counter(y_train)\n","for k,v in counter.items():\n"," per = v / len(y_train) * 100\n"," print('Class=%d, n=%d (%.3f%%)' % (k, v, per))\n","# plot the distribution\n","pyplot.bar(counter.keys(), counter.values())\n","pyplot.show()"]},{"cell_type":"code","execution_count":18,"id":"aa3846f3","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.252818Z","iopub.status.busy":"2023-08-05T01:19:23.251956Z","iopub.status.idle":"2023-08-05T01:19:23.740771Z","shell.execute_reply":"2023-08-05T01:19:23.73973Z"},"papermill":{"duration":0.505699,"end_time":"2023-08-05T01:19:23.743348","exception":false,"start_time":"2023-08-05T01:19:23.237649","status":"completed"},"tags":[]},"outputs":[],"source":["from tensorflow.keras.utils import to_categorical\n","y_train = to_categorical(y_train)"]},{"cell_type":"code","execution_count":19,"id":"0a0017d2","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:23.767819Z","iopub.status.busy":"2023-08-05T01:19:23.767429Z","iopub.status.idle":"2023-08-05T01:19:29.065742Z","shell.execute_reply":"2023-08-05T01:19:29.064536Z"},"papermill":{"duration":5.313708,"end_time":"2023-08-05T01:19:29.068475","exception":false,"start_time":"2023-08-05T01:19:23.754767","status":"completed"},"tags":[]},"outputs":[],"source":["from sklearn.preprocessing import StandardScaler\n","sc = StandardScaler()\n","X_train = sc.fit_transform(X_train)\n","X_test = sc.transform(X_test)"]},{"cell_type":"code","execution_count":20,"id":"c344eb49","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.092749Z","iopub.status.busy":"2023-08-05T01:19:29.092331Z","iopub.status.idle":"2023-08-05T01:19:29.209741Z","shell.execute_reply":"2023-08-05T01:19:29.20847Z"},"papermill":{"duration":0.132568,"end_time":"2023-08-05T01:19:29.21231","exception":false,"start_time":"2023-08-05T01:19:29.079742","status":"completed"},"tags":[]},"outputs":[],"source":["ann = tf.keras.models.Sequential()\n","ann.add(tf.keras.layers.Dense(units=26, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=52, activation='tanh'))\n","ann.add(tf.keras.layers.Dense(units=13, activation='softmax'))"]},{"cell_type":"code","execution_count":21,"id":"c1441ca6","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.236225Z","iopub.status.busy":"2023-08-05T01:19:29.23586Z","iopub.status.idle":"2023-08-05T01:19:29.268014Z","shell.execute_reply":"2023-08-05T01:19:29.266637Z"},"papermill":{"duration":0.046985,"end_time":"2023-08-05T01:19:29.270549","exception":false,"start_time":"2023-08-05T01:19:29.223564","status":"completed"},"tags":[]},"outputs":[],"source":["ann.compile(optimizer='adam' , loss='CategoricalCrossentropy' , metrics=['accuracy'])"]},{"cell_type":"code","execution_count":22,"id":"82e960ec","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:19:29.294423Z","iopub.status.busy":"2023-08-05T01:19:29.294016Z","iopub.status.idle":"2023-08-05T01:43:40.990731Z","shell.execute_reply":"2023-08-05T01:43:40.989437Z"},"papermill":{"duration":1451.711594,"end_time":"2023-08-05T01:43:40.99336","exception":false,"start_time":"2023-08-05T01:19:29.281766","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["Epoch 1/10\n","75324/75324 [==============================] - 145s 2ms/step - loss: 0.1724 - accuracy: 0.9415\n","Epoch 2/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0763 - accuracy: 0.9731\n","Epoch 3/10\n","75324/75324 [==============================] - 144s 2ms/step - loss: 0.0601 - accuracy: 0.9788\n","Epoch 4/10\n","75324/75324 [==============================] - 151s 2ms/step - loss: 0.0527 - accuracy: 0.9815\n","Epoch 5/10\n","75324/75324 [==============================] - 142s 2ms/step - loss: 0.0480 - accuracy: 0.9831\n","Epoch 6/10\n","75324/75324 [==============================] - 143s 2ms/step - loss: 0.0452 - accuracy: 0.9840\n","Epoch 7/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0432 - accuracy: 0.9848\n","Epoch 8/10\n","75324/75324 [==============================] - 141s 2ms/step - loss: 0.0417 - accuracy: 0.9854\n","Epoch 9/10\n","75324/75324 [==============================] - 148s 2ms/step - loss: 0.0405 - accuracy: 0.9857\n","Epoch 10/10\n","75324/75324 [==============================] - 146s 2ms/step - loss: 0.0397 - accuracy: 0.9860\n"]}],"source":["history = ann.fit(X_train, y_train, batch_size=128, epochs=10)"]},{"cell_type":"code","execution_count":23,"id":"c66f3d9a","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:43:44.865958Z","iopub.status.busy":"2023-08-05T01:43:44.86558Z","iopub.status.idle":"2023-08-05T01:44:26.055791Z","shell.execute_reply":"2023-08-05T01:44:26.054616Z"},"papermill":{"duration":43.125175,"end_time":"2023-08-05T01:44:26.058358","exception":false,"start_time":"2023-08-05T01:43:42.933183","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["17901/17901 [==============================] - 22s 1ms/step\n"]}],"source":["y_pred = ann.predict(X_test)"]},{"cell_type":"code","execution_count":24,"id":"ca3d6088","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:29.962501Z","iopub.status.busy":"2023-08-05T01:44:29.962091Z","iopub.status.idle":"2023-08-05T01:44:29.991499Z","shell.execute_reply":"2023-08-05T01:44:29.990294Z"},"papermill":{"duration":1.967301,"end_time":"2023-08-05T01:44:29.994142","exception":false,"start_time":"2023-08-05T01:44:28.026841","status":"completed"},"tags":[]},"outputs":[],"source":["result = np.argmax(y_pred, axis=-1)"]},{"cell_type":"code","execution_count":25,"id":"4211d197","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:33.86521Z","iopub.status.busy":"2023-08-05T01:44:33.864484Z","iopub.status.idle":"2023-08-05T01:44:33.869618Z","shell.execute_reply":"2023-08-05T01:44:33.868861Z"},"papermill":{"duration":1.942499,"end_time":"2023-08-05T01:44:33.871763","exception":false,"start_time":"2023-08-05T01:44:31.929264","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["[ 4 10 8 ... 7 8 3]\n"]}],"source":["print(result)"]},{"cell_type":"code","execution_count":26,"id":"e36e98e0","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:37.612404Z","iopub.status.busy":"2023-08-05T01:44:37.61165Z","iopub.status.idle":"2023-08-05T01:44:37.616428Z","shell.execute_reply":"2023-08-05T01:44:37.615631Z"},"papermill":{"duration":1.837241,"end_time":"2023-08-05T01:44:37.618458","exception":false,"start_time":"2023-08-05T01:44:35.781217","status":"completed"},"tags":[]},"outputs":[],"source":["y_test_rs = np.argmax(y_test, axis=-1)"]},{"cell_type":"code","execution_count":27,"id":"49227522","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:41.477349Z","iopub.status.busy":"2023-08-05T01:44:41.476614Z","iopub.status.idle":"2023-08-05T01:44:41.481313Z","shell.execute_reply":"2023-08-05T01:44:41.48054Z"},"papermill":{"duration":1.939073,"end_time":"2023-08-05T01:44:41.484075","exception":false,"start_time":"2023-08-05T01:44:39.545002","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["9\n"]}],"source":["print(y_test_rs)"]},{"cell_type":"code","execution_count":28,"id":"72b1f910","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:45.446971Z","iopub.status.busy":"2023-08-05T01:44:45.446273Z","iopub.status.idle":"2023-08-05T01:44:45.569371Z","shell.execute_reply":"2023-08-05T01:44:45.568125Z"},"papermill":{"duration":2.161727,"end_time":"2023-08-05T01:44:45.571926","exception":false,"start_time":"2023-08-05T01:44:43.410199","status":"completed"},"tags":[]},"outputs":[],"source":["y_pred_enc = pd.get_dummies(result)\n","y_test_enc = pd.get_dummies(y_test)"]},{"cell_type":"code","execution_count":29,"id":"6b54f780","metadata":{"execution":{"iopub.execute_input":"2023-08-05T01:44:49.311088Z","iopub.status.busy":"2023-08-05T01:44:49.310688Z","iopub.status.idle":"2023-08-05T01:44:49.698079Z","shell.execute_reply":"2023-08-05T01:44:49.696602Z"},"papermill":{"duration":2.293735,"end_time":"2023-08-05T01:44:49.700483","exception":false,"start_time":"2023-08-05T01:44:47.406748","status":"completed"},"tags":[]},"outputs":[{"name":"stdout","output_type":"stream","text":["0.9624047680565351\n"]}],"source":["from sklearn.metrics import accuracy_score\n","print(accuracy_score(y_test_enc, y_pred_enc))"]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"codemirror_mode":{"name":"ipython","version":3},"file_extension":".py","mimetype":"text/x-python","name":"python","nbconvert_exporter":"python","pygments_lexer":"ipython3","version":"3.10.12"},"papermill":{"default_parameters":{},"duration":5890.466662,"end_time":"2023-08-05T01:44:54.111787","environment_variables":{},"exception":null,"input_path":"__notebook__.ipynb","output_path":"__notebook__.ipynb","parameters":{},"start_time":"2023-08-05T00:06:43.645125","version":"2.4.0"}},"nbformat":4,"nbformat_minor":5} No newline at end of file
Copy link
Collaborator

@coderpotter coderpotter Aug 6, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

an explanation for this architecture would be nice


Reply via ReviewNB

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants