CoolFace
Apppublic

giodesi/Multi-class_Classification

sourceHugging Facemitupdated 10mo agoView on Hugging Face
0likes
Multi-class_Classification.ipynb2181 linesDownload Raw Back to root
1{2 "cells": [3  {4   "cell_type": "markdown",5   "metadata": {},6   "source": [7    "#  Multi-class Classification\n"8   ]9  },10  {11   "cell_type": "markdown",12   "metadata": {},13   "source": "In this lab, we will learn the different strategies of Multi-class classification and implement the same on a real-world dataset.\n"14  },15  {16   "cell_type": "markdown",17   "metadata": {},18   "source": [19    "## **Objectives**\n"20   ]21  },22  {23   "cell_type": "markdown",24   "metadata": {},25   "source": "After completing this lab we will be able to:\n"26  },27  {28   "cell_type": "markdown",29   "metadata": {},30   "source": [31    "1. Understand the use of one-hot encoding for categorical variables.\n",32    "2. Implement logistic regression for multi-class classification using **One-vs-All (OvA)** and **One-vs-One (OvO)** strategies.\n",33    "3. Evaluate model performance using appropriate metrics.\n"34   ]35  },36  {37   "cell_type": "markdown",38   "metadata": {},39   "source": [40    "## Import Necessary Libraries\n"41   ]42  },43  {44   "cell_type": "markdown",45   "metadata": {},46   "source": [47    "First, to ensure the availability of the required libraries, execute the cell below.\n"48   ]49  },50  {51   "cell_type": "code",52   "metadata": {53    "ExecuteTime": {54     "end_time": "2025-11-13T14:37:40.612955Z",55     "start_time": "2025-11-13T14:37:36.732569Z"56    }57   },58   "source": [59    "!pip install numpy==2.2.0\n!pip install pandas==2.2.3\n!pip install scikit-learn==1.6.0\n!pip install matplotlib==3.9.3\n!pip install seaborn==0.13.2"60   ],61   "outputs": [62    {63     "name": "stdout",64     "output_type": "stream",65     "text": [66      "Requirement already satisfied: numpy==2.2.0 in ./.venv/lib/python3.12/site-packages (2.2.0)\r\n",67      "\r\n",68      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n",69      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",70      "Requirement already satisfied: pandas==2.2.3 in ./.venv/lib/python3.12/site-packages (2.2.3)\r\n",71      "Requirement already satisfied: numpy>=1.26.0 in ./.venv/lib/python3.12/site-packages (from pandas==2.2.3) (2.2.0)\r\n",72      "Requirement already satisfied: python-dateutil>=2.8.2 in ./.venv/lib/python3.12/site-packages (from pandas==2.2.3) (2.9.0.post0)\r\n",73      "Requirement already satisfied: pytz>=2020.1 in ./.venv/lib/python3.12/site-packages (from pandas==2.2.3) (2025.2)\r\n",74      "Requirement already satisfied: tzdata>=2022.7 in ./.venv/lib/python3.12/site-packages (from pandas==2.2.3) (2025.2)\r\n",75      "Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas==2.2.3) (1.17.0)\r\n",76      "\r\n",77      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n",78      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",79      "Requirement already satisfied: scikit-learn==1.6.0 in ./.venv/lib/python3.12/site-packages (1.6.0)\r\n",80      "Requirement already satisfied: numpy>=1.19.5 in ./.venv/lib/python3.12/site-packages (from scikit-learn==1.6.0) (2.2.0)\r\n",81      "Requirement already satisfied: scipy>=1.6.0 in ./.venv/lib/python3.12/site-packages (from scikit-learn==1.6.0) (1.16.3)\r\n",82      "Requirement already satisfied: joblib>=1.2.0 in ./.venv/lib/python3.12/site-packages (from scikit-learn==1.6.0) (1.5.2)\r\n",83      "Requirement already satisfied: threadpoolctl>=3.1.0 in ./.venv/lib/python3.12/site-packages (from scikit-learn==1.6.0) (3.6.0)\r\n",84      "\r\n",85      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n",86      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",87      "Requirement already satisfied: matplotlib==3.9.3 in ./.venv/lib/python3.12/site-packages (3.9.3)\r\n",88      "Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (1.3.3)\r\n",89      "Requirement already satisfied: cycler>=0.10 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (0.12.1)\r\n",90      "Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (4.60.1)\r\n",91      "Requirement already satisfied: kiwisolver>=1.3.1 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (1.4.9)\r\n",92      "Requirement already satisfied: numpy>=1.23 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (2.2.0)\r\n",93      "Requirement already satisfied: packaging>=20.0 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (25.0)\r\n",94      "Requirement already satisfied: pillow>=8 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (12.0.0)\r\n",95      "Requirement already satisfied: pyparsing>=2.3.1 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (3.2.5)\r\n",96      "Requirement already satisfied: python-dateutil>=2.7 in ./.venv/lib/python3.12/site-packages (from matplotlib==3.9.3) (2.9.0.post0)\r\n",97      "Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib==3.9.3) (1.17.0)\r\n",98      "\r\n",99      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n",100      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n",101      "Requirement already satisfied: seaborn==0.13.2 in ./.venv/lib/python3.12/site-packages (0.13.2)\r\n",102      "Requirement already satisfied: numpy!=1.24.0,>=1.20 in ./.venv/lib/python3.12/site-packages (from seaborn==0.13.2) (2.2.0)\r\n",103      "Requirement already satisfied: pandas>=1.2 in ./.venv/lib/python3.12/site-packages (from seaborn==0.13.2) (2.2.3)\r\n",104      "Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in ./.venv/lib/python3.12/site-packages (from seaborn==0.13.2) (3.9.3)\r\n",105      "Requirement already satisfied: contourpy>=1.0.1 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (1.3.3)\r\n",106      "Requirement already satisfied: cycler>=0.10 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (0.12.1)\r\n",107      "Requirement already satisfied: fonttools>=4.22.0 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (4.60.1)\r\n",108      "Requirement already satisfied: kiwisolver>=1.3.1 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (1.4.9)\r\n",109      "Requirement already satisfied: packaging>=20.0 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (25.0)\r\n",110      "Requirement already satisfied: pillow>=8 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (12.0.0)\r\n",111      "Requirement already satisfied: pyparsing>=2.3.1 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (3.2.5)\r\n",112      "Requirement already satisfied: python-dateutil>=2.7 in ./.venv/lib/python3.12/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (2.9.0.post0)\r\n",113      "Requirement already satisfied: pytz>=2020.1 in ./.venv/lib/python3.12/site-packages (from pandas>=1.2->seaborn==0.13.2) (2025.2)\r\n",114      "Requirement already satisfied: tzdata>=2022.7 in ./.venv/lib/python3.12/site-packages (from pandas>=1.2->seaborn==0.13.2) (2025.2)\r\n",115      "Requirement already satisfied: six>=1.5 in ./.venv/lib/python3.12/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn==0.13.2) (1.17.0)\r\n",116      "\r\n",117      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m A new release of pip is available: \u001B[0m\u001B[31;49m23.2.1\u001B[0m\u001B[39;49m -> \u001B[0m\u001B[32;49m25.3\u001B[0m\r\n",118      "\u001B[1m[\u001B[0m\u001B[34;49mnotice\u001B[0m\u001B[1;39;49m]\u001B[0m\u001B[39;49m To update, run: \u001B[0m\u001B[32;49mpip install --upgrade pip\u001B[0m\r\n"119     ]120    }121   ],122   "execution_count": 30123  },124  {125   "cell_type": "markdown",126   "metadata": {},127   "source": [128    "Now, import the necessary libraries for data processing, model training, and evaluation.\n"129   ]130  },131  {132   "cell_type": "code",133   "metadata": {134    "ExecuteTime": {135     "end_time": "2025-11-13T14:37:44.299435Z",136     "start_time": "2025-11-13T14:37:44.296968Z"137    }138   },139   "source": [140    "import pandas as pd\n",141    "import numpy as np\n",142    "import matplotlib.pyplot as plt\n",143    "import seaborn as sns\n",144    "from sklearn.model_selection import train_test_split\n",145    "from sklearn.preprocessing import OneHotEncoder, StandardScaler\n",146    "from sklearn.linear_model import LogisticRegression\n",147    "from sklearn.multiclass import OneVsOneClassifier, OneVsRestClassifier\n",148    "from sklearn.metrics import accuracy_score\n",149    "\n",150    "import warnings\n",151    "warnings.filterwarnings('ignore')"152   ],153   "outputs": [],154   "execution_count": 31155  },156  {157   "cell_type": "markdown",158   "metadata": {},159   "source": [160    "## About the dataset\n",161    "The data set being used for this lab is the \"Obesity Risk Prediction\" data set publically available on <a href=\"https://archive.ics.uci.edu/dataset/544/estimation+of+obesity+levels+based+on+eating+habits+and+physical+condition\">UCI Library</a> under the <a href=\"https://creativecommons.org/licenses/by/4.0/legalcode\">CCA 4.0</a> license. The data set has 17 attributes in total along with 2,111 samples. \n",162    "\n",163    "The attributes of the dataset are descibed below."164   ]165  },166  {167   "cell_type": "markdown",168   "metadata": {},169   "source": [170    "<style type=\"text/css\">\n",171    "</style>\n",172    "<table class=\"tg\"><thead>\n",173    "  <tr>\n",174    "    <th class=\"tg-7zrl\">Variable Name</th>\n",175    "    <th class=\"tg-7zrl\">Type</th>\n",176    "    <th class=\"tg-7zrl\">Description</th>\n",177    "  </tr></thead>\n",178    "<tbody>\n",179    "  <tr>\n",180    "    <td class=\"tg-7zrl\">Gender</td>\n",181    "    <td class=\"tg-7zrl\">Categorical</td>\n",182    "    <td class=\"tg-7zrl\"></td>\n",183    "  </tr>\n",184    "  <tr>\n",185    "    <td class=\"tg-7zrl\">Age</td>\n",186    "    <td class=\"tg-7zrl\">Continuous</td>\n",187    "    <td class=\"tg-7zrl\"></td>\n",188    "  </tr>\n",189    "  <tr>\n",190    "    <td class=\"tg-7zrl\">Height</td>\n",191    "    <td class=\"tg-7zrl\">Continuous</td>\n",192    "    <td class=\"tg-7zrl\"></td>\n",193    "  </tr>\n",194    "  <tr>\n",195    "    <td class=\"tg-7zrl\">Weight</td>\n",196    "    <td class=\"tg-7zrl\">Continuous</td>\n",197    "    <td class=\"tg-7zrl\"></td>\n",198    "  </tr>\n",199    "  <tr>\n",200    "    <td class=\"tg-7zrl\">family_history_with_overweight</td>\n",201    "    <td class=\"tg-7zrl\">Binary</td>\n",202    "    <td class=\"tg-7zrl\">Has a family member suffered or suffers from overweight?</td>\n",203    "  </tr>\n",204    "  <tr>\n",205    "    <td class=\"tg-7zrl\">FAVC</td>\n",206    "    <td class=\"tg-7zrl\">Binary</td>\n",207    "    <td class=\"tg-7zrl\">Do you eat high caloric food frequently?</td>\n",208    "  </tr>\n",209    "  <tr>\n",210    "    <td class=\"tg-7zrl\">FCVC</td>\n",211    "    <td class=\"tg-7zrl\">Integer</td>\n",212    "    <td class=\"tg-7zrl\">Do you usually eat vegetables in your meals?</td>\n",213    "  </tr>\n",214    "  <tr>\n",215    "    <td class=\"tg-7zrl\">NCP</td>\n",216    "    <td class=\"tg-7zrl\">Continuous</td>\n",217    "    <td class=\"tg-7zrl\">How many main meals do you have daily?</td>\n",218    "  </tr>\n",219    "  <tr>\n",220    "    <td class=\"tg-7zrl\">CAEC</td>\n",221    "    <td class=\"tg-7zrl\">Categorical</td>\n",222    "    <td class=\"tg-7zrl\">Do you eat any food between meals?</td>\n",223    "  </tr>\n",224    "  <tr>\n",225    "    <td class=\"tg-7zrl\">SMOKE</td>\n",226    "    <td class=\"tg-7zrl\">Binary</td>\n",227    "    <td class=\"tg-7zrl\">Do you smoke?</td>\n",228    "  </tr>\n",229    "  <tr>\n",230    "    <td class=\"tg-7zrl\">CH2O</td>\n",231    "    <td class=\"tg-7zrl\">Continuous</td>\n",232    "    <td class=\"tg-7zrl\">How much water do you drink daily?</td>\n",233    "  </tr>\n",234    "  <tr>\n",235    "    <td class=\"tg-7zrl\">SCC</td>\n",236    "    <td class=\"tg-7zrl\">Binary</td>\n",237    "    <td class=\"tg-7zrl\">Do you monitor the calories you eat daily?</td>\n",238    "  </tr>\n",239    "  <tr>\n",240    "    <td class=\"tg-7zrl\">FAF</td>\n",241    "    <td class=\"tg-7zrl\">Continuous</td>\n",242    "    <td class=\"tg-7zrl\">How often do you have physical activity?</td>\n",243    "  </tr>\n",244    "  <tr>\n",245    "    <td class=\"tg-7zrl\">TUE</td>\n",246    "    <td class=\"tg-7zrl\">Integer</td>\n",247    "    <td class=\"tg-7zrl\">How much time do you use technological devices such as cell phone, videogames, television, computer and others?</td>\n",248    "  </tr>\n",249    "  <tr>\n",250    "    <td class=\"tg-7zrl\">CALC</td>\n",251    "    <td class=\"tg-7zrl\">Categorical</td>\n",252    "    <td class=\"tg-7zrl\">How often do you drink alcohol?</td>\n",253    "  </tr>\n",254    "  <tr>\n",255    "    <td class=\"tg-7zrl\">MTRANS</td>\n",256    "    <td class=\"tg-7zrl\">Categorical</td>\n",257    "    <td class=\"tg-7zrl\">Which transportation do you usually use?</td>\n",258    "  </tr>\n",259    "  <tr>\n",260    "    <td class=\"tg-7zrl\">NObeyesdad</td>\n",261    "    <td class=\"tg-7zrl\">Categorical</td>\n",262    "    <td class=\"tg-7zrl\">Obesity level</td>\n",263    "  </tr>\n",264    "</tbody></table>\n"265   ]266  },267  {268   "cell_type": "markdown",269   "metadata": {},270   "source": [271    "### Load the dataset\n",272    "\n",273    "Load the data set by executing the code cell below.\n"274   ]275  },276  {277   "cell_type": "code",278   "metadata": {279    "ExecuteTime": {280     "end_time": "2025-11-13T14:37:49.394162Z",281     "start_time": "2025-11-13T14:37:49.381623Z"282    }283   },284   "source": [285    "file_path = \"data/Obesity_level_prediction_dataset.csv\"\n",286    "data = pd.read_csv(file_path)\n",287    "data.head()"288   ],289   "outputs": [290    {291     "data": {292      "text/plain": [293       "   Gender   Age  Height  Weight family_history_with_overweight FAVC  FCVC  \\\n",294       "0  Female  21.0    1.62    64.0                            yes   no   2.0   \n",295       "1  Female  21.0    1.52    56.0                            yes   no   3.0   \n",296       "2    Male  23.0    1.80    77.0                            yes   no   2.0   \n",297       "3    Male  27.0    1.80    87.0                             no   no   3.0   \n",298       "4    Male  22.0    1.78    89.8                             no   no   2.0   \n",299       "\n",300       "   NCP       CAEC SMOKE  CH2O  SCC  FAF  TUE        CALC  \\\n",301       "0  3.0  Sometimes    no   2.0   no  0.0  1.0          no   \n",302       "1  3.0  Sometimes   yes   3.0  yes  3.0  0.0   Sometimes   \n",303       "2  3.0  Sometimes    no   2.0   no  2.0  1.0  Frequently   \n",304       "3  3.0  Sometimes    no   2.0   no  2.0  0.0  Frequently   \n",305       "4  1.0  Sometimes    no   2.0   no  0.0  0.0   Sometimes   \n",306       "\n",307       "                  MTRANS           NObeyesdad  \n",308       "0  Public_Transportation        Normal_Weight  \n",309       "1  Public_Transportation        Normal_Weight  \n",310       "2  Public_Transportation        Normal_Weight  \n",311       "3                Walking   Overweight_Level_I  \n",312       "4  Public_Transportation  Overweight_Level_II  "313      ],314      "text/html": [315       "<div>\n",316       "<style scoped>\n",317       "    .dataframe tbody tr th:only-of-type {\n",318       "        vertical-align: middle;\n",319       "    }\n",320       "\n",321       "    .dataframe tbody tr th {\n",322       "        vertical-align: top;\n",323       "    }\n",324       "\n",325       "    .dataframe thead th {\n",326       "        text-align: right;\n",327       "    }\n",328       "</style>\n",329       "<table border=\"1\" class=\"dataframe\">\n",330       "  <thead>\n",331       "    <tr style=\"text-align: right;\">\n",332       "      <th></th>\n",333       "      <th>Gender</th>\n",334       "      <th>Age</th>\n",335       "      <th>Height</th>\n",336       "      <th>Weight</th>\n",337       "      <th>family_history_with_overweight</th>\n",338       "      <th>FAVC</th>\n",339       "      <th>FCVC</th>\n",340       "      <th>NCP</th>\n",341       "      <th>CAEC</th>\n",342       "      <th>SMOKE</th>\n",343       "      <th>CH2O</th>\n",344       "      <th>SCC</th>\n",345       "      <th>FAF</th>\n",346       "      <th>TUE</th>\n",347       "      <th>CALC</th>\n",348       "      <th>MTRANS</th>\n",349       "      <th>NObeyesdad</th>\n",350       "    </tr>\n",351       "  </thead>\n",352       "  <tbody>\n",353       "    <tr>\n",354       "      <th>0</th>\n",355       "      <td>Female</td>\n",356       "      <td>21.0</td>\n",357       "      <td>1.62</td>\n",358       "      <td>64.0</td>\n",359       "      <td>yes</td>\n",360       "      <td>no</td>\n",361       "      <td>2.0</td>\n",362       "      <td>3.0</td>\n",363       "      <td>Sometimes</td>\n",364       "      <td>no</td>\n",365       "      <td>2.0</td>\n",366       "      <td>no</td>\n",367       "      <td>0.0</td>\n",368       "      <td>1.0</td>\n",369       "      <td>no</td>\n",370       "      <td>Public_Transportation</td>\n",371       "      <td>Normal_Weight</td>\n",372       "    </tr>\n",373       "    <tr>\n",374       "      <th>1</th>\n",375       "      <td>Female</td>\n",376       "      <td>21.0</td>\n",377       "      <td>1.52</td>\n",378       "      <td>56.0</td>\n",379       "      <td>yes</td>\n",380       "      <td>no</td>\n",381       "      <td>3.0</td>\n",382       "      <td>3.0</td>\n",383       "      <td>Sometimes</td>\n",384       "      <td>yes</td>\n",385       "      <td>3.0</td>\n",386       "      <td>yes</td>\n",387       "      <td>3.0</td>\n",388       "      <td>0.0</td>\n",389       "      <td>Sometimes</td>\n",390       "      <td>Public_Transportation</td>\n",391       "      <td>Normal_Weight</td>\n",392       "    </tr>\n",393       "    <tr>\n",394       "      <th>2</th>\n",395       "      <td>Male</td>\n",396       "      <td>23.0</td>\n",397       "      <td>1.80</td>\n",398       "      <td>77.0</td>\n",399       "      <td>yes</td>\n",400       "      <td>no</td>\n",401       "      <td>2.0</td>\n",402       "      <td>3.0</td>\n",403       "      <td>Sometimes</td>\n",404       "      <td>no</td>\n",405       "      <td>2.0</td>\n",406       "      <td>no</td>\n",407       "      <td>2.0</td>\n",408       "      <td>1.0</td>\n",409       "      <td>Frequently</td>\n",410       "      <td>Public_Transportation</td>\n",411       "      <td>Normal_Weight</td>\n",412       "    </tr>\n",413       "    <tr>\n",414       "      <th>3</th>\n",415       "      <td>Male</td>\n",416       "      <td>27.0</td>\n",417       "      <td>1.80</td>\n",418       "      <td>87.0</td>\n",419       "      <td>no</td>\n",420       "      <td>no</td>\n",421       "      <td>3.0</td>\n",422       "      <td>3.0</td>\n",423       "      <td>Sometimes</td>\n",424       "      <td>no</td>\n",425       "      <td>2.0</td>\n",426       "      <td>no</td>\n",427       "      <td>2.0</td>\n",428       "      <td>0.0</td>\n",429       "      <td>Frequently</td>\n",430       "      <td>Walking</td>\n",431       "      <td>Overweight_Level_I</td>\n",432       "    </tr>\n",433       "    <tr>\n",434       "      <th>4</th>\n",435       "      <td>Male</td>\n",436       "      <td>22.0</td>\n",437       "      <td>1.78</td>\n",438       "      <td>89.8</td>\n",439       "      <td>no</td>\n",440       "      <td>no</td>\n",441       "      <td>2.0</td>\n",442       "      <td>1.0</td>\n",443       "      <td>Sometimes</td>\n",444       "      <td>no</td>\n",445       "      <td>2.0</td>\n",446       "      <td>no</td>\n",447       "      <td>0.0</td>\n",448       "      <td>0.0</td>\n",449       "      <td>Sometimes</td>\n",450       "      <td>Public_Transportation</td>\n",451       "      <td>Overweight_Level_II</td>\n",452       "    </tr>\n",453       "  </tbody>\n",454       "</table>\n",455       "</div>"456      ]457     },458     "execution_count": 32,459     "metadata": {},460     "output_type": "execute_result"461    }462   ],463   "execution_count": 32464  },465  {466   "cell_type": "markdown",467   "metadata": {},468   "source": [469    "## Exploratory Data Analysis\n"470   ]471  },472  {473   "cell_type": "markdown",474   "metadata": {},475   "source": [476    "Visualize the distribution of the target variable to understand the class balance.\n"477   ]478  },479  {480   "cell_type": "code",481   "metadata": {482    "ExecuteTime": {483     "end_time": "2025-11-13T14:37:53.233966Z",484     "start_time": "2025-11-13T14:37:53.155556Z"485    }486   },487   "source": [488    "# Distribution of target variable\nsns.countplot(y='NObeyesdad', data=data)\nplt.title('Distribution of Obesity Levels')\nplt.show()"489   ],490   "outputs": [491    {492     "data": {493      "text/plain": [494       "<Figure size 640x480 with 1 Axes>"495      ],496      "image/png": "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kZTkczdEHsInwlbx4gWzexfCBm1BW3Bu8O8k2t4zEhOTbN++wwTQCET4RNgaMmuxrd6+J7t3AwAQYpVKF7Wh3ZpZbGwM4TMCET4RtjbF/2WrtxE+AQCIJDl/UAgAAAByDMInAAAAQobwCQAAgJAhfAIAACBkCJ8AAAAIGcInAAAAQobwCQAAgJAhfAIAACBkCJ8AAAAIGcInAAAAQobwCQAAgJAhfAIAACBkCJ8AAAAImagNn9WrV7f777//pPvffvtta9GihYWD0aNH2y233JLu85YvX+6OZ/v27cnuv/rqq6127dp27Ngx/30nTpywOnXq2IIFC9Ldrrb53Xffpfu8rVu3uufqa1rmzZtnu3fvTndbAAAgskVt+JQPPvjAvvnmG8vpzj//fCtQoIALoZ4dO3bYtm3brGDBgrZ06VL//b/++qsdP37cLrzwwnS3u2jRIqtfv36W90/70a9fPzty5EiWtwUAAHK2qA6f5cuXt8GDB7swlpPlzp3b6tWrlyx8qmJZq1Ytu/jii5NVL5ctW2Z/+9vfrFixYulut1SpUpY3b94s75/P58vyNgAAQGSI6vCpapwqhJMnT07zOX/++afdc889LsQ1atTIhg4d6g+r6qK/4YYbrG/fvtawYUN77733XDe5ttezZ0/XvX399dfbpk2bbNCgQa6K2KpVK1uyZIl/+wsXLrROnTq57nFVI++77z47dOjQaR+LfnfFihX+nxU4tc+6ffvtt/77f/75Z3efFwpfeukla9q0qfv9u+66K1nXfWC3+9GjR23gwIHuOJs1a2ZvvfWWq7gGdrWrK79ly5ZWt25dt639+/e7+6+88kr/V7UZAACIXlEdPsuUKWN33323jR8/3rZs2XLS4wqZ3bt3d93Fr732mo0cOdI+//xze+655/zPUZd21apVbdasWS7EiQJd165dXdA6cOCAC6BxcXE2e/Zsq1atmguwsnnzZhdsu3Xr5sZEavuLFy922zpdCo+rVq2ypKSkk8KnQunhw4f9++uFz+nTp9v7779v//73v+3NN9+0kiVL2m233ebGhaakfdbvKli/8MILNmnSJEtMTEz2nLlz59qIESNs2rRpbl8mTpzo7ldQ9b62adPmtI8NAABEjqgOn6JKZYUKFeypp5466bGvvvrKVUaHDx/uqoBNmjSxxx57zN544w1/dTImJsb69Olj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1apVLpTVrl071ccbNmxoa9ascWHok08+8d+/bNky27dvn1155ZW2a9cuu/POO13Yev/9961Xr14ubCqAeRRS+/XrZxMmTHDBUoHP8/3337vg9eeff7qfv/76axc0ZeDAgXbgwAFXfR07dqytWLHCBg8efNJ+amyq9qFIkSIuJCvgjhkzJtlztm/fbhs2bHDhTtuYMmWKffnlly7kDRgwwM4++2wXfMuWLZulNj1Ve1SpUsUFzcC2VDDVPuh19UFA+63xt3PnznXtf+utt9r+/fuztE8AACC6hU349EKNQltqvPs7derkQuHBgwf9gUkhslChQm5s6CWXXGI333yzVahQwTp27Gh///vfberUqf7tKNwqwKoSqGC5evVqFyoV1BRiVa386aef3HO/+eYbV2ndvHmzLViwwIYPH+6qhfpdVT4VyvS7gb799lsXYIcNG2ZVq1Z11UbtT6A8efLY0KFDrVKlStamTRsXArUf6r4vXLiwq/yqGz9lBfh0pdceGsrw8ccf+5+vttT+iIY+KLiqElyxYkUX2MuXL2/vvfdelvYJAABEt7AZ81m0aFF/97sqf6nNgpcLLrjABbMvvvjCH57UHS7r16+3zz77zFXvPCdOnHAhz6MA5VEgU5e+KoFHjhxxv6eg9eOPP1rjxo3t999/d+FNP2uyk7r3A+m+TZs2JbtPXdN6PYVhj8asaiKRp2TJklagQAH/zwqcmuUebOm1h4LmCy+8YDt27HD3KwC3bt3a3y2vsD1ixAj/7x47dsx1zQMAAOT48KmKpCp9K1euTDV86n5VHVUdVGhSlU7hce/evXb55Zf7u7xVabzrrruS/W7u3P87zHz58iV77NJLL7UlS5a4YKXxnApm6lZXBVP7pIprYmKiC4iBY009ZcqUsZ9//tn/s44h5aShlD+nVtE8ExON0muPc845xx2jqro6fo0/9SZO6Zg1BEBjYwMFhmoAAIAc2+1eokQJa9mypQt+Cj6B1I09e/Zs69q1q/tZFU91vSuAqgs9f/787n4FR1UiFUq928KFC914x7SoW13hU13tCl/e2FJtW49521X3ekxMjH+7mmz03HPPnVSxrFatmqsOesMCvPGsGaXXCJaMtIeC/Oeff+4CqNo18Hc19jXwd7UElMbYAgAA5Pjw6U3q0dhPzXhXV7gm5mhCjCa6XHzxxdatWzf3vJo1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btzYXblJV3CqXr16hhbgz8jzMuL48eM2a9asDD33ySefdIv9B1q6dKnbl4cffjjZ/e+++65dfPHFlpSUdMptvv3229aiRYsMvb7+NvobpeXgwYP2zjvvZGhbAAAg8oV9+AyFl19+2c477zybN2+eXXPNNTZ8+HDr1q2bW9u0S5cutmjRonS3oaCakedlhBbzHz9+fIaee+GFF9qqVauSBUoF4dKlS7uvKUO2np/eVanatGljs2fPtmB49dVXbc6cOUHZFgAAyPkIn2Z24MABq1Onjp1zzjlWqFAh97MqhLqaU968ea1UqVLpNmRGn5cRPp8vw89VmFR1cf369f77FDq7d+/uLoO6ZcuWZOFTx5Wes846y0qUKGGhPhYAABD5ckz4VFewundHjRpljRo1cqHr6aef9oeb7du322233eYqkE2aNLEhQ4bYiRMnUu2611Wa1C2tr3psyZIl9tJLL7n7vK5zhTc9lrI7fdOmTXb77be717n88stt2rRp7v6Uz/vjjz/srrvusrp167ou7DFjxlhiYmK6x6LtPPLII7Zt2zb/Pp6KLnN67rnn2ooVK/xd9j/99JNdeeWVVqNGDfv222/d/UeOHLE1a9b4L32a3v4FdruvXLnSunbt6gL6DTfcYC+++GKyrna1s7r/GzRoYJdccolNmTLFvx1tV+0brCEJAAAgZ8sx4dMby7hhwwZ74403bNCgQS74LV682D2msFmgQAE3vlBB8qOPPsrQuEmFUgVJBVd1m3td57o/5VjTY8eOuecVLFjQbfuxxx6zF154wT777LNkz1OI/Oc//2klS5a0uXPnumD5/vvvJ+tKT+tYtC8DBgyws88+2+1L2bJl0z0Ghdfly5e77/W1SJEiVqlSJRdsvfCpcJo/f36rWbNmhvbPoypwr1697IILLnBt265dOzdMIeXfJU+ePO7x3r172zPPPGPr1q1z3ffeB4JgDUkAAAA5W44Kn6rMKWRWrlzZOnbs6Cp7XsVPlcLChQtbuXLlXAVOAal58+bpbrNYsWIuOCm4qtvc6zovWrSoeyyQAtSePXts2LBhVq1aNVcdfPTRR08aQ6nAp0qst68KgQ899JC/SnqqY1H3vY4jV65cbl/09XTCp17b61rXV1UdU473zMj+ef7zn/+4ttFx6rk333yzXX311SdVX1Wt1bjZHj16uPD722+/ue57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mj6fz6655posbVMh7sSJE+77V155xZYuXeru85QoUSKLew0AAHBmRWz4HDJkiJ177rk2adIky5Url7tPP9erV89VQN944w3Lnz//GXv9UqVK+b9X8AyGYsWK+b8vUKCA5cmTJ9nrAAAAhLuI7HaPj4+3Tz/91O644w5/8PSUK1fOOnfubLNmzfLfN2LECGvQoIE1a9bMXnvttWTPnzlzpuuar1+/vus6/u233/yPffPNN9axY0erXbu2XXnlle65KbuhVZmcO3euu2k748aNs/bt2yd7DVUxu3XrlqVjPnr0qDuGjz/+2H+fqqSNGjVy+6n9uPfee+2RRx6xunXr2tVXX20LFy70P/f48eM2dOhQ93zdHnjgAdu3b1+W9gkAACAqwueqVatctVGhMDUNGza01atXu8C1bds2FyjffPNNu+++++zZZ5/1j11UgB0zZowbN6rwqN+79dZbbf/+/ZaYmGj9+vWz1q1bu/Gc99xzjz355JP2+++/J3ut2267zXW36zZ79mxXdV2zZo1t2LDB/xz9vu7PirPOOstatmxpH330kf++xYsXW+7cue3iiy92P3/yySeuXTTW9brrrrO7777bv78K4CtXrrSJEyfatGnT7ODBg+6YAAAAgikiw6fCoRQpUiTVx7379bx8+fLZM888Y9WqVbNrr73WVSW9Cqa67O+880674oorrGLFii5sli9f3t577z07cOCAqwzGxcXZOeecYx06dLApU6ac1A1esGBBFwx105jM8847z01+mj9/vntc4feXX35xITarFGA/++wzO3bsmPtZr6HtetVfjUEdPHiwValSxXr37u2quXPmzLEjR47Y9OnTXXjWvqlq+9xzz9mSJUuSVXoBAACyKiLDpzfRR93vac2C956ncaDFixf3P3b++efbunXr3Pf6Onz4cBfSvJsqphs3bnTjL2+88UZ79NFHXThVqCtcuLD/tdMLiV74VNVTlcmSJUtm+bgvvfRSy5s3r3311Veuy33BggXWpk0b/+O1atVyjwf+rGPcsmWLe74maHnH2bx5c0tKSnLHCgAAECwROeFI3e2q9qkb+eyzzz7pcd2v6p6CWGxs8vytwKWJPKKu9QEDBliTJk2SPadQoULu6xNPPGE33XSTC3m6qet+7NixLridigKhuvc3bdrkusm7du0ahKM218WusZzapo5B+6lxoIGPB9Lx6fj1VV5//XU3kSlQMEIxAABARFc+1b2t8Y8Kgl6wClyCSWMvvcCnqp+6nT3Lly93yzNJpUqV7M8//7QKFSr4b+PHj7dly5bZrl27XDe17uvTp4/rvm7cuLEbJ5pSTExMsp9Lly7tqp36HVVSW7VqFbRj17CBL7/80u2HutwDX1td6ArXKUO4qr8K6xpG4B2nguvTTz/t1igFAAAIlogMnzJw4EA3plMz3n/44Qfbvn27m3CjCUMKft7sco2PfOihh2zt2rVurKeqht27d3eP9ezZ06ZOnWrvvPOObd682XXBq5tcYybVva7tDRs2zD32/fffuyCpbvuUtKSTxnbu2LHDf1+7du3s1VdfdV3lGemqzyhNitLraYJUyklMCto6hvXr17tZ95qYdf3117ug2aVLF1fJ1WQrTULq37+/q8xqPCsAAECwRGS3u2hReS2npOqnlg3as2ePq/BpXKPCpdfdXrNmTfdcVUI19lNhUmMhve5xjRsdNWqU+1q1alUX2jT5SLRtPV+TjTSxSEFOIS4lLcfUt29f9zwtcK9qpKqdCnuBYzKDQdtWxVOVT+84PFpiSe3QqVMndwwvv/yyaxN5+OGH3VAAzYDX+M+LLrrIPZ5yqSoAAICsiPEFawV0nBZN5FEI/Prrr11wDab777/fdZ0rSHq0zqdmr6dcxzSc9Ro735Zu+O/kMAAAcpoa5UvYjH7tbO/eQ5aQ8L9hb9lBo/Di4gpbfPwBO1PJz3uNqK18hiutn6lLb2pykrrFgxk8NRZVXelaPP6DDz4I2nYBAACChfCZDbQ8k9b71PhLjyb2aJLUqeha7qeiJZZ0tSRdyShYYzU1AcsbA5saXTHqww8/DMprAQCAyEe3e5jQrPytW7ee8jnqSg81XQVKKwSkRcs3aeH9M4FudwBATka3e+qofIYJTezJjnCZHq2FGo77BQAAcqaIXWoJAAAA4YfwCQAAgJAhfAIAACBkCJ8AAAAIGcInAAAAQobwCQAAgJAhfAIAACBkCJ8AAAAIGcInAAAAQoYrHCFsVYgrYkeOJ2T3bgAAkCmVShel5VLBtd0BAADOkMTEJNu377AlJfmytY1jYszi4gpbfPwB8/nO7Gukh8onwtbevYeyexfCQvHiBWkL2oJzg38nvGfk0PdQhc7sDp7hhvCJsJWUlGRJSRbV9CnS++R8pj6p5hS0Be3BucG/E943IgMTjgAAABAyhE8AAACEDN3uCOtuVq+rNVp5xx/t7SC0Be3BucG/E943wvs9NKPbZrY7AAAAQoZudwAAAIQM4RMAAAAhQ/gEAABAyBA+AQAAEDKETwAAAIQM4RMAAAAhQ/gEAABAyBA+AQAAEDKETwAAAIQM4RNh5dixYzZgwAC78MILrWnTpvbKK69YtPjkk0+sevXqyW533323e+yXX36xLl26WN26de26666zlStXWiQ6fvy4tWvXzr777jv/fVu2bLEePXpYvXr1rE2bNrZo0aJkv7N48WL3O2qbW2+91T0/kttj6NChJ50n06dP9z/+wQcfWMuWLV179O3b1/bs2WM52Y4dO9y/g4svvtiaNWtmTz/9tHufiMZz41RtEW3nhWzatMluv/12q1+/vl1++eU2adIk/2PRdm5sOkVbhOW54QPCyODBg33t27f3rVy50vfxxx/76tev75s3b54vGowdO9Z35513+nbu3Om/7d+/33fo0CHfpZde6nvmmWd8v//+u2/IkCG+Sy65xN0fSY4ePerr27ev729/+5vv22+/dfclJSW58+H+++93xz5+/Hhf3bp1fdu2bXOP62u9evV8kydP9q1Zs8Z3zz33+Nq1a+d+LxLbQ3r06OGbMGFCsvPk8OHD7rGff/7ZV6dOHd/cuXN9v/76q+/mm2/29e7d25dT6e/YtWtXX69evdzf9/vvv/ddddVV7t9CtJ0bp2qLaDsvJDEx0deqVSv399+wYYPv888/9zVo0MD33nvvRd25kXiKtgjXc4PwibChMFW7du1k/6N96aWX3D+GaKA3jn//+98n3f/WW2/5WrRo4X9j1Ff9T2fOnDm+SLF27Vpfhw4d3P8wAsPW4sWL3f8kAoN29+7dfaNGjXLfjxw5Mtn5oTdUfWAJPIciqT2kWbNmvq+++irV33vwwQd9Dz30kP/n7du3+6pXr+7bvHmzLydScNDx79q1y3/f+++/72vatGnUnRunaotoOy9kx44dLjQeOHDAf58+rD3++ONRd27sOEVbhOu5Qbc7wsbq1astISHBdRt4GjZsaD///LMlJSVZpFu3bp1VrFjxpPt1/GqHmJgY97O+NmjQwJYtW2aRYsmSJdaoUSN78803Tzr2888/3woUKOC/T23hHbse1xANT/78+e2CCy7I8W2TVnscPHjQdb2mdp6k1h5ly5a1cuXKuftzolKlSrnuw7i4uJPaIdrOjVO1RbSdF1K6dGkbOXKkFSpUSEU0+/HHH+377793QxKi7dwofYq2CNdzI/cZ3TpwGnbt2mXFixe3vHnz+u/TG63GNO3bt89KlCgRse2pN4wNGza4cUkTJkywxMREa926tRvfpXapWrVqsueXLFnS1q5da5GiW7duqd6vY9cba8pj//PPPzP0eKS1hz6g6MPH+PHj7csvv7RixYpZz5497dprr3WP79y5M6Lao0iRIm5so0cfQjVWrXHjxlF3bpyqLaLtvEipRYsWtn37drviiivs6quvtmHDhkXVuXGqttD8gHA8NwifCBtHjhxJFjzF+1kTLyKZ3iy849cn2K1bt7pB4kePHk2zXSK9TSS9Y4+2tlm/fr37H0nlypXt5ptvdtWNQYMGuYrHVVdd5c6XSG6P4cOHu8l3s2fPtldffTWqz43Atli1alVUnxejRo2y+Ph4e+KJJ9wkrGh+3xiVoi1U0Q3Hc4PwibCRL1++k0547+ezzjrLIln58uXdjOaiRYu6N4qaNWu6ysaDDz7ouk5Sa5dIbxPvnFDVO61jT+ucUZUoEnXq1MlVNFS9kBo1atjGjRvtjTfecP8jSas91K0YCWFr6tSp9sILL9jf/va3qD43UrZFtWrVova8kNq1a7uv6iV74IEH3IogCpjReG7UTtEWP/30U1ieG4z5RNgoU6aM7d2714379Kh7RG8YkfCmkB69OXjjOqVKlSruDURjvfRJNpB+TtlVEqnnxKmOPa3H1WaRSOeH9z8RjyoaGtMVye0xZMgQmzJligtd6kqM5nMjtbaIxvNC+79gwYJk92l40okTJ9J9z4y09og/RVtozGc4nhuET4QNVfty586dbNC3Bk7rk1xsbGSfql999ZWbYBL4af3XX391bxoaKL906VI3LlT0VZ9mtSZbpNMxqktRXUOB54R37Pqqnz1qP3VFRmrbvPjii27twpQT9fQ/k9Ta448//nC3nNweY8aMsZkzZ9qIESOsbdu2UX1upNUW0XheaGjSP//5T3+IEo1v1NwAvWdG07mx9RRt8dprr4XnuXFG59IDp2nQoEG+tm3burXHPvnkE7dW2UcffRTx7aglMrQcxn333edbt26dW6dNS6i8/PLL7rHGjRu79T21BI++at3PSFvn0xO4tFBCQoKvTZs2vn79+rn1+LRWnZZQ8dbr27Jli1ueS/d76/VpeaKcul5feu2hfxfnn3++b9KkSb5Nmzb5ZsyY4atVq5bvp59+co/r6wUXXOCbNWuWf80+rR2bU2l5oZo1a/peeOGFZGsU6hZt58ap2iLazgvR379z586+2267zb0v6j1T6x+/+uqrUXduJJyiLcL13CB8IqxovbX+/fu7NwqFrylTpviihd4EtRiwjl3hcvTo0f43Q72BdOrUyb1hXn/99b5Vq1b5IlXKdS03btzou+mmm9wbpj6YfP3118merzdaLbCshZK1ll9OXrswI+2hD2X6H6XOhdatW5/04UzrvzZv3tydR1rrb8+ePb6cSuFAx5/aLdrOjfTaIprOC8+ff/7pjkVFCr1njhs3zv+eGU3nRnptEY7nRoz+c2ZrqwAAAMB/RfZAOgAAAIQVwicAAABChvAJAACAkCF8AgAAIGQInwAAAAgZwicAAABChvAJAACAkCF8AgDC3pYtW+yLL77I7t0AEASETwBA2BswYIAtX748u3cDQBAQPgEAABAyhE8AwGnZtGmT3X777Va/fn27/PLLbdq0ae7+devWufsbNGhgzZo1szFjxlhSUpJ7bPTo0XbLLbck206LFi3s7bffdt/rsXHjxrnfr1Onjl199dX21VdfuccefvhhW7Jkidteym0AyHkInwCADDt27JjddtttVrBgQZs1a5Y99thj9sILL9i7775r3bp1s9KlS9tbb71ljz/+uE2fPt0fTDNi/Pjx1rZtW/vggw+sRo0aNmjQIBdeBw4c6IKuXlchFkDOlju7dwAAkHMsWrTI9uzZY8OGDbNChQpZtWrV7NFHH7V9+/ZZ/vz5bciQIZY7d26rUqWK7dq1y1566SXr0aNHhrbdvHlz69y5s/u+T58+1rFjR7eNMmXKWJ48eaxAgQJWrFixM3yEAM40Kp8AgAzbsGGDVapUyQVPz3XXXWfr16+3Cy64wAVPj6qVCo9//fVXhrZdsWJF//fe9hMSEvjrABGG8AkAyLDAcBkoX758J93njfdMTEy0mJiYkx5PGSxV3UzJ5/Px1wEiDN3uAIAMU3VSE46OHDniutnl2Weftddff93i4uLsxIkT/hC5dOlSK1GihOsq132HDh3yb0ffq/seQPSh8gkAyLCmTZu6kKmJRprdvnDhQps5c6aNHDnSjh8/7r9/wYIFbnLQjTfe6KqetWvXttWrV9u8efNc172eFxub8f8Fabznxo0bbffu3fy1gByOyicAIOP/08id28aOHWuDBw+2a6+91gXR/v37W8uWLa1cuXL21FNPWadOnVzFs3v37nbnnXe632vSpImbeOSFzp49e9rOnTsz/LpdunRxC8336tXL5s6dy18MyMFifAyoAQAAQIjQ7Q4AAICQIXwCAAAgZAifAAAACBnCJwAAAEKG8AkAAICQIXwCAAAgZAifAAAACBnCJwAAAEKG8AkAAICQIXwCAAAgZAifAAAACBnCJwAAACxU/g9VEAHEccCgawAAAABJRU5ErkJggg=="497     },498     "metadata": {},499     "output_type": "display_data"500    }501   ],502   "execution_count": 33503  },504  {505   "cell_type": "markdown",506   "metadata": {},507   "source": [508    "This shows that the dataset is fairly balanced and does not require any special attention in terms of biased training.\n"509   ]510  },511  {512   "cell_type": "markdown",513   "metadata": {},514   "source": [515    "### Request 1\n",516    "Check for null values, and display a summary of the dataset (use `.info()` and `.describe()` methods).\n"517   ]518  },519  {520   "cell_type": "code",521   "metadata": {522    "ExecuteTime": {523     "end_time": "2025-11-13T14:37:59.265213Z",524     "start_time": "2025-11-13T14:37:59.250068Z"525    }526   },527   "source": [528    "# Checking for null values\n",529    "print(data.isnull().sum())\n",530    "\n",531    "# Dataset summary\n",532    "print(data.info())\n",533    "print(data.describe())"534   ],535   "outputs": [536    {537     "name": "stdout",538     "output_type": "stream",539     "text": [540      "Gender                            0\n",541      "Age                               0\n",542      "Height                            0\n",543      "Weight                            0\n",544      "family_history_with_overweight    0\n",545      "FAVC                              0\n",546      "FCVC                              0\n",547      "NCP                               0\n",548      "CAEC                              0\n",549      "SMOKE                             0\n",550      "CH2O                              0\n",551      "SCC                               0\n",552      "FAF                               0\n",553      "TUE                               0\n",554      "CALC                              0\n",555      "MTRANS                            0\n",556      "NObeyesdad                        0\n",557      "dtype: int64\n",558      "<class 'pandas.core.frame.DataFrame'>\n",559      "RangeIndex: 2111 entries, 0 to 2110\n",560      "Data columns (total 17 columns):\n",561      " #   Column                          Non-Null Count  Dtype  \n",562      "---  ------                          --------------  -----  \n",563      " 0   Gender                          2111 non-null   object \n",564      " 1   Age                             2111 non-null   float64\n",565      " 2   Height                          2111 non-null   float64\n",566      " 3   Weight                          2111 non-null   float64\n",567      " 4   family_history_with_overweight  2111 non-null   object \n",568      " 5   FAVC                            2111 non-null   object \n",569      " 6   FCVC                            2111 non-null   float64\n",570      " 7   NCP                             2111 non-null   float64\n",571      " 8   CAEC                            2111 non-null   object \n",572      " 9   SMOKE                           2111 non-null   object \n",573      " 10  CH2O                            2111 non-null   float64\n",574      " 11  SCC                             2111 non-null   object \n",575      " 12  FAF                             2111 non-null   float64\n",576      " 13  TUE                             2111 non-null   float64\n",577      " 14  CALC                            2111 non-null   object \n",578      " 15  MTRANS                          2111 non-null   object \n",579      " 16  NObeyesdad                      2111 non-null   object \n",580      "dtypes: float64(8), object(9)\n",581      "memory usage: 280.5+ KB\n",582      "None\n",583      "               Age       Height       Weight         FCVC          NCP  \\\n",584      "count  2111.000000  2111.000000  2111.000000  2111.000000  2111.000000   \n",585      "mean     24.312600     1.701677    86.586058     2.419043     2.685628   \n",586      "std       6.345968     0.093305    26.191172     0.533927     0.778039   \n",587      "min      14.000000     1.450000    39.000000     1.000000     1.000000   \n",588      "25%      19.947192     1.630000    65.473343     2.000000     2.658738   \n",589      "50%      22.777890     1.700499    83.000000     2.385502     3.000000   \n",590      "75%      26.000000     1.768464   107.430682     3.000000     3.000000   \n",591      "max      61.000000     1.980000   173.000000     3.000000     4.000000   \n",592      "\n",593      "              CH2O          FAF          TUE  \n",594      "count  2111.000000  2111.000000  2111.000000  \n",595      "mean      2.008011     1.010298     0.657866  \n",596      "std       0.612953     0.850592     0.608927  \n",597      "min       1.000000     0.000000     0.000000  \n",598      "25%       1.584812     0.124505     0.000000  \n",599      "50%       2.000000     1.000000     0.625350  \n",600      "75%       2.477420     1.666678     1.000000  \n",601      "max       3.000000     3.000000     2.000000  \n"602     ]603    }604   ],605   "execution_count": 34606  },607  {608   "cell_type": "markdown",609   "metadata": {},610   "source": [611    "Expected Output:\n",612    "\n",613    "* Counts of null values for each column (likely zero for this dataset).\n",614    "* Dataset info including column names, data types, and memory usage.\n",615    "* Descriptive statistics for numerical columns.\n"616   ]617  },618  {619   "cell_type": "markdown",620   "metadata": {},621   "source": [622    "## Preprocessing the data\n"623   ]624  },625  {626   "cell_type": "markdown",627   "metadata": {},628   "source": [629    "### Feature scaling\n",630    "Scale the numerical features to standardize their ranges for better model performance.\n"631   ]632  },633  {634   "cell_type": "code",635   "metadata": {636    "ExecuteTime": {637     "end_time": "2025-11-13T14:38:05.399638Z",638     "start_time": "2025-11-13T14:38:05.393290Z"639    }640   },641   "source": [642    "# Standardizing continuous numerical features\ncontinuous_columns = data.select_dtypes(include=['float64']).columns.tolist()\n\nscaler = StandardScaler()\nscaled_features = scaler.fit_transform(data[continuous_columns])\n\n# Converting to a DataFrame\nscaled_df = pd.DataFrame(scaled_features, columns=scaler.get_feature_names_out(continuous_columns))\n\n# Combining with the original dataset\nscaled_data = pd.concat([data.drop(columns=continuous_columns), scaled_df], axis=1)"643   ],644   "outputs": [],645   "execution_count": 35646  },647  {648   "cell_type": "markdown",649   "metadata": {},650   "source": [651    "Standardization of data is important to better define the decision boundaries between classes by making sure that the feature variations are in similar scales. The data is now ready to be used for training and testing.\n"652   ]653  },654  {655   "cell_type": "markdown",656   "metadata": {},657   "source": [658    "### One-hot encoding\n",659    "Convert categorical variables into numerical format using one-hot encoding.\n"660   ]661  },662  {663   "cell_type": "code",664   "metadata": {665    "ExecuteTime": {666     "end_time": "2025-11-13T14:38:09.399978Z",667     "start_time": "2025-11-13T14:38:09.388839Z"668    }669   },670   "source": [671    "# Identifying categorical columns\ncategorical_columns = scaled_data.select_dtypes(include=['object']).columns.tolist()\ncategorical_columns.remove('NObeyesdad')  # Exclude target column\n\n# Applying one-hot encoding\nencoder = OneHotEncoder(sparse_output=False, drop='first')\nencoded_features = encoder.fit_transform(scaled_data[categorical_columns])\n\n# Converting to a DataFrame\nencoded_df = pd.DataFrame(encoded_features, columns=encoder.get_feature_names_out(categorical_columns))\n\n# Combining with the original dataset\nprepped_data = pd.concat([scaled_data.drop(columns=categorical_columns), encoded_df], axis=1)"672   ],673   "outputs": [],674   "execution_count": 36675  },676  {677   "cell_type": "markdown",678   "metadata": {},679   "source": "We will observe that all the categorical variables have now been modified to one-hot encoded features. This increases the overall number of fields to 24. \n"680  },681  {682   "cell_type": "markdown",683   "metadata": {},684   "source": [685    "### Encode the target variable\n"686   ]687  },688  {689   "cell_type": "code",690   "metadata": {691    "ExecuteTime": {692     "end_time": "2025-11-13T14:38:14.179071Z",693     "start_time": "2025-11-13T14:38:14.168179Z"694    }695   },696   "source": [697    "# Encoding the target variable\nprepped_data['NObeyesdad'] = prepped_data['NObeyesdad'].astype('category').cat.codes\nprepped_data.head()"698   ],699   "outputs": [700    {701     "data": {702      "text/plain": [703       "   NObeyesdad       Age    Height    Weight      FCVC       NCP      CH2O  \\\n",704       "0           1 -0.522124 -0.875589 -0.862558 -0.785019  0.404153 -0.013073   \n",705       "1           1 -0.522124 -1.947599 -1.168077  1.088342  0.404153  1.618759   \n",706       "2           1 -0.206889  1.054029 -0.366090 -0.785019  0.404153 -0.013073   \n",707       "3           5  0.423582  1.054029  0.015808  1.088342  0.404153 -0.013073   \n",708       "4           6 -0.364507  0.839627  0.122740 -0.785019 -2.167023 -0.013073   \n",709       "\n",710       "        FAF       TUE  Gender_Male  ...  CAEC_no  SMOKE_yes  SCC_yes  \\\n",711       "0 -1.188039  0.561997          0.0  ...      0.0        0.0      0.0   \n",712       "1  2.339750 -1.080625          0.0  ...      0.0        1.0      1.0   \n",713       "2  1.163820  0.561997          1.0  ...      0.0        0.0      0.0   \n",714       "3  1.163820 -1.080625          1.0  ...      0.0        0.0      0.0   \n",715       "4 -1.188039 -1.080625          1.0  ...      0.0        0.0      0.0   \n",716       "\n",717       "   CALC_Frequently  CALC_Sometimes  CALC_no  MTRANS_Bike  MTRANS_Motorbike  \\\n",718       "0              0.0             0.0      1.0          0.0               0.0   \n",719       "1              0.0             1.0      0.0          0.0               0.0   \n",720       "2              1.0             0.0      0.0          0.0               0.0   \n",721       "3              1.0             0.0      0.0          0.0               0.0   \n",722       "4              0.0             1.0      0.0          0.0               0.0   \n",723       "\n",724       "   MTRANS_Public_Transportation  MTRANS_Walking  \n",725       "0                           1.0             0.0  \n",726       "1                           1.0             0.0  \n",727       "2                           1.0             0.0  \n",728       "3                           0.0             1.0  \n",729       "4                           1.0             0.0  \n",730       "\n",731       "[5 rows x 24 columns]"732      ],733      "text/html": [734       "<div>\n",735       "<style scoped>\n",736       "    .dataframe tbody tr th:only-of-type {\n",737       "        vertical-align: middle;\n",738       "    }\n",739       "\n",740       "    .dataframe tbody tr th {\n",741       "        vertical-align: top;\n",742       "    }\n",743       "\n",744       "    .dataframe thead th {\n",745       "        text-align: right;\n",746       "    }\n",747       "</style>\n",748       "<table border=\"1\" class=\"dataframe\">\n",749       "  <thead>\n",750       "    <tr style=\"text-align: right;\">\n",751       "      <th></th>\n",752       "      <th>NObeyesdad</th>\n",753       "      <th>Age</th>\n",754       "      <th>Height</th>\n",755       "      <th>Weight</th>\n",756       "      <th>FCVC</th>\n",757       "      <th>NCP</th>\n",758       "      <th>CH2O</th>\n",759       "      <th>FAF</th>\n",760       "      <th>TUE</th>\n",761       "      <th>Gender_Male</th>\n",762       "      <th>...</th>\n",763       "      <th>CAEC_no</th>\n",764       "      <th>SMOKE_yes</th>\n",765       "      <th>SCC_yes</th>\n",766       "      <th>CALC_Frequently</th>\n",767       "      <th>CALC_Sometimes</th>\n",768       "      <th>CALC_no</th>\n",769       "      <th>MTRANS_Bike</th>\n",770       "      <th>MTRANS_Motorbike</th>\n",771       "      <th>MTRANS_Public_Transportation</th>\n",772       "      <th>MTRANS_Walking</th>\n",773       "    </tr>\n",774       "  </thead>\n",775       "  <tbody>\n",776       "    <tr>\n",777       "      <th>0</th>\n",778       "      <td>1</td>\n",779       "      <td>-0.522124</td>\n",780       "      <td>-0.875589</td>\n",781       "      <td>-0.862558</td>\n",782       "      <td>-0.785019</td>\n",783       "      <td>0.404153</td>\n",784       "      <td>-0.013073</td>\n",785       "      <td>-1.188039</td>\n",786       "      <td>0.561997</td>\n",787       "      <td>0.0</td>\n",788       "      <td>...</td>\n",789       "      <td>0.0</td>\n",790       "      <td>0.0</td>\n",791       "      <td>0.0</td>\n",792       "      <td>0.0</td>\n",793       "      <td>0.0</td>\n",794       "      <td>1.0</td>\n",795       "      <td>0.0</td>\n",796       "      <td>0.0</td>\n",797       "      <td>1.0</td>\n",798       "      <td>0.0</td>\n",799       "    </tr>\n",800       "    <tr>\n",801       "      <th>1</th>\n",802       "      <td>1</td>\n",803       "      <td>-0.522124</td>\n",804       "      <td>-1.947599</td>\n",805       "      <td>-1.168077</td>\n",806       "      <td>1.088342</td>\n",807       "      <td>0.404153</td>\n",808       "      <td>1.618759</td>\n",809       "      <td>2.339750</td>\n",810       "      <td>-1.080625</td>\n",811       "      <td>0.0</td>\n",812       "      <td>...</td>\n",813       "      <td>0.0</td>\n",814       "      <td>1.0</td>\n",815       "      <td>1.0</td>\n",816       "      <td>0.0</td>\n",817       "      <td>1.0</td>\n",818       "      <td>0.0</td>\n",819       "      <td>0.0</td>\n",820       "      <td>0.0</td>\n",821       "      <td>1.0</td>\n",822       "      <td>0.0</td>\n",823       "    </tr>\n",824       "    <tr>\n",825       "      <th>2</th>\n",826       "      <td>1</td>\n",827       "      <td>-0.206889</td>\n",828       "      <td>1.054029</td>\n",829       "      <td>-0.366090</td>\n",830       "      <td>-0.785019</td>\n",831       "      <td>0.404153</td>\n",832       "      <td>-0.013073</td>\n",833       "      <td>1.163820</td>\n",834       "      <td>0.561997</td>\n",835       "      <td>1.0</td>\n",836       "      <td>...</td>\n",837       "      <td>0.0</td>\n",838       "      <td>0.0</td>\n",839       "      <td>0.0</td>\n",840       "      <td>1.0</td>\n",841       "      <td>0.0</td>\n",842       "      <td>0.0</td>\n",843       "      <td>0.0</td>\n",844       "      <td>0.0</td>\n",845       "      <td>1.0</td>\n",846       "      <td>0.0</td>\n",847       "    </tr>\n",848       "    <tr>\n",849       "      <th>3</th>\n",850       "      <td>5</td>\n",851       "      <td>0.423582</td>\n",852       "      <td>1.054029</td>\n",853       "      <td>0.015808</td>\n",854       "      <td>1.088342</td>\n",855       "      <td>0.404153</td>\n",856       "      <td>-0.013073</td>\n",857       "      <td>1.163820</td>\n",858       "      <td>-1.080625</td>\n",859       "      <td>1.0</td>\n",860       "      <td>...</td>\n",861       "      <td>0.0</td>\n",862       "      <td>0.0</td>\n",863       "      <td>0.0</td>\n",864       "      <td>1.0</td>\n",865       "      <td>0.0</td>\n",866       "      <td>0.0</td>\n",867       "      <td>0.0</td>\n",868       "      <td>0.0</td>\n",869       "      <td>0.0</td>\n",870       "      <td>1.0</td>\n",871       "    </tr>\n",872       "    <tr>\n",873       "      <th>4</th>\n",874       "      <td>6</td>\n",875       "      <td>-0.364507</td>\n",876       "      <td>0.839627</td>\n",877       "      <td>0.122740</td>\n",878       "      <td>-0.785019</td>\n",879       "      <td>-2.167023</td>\n",880       "      <td>-0.013073</td>\n",881       "      <td>-1.188039</td>\n",882       "      <td>-1.080625</td>\n",883       "      <td>1.0</td>\n",884       "      <td>...</td>\n",885       "      <td>0.0</td>\n",886       "      <td>0.0</td>\n",887       "      <td>0.0</td>\n",888       "      <td>0.0</td>\n",889       "      <td>1.0</td>\n",890       "      <td>0.0</td>\n",891       "      <td>0.0</td>\n",892       "      <td>0.0</td>\n",893       "      <td>1.0</td>\n",894       "      <td>0.0</td>\n",895       "    </tr>\n",896       "  </tbody>\n",897       "</table>\n",898       "<p>5 rows × 24 columns</p>\n",899       "</div>"900      ]901     },902     "execution_count": 37,903     "metadata": {},904     "output_type": "execute_result"905    }906   ],907   "execution_count": 37908  },909  {910   "cell_type": "markdown",911   "metadata": {},912   "source": [913    "### Separate the input and target data\n"914   ]915  },916  {917   "cell_type": "code",918   "metadata": {919    "ExecuteTime": {920     "end_time": "2025-11-13T14:38:18.135880Z",921     "start_time": "2025-11-13T14:38:18.132397Z"922    }923   },924   "source": [925    "# Preparing final dataset\nX = prepped_data.drop('NObeyesdad', axis=1)\ny = prepped_data['NObeyesdad']"926   ],927   "outputs": [],928   "execution_count": 38929  },930  {931   "cell_type": "markdown",932   "metadata": {},933   "source": [934    "## Model training and evaluation \n"935   ]936  },937  {938   "cell_type": "markdown",939   "metadata": {},940   "source": [941    "### Splitting the data set\n",942    "Split the data into training and testing subsets.\n"943   ]944  },945  {946   "cell_type": "code",947   "metadata": {948    "ExecuteTime": {949     "end_time": "2025-11-13T14:38:22.069860Z",950     "start_time": "2025-11-13T14:38:22.062484Z"951    }952   },953   "source": [954    "# Splitting data\nX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)"955   ],956   "outputs": [],957   "execution_count": 39958  },959  {960   "cell_type": "markdown",961   "metadata": {},962   "source": [963    "### Logistic Regression with One-vs-All\n",964    "In the One-vs-All approach:\n",965    "\n",966    "* The algorithm trains a single binary classifier for each class.\n",967    "* Each classifier learns to distinguish a single class from all the others combined.\n",968    "* If there are k classes, k classifiers are trained.\n",969    "* During prediction, the algorithm evaluates all classifiers on each input, and selects the class with the highest confidence score as the predicted class.\n",970    "\n",971    "#### Advantages:\n",972    "* Simpler and more efficient in terms of the number of classifiers (k)\n",973    "* Easier to implement for algorithms that naturally provide confidence scores (e.g., logistic regression, SVM).\n",974    "\n",975    "#### Disadvantages:\n",976    "* Classifiers may struggle with class imbalance since each binary classifier must distinguish between one class and the rest.\n",977    "* Requires the classifier to perform well even with highly imbalanced datasets, as the \"all\" group typically contains more samples than the \"one\" class.\n"978   ]979  },980  {981   "cell_type": "markdown",982   "metadata": {},983   "source": [984    "Train a logistic regression model using the One-vs-All strategy and evaluate its performance.\n"985   ]986  },987  {988   "cell_type": "code",989   "metadata": {990    "ExecuteTime": {991     "end_time": "2025-11-13T14:38:27.677127Z",992     "start_time": "2025-11-13T14:38:27.637666Z"993    }994   },995   "source": [996    "# Training logistic regression model using One-vs-All (default)\n",997    "model_ova = LogisticRegression(multi_class='ovr', max_iter=1000)\n",998    "# model_ova = OneVsRestClassifier(LogisticRegression(max_iter=1000))\n",999    "model_ova.fit(X_train, y_train)"1000   ],1001   "outputs": [1002    {1003     "data": {1004      "text/plain": [1005       "LogisticRegression(max_iter=1000, multi_class='ovr')"1006      ],1007      "text/html": [1008       "<style>#sk-container-id-6 {\n",1009       "  /* Definition of color scheme common for light and dark mode */\n",1010       "  --sklearn-color-text: #000;\n",1011       "  --sklearn-color-text-muted: #666;\n",1012       "  --sklearn-color-line: gray;\n",1013       "  /* Definition of color scheme for unfitted estimators */\n",1014       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",1015       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",1016       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",1017       "  --sklearn-color-unfitted-level-3: chocolate;\n",1018       "  /* Definition of color scheme for fitted estimators */\n",1019       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",1020       "  --sklearn-color-fitted-level-1: #d4ebff;\n",1021       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",1022       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",1023       "\n",1024       "  /* Specific color for light theme */\n",1025       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",1026       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",1027       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",1028       "  --sklearn-color-icon: #696969;\n",1029       "\n",1030       "  @media (prefers-color-scheme: dark) {\n",1031       "    /* Redefinition of color scheme for dark theme */\n",1032       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",1033       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",1034       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",1035       "    --sklearn-color-icon: #878787;\n",1036       "  }\n",1037       "}\n",1038       "\n",1039       "#sk-container-id-6 {\n",1040       "  color: var(--sklearn-color-text);\n",1041       "}\n",1042       "\n",1043       "#sk-container-id-6 pre {\n",1044       "  padding: 0;\n",1045       "}\n",1046       "\n",1047       "#sk-container-id-6 input.sk-hidden--visually {\n",1048       "  border: 0;\n",1049       "  clip: rect(1px 1px 1px 1px);\n",1050       "  clip: rect(1px, 1px, 1px, 1px);\n",1051       "  height: 1px;\n",1052       "  margin: -1px;\n",1053       "  overflow: hidden;\n",1054       "  padding: 0;\n",1055       "  position: absolute;\n",1056       "  width: 1px;\n",1057       "}\n",1058       "\n",1059       "#sk-container-id-6 div.sk-dashed-wrapped {\n",1060       "  border: 1px dashed var(--sklearn-color-line);\n",1061       "  margin: 0 0.4em 0.5em 0.4em;\n",1062       "  box-sizing: border-box;\n",1063       "  padding-bottom: 0.4em;\n",1064       "  background-color: var(--sklearn-color-background);\n",1065       "}\n",1066       "\n",1067       "#sk-container-id-6 div.sk-container {\n",1068       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",1069       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",1070       "     so we also need the `!important` here to be able to override the\n",1071       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",1072       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",1073       "  display: inline-block !important;\n",1074       "  position: relative;\n",1075       "}\n",1076       "\n",1077       "#sk-container-id-6 div.sk-text-repr-fallback {\n",1078       "  display: none;\n",1079       "}\n",1080       "\n",1081       "div.sk-parallel-item,\n",1082       "div.sk-serial,\n",1083       "div.sk-item {\n",1084       "  /* draw centered vertical line to link estimators */\n",1085       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",1086       "  background-size: 2px 100%;\n",1087       "  background-repeat: no-repeat;\n",1088       "  background-position: center center;\n",1089       "}\n",1090       "\n",1091       "/* Parallel-specific style estimator block */\n",1092       "\n",1093       "#sk-container-id-6 div.sk-parallel-item::after {\n",1094       "  content: \"\";\n",1095       "  width: 100%;\n",1096       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",1097       "  flex-grow: 1;\n",1098       "}\n",1099       "\n",1100       "#sk-container-id-6 div.sk-parallel {\n",1101       "  display: flex;\n",1102       "  align-items: stretch;\n",1103       "  justify-content: center;\n",1104       "  background-color: var(--sklearn-color-background);\n",1105       "  position: relative;\n",1106       "}\n",1107       "\n",1108       "#sk-container-id-6 div.sk-parallel-item {\n",1109       "  display: flex;\n",1110       "  flex-direction: column;\n",1111       "}\n",1112       "\n",1113       "#sk-container-id-6 div.sk-parallel-item:first-child::after {\n",1114       "  align-self: flex-end;\n",1115       "  width: 50%;\n",1116       "}\n",1117       "\n",1118       "#sk-container-id-6 div.sk-parallel-item:last-child::after {\n",1119       "  align-self: flex-start;\n",1120       "  width: 50%;\n",1121       "}\n",1122       "\n",1123       "#sk-container-id-6 div.sk-parallel-item:only-child::after {\n",1124       "  width: 0;\n",1125       "}\n",1126       "\n",1127       "/* Serial-specific style estimator block */\n",1128       "\n",1129       "#sk-container-id-6 div.sk-serial {\n",1130       "  display: flex;\n",1131       "  flex-direction: column;\n",1132       "  align-items: center;\n",1133       "  background-color: var(--sklearn-color-background);\n",1134       "  padding-right: 1em;\n",1135       "  padding-left: 1em;\n",1136       "}\n",1137       "\n",1138       "\n",1139       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",1140       "clickable and can be expanded/collapsed.\n",1141       "- Pipeline and ColumnTransformer use this feature and define the default style\n",1142       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",1143       "*/\n",1144       "\n",1145       "/* Pipeline and ColumnTransformer style (default) */\n",1146       "\n",1147       "#sk-container-id-6 div.sk-toggleable {\n",1148       "  /* Default theme specific background. It is overwritten whether we have a\n",1149       "  specific estimator or a Pipeline/ColumnTransformer */\n",1150       "  background-color: var(--sklearn-color-background);\n",1151       "}\n",1152       "\n",1153       "/* Toggleable label */\n",1154       "#sk-container-id-6 label.sk-toggleable__label {\n",1155       "  cursor: pointer;\n",1156       "  display: flex;\n",1157       "  width: 100%;\n",1158       "  margin-bottom: 0;\n",1159       "  padding: 0.5em;\n",1160       "  box-sizing: border-box;\n",1161       "  text-align: center;\n",1162       "  align-items: start;\n",1163       "  justify-content: space-between;\n",1164       "  gap: 0.5em;\n",1165       "}\n",1166       "\n",1167       "#sk-container-id-6 label.sk-toggleable__label .caption {\n",1168       "  font-size: 0.6rem;\n",1169       "  font-weight: lighter;\n",1170       "  color: var(--sklearn-color-text-muted);\n",1171       "}\n",1172       "\n",1173       "#sk-container-id-6 label.sk-toggleable__label-arrow:before {\n",1174       "  /* Arrow on the left of the label */\n",1175       "  content: \"▸\";\n",1176       "  float: left;\n",1177       "  margin-right: 0.25em;\n",1178       "  color: var(--sklearn-color-icon);\n",1179       "}\n",1180       "\n",1181       "#sk-container-id-6 label.sk-toggleable__label-arrow:hover:before {\n",1182       "  color: var(--sklearn-color-text);\n",1183       "}\n",1184       "\n",1185       "/* Toggleable content - dropdown */\n",1186       "\n",1187       "#sk-container-id-6 div.sk-toggleable__content {\n",1188       "  max-height: 0;\n",1189       "  max-width: 0;\n",1190       "  overflow: hidden;\n",1191       "  text-align: left;\n",1192       "  /* unfitted */\n",1193       "  background-color: var(--sklearn-color-unfitted-level-0);\n",1194       "}\n",1195       "\n",1196       "#sk-container-id-6 div.sk-toggleable__content.fitted {\n",1197       "  /* fitted */\n",1198       "  background-color: var(--sklearn-color-fitted-level-0);\n",1199       "}\n",1200       "\n",

Showing the first 1,200 of 2181 lines. Download the file for the rest.