{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0931b870-4a8e-4389-a9f3-5b79cafabbdd",
   "metadata": {},
   "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>PatientID</th>\n",
       "      <th>Age</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Ethnicity</th>\n",
       "      <th>SocioeconomicStatus</th>\n",
       "      <th>EducationLevel</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Smoking</th>\n",
       "      <th>AlcoholConsumption</th>\n",
       "      <th>PhysicalActivity</th>\n",
       "      <th>...</th>\n",
       "      <th>Itching</th>\n",
       "      <th>QualityOfLifeScore</th>\n",
       "      <th>HeavyMetalsExposure</th>\n",
       "      <th>OccupationalExposureChemicals</th>\n",
       "      <th>WaterQuality</th>\n",
       "      <th>MedicalCheckupsFrequency</th>\n",
       "      <th>MedicationAdherence</th>\n",
       "      <th>HealthLiteracy</th>\n",
       "      <th>Diagnosis</th>\n",
       "      <th>DoctorInCharge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>31.069414</td>\n",
       "      <td>1</td>\n",
       "      <td>5.128112</td>\n",
       "      <td>1.676220</td>\n",
       "      <td>...</td>\n",
       "      <td>7.556302</td>\n",
       "      <td>76.076800</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.018824</td>\n",
       "      <td>4.966808</td>\n",
       "      <td>9.871449</td>\n",
       "      <td>1</td>\n",
       "      <td>Confidential</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>29.692119</td>\n",
       "      <td>1</td>\n",
       "      <td>18.609552</td>\n",
       "      <td>8.377574</td>\n",
       "      <td>...</td>\n",
       "      <td>6.836766</td>\n",
       "      <td>40.128498</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.923538</td>\n",
       "      <td>8.189275</td>\n",
       "      <td>7.161765</td>\n",
       "      <td>1</td>\n",
       "      <td>Confidential</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>80</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>37.394822</td>\n",
       "      <td>1</td>\n",
       "      <td>11.882429</td>\n",
       "      <td>9.607401</td>\n",
       "      <td>...</td>\n",
       "      <td>2.144722</td>\n",
       "      <td>92.872842</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.429906</td>\n",
       "      <td>7.624028</td>\n",
       "      <td>7.354632</td>\n",
       "      <td>1</td>\n",
       "      <td>Confidential</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>31.329680</td>\n",
       "      <td>0</td>\n",
       "      <td>16.020165</td>\n",
       "      <td>0.408871</td>\n",
       "      <td>...</td>\n",
       "      <td>7.077188</td>\n",
       "      <td>90.080321</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.226416</td>\n",
       "      <td>3.282688</td>\n",
       "      <td>6.629587</td>\n",
       "      <td>1</td>\n",
       "      <td>Confidential</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>43</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.726311</td>\n",
       "      <td>0</td>\n",
       "      <td>7.944146</td>\n",
       "      <td>0.780319</td>\n",
       "      <td>...</td>\n",
       "      <td>3.553118</td>\n",
       "      <td>5.258372</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.285466</td>\n",
       "      <td>3.849498</td>\n",
       "      <td>1.437385</td>\n",
       "      <td>1</td>\n",
       "      <td>Confidential</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 54 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   PatientID  Age  Gender  Ethnicity  SocioeconomicStatus  EducationLevel  \\\n",
       "0          1   71       0          0                    0               2   \n",
       "1          2   34       0          0                    1               3   \n",
       "2          3   80       1          1                    0               1   \n",
       "3          4   40       0          2                    0               1   \n",
       "4          5   43       0          1                    1               2   \n",
       "\n",
       "         BMI  Smoking  AlcoholConsumption  PhysicalActivity  ...   Itching  \\\n",
       "0  31.069414        1            5.128112          1.676220  ...  7.556302   \n",
       "1  29.692119        1           18.609552          8.377574  ...  6.836766   \n",
       "2  37.394822        1           11.882429          9.607401  ...  2.144722   \n",
       "3  31.329680        0           16.020165          0.408871  ...  7.077188   \n",
       "4  23.726311        0            7.944146          0.780319  ...  3.553118   \n",
       "\n",
       "   QualityOfLifeScore  HeavyMetalsExposure  OccupationalExposureChemicals  \\\n",
       "0           76.076800                    0                              0   \n",
       "1           40.128498                    0                              0   \n",
       "2           92.872842                    0                              1   \n",
       "3           90.080321                    0                              0   \n",
       "4            5.258372                    0                              0   \n",
       "\n",
       "   WaterQuality  MedicalCheckupsFrequency  MedicationAdherence  \\\n",
       "0             1                  1.018824             4.966808   \n",
       "1             0                  3.923538             8.189275   \n",
       "2             1                  1.429906             7.624028   \n",
       "3             0                  3.226416             3.282688   \n",
       "4             1                  0.285466             3.849498   \n",
       "\n",
       "   HealthLiteracy  Diagnosis  DoctorInCharge  \n",
       "0        9.871449          1    Confidential  \n",
       "1        7.161765          1    Confidential  \n",
       "2        7.354632          1    Confidential  \n",
       "3        6.629587          1    Confidential  \n",
       "4        1.437385          1    Confidential  \n",
       "\n",
       "[5 rows x 54 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "df = pd.read_csv('Chronic_Kidney_Dsease_data.csv')\n",
    "df.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "2e0ce6bc-bfc1-48fb-b804-6cc9d794d911",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "      PatientID  Age  Gender  Ethnicity  SocioeconomicStatus  EducationLevel  \\\n",
      "0             1   71       0          0                    0               2   \n",
      "1             2   34       0          0                    1               3   \n",
      "2             3   80       1          1                    0               1   \n",
      "3             4   40       0          2                    0               1   \n",
      "4             5   43       0          1                    1               2   \n",
      "...         ...  ...     ...        ...                  ...             ...   \n",
      "1654       1655   90       0          0                    1               2   \n",
      "1655       1656   34       0          0                    2               1   \n",
      "1656       1657   84       0          0                    2               3   \n",
      "1657       1658   90       0          0                    2               2   \n",
      "1658       1659   34       1          1                    0               0   \n",
      "\n",
      "            BMI  Smoking  AlcoholConsumption  PhysicalActivity  ...   Itching  \\\n",
      "0     31.069414        1            5.128112          1.676220  ...  7.556302   \n",
      "1     29.692119        1           18.609552          8.377574  ...  6.836766   \n",
      "2     37.394822        1           11.882429          9.607401  ...  2.144722   \n",
      "3     31.329680        0           16.020165          0.408871  ...  7.077188   \n",
      "4     23.726311        0            7.944146          0.780319  ...  3.553118   \n",
      "...         ...      ...                 ...               ...  ...       ...   \n",
      "1654  39.677059        1            1.370151          4.157954  ...  2.138976   \n",
      "1655  28.922015        0            3.372073          9.647525  ...  7.911566   \n",
      "1656  21.951219        0           15.825955          7.349964  ...  0.015531   \n",
      "1657  24.964149        0           12.967462          0.618614  ...  3.432765   \n",
      "1658  19.253258        1           11.396510          7.446314  ...  9.293499   \n",
      "\n",
      "      QualityOfLifeScore  HeavyMetalsExposure  OccupationalExposureChemicals  \\\n",
      "0              76.076800                    0                              0   \n",
      "1              40.128498                    0                              0   \n",
      "2              92.872842                    0                              1   \n",
      "3              90.080321                    0                              0   \n",
      "4               5.258372                    0                              0   \n",
      "...                  ...                  ...                            ...   \n",
      "1654           81.102765                    0                              0   \n",
      "1655           10.600428                    0                              1   \n",
      "1656           69.633427                    0                              0   \n",
      "1657           31.858023                    0                              0   \n",
      "1658           82.314878                    0                              0   \n",
      "\n",
      "      WaterQuality  MedicalCheckupsFrequency  MedicationAdherence  \\\n",
      "0                1                  1.018824             4.966808   \n",
      "1                0                  3.923538             8.189275   \n",
      "2                1                  1.429906             7.624028   \n",
      "3                0                  3.226416             3.282688   \n",
      "4                1                  0.285466             3.849498   \n",
      "...            ...                       ...                  ...   \n",
      "1654             0                  0.951836             9.547583   \n",
      "1655             0                  3.604147             1.609847   \n",
      "1656             0                  0.801955             5.768617   \n",
      "1657             0                  0.560298             2.744519   \n",
      "1658             0                  1.754852             0.186400   \n",
      "\n",
      "      HealthLiteracy  Diagnosis  DoctorInCharge  \n",
      "0           9.871449          1               0  \n",
      "1           7.161765          1               0  \n",
      "2           7.354632          1               0  \n",
      "3           6.629587          1               0  \n",
      "4           1.437385          1               0  \n",
      "...              ...        ...             ...  \n",
      "1654        2.046212          0               0  \n",
      "1655        0.324417          0               0  \n",
      "1656        4.935108          0               0  \n",
      "1657        0.322592          1               0  \n",
      "1658        4.553608          1               0  \n",
      "\n",
      "[1659 rows x 54 columns]\n"
     ]
    }
   ],
   "source": [
    "df['DoctorInCharge'] = df['DoctorInCharge'].map({'Confidential': 0}) \n",
    "print(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "e32ff9d0-e5ac-408a-9c14-4ad6bd40b5ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.to_csv('updated_dataframe.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "70af3506-6964-4191-b14e-a51da25853d5",
   "metadata": {},
   "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>PatientID</th>\n",
       "      <th>Age</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Ethnicity</th>\n",
       "      <th>SocioeconomicStatus</th>\n",
       "      <th>EducationLevel</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Smoking</th>\n",
       "      <th>AlcoholConsumption</th>\n",
       "      <th>PhysicalActivity</th>\n",
       "      <th>...</th>\n",
       "      <th>Itching</th>\n",
       "      <th>QualityOfLifeScore</th>\n",
       "      <th>HeavyMetalsExposure</th>\n",
       "      <th>OccupationalExposureChemicals</th>\n",
       "      <th>WaterQuality</th>\n",
       "      <th>MedicalCheckupsFrequency</th>\n",
       "      <th>MedicationAdherence</th>\n",
       "      <th>HealthLiteracy</th>\n",
       "      <th>Diagnosis</th>\n",
       "      <th>DoctorInCharge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.00000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>...</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.000000</td>\n",
       "      <td>1659.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>830.000000</td>\n",
       "      <td>54.441230</td>\n",
       "      <td>0.515371</td>\n",
       "      <td>0.71308</td>\n",
       "      <td>0.977697</td>\n",
       "      <td>1.693189</td>\n",
       "      <td>27.620049</td>\n",
       "      <td>0.292948</td>\n",
       "      <td>9.969831</td>\n",
       "      <td>5.024247</td>\n",
       "      <td>...</td>\n",
       "      <td>5.054869</td>\n",
       "      <td>49.730659</td>\n",
       "      <td>0.044002</td>\n",
       "      <td>0.103074</td>\n",
       "      <td>0.197107</td>\n",
       "      <td>2.000336</td>\n",
       "      <td>4.947788</td>\n",
       "      <td>5.144973</td>\n",
       "      <td>0.918626</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>479.056364</td>\n",
       "      <td>20.549757</td>\n",
       "      <td>0.499914</td>\n",
       "      <td>1.00043</td>\n",
       "      <td>0.776686</td>\n",
       "      <td>0.910611</td>\n",
       "      <td>7.288670</td>\n",
       "      <td>0.455252</td>\n",
       "      <td>5.798787</td>\n",
       "      <td>2.866274</td>\n",
       "      <td>...</td>\n",
       "      <td>2.880460</td>\n",
       "      <td>27.827593</td>\n",
       "      <td>0.205162</td>\n",
       "      <td>0.304147</td>\n",
       "      <td>0.397934</td>\n",
       "      <td>1.141635</td>\n",
       "      <td>2.869959</td>\n",
       "      <td>2.901138</td>\n",
       "      <td>0.273492</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>15.033888</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.021740</td>\n",
       "      <td>0.001186</td>\n",
       "      <td>...</td>\n",
       "      <td>0.013697</td>\n",
       "      <td>0.087256</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.001082</td>\n",
       "      <td>0.005392</td>\n",
       "      <td>0.004436</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>415.500000</td>\n",
       "      <td>36.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>21.471449</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.051156</td>\n",
       "      <td>2.555038</td>\n",
       "      <td>...</td>\n",
       "      <td>2.532867</td>\n",
       "      <td>26.991708</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.005802</td>\n",
       "      <td>2.498119</td>\n",
       "      <td>2.569561</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>830.000000</td>\n",
       "      <td>54.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.00000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>27.652077</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>9.951503</td>\n",
       "      <td>5.072395</td>\n",
       "      <td>...</td>\n",
       "      <td>5.087086</td>\n",
       "      <td>48.970075</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.040635</td>\n",
       "      <td>4.974069</td>\n",
       "      <td>5.182949</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>1244.500000</td>\n",
       "      <td>72.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>34.015849</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>14.967100</td>\n",
       "      <td>7.460563</td>\n",
       "      <td>...</td>\n",
       "      <td>7.552093</td>\n",
       "      <td>73.913997</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.947213</td>\n",
       "      <td>7.499783</td>\n",
       "      <td>7.733253</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>1659.000000</td>\n",
       "      <td>90.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.00000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>39.993532</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>19.992713</td>\n",
       "      <td>9.998167</td>\n",
       "      <td>...</td>\n",
       "      <td>9.998313</td>\n",
       "      <td>99.987510</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.999469</td>\n",
       "      <td>9.992345</td>\n",
       "      <td>9.993754</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>8 rows × 54 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         PatientID          Age       Gender   Ethnicity  SocioeconomicStatus  \\\n",
       "count  1659.000000  1659.000000  1659.000000  1659.00000          1659.000000   \n",
       "mean    830.000000    54.441230     0.515371     0.71308             0.977697   \n",
       "std     479.056364    20.549757     0.499914     1.00043             0.776686   \n",
       "min       1.000000    20.000000     0.000000     0.00000             0.000000   \n",
       "25%     415.500000    36.000000     0.000000     0.00000             0.000000   \n",
       "50%     830.000000    54.000000     1.000000     0.00000             1.000000   \n",
       "75%    1244.500000    72.000000     1.000000     1.00000             2.000000   \n",
       "max    1659.000000    90.000000     1.000000     3.00000             2.000000   \n",
       "\n",
       "       EducationLevel          BMI      Smoking  AlcoholConsumption  \\\n",
       "count     1659.000000  1659.000000  1659.000000         1659.000000   \n",
       "mean         1.693189    27.620049     0.292948            9.969831   \n",
       "std          0.910611     7.288670     0.455252            5.798787   \n",
       "min          0.000000    15.033888     0.000000            0.021740   \n",
       "25%          1.000000    21.471449     0.000000            5.051156   \n",
       "50%          2.000000    27.652077     0.000000            9.951503   \n",
       "75%          2.000000    34.015849     1.000000           14.967100   \n",
       "max          3.000000    39.993532     1.000000           19.992713   \n",
       "\n",
       "       PhysicalActivity  ...      Itching  QualityOfLifeScore  \\\n",
       "count       1659.000000  ...  1659.000000         1659.000000   \n",
       "mean           5.024247  ...     5.054869           49.730659   \n",
       "std            2.866274  ...     2.880460           27.827593   \n",
       "min            0.001186  ...     0.013697            0.087256   \n",
       "25%            2.555038  ...     2.532867           26.991708   \n",
       "50%            5.072395  ...     5.087086           48.970075   \n",
       "75%            7.460563  ...     7.552093           73.913997   \n",
       "max            9.998167  ...     9.998313           99.987510   \n",
       "\n",
       "       HeavyMetalsExposure  OccupationalExposureChemicals  WaterQuality  \\\n",
       "count          1659.000000                    1659.000000   1659.000000   \n",
       "mean              0.044002                       0.103074      0.197107   \n",
       "std               0.205162                       0.304147      0.397934   \n",
       "min               0.000000                       0.000000      0.000000   \n",
       "25%               0.000000                       0.000000      0.000000   \n",
       "50%               0.000000                       0.000000      0.000000   \n",
       "75%               0.000000                       0.000000      0.000000   \n",
       "max               1.000000                       1.000000      1.000000   \n",
       "\n",
       "       MedicalCheckupsFrequency  MedicationAdherence  HealthLiteracy  \\\n",
       "count               1659.000000          1659.000000     1659.000000   \n",
       "mean                   2.000336             4.947788        5.144973   \n",
       "std                    1.141635             2.869959        2.901138   \n",
       "min                    0.001082             0.005392        0.004436   \n",
       "25%                    1.005802             2.498119        2.569561   \n",
       "50%                    2.040635             4.974069        5.182949   \n",
       "75%                    2.947213             7.499783        7.733253   \n",
       "max                    3.999469             9.992345        9.993754   \n",
       "\n",
       "         Diagnosis  DoctorInCharge  \n",
       "count  1659.000000          1659.0  \n",
       "mean      0.918626             0.0  \n",
       "std       0.273492             0.0  \n",
       "min       0.000000             0.0  \n",
       "25%       1.000000             0.0  \n",
       "50%       1.000000             0.0  \n",
       "75%       1.000000             0.0  \n",
       "max       1.000000             0.0  \n",
       "\n",
       "[8 rows x 54 columns]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "0690c72f-d363-40a5-9353-6e9aa3fab299",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PatientID                        0\n",
       "Age                              0\n",
       "Gender                           0\n",
       "Ethnicity                        0\n",
       "SocioeconomicStatus              0\n",
       "EducationLevel                   0\n",
       "BMI                              0\n",
       "Smoking                          0\n",
       "AlcoholConsumption               0\n",
       "PhysicalActivity                 0\n",
       "DietQuality                      0\n",
       "SleepQuality                     0\n",
       "FamilyHistoryKidneyDisease       0\n",
       "FamilyHistoryHypertension        0\n",
       "FamilyHistoryDiabetes            0\n",
       "PreviousAcuteKidneyInjury        0\n",
       "UrinaryTractInfections           0\n",
       "SystolicBP                       0\n",
       "DiastolicBP                      0\n",
       "FastingBloodSugar                0\n",
       "HbA1c                            0\n",
       "SerumCreatinine                  0\n",
       "BUNLevels                        0\n",
       "GFR                              0\n",
       "ProteinInUrine                   0\n",
       "ACR                              0\n",
       "SerumElectrolytesSodium          0\n",
       "SerumElectrolytesPotassium       0\n",
       "SerumElectrolytesCalcium         0\n",
       "SerumElectrolytesPhosphorus      0\n",
       "HemoglobinLevels                 0\n",
       "CholesterolTotal                 0\n",
       "CholesterolLDL                   0\n",
       "CholesterolHDL                   0\n",
       "CholesterolTriglycerides         0\n",
       "ACEInhibitors                    0\n",
       "Diuretics                        0\n",
       "NSAIDsUse                        0\n",
       "Statins                          0\n",
       "AntidiabeticMedications          0\n",
       "Edema                            0\n",
       "FatigueLevels                    0\n",
       "NauseaVomiting                   0\n",
       "MuscleCramps                     0\n",
       "Itching                          0\n",
       "QualityOfLifeScore               0\n",
       "HeavyMetalsExposure              0\n",
       "OccupationalExposureChemicals    0\n",
       "WaterQuality                     0\n",
       "MedicalCheckupsFrequency         0\n",
       "MedicationAdherence              0\n",
       "HealthLiteracy                   0\n",
       "Diagnosis                        0\n",
       "DoctorInCharge                   0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "a71eee23-204e-4648-9434-11a4b9c5d8dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAJOCAYAAABm7rQwAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABODElEQVR4nO3dd7gV1bk/8Pdw4Bw6KE1QBAEBFTSKkYuKinJFRQ2JxkYUEqNGIbEX9BqMvUdjlDQv5ioRy0UlWGI3IRpbRKxIVZMo2GjSOev3hz/2dQuEvk7x83me88CemT3zrpl91jrz3XvPlKSUUgAAAABARrUquwAAAAAAvn6EUgAAAABkJ5QCAAAAIDuhFAAAAADZCaUAAAAAyE4oBQAAAEB2QikAAAAAshNKAQAAAJCdUAoAAACA7IRSVKqSkpK46KKLsmzrkUceiW984xtRt27dKCkpidmzZ2fZ7qZ02223RUlJScyYMaOySwGoVow/AF8f+vzK0b59+xg8eHBll0EVJ5SqoVaEFV/+admyZfTp0ycefvjhyi5vg7355ptx0UUXrXUY88knn8QRRxwR9erVi5tvvjluv/32aNCgwSar76v7v27dutG5c+cYOnRozJw5c53Xd/nll8f999+/8QtdCwsWLIiLLroonn766ZXmXXTRRVFSUhIff/xxYdrgwYOL2t6wYcPo0KFDHH744fG///u/UVFRkbF6IDfjT7Hc48+X3XLLLVFSUhI9e/bMsj3g60efX6yy+vzp06fH0KFDo3PnzlG/fv2oX79+bL/99jFkyJCYOHHiJt8+bIjalV0Am9bFF18c22yzTaSUYubMmXHbbbfFQQcdFH/84x/j4IMPruzy1tubb74ZP/vZz2KfffaJ9u3br3H5F198MebNmxeXXHJJ9O3bd9MX+P+t2P+LFi2K8ePHx4gRI+Khhx6K119/PerXr7/W67n88svj8MMPjwEDBhRNP/bYY+Ooo46K8vLyjVz5/1mwYEH87Gc/i4iIffbZZ62eU15eHr/73e8iImLhwoXx7rvvxh//+Mc4/PDDY5999okHHnggGjduvKlKBqoA488XKmv8iYgYNWpUtG/fPl544YWYMmVKdOrUKev2ga8Pff4XKqPPHzduXBx55JFRu3btGDhwYOy0005Rq1atePvtt2PMmDExYsSImD59erRr1y5LPbCuhFI13IEHHhi77rpr4fHxxx8frVq1ijvvvLNaDxDratasWRER0bRp0422zs8//3yN73x8ef//8Ic/jGbNmsX1118fDzzwQBx99NEbXENpaWmUlpZu8Ho2ttq1a8f3vve9ommXXnppXHnllTFs2LA44YQT4q677qqk6oAcjD9fqKzxZ/r06fHss8/GmDFj4qSTTopRo0bF8OHDN1oNAF+mz/9C7j5/6tSpcdRRR0W7du3iiSeeiNatWxfNv+qqq+KWW26JWrWq/xekli1bFhUVFVFWVlbZpbCRVf9XJ+ukadOmUa9evahduziP/Pzzz+PMM8+Mtm3bRnl5eXTp0iWuvfbaSClFxBefdunatWt07do1Fi5cWHjep59+Gq1bt47dd989li9fHhFffH2rYcOGMW3atOjXr180aNAg2rRpExdffHFhff/OK6+8EgceeGA0btw4GjZsGPvtt1/87W9/K8y/7bbb4rvf/W5ERPTp06fwUeFVfb0s4otP9wwaNCgiIr75zW9GSUlJ0Xeb77nnnujRo0fUq1cvmjdvHt/73vfin//8Z9E6VrRp6tSpcdBBB0WjRo1i4MCBa2zLV+27774R8cXJQkTEtddeG7vvvns0a9Ys6tWrFz169Ih777236DklJSXx+eefx+9///tCW1fUv7prSj388MPRu3fvaNCgQTRq1Cj69+8fb7zxxirb9M9//jMGDBgQDRs2jBYtWsRZZ51VOJYzZsyIFi1aRETEz372s8L21/c7+eedd17sv//+cc8998Q777yzXusAqifjT97xZ9SoUbHZZptF//794/DDD49Ro0atcrlPPvkkjj322GjcuHE0bdo0Bg0aFK+++mqUlJTEbbfdVrTs22+/HYcffnhsvvnmUbdu3dh1111j7Nixa6wF+PrR5+fp86+++ur4/PPPY+TIkSsFUhFfvFH8k5/8JNq2bVs0fW368xXnGX/961/jjDPOiBYtWkSDBg3i29/+dnz00UdFy6aU4tJLL42tttoq6tevH3369Fnp3GOF2bNnx2mnnVZ4DXTq1Cmuuuqqokt8zJgxI0pKSuLaa6+NG264ITp27Bjl5eXx5ptvrnZfUH0JpWq4OXPmxMcffxwfffRRvPHGG3HyySfH/Pnziz7FklKKQw89NH7+85/HAQccENdff3106dIlzj777DjjjDMiIqJevXrx+9//PqZMmRIXXHBB4blDhgyJOXPmxG233Vb0iZ3ly5fHAQccEK1atYqrr746evToEcOHD1/ju7RvvPFG9O7dO1599dU455xz4sILL4zp06fHPvvsE88//3xEROy1117xk5/8JCIizj///Lj99tvj9ttvj+22226V67zgggvixBNPjIgvPlp8++23x0knnRQRX3S2RxxxRJSWlsYVV1wRJ5xwQowZMyb23HPPlS5KuGzZsujXr1+0bNkyrr322jjssMPW5hAUmTp1akRENGvWLCIibrzxxth5553j4osvjssvvzxq164d3/3ud+PBBx8sPOf222+P8vLy6N27d6GtK+pfldtvvz369+8fDRs2jKuuuiouvPDCePPNN2PPPfdcKbxavnx59OvXL5o1axbXXntt7L333nHdddfFb37zm4iIaNGiRYwYMSIiIr797W8Xtv+d73xnndu+wrHHHhsppXjsscfWex1A1Wf8qdzxZ9SoUfGd73wnysrK4uijj47JkyfHiy++WLRMRUVFHHLIIXHnnXfGoEGD4rLLLosPPvigcFL11f3zH//xH/HWW2/FeeedF9ddd100aNAgBgwYEPfdd98a6wFqNn1+5fT548aNi06dOq3TtQPXtT//8Y9/HK+++moMHz48Tj755PjjH/8YQ4cOLVrmpz/9aVx44YWx0047xTXXXBMdOnSI/fffPz7//POi5RYsWBB777133HHHHXHcccfFL37xi9hjjz1i2LBhhdfAl40cOTJuuummOPHEE+O6666LzTfffK3bSTWSqJFGjhyZImKln/Ly8nTbbbcVLXv//feniEiXXnpp0fTDDz88lZSUpClTphSmDRs2LNWqVSv9+c9/Tvfcc0+KiHTDDTcUPW/QoEEpItKPf/zjwrSKiorUv3//VFZWlj766KPC9IhIw4cPLzweMGBAKisrS1OnTi1M+9e//pUaNWqU9tprr8K0Fdt+6qmn1ml/vPjii4VpS5YsSS1btkzdunVLCxcuLEwfN25cioj005/+dKU2nXfeeeu0vccffzx99NFH6f3330+jR49OzZo1S/Xq1Uv/+Mc/UkopLViwoOh5S5YsSd26dUv77rtv0fQGDRqkQYMGrXY706dPTymlNG/evNS0adN0wgknFC334YcfpiZNmhRNX9Gmiy++uGjZnXfeOfXo0aPw+KOPPlrpOK0wfPjwFBFFx3TQoEGpQYMGq903r7zySoqIdPrpp692GaD6Mv6sen/kGn9SSumll15KEZEee+yxwj7Yaqut0qmnnlq03P/+7/+utB+XL1+e9t133xQRaeTIkYXp++23X+revXtatGhRYVpFRUXafffd07bbbrvWtQE1iz5/1fsjR58/Z86cFBFpwIABK8377LPP0kcffVT4+fI5x9r25yva0rdv31RRUVGYfvrpp6fS0tI0e/bslFJKs2bNSmVlZal///5Fy51//vkpIorOYS655JLUoEGD9M477xTVe95556XS0tL03nvvpZRSmj59eoqI1Lhx4zRr1qw17guqN5+UquFuvvnmeOyxx+Kxxx6LO+64I/r06RM//OEPY8yYMYVlHnrooSgtLS28E7DCmWeeGSmlojtnXHTRRbHDDjvEoEGD4pRTTom99957peet8OUEvaSkJIYOHRpLliyJxx9/fJXLL1++PB599NEYMGBAdOjQoTC9devWccwxx8T48eNj7ty567UfVuWll16KWbNmxSmnnBJ169YtTO/fv3907dq16NNKK5x88snrtI2+fftGixYtom3btnHUUUdFw4YN47777ostt9wyIr54N2iFzz77LObMmRO9e/eOv//97+vVpsceeyxmz54dRx99dHz88ceFn9LS0ujZs2c89dRTKz3nRz/6UdHj3r17x7Rp09Zr+2ujYcOGERExb968TbYNoPIZf1ZvU48/o0aNilatWkWfPn0i4ot9cOSRR8bo0aMLX3uJ+OK25XXq1IkTTjihMK1WrVoxZMiQovV9+umn8eSTT8YRRxwR8+bNK4wtn3zySfTr1y8mT5680ldQgK8Xff7qbao+f0WNK/62/rJ99tknWrRoUfi5+eabI2L9+vMTTzwxSkpKCo979+4dy5cvj3fffTciIh5//PFYsmRJ/PjHPy5a7rTTTluprnvuuSd69+4dm222WdG5St++fWP58uXx5z//uWj5ww47rHApEWouFzqv4Xbbbbeiiw4effTRsfPOO8fQoUPj4IMPjrKysnj33XejTZs20ahRo6Lnrvho6ooOJyKirKws/vu//zu++c1vRt26dWPkyJFFnc8KtWrVKurkIyI6d+4cEbHaW6p+9NFHsWDBgujSpctK87bbbruoqKiI999/P3bYYYe1a/warGjXqrbXtWvXGD9+fNG02rVrx1ZbbbVO27j55pujc+fOUbt27WjVqlV06dKl6EKD48aNi0svvTQmTJgQixcvLkxf1T5dG5MnT46I/7t21Vd99Y53devWXamj32yzzeKzzz5br+2vjfnz50dErPR6A2oW48/qbcrxZ/ny5TF69Ojo06dP4fqFERE9e/aM6667Lp544onYf//9C3W0bt16pbvBfvUufVOmTImUUlx44YVx4YUXrnK7s2bNKrzhAnz96PNXb1P1+Sv244q/rb/s17/+dcybNy9mzpxZ9BXK9enPt95666L5m222WURE4XxhRfu23XbbouVatGhRWHaFyZMnx8SJE1cbNK24UPwK22yzzSqXo2YRSn3N1KpVK/r06RM33nhjTJ48eb062z/96U8REbFo0aKYPHny16azKC8vX+c7V3x1gP6yv/zlL3HooYfGXnvtFbfccku0bt066tSpEyNHjow//OEP61XjigsE3n777bHFFlusNP+rF5usjDv3vf766xGx8kkPULMZf9bfuow/Tz75ZHzwwQcxevToGD169ErzR40aVQil1taKseWss86Kfv36rXIZfTrwZfr89be2fX6TJk2idevWhb+tv2zFNaa+GsytT3++uvOFtBYXk/+qioqK+M///M8455xzVjl/RaC4wpe/VULNJZT6Glq2bFlE/F+q3q5du3j88cdj3rx5Re9cvP3224X5K0ycODEuvvji+P73vx8TJkyIH/7wh/Haa69FkyZNirZRUVER06ZNK+pYVtxtrX379qusq0WLFlG/fv2YNGnSSvPefvvtqFWrVuHOEev7SaIvW9GuSZMmrfTJokmTJhW1e1P43//936hbt2786U9/ivLy8sL0kSNHrrTs2ra3Y8eOERHRsmXL6Nu370apc2Ps6y+7/fbbo6SkJP7zP/9zo64XqPqMP1/YlOPPqFGjomXLloWvanzZmDFj4r777otf/epXUa9evWjXrl089dRTsWDBgqJPS02ZMqXoeSs+hVCnTp2NNrYANZ8+/wubss/v379//O53v4sXXnghdttttzUuvyn68xX1T548uehTax999NFK377o2LFjzJ8/31hCEdeU+ppZunRpPProo1FWVlb4qOxBBx0Uy5cvj1/+8pdFy/785z+PkpKSOPDAAwvPHTx4cLRp0yZuvPHGuO2222LmzJlx+umnr3JbX15fSil++ctfRp06dWK//fZb5fKlpaWx//77xwMPPFCU6s+cOTP+8Ic/xJ577ln4+lmDBg0iIla6W8W62HXXXaNly5bxq1/9quircw8//HC89dZb0b9///Ve99ooLS2NkpKSout7zJgxI+6///6Vlm3QoMFatbVfv37RuHHjuPzyy2Pp0qUrzf/q7VvXxooTlQ3Z1ytceeWV8eijj8aRRx650kd8gZrN+PN/NtX4s3DhwhgzZkwcfPDBcfjhh6/0M3To0Jg3b17htt/9+vWLpUuXxm9/+9vCOioqKlYKtFq2bBn77LNP/PrXv44PPvhgpe2uz9gC1Gz6/P+zKc85zjnnnKhfv3784Ac/iJkzZ640/6ufZtoU/Xnfvn2jTp06cdNNNxVt74Ybblhp2SOOOCKee+65wqfgvmz27NmFIJOvF5+UquEefvjhwrsPs2bNij/84Q8xefLkOO+88wqd7SGHHBJ9+vSJCy64IGbMmBE77bRTPProo/HAAw/EaaedVvj0zYprHz3xxBPRqFGj2HHHHeOnP/1p/Nd//VccfvjhcdBBBxW2W7du3XjkkUdi0KBB0bNnz3j44YfjwQcfjPPPP//fXqzu0ksvjcceeyz23HPPOOWUU6J27drx61//OhYvXhxXX311YblvfOMbUVpaGldddVXMmTMnysvLY999942WLVuu9b6pU6dOXHXVVfH9738/9t577zj66KNj5syZceONN0b79u1XO/BtLP3794/rr78+DjjggDjmmGNi1qxZcfPNN0enTp1i4sSJRcv26NEjHn/88bj++uujTZs2sc0226zy1q+NGzeOESNGxLHHHhu77LJLHHXUUdGiRYt477334sEHH4w99thjpT8E1qRevXqx/fbbx1133RWdO3eOzTffPLp16xbdunVb7XOWLVsWd9xxR0R88ZHrd999N8aOHRsTJ06MPn36xG9+85t1qgGofow/q7epxp+xY8fGvHnz4tBDD13l/P/4j/+IFi1axKhRo+LII4+MAQMGxG677RZnnnlmTJkyJbp27Rpjx46NTz/9NCKKPyFw8803x5577hndu3ePE044ITp06BAzZ86M5557Lv7xj3/Eq6++ul41AzWDPn/1NuU5x7bbbht/+MMf4uijj44uXbrEwIEDY6eddoqUUkyfPj3+8Ic/RK1atYquUbWx+/MWLVrEWWedFVdccUUcfPDBcdBBB8Urr7wSDz/8cDRv3rxo2bPPPjvGjh0bBx98cAwePDh69OgRn3/+ebz22mtx7733xowZM1Z6Dl8DlXPTPza1Vd2etW7duukb3/hGGjFiRNHtOlNKad68een0009Pbdq0SXXq1EnbbrttuuaaawrLvfzyy6l27dpFt1xNKaVly5alb37zm6lNmzbps88+Syl9cSvTBg0apKlTp6b9998/1a9fP7Vq1SoNHz48LV++vOj58ZXbs6aU0t///vfUr1+/1LBhw1S/fv3Up0+f9Oyzz67Uxt/+9repQ4cOqbS0dI23al3V7VlXuOuuu9LOO++cysvL0+abb54GDhyY/vGPfxQts6JNa+vfbe/Lbr311rTtttum8vLy1LVr1zRy5Mg0fPjw9NVfzbfffjvttddeqV69ekW3Vl2xnenTpxct/9RTT6V+/fqlJk2apLp166aOHTumwYMHp5deemmNbVrV9p999tnUo0ePVFZWVnTMViz75VvurriV7Yqf+vXrp/bt26fDDjss3XvvvSu9BoCaxfiz6v2RY/w55JBDUt26ddPnn3++2mUGDx6c6tSpkz7++OOUUkofffRROuaYY1KjRo1SkyZN0uDBg9Nf//rXFBFp9OjRRc+dOnVqOu6449IWW2yR6tSpk7bccst08MEHp3vvvXet6gNqHn3+qvdHrnOOFaZMmZJOPvnk1KlTp1S3bt1Ur1691LVr1/SjH/0oTZgwYaXl16Y/X11bnnrqqZX2w/Lly9PPfvaz1Lp161SvXr20zz77pNdffz21a9eucN6ywrx589KwYcNSp06dUllZWWrevHnafffd07XXXpuWLFmSUkpp+vTpKSLSNddcs877guqnJKX1uEIZ/BuDBw+Oe++9d5V3ggCATcX4s3Hcf//98e1vfzvGjx8fe+yxR2WXA7BK+nyoGVxTCgDga2rhwoVFj5cvXx433XRTNG7cOHbZZZdKqgoA+LpwTSkAgK+pH//4x7Fw4cLo1atXLF68OMaMGRPPPvtsXH755W7FDQBsckIpAICvqX333Teuu+66GDduXCxatCg6deoUN910UwwdOrSySwMAvgZcUwoAAACA7FxTCgAAAIDshFIAAAAAZLfe15SqqKiIf/3rX9GoUaMoKSnZmDUBUElSSjFv3rxo06ZN1Kq14e9bGCsAah5jBQBrsrZjxXqHUv/617+ibdu26/t0AKqw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vvvu8eKLLxbmV4c2fNW6nj/cc8890bVr16hbt2507949HnrooUyV5rEu++O3v/1t9O7dOzbbbLPYbLPNom/fvlXy/GtDrO/55ejRo6OkpCQGDBiwaQvMbF33x+zZs2PIkCHRunXrKC8vj86dO3+tf2ciIm644Ybo0qVL1KtXL9q2bRunn356LFq0KFO1m9aazntW5emnn45ddtklysvLo1OnTnHbbbdtnGJSJRg9enQqKytL//3f/53eeOONdMIJJ6SmTZummTNnVkY5q9WvX780cuTI9Prrr6cJEyakgw46KG299dZp/vz5hWX23nvvdMIJJ6QPPvig8DNnzpzC/GXLlqVu3bqlvn37pldeeSU99NBDqXnz5mnYsGFZ2zJ8+PC0ww47FNX50UcfFeb/6Ec/Sm3btk1PPPFEeumll9J//Md/pN13373KtWOFWbNmFbXlscceSxGRnnrqqZRS1T4uDz30ULrgggvSmDFjUkSk++67r2j+lVdemZo0aZLuv//+9Oqrr6ZDDz00bbPNNmnhwoWFZQ444IC00047pb/97W/pL3/5S+rUqVM6+uijC/PnzJmTWrVqlQYOHJhef/31dOedd6Z69eqlX//611nbM3v27NS3b9901113pbfffjs999xzabfddks9evQoWke7du3SxRdfXHS8vvx7lqs9azo2gwYNSgcccEBRnZ9++mnRMlXp2FQna9Pfrqmfqmxjx45NDz74YHrnnXfSpEmT0vnnn5/q1KmTXn/99ZRS1a//y1544YXUvn37tOOOO6ZTTz21ML2qt2FDx7qq4NNPP03t2rVLgwcPTs8//3yaNm1a+tOf/pSmTJlSWGZtxonKtKYxuqofh8suuyw1a9YsjRs3Lk2fPj3dc889qWHDhunGG28sLFPVj0FKKR1xxBFp++23T88880yaPHlyGj58eGrcuHH6xz/+kVKqHm34snU9f/jrX/+aSktL09VXX53efPPN9F//9V+pTp066bXXXstc+aaxrvvjmGOOSTfffHN65ZVX0ltvvZUGDx6cmjRpUng9VHfre345ffr0tOWWW6bevXunb33rW3mKzWBd98fixYvTrrvumg466KA0fvz4NH369PT000+nCRMmZK5801nXfTJq1KhUXl6eRo0alaZPn57+9Kc/pdatW6fTTz89c+WbxprOe75q2rRpqX79+umMM85Ib775ZrrppptSaWlpeuSRRza4lkoJpXbbbbc0ZMiQwuPly5enNm3apCuuuKIyyllrs2bNShGRnnnmmcK0vffeu+gP9q966KGHUq1atdKHH35YmDZixIjUuHHjtHjx4k1ZbpHhw4ennXbaaZXzZs+enerUqZPuueeewrS33norRUR67rnnUkpVpx2rc+qpp6aOHTumioqKlFL1OS5f7QAqKirSFltska655prCtNmzZ6fy8vJ05513ppRSevPNN1NEpBdffLGwzMMPP5xKSkrSP//5z5RSSrfcckvabLPNitpy7rnnpi5dumRtz6q88MILKSLSu+++W5jWrl279POf/3y1z6mM9qwulPp3f7BU5WNT3Xy1v12bfqoq2myzzdLvfve7alX/vHnz0rbbbpsee+yxor60OrRhQ8e6quDcc89Ne+6552rnr804UdV8eYyuDsehf//+6Qc/+EHRtO985ztp4MCBKaXqcQwWLFiQSktL07hx44qm77LLLumCCy6oFm34qnU9fzjiiCNS//79i6b17NkznXTSSZu0zlw29Hxq2bJlqVGjRun3v//9pioxq/XZH8uWLUu77757+t3vfrfGv/Gqm3XdHyNGjEgdOnRIS5YsyVViduu6T4YMGZL23XffomlnnHFG2mOPPTZpnZVhbc7hzjnnnLTDDjsUTTvyyCNTv379Nnj72b++t2TJknj55Zejb9++hWm1atWKvn37xnPPPZe7nHUyZ86ciIjYfPPNi6aPGjUqmjdvHt26dYthw4bFggULCvOee+656N69e7Rq1aowrV+/fjF37tx444038hT+/02ePDnatGkTHTp0iIEDB8Z7770XEREvv/xyLF26tOiYdO3aNbbeeuvCMalK7fiqJUuWxB133BE/+MEPoqSkpDC9uhyXL5s+fXp8+OGHRceiSZMm0bNnz6Jj0bRp09h1110Ly/Tt2zdq1aoVzz//fGGZvfbaK8rKygrL9OvXLyZNmhSfffZZptas2pw5c6KkpCSaNm1aNP3KK6+MZs2axc477xzXXHNN0Vcpq1J7nn766WjZsmV06dIlTj755Pjkk0+K6qzOx6Yq+Wp/uzb9VFWyfPnyGD16dHz++efRq1evalX/kCFDon///kW1RlSfY7AhY11VMHbs2Nh1113ju9/9brRs2TJ23nnn+O1vf1uYvzbjRFXy1TG6OhyH3XffPZ544ol45513IiLi1VdfjfHjx8eBBx4YEdXjGCxbtiyWL18edevWLZper169GD9+fLVow5etz/nDc889t1I/1q9fvyrZvnW1Mc6nFixYEEuXLl3pvKY6Wt/9cfHFF0fLli3j+OOPz1FmNuuzP8aOHRu9evWKIUOGRKtWraJbt25x+eWXx/Lly3OVvUmtzz7Zfffd4+WXXy58xW/atGnx0EMPxUEHHZSl5qpmU/aptTd4Devo448/juXLlxeFARERrVq1irfffjt3OWutoqIiTjvttNhjjz2iW7duhenHHHNMtGvXLtq0aRMTJ06Mc889NyZNmhRjxoyJiIgPP/xwlW1dMS+Xnj17xm233RZdunSJDz74IH72s59F79694/XXX48PP/wwysrKVgoJWrVqVaixqrRjVe6///6YPXt2DB48uDCtuhyXr1qx7VXV9uVj0bJly6L5tWvXjs0337xomW222WaldayYt9lmm22S+tdk0aJFce6558bRRx8djRs3Lkz/yU9+Ervssktsvvnm8eyzz8awYcPigw8+iOuvv75Qc1VozwEHHBDf+c53YptttompU6fG+eefHwceeGA899xzUVpaWq2PTVWyqv52bfqpquC1116LXr16xaJFi6Jhw4Zx3333xfbbbx8TJkyoFvWPHj06/v73vxddd2aF6nAMNnSsqwqmTZsWI0aMiDPOOCPOP//8ePHFF+MnP/lJlJWVxaBBg9ZqnKhKvjpGV4fjcN5558XcuXOja9euUVpaGsuXL4/LLrssBg4cGBFrN1ZXtkaNGkWvXr3ikksuie222y5atWoVd955Zzz33HPRqVOnatGGL1uf84fV/a1XFdu3rjbG+dS5554bbdq0Wekkszpan/0xfvz4uPXWW2PChAkZKsxrffbHtGnT4sknn4yBAwfGQw89FFOmTIlTTjklli5dGsOHD89R9ia1PvvkmGOOiY8//jj23HPPSCnFsmXL4kc/+lGcf/75OUquclbXp86dOzcWLlwY9erVW+91Zw+lqqshQ4bE66+/HuPHjy+afuKJJxb+371792jdunXst99+MXXq1OjYsWPuMldrxbt7ERE77rhj9OzZM9q1axd33333Br2AqoJbb701DjzwwGjTpk1hWnU5Ll8nS5cujSOOOCJSSjFixIiieWeccUbh/zvuuGOUlZXFSSedFFdccUWUl5fnLnW1jjrqqML/u3fvHjvuuGN07Ngxnn766dhvv/0qsbKaZXX9bXXQpUuXmDBhQsyZMyfuvffeGDRoUDzzzDOVXdZaef/99+PUU0+Nxx57bKVPV1QXNWGsq6ioiF133TUuv/zyiIjYeeed4/XXX49f/epXMWjQoEqubt2taoyu6u6+++4YNWpU/OEPf4gddtghJkyYEKeddlq0adOmWh2D22+/PX7wgx/ElltuGaWlpbHLLrvE0UcfHS+//HJll0Ylu/LKK2P06NHx9NNPV9v+fkPMmzcvjj322Pjtb38bzZs3r+xyqoSKiopo2bJl/OY3v4nS0tLo0aNH/POf/4xrrrmmRoRS6+Ppp5+Oyy+/PG655Zbo2bNnTJkyJU499dS45JJL4sILL6zs8mqU7F/fa968eZSWlq50l5WZM2fGFltskbuctTJ06NAYN25cPPXUU7HVVlv922V79uwZERFTpkyJiIgttthilW1dMa+yNG3aNDp37hxTpkyJLbbYIpYsWRKzZ88uWubLx6SqtuPdd9+Nxx9/PH74wx/+2+Wqy3FZse1/9/uxxRZbxKxZs4rmL1u2LD799NMqe7xWBFLvvvtuPPbYY0WfklqVnj17xrJly2LGjBkRUfXas0KHDh2iefPmRa+r6nZsqprV9bdr009VBWVlZdGpU6fo0aNHXHHFFbHTTjvFjTfeWC3qf/nll2PWrFmxyy67RO3ataN27drxzDPPxC9+8YuoXbt2tGrVqsq34avWdayrClq3bh3bb7990bTtttuu8DXEtRknqopVjdHV4TicffbZcd5558VRRx0V3bt3j2OPPTZOP/30uOKKKyKi+hyDjh07xjPPPBPz58+P999/P1544YVYunRpdOjQodq0YYX1OX9Y3XhbFdu3rjbkfOraa6+NK6+8Mh599NHYcccdN2WZ2azr/pg6dWrMmDEjDjnkkMJ49z//8z8xduzYqF27dkydOjVX6ZvE+rw+WrduHZ07d47S0tLCtO222y4+/PDDWLJkySatN4f12ScXXnhhHHvssfHDH/4wunfvHt/+9rfj8ssvjyuuuCIqKipylF2lrK5Pbdy48Qa/8Zc9lCorK4sePXrEE088UZhWUVERTzzxRPTq1St3Of9WSimGDh0a9913Xzz55JMrfeVmVVZ8BLR169YREdGrV6947bXXik5UV5yUf/WPzpzmz58fU6dOjdatW0ePHj2iTp06Rcdk0qRJ8d577xWOSVVtx8iRI6Nly5bRv3//f7tcdTku22yzTWyxxRZFx2Lu3Lnx/PPPFx2L2bNnF73T+eSTT0ZFRUUhfOvVq1f8+c9/jqVLlxaWeeyxx6JLly7Zvx62IpCaPHlyPP7449GsWbM1PmfChAlRq1atwlfhqlJ7vuwf//hHfPLJJ0Wvq+p0bKqSNfW3a9NPVUUVFRWxePHialH/fvvtF6+99lpMmDCh8LPrrrvGwIEDC/+v6m34qnUd66qCPfbYIyZNmlQ07Z133ol27dpFxNqNE1XFqsbo6nAcFixYELVqFf+JXFpaWjgJqU7HICKiQYMG0bp16/jss8/iT3/6U3zrW9+qdm1Yn/OHXr16FS0f8cV4WxXbt67W93zq6quvjksuuSQeeeSRoutfVnfruj+6du260nh36KGHRp8+fWLChAnRtm3bnOVvdOvz+thjjz1iypQpRWHLO++8E61bty66Dmp1tT77ZHVjQcQXf7d+3WzSPnWDL5W+HkaPHp3Ky8vTbbfdlt5888104oknpqZNmxbdCa0qOPnkk1OTJk3S008/XXRr4wULFqSUUpoyZUq6+OKL00svvZSmT5+eHnjggdShQ4e01157FdaxbNmy1K1bt7T//vunCRMmpEceeSS1aNEiDRs2LGtbzjzzzPT000+n6dOnp7/+9a+pb9++qXnz5mnWrFkppS9uz7z11lunJ598Mr300kupV69eqVevXlWuHV+2fPnytPXWW6dzzz23aHpVPy7z5s1Lr7zySnrllVdSRKTrr78+vfLKK4W70V155ZWpadOm6YEHHkgTJ05M3/rWt1a6RfMBBxyQdt555/T888+n8ePHp2233TYdffTRhfmzZ89OrVq1Sscee2x6/fXX0+jRo1P9+vXTr3/966ztWbJkSTr00EPTVlttlSZMmFD0e7Ti7nPPPvts+vnPf54mTJiQpk6dmu64447UokWLdNxxx2Vvz79ry7x589JZZ52VnnvuuTR9+vT0+OOPp1122SVtu+22adGiRYV1VKVjU52sqb9Nac39VGU777zz0jPPPJOmT5+eJk6cmM4777xUUlKSHn300ZRS1a9/Vb56J9Oq3oYNHeuqghdeeCHVrl07XXbZZWny5Mlp1KhRqX79+umOO+4oLLM240RlW90YnVLVPw6DBg1KW265ZRo3blyaPn16GjNmTGrevHk655xzCstUh2PwyCOPpIcffjhNmzYtPfroo2mnnXZKPXv2LNxdqzq04cvWdP5w7LHHpvPOO6+w/F//+tdUu3btdO2116a33norDR8+PNWpUye99tprldWEjWpd98eVV16ZysrK0r333ls0zs6bN6+ymrBRrev++Kqadve9dd0f7733XmrUqFEaOnRomjRpUho3blxq2bJluvTSSyurCRvduu6T4cOHp0aNGqU777yz0I927NgxHXHEEZXVhI1qTeek5513Xjr22GMLy0+bNi3Vr18/nX322emtt95KN998cyotLU2PPPLIBtdSKaFUSinddNNNaeutt05lZWVpt912S3/7298qq5TViohV/owcOTKl9MUv71577ZU233zzVF5enjp16pTOPvvsNGfOnKL1zJgxIx144IGpXr16qXnz5unMM89MS5cuzdqWI488MrVu3TqVlZWlLbfcMh155JFpypQphfkLFy5Mp5xyStpss81S/fr107e//e30wQcfVLl2fNmf/vSnFBFp0qRJRdOr+nF56qmnVvm6GjRoUErpi1tNX3jhhalVq1apvLw87bfffiu18ZNPPklHH310atiwYWrcuHH6/ve/v9IfFa+++mrac889U3l5edpyyy3TlVdemb0906dPX+3v0VNPPZVSSunll19OPXv2TE2aNEl169ZN2223Xbr88suLgp5c7fl3bVmwYEHaf//9U4sWLVKdOnVSu3bt0gknnLBSmF6Vjk11sqb+NqW166cq0w9+8IPUrl27VFZWllq0aJH222+/QiCVUtWvf1W+GkpV9TZsjLGuKvjjH/+YunXrlsrLy1PXrl3Tb37zm6L5azNOVLbVjdEpVf3jMHfu3HTqqaemrbfeOtWtWzd16NAhXXDBBYU3U1KqHsfgrrvuSh06dEhlZWVpiy22SEOGDEmzZ88uzK8Obfiqf3f+sPfeexf+llrh7rvvTp07d05lZWVphx12SA8++GDmijetddkf7dq1W+U4O3z48PyFbyLr+vr4spoWSqW07vvj2WefTT179kzl5eWpQ4cO6bLLLkvLli3LXPWmtS77ZOnSpemiiy5KHTt2THXr1k1t27ZNp5xySvrss8/yF74JrOmcdNCgQWnvvfde6Tnf+MY3UllZWerQoUPR3+kboiSlr+FnzwAAAACoVNmvKQUAAAAAQikAAAAAshNKAQAAAJCdUAoAAACA7IRSAAAAAGQnlAIAAAAgO6EUAAAAANkJpQAAAADITijF11779u3jhhtuqOwyAAAAYp999onTTjutssuALIRSVCuDBw+OkpKSKCkpibKysujUqVNcfPHFsWzZsjU+97bbboumTZuuNP3FF1+ME088caPWuaqBZMaMGVFSUhITJkwoerzip1GjRrHDDjvEkCFDYvLkyRu1HgDW33PPPRelpaXRv3//yi4FgEw+/PDDOPXUU6NTp05Rt27daNWqVeyxxx4xYsSIWLBgQWWXBzVG7couANbVAQccECNHjozFixfHQw89FEOGDIk6derEsGHD1mt9LVq02MgVrpvHH388dthhh1iwYEG89tprceONN8ZOO+0Uf/zjH2O//far1NoAiLj11lvjxz/+cdx6663xr3/9K9q0aVPZJQGwCU2bNi322GOPaNq0aVx++eXRvXv3KC8vj9deey1+85vfxJZbbhmHHnpoZZe5WsuXL4+SkpKoVctnUKj6vEqpdsrLy2OLLbaIdu3axcknnxx9+/aNsWPHxvXXXx/du3ePBg0aRNu2beOUU06J+fPnR0TE008/Hd///vdjzpw5hU8mXXTRRRGx8tf3Zs+eHT/84Q+jRYsW0bhx49h3333j1VdfLcy/6KKL4hvf+Ebcfvvt0b59+2jSpEkcddRRMW/evIj44tNczzzzTNx4442Fbc2YMWO17WnWrFlsscUW0aFDh/jWt74Vjz/+ePTs2TOOP/74WL58+UbffwCsvfnz58ddd90VJ598cvTv3z9uu+22ovljx46NbbfdNurWrRt9+vSJ3//+91FSUhKzZ88uLDN+/Pjo3bt31KtXL9q2bRs/+clP4vPPP8/bEADW2imnnBK1a9eOl156KY444ojYbrvtCn+rP/jgg3HIIYdExIafN0REfP7553HcccdFw4YNo3Xr1nHdddetVM/ixYvjrLPOii233DIaNGgQPXv2jKeffrowf8U3QsaOHRvbb799lJeXx3vvvbfpdhBsREIpqr169erFkiVLolatWvGLX/wi3njjjfj9738fTz75ZJxzzjkREbH77rvHDTfcEI0bN44PPvggPvjggzjrrLNWub7vfve7MWvWrHj44Yfj5Zdfjl122SX222+/+PTTTwvLTJ06Ne6///4YN25cjBs3Lp555pm48sorIyLixhtvjF69esUJJ5xQ2Fbbtm3Xuj21atWKU089Nd599914+eWXN2DPALCh7r777ujatWt06dIlvve978V///d/R0opIiKmT58ehx9+eAwYMCBeffXVOOmkk+KCCy4oev7UqVPjgAMOiMMOOywmTpwYd911V4wfPz6GDh1aGc0BYA0++eSTePTRR2PIkCHRoEGDVS5TUlISERt+3hARcfbZZ8czzzwTDzzwQDz66KPx9NNPx9///vei7Q0dOjSee+65GD16dEycODG++93vxgEHHFB0yY8FCxbEVVddFb/73e/ijTfeiJYtW27M3QKbToJqZNCgQelb3/pWSimlioqK9Nhjj6Xy8vJ01llnrbTsPffck5o1a1Z4PHLkyNSkSZOVlmvXrl36+c9/nlJK6S9/+Utq3LhxWrRoUdEyHTt2TL/+9a9TSikNHz481a9fP82dO7cw/+yzz049e/YsPN57773TqaeeWrSO6dOnp4hIr7zyyioff9lbb72VIiLdddddq9sVAGSw++67pxtuuCGllNLSpUtT8+bN01NPPZVSSuncc89N3bp1K1r+ggsuSBGRPvvss5RSSscff3w68cQTi5b5y1/+kmrVqpUWLly4yesHYN387W9/SxGRxowZUzS9WbNmqUGDBqlBgwbpnHPO2SjnDfPmzUtlZWXp7rvvLsz/5JNPUr169QrnEu+++24qLS1N//znP4u2s99++6Vhw4allL44z4mINGHChI2zEyAj15Si2hk3blw0bNgwli5dGhUVFXHMMcfERRddFI8//nhcccUV8fbbb8fcuXNj2bJlsWjRoliwYEHUr19/rdb96quvxvz586NZs2ZF0xcuXBhTp04tPG7fvn00atSo8Lh169Yxa9asjdPAiMK78CvehQEgv0mTJsULL7wQ9913X0RE1K5dO4488si49dZbY5999olJkybFN7/5zaLn7LbbbkWPX3311Zg4cWKMGjWqMC2lFBUVFTF9+vTYbrvtNn1DANhgL7zwQlRUVMTAgQNj8eLFG+W8YerUqbFkyZLo2bNnYf7mm28eXbp0KTx+7bXXYvny5dG5c+ei7SxevLho22VlZbHjjjtunMZCRkIpqp0+ffrEiBEjoqysLNq0aRO1a9eOGTNmxMEHHxwnn3xyXHbZZbH55pvH+PHj4/jjj48lS5asdSg1f/78aN26ddF3tFf48p376tSpUzSvpKQkKioqNqRZRd56662IiNhmm2022joBWDe33nprLFu2rOjC5imlKC8vj1/+8pdrtY758+fHSSedFD/5yU9Wmrf11ltvtFoB2Dg6deoUJSUlMWnSpKLpHTp0iIgvLh0Ske+8Yf78+VFaWhovv/xylJaWFs1r2LBh4f/16tXzhjbVklCKaqdBgwbRqVOnomkvv/xyVFRUxHXXXVe4y8Tdd99dtExZWdkaLxy+yy67xIcffhi1a9eO9u3br3eNa7Ot1amoqIhf/OIXsc0228TOO++83jUAsP6WLVsW//M//xPXXXdd7L///kXzBgwYEHfeeWd06dIlHnrooaJ5L774YtHjXXbZJd58882Vxi0AqqZmzZrFf/7nf8Yvf/nL+PGPf7za60ptjPOGjh07Rp06deL5558vvFHx2WefxTvvvBN77713RETsvPPOsXz58pg1a1b07t17vbYDVZkLnVMjdOrUKZYuXRo33XRTTJs2LW6//fb41a9+VbRM+/btY/78+fHEE0/Exx9/HAsWLFhpPX379o1evXrFgAED4tFHH40ZM2bEs88+GxdccEG89NJLa11P+/bt4/nnn48ZM2bExx9//G/fDfnkk0/iww8/jGnTpsXYsWOjb9++8cILL8Stt9660rshAOQxbty4+Oyzz+L444+Pbt26Ff0cdthhceutt8ZJJ50Ub7/9dpx77rnxzjvvxN133124O9+Kd6vPPffcePbZZ2Po0KExYcKEmDx5cjzwwAMudA5Qhd1yyy2xbNmy2HXXXeOuu+6Kt956KyZNmhR33HFHvP3221FaWrpRzhsaNmwYxx9/fJx99tnx5JNPxuuvvx6DBw8uvMkeEdG5c+cYOHBgHHfccTFmzJiYPn16vPDCC3HFFVfEgw8+uKl2AWQjlKJG2GmnneL666+Pq666Krp16xajRo2KK664omiZ3XffPX70ox/FkUceGS1atIirr756pfWUlJTEQw89FHvttVd8//vfj86dO8dRRx0V7777brRq1Wqt6znrrLOitLQ0tt9++2jRosW/vSVr3759o3Xr1tG9e/c477zzYrvttouJEydGnz591n4HALBR3XrrrdG3b99o0qTJSvMOO+yweOmll2LevHlx7733xpgxY2LHHXeMESNGFO6+V15eHhERO+64YzzzzDPxzjvvRO/evWPnnXeOn/70p0VfCQSgaunYsWO88sor0bdv3xg2bFjstNNOseuuu8ZNN90UZ511VlxyySUb7bzhmmuuid69e8chhxwSffv2jT333DN69OhRtMzIkSPjuOOOizPPPDO6dOkSAwYMiBdffNHXwKkRStKKKyoDALBBLrvssvjVr34V77//fmWXAgBQ5bmmFADAerrlllvim9/8ZjRr1iz++te/xjXXXOOreQAAa0koBQCwniZPnhyXXnppfPrpp7H11lvHmWeeGcOGDavssgAAqgVf3wMAAAAgOxc6BwAAACA7oRQAAAAA2QmlAAAAAMhOKAUAAABAdkIpAAAAALITSgEAAACQnVAKAAAAgOyEUgAAAABkJ5QCAAAAILv/B71tw0OjyBxUAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 1200x600 with 3 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "plt.figure(figsize=(12, 6))\n",
    "for i, col in enumerate(df.columns[:3]): # Only plotting the first 3 features\n",
    " plt.subplot(1, 3, i+1) # Create subplots for each feature\n",
    " sns.boxplot(x=df[col])\n",
    " plt.title(f\"Boxplot for {col}\")\n",
    "plt.tight_layout()\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "f31f3869-f1be-4aad-b168-4b9ca2ede03f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, f1_score, classification_report, recall_score\n",
    " \n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "cee6b59d-5c60-4317-b3c4-c9e766403322",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv('updated_dataframe.csv')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "071ae12b-0310-42de-8247-cf87236af44a",
   "metadata": {},
   "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>Unnamed: 0</th>\n",
       "      <th>PatientID</th>\n",
       "      <th>Age</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Ethnicity</th>\n",
       "      <th>SocioeconomicStatus</th>\n",
       "      <th>EducationLevel</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Smoking</th>\n",
       "      <th>AlcoholConsumption</th>\n",
       "      <th>...</th>\n",
       "      <th>Itching</th>\n",
       "      <th>QualityOfLifeScore</th>\n",
       "      <th>HeavyMetalsExposure</th>\n",
       "      <th>OccupationalExposureChemicals</th>\n",
       "      <th>WaterQuality</th>\n",
       "      <th>MedicalCheckupsFrequency</th>\n",
       "      <th>MedicationAdherence</th>\n",
       "      <th>HealthLiteracy</th>\n",
       "      <th>Diagnosis</th>\n",
       "      <th>DoctorInCharge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>31.069414</td>\n",
       "      <td>1</td>\n",
       "      <td>5.128112</td>\n",
       "      <td>...</td>\n",
       "      <td>7.556302</td>\n",
       "      <td>76.076800</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.018824</td>\n",
       "      <td>4.966808</td>\n",
       "      <td>9.871449</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>29.692119</td>\n",
       "      <td>1</td>\n",
       "      <td>18.609552</td>\n",
       "      <td>...</td>\n",
       "      <td>6.836766</td>\n",
       "      <td>40.128498</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.923538</td>\n",
       "      <td>8.189275</td>\n",
       "      <td>7.161765</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>80</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>37.394822</td>\n",
       "      <td>1</td>\n",
       "      <td>11.882429</td>\n",
       "      <td>...</td>\n",
       "      <td>2.144722</td>\n",
       "      <td>92.872842</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.429906</td>\n",
       "      <td>7.624028</td>\n",
       "      <td>7.354632</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>31.329680</td>\n",
       "      <td>0</td>\n",
       "      <td>16.020165</td>\n",
       "      <td>...</td>\n",
       "      <td>7.077188</td>\n",
       "      <td>90.080321</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.226416</td>\n",
       "      <td>3.282688</td>\n",
       "      <td>6.629587</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>43</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.726311</td>\n",
       "      <td>0</td>\n",
       "      <td>7.944146</td>\n",
       "      <td>...</td>\n",
       "      <td>3.553118</td>\n",
       "      <td>5.258372</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.285466</td>\n",
       "      <td>3.849498</td>\n",
       "      <td>1.437385</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 55 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  PatientID  Age  Gender  Ethnicity  SocioeconomicStatus  \\\n",
       "0           0          1   71       0          0                    0   \n",
       "1           1          2   34       0          0                    1   \n",
       "2           2          3   80       1          1                    0   \n",
       "3           3          4   40       0          2                    0   \n",
       "4           4          5   43       0          1                    1   \n",
       "\n",
       "   EducationLevel        BMI  Smoking  AlcoholConsumption  ...   Itching  \\\n",
       "0               2  31.069414        1            5.128112  ...  7.556302   \n",
       "1               3  29.692119        1           18.609552  ...  6.836766   \n",
       "2               1  37.394822        1           11.882429  ...  2.144722   \n",
       "3               1  31.329680        0           16.020165  ...  7.077188   \n",
       "4               2  23.726311        0            7.944146  ...  3.553118   \n",
       "\n",
       "   QualityOfLifeScore  HeavyMetalsExposure  OccupationalExposureChemicals  \\\n",
       "0           76.076800                    0                              0   \n",
       "1           40.128498                    0                              0   \n",
       "2           92.872842                    0                              1   \n",
       "3           90.080321                    0                              0   \n",
       "4            5.258372                    0                              0   \n",
       "\n",
       "   WaterQuality  MedicalCheckupsFrequency  MedicationAdherence  \\\n",
       "0             1                  1.018824             4.966808   \n",
       "1             0                  3.923538             8.189275   \n",
       "2             1                  1.429906             7.624028   \n",
       "3             0                  3.226416             3.282688   \n",
       "4             1                  0.285466             3.849498   \n",
       "\n",
       "   HealthLiteracy  Diagnosis  DoctorInCharge  \n",
       "0        9.871449          1               0  \n",
       "1        7.161765          1               0  \n",
       "2        7.354632          1               0  \n",
       "3        6.629587          1               0  \n",
       "4        1.437385          1               0  \n",
       "\n",
       "[5 rows x 55 columns]"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "830eb028-cc08-4337-a1d9-1006cdb723b3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Diagnosis\n",
       "1    1524\n",
       "0     135\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['Diagnosis'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "13015bf4-4dab-4b1a-994b-925006f4f63c",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.drop('Diagnosis', axis=1).values\n",
    "y = data['Diagnosis'].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "3867c8c6-27a2-472b-a6fd-f8ea41ac6946",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.30, random_state=42, stratify=y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "6029358c-7dc2-4a71-b5ef-378ab5fb321a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    " accuracy = accuracy_score(y_true, y_pred)\n",
    " precision = precision_score(y_true, y_pred, average='weighted') \n",
    " recall = recall_score(y_true, y_pred, average='weighted')\n",
    " f1 = f1_score(y_true, y_pred, average='weighted')\n",
    " cm = confusion_matrix(y_true, y_pred)\n",
    " report = classification_report(y_true, y_pred)\n",
    " metrics = {\n",
    " 'Model Name': model_name,\n",
    " 'Accuracy': accuracy,\n",
    " 'Precision': precision,\n",
    " 'Recall': recall,\n",
    " 'F1 Score': f1,\n",
    "\n",
    " 'Classification Report': report\n",
    " }\n",
    " plt.figure(figsize=(4, 4))\n",
    " sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', cbar=False,\n",
    " xticklabels=np.unique(y_true), yticklabels=np.unique(y_true))\n",
    " plt.title(f'Confusion Matrix for {model_name}')\n",
    " plt.xlabel('Predicted Label')\n",
    " plt.ylabel('True Label')\n",
    " plt.show()\n",
    "\n",
    " return metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "3f95a2ad-e311-43ac-b0b4-692043e5355b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "RandomForestClassifier\n",
      "Accuracy: 0.9177\n",
      "Precision: 0.8927\n",
      "Recall: 0.9177\n",
      "F1 Score: 0.8964\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.50      0.15      0.23        41\n",
      "           1       0.93      0.99      0.96       457\n",
      "\n",
      "    accuracy                           0.92       498\n",
      "   macro avg       0.71      0.57      0.59       498\n",
      "weighted avg       0.89      0.92      0.90       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)\n",
    "# Train the model\n",
    "rf_classifier.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = rf_classifier.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('RandomForestClassifier', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Classification Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "ca0e2e33-63d2-4b8f-8dda-470eb6f49b0a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\anaconda\\envs\\enVaziz\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:469: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAGJCAYAAACNTVhdAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAy10lEQVR4nO3deVxU1f8/8NcAMiLLsAgiLizigom4lSkKmiamlqbl9jEBtyy3RCz9lIGkUpq7ppa5fElN01JTc0XScl9wyw1cU8AVlX07vz/8MR+HYRlwmBHP6/l48Kg598y577lzfc2Ze+/MKIQQAkREJA0TYxdARESGxeAnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+Avo8uXL6NTp05QqVRQKBTYuHGjXse/du0aFAoFVqxYoddxK7J27dqhXbt2ehsvJSUFQ4YMgbOzMxQKBT755BO9jf2iiImJgUKhQExMjF7GW7FiBRQKBa5du6aX8WSj7324rCp08MfHx+PDDz+Eh4cHKleuDBsbG/j6+mLu3LlIT08v13UHBgbizJkzmDp1KqKiotCiRYtyXZ8hBQUFQaFQwMbGptDtePnyZSgUCigUCnz77belHv/27dsIDw9HbGysHqotu2nTpmHFihX46KOPEBUVhQ8++KBc1+fm5oZu3bqV6zr0Zdq0aXqdzOTvU/l/SqUS9erVw5dffomMjAy9rYd0JCqoLVu2CAsLC2FraytGjx4tvv/+e7FgwQLRt29fUalSJTF06NByW3daWpoAID7//PNyW0deXp5IT08XOTk55baOogQGBgozMzNhamoq1q5dq7U8LCxMVK5cWQAQM2bMKPX4R48eFQDE8uXLS3W/zMxMkZmZWer1FaVly5bC19dXb+OVxNXVVXTt2tVg6xNCiNzcXJGeni5yc3NLdT9LS0sRGBio1Z6TkyPS09NFXl5eqcYLDAwUSqVSREVFiaioKLFgwQLx5ptvCgCif//+pRqrItP3PlxWZsZ92Smbq1evom/fvnB1dUV0dDSqV6+uXjZixAjExcVh69at5bb+u3fvAgBsbW3LbR0KhQKVK1cut/FLolQq4evrizVr1qB3794ay1avXo2uXbtiw4YNBqklLS0NVapUgbm5uV7HvXPnDho2bKi38XJycpCXl6f3Op+HiYmJXvcjU1NTmJqalum+ZmZmGDBggPr2xx9/jNatW2PNmjWYNWsWqlWrpq8yS2Ss5+qF2TeM/cpTFsOHDxcAxN9//61T/+zsbBERESE8PDyEubm5cHV1FRMnThQZGRka/fJnZPv37xevvvqqUCqVwt3dXaxcuVLdJywsTADQ+HN1dRVCPJ3V5P//s/Lv86ydO3cKX19foVKphKWlpahXr56YOHGievnVq1cLnRXv2bNHtGnTRlSpUkWoVCrxzjvviH/++afQ9V2+fFkEBgYKlUolbGxsRFBQkEhNTS1xewUGBgpLS0uxYsUKoVQqxcOHD9XLjhw5IgCIDRs2aM3479+/L8aNGycaNWokLC0thbW1tejcubOIjY1V99m7d6/W9nv2cfr7+4tXXnlFHDt2TLRt21ZYWFiIMWPGqJf5+/urxxo4cKBQKpVaj79Tp07C1tZW3Lp1q9DHV1QNV69eFUIIkZSUJAYNGiScnJyEUqkUjRs3FitWrNAYI//5mTFjhpg9e7bw8PAQJiYm4uTJk0VuV11m/Lruq7m5uSIsLExUr15dWFhYiHbt2olz584JV1dXjZl6/mPdu3evuu3SpUuiZ8+eolq1akKpVIoaNWqIPn36iOTkZCGEKHTb5I+5fPlyjW2Vb9u2bcLPz09YWVkJa2tr0aJFC7Fq1Sr18vx9qqDQ0FABQBw4cEBrvPz93MrKSnTp0kWcPXtW6/7r1q0TXl5eQqlUildeeUX8+uuvWv8OS3quzp8/L3r16iXs7OyEUqkUzZs3F5s2bdJYT1ZWlggPDxeenp5CqVQKe3t74evrK3bu3Knuk5CQIIKCgkSNGjWEubm5cHZ2Fu+8847Gtiq4DwtR+v1tyZIl6v2jRYsW4siRI1rbpSQVcsb/+++/w8PDA61bt9ap/5AhQ7By5Uq89957GDduHA4fPozIyEicP38ev/32m0bfuLg4vPfeexg8eDACAwOxbNkyBAUFoXnz5njllVfQs2dP2NraYuzYsejXrx+6dOkCKyurUtV/7tw5dOvWDY0bN0ZERASUSiXi4uLw999/F3u/3bt346233oKHhwfCw8ORnp6O+fPnw9fXFydOnICbm5tG/969e8Pd3R2RkZE4ceIEli5dCicnJ3zzzTc61dmzZ08MHz4cv/76KwYNGgTg6Wy/QYMGaNasmVb/K1euYOPGjXj//ffh7u6OpKQkLFmyBP7+/vjnn3/g4uICLy8vRERE4Msvv8SwYcPQtm1bANB4Lu/fv4+33noLffv2xYABA4qcCc6dOxfR0dEIDAzEwYMHYWpqiiVLlmDnzp2IioqCi4tLoffz8vJCVFQUxo4di5o1a2LcuHEAAEdHR6Snp6Ndu3aIi4vDyJEj4e7ujl9++QVBQUFITk7GmDFjNMZavnw5MjIyMGzYMCiVStjb2+u0bYui6746ceJETJ8+HW+//TYCAgJw6tQpBAQElHi8PCsrCwEBAcjMzMSoUaPg7OyMW7duYcuWLUhOToZKpUJUVBSGDBmC1157DcOGDQMA1KlTp8gxV6xYgUGDBuGVV17BxIkTYWtri5MnT2L79u3o379/sfXknyS2s7NTt0VFRSEwMBABAQH45ptvkJaWhkWLFqFNmzY4efKkej/funUr+vTpA29vb0RGRuLhw4cYPHgwatSoUei6Cnuuzp07B19fX9SoUQMTJkyApaUl1q1bhx49emDDhg149913AQDh4eGIjIxUb5fHjx/j2LFjOHHiBN58800AQK9evXDu3DmMGjUKbm5uuHPnDnbt2oUbN25o/dvMV9r9bfXq1Xjy5Ak+/PBDKBQKTJ8+HT179sSVK1dQqVKlYre1hlK/VBjZo0ePBADRvXt3nfrHxsYKAGLIkCEa7fkzjejoaHWbq6urACD27dunbrtz545QKpVi3Lhx6rZnX32fpeuMf/bs2QKAuHv3bpF1Fzbjb9KkiXBychL3799Xt506dUqYmJiIgQMHaq1v0KBBGmO+++67wsHBoch1Pvs48mdn7733nujQoYMQ4uks09nZWUyePLnQbZCRkaF1LPnq1atCqVSKiIgIdVtxx/j9/f0FALF48eJClxWcLe3YsUMAEFOmTBFXrlwRVlZWokePHiU+RiEKn4HPmTNHABA//fSTui0rK0u0atVKWFlZicePH6sfFwBhY2Mj7ty5U+b1PUvXfTUxMVGYmZlpPc7w8HCN2bkQ2jP+kydPCgDil19+KbbWoo7xF5zxJycnC2tra9GyZUuRnp6u0ffZ8wD5+9Tdu3fF3bt3RVxcnPj222+FQqEQjRo1Uvd98uSJsLW11TpHl5iYKFQqlUa7t7e3qFmzpnjy5Im6LSYmRuNduBDFP1cdOnQQ3t7eGu+o8vLyROvWrUXdunXVbT4+PsU+dw8fPtTpnFfBfbi0+5uDg4N48OCBuu+mTZsEAPH7778Xu96CKtxVPY8fPwYAWFtb69R/27ZtAICQkBCN9vxZXsFzAQ0bNlTPQoGns8D69evjypUrZa65oPxzA5s2bUJeXp5O90lISEBsbCyCgoI0ZpWNGzfGm2++qX6czxo+fLjG7bZt2+L+/fvqbaiL/v37IyYmBomJiYiOjkZiYmKRszilUgkTk6e7VG5uLu7fvw8rKyvUr18fJ06c0HmdSqUSwcHBOvXt1KkTPvzwQ0RERKBnz56oXLkylixZovO6Ctq2bRucnZ3Rr18/dVulSpUwevRopKSk4M8//9To36tXLzg6OpZ5fQXXDZS8r+7Zswc5OTn4+OOPNfqNGjWqxHWoVCoAwI4dO5CWlvbcNe/atQtPnjzBhAkTtM4lKBQKjdupqalwdHSEo6MjPD09ERoaCl9fX2zatEndd9euXUhOTka/fv1w79499Z+pqSlatmyJvXv3Anh6ZdiZM2cwcOBAjXfc/v7+8Pb2LrTWgs/VgwcPEB0djd69e+PJkyfqdd2/fx8BAQG4fPkybt26BeDpv9lz587h8uXLhY5tYWEBc3NzxMTE4OHDhzpvv9Lub3369NF4d5SfVaXNpwoX/DY2NgCAJ0+e6NT/+vXrMDExgaenp0a7s7MzbG1tcf36dY322rVra41hZ2dXqiezJH369IGvry+GDBmCatWqoW/fvli3bl2xLwL5ddavX19rmZeXF+7du4fU1FSN9oKPJX+HKc1j6dKlC6ytrbF27VqsWrUKr776qta2zJeXl4fZs2ejbt26UCqVqFq1KhwdHXH69Gk8evRI53XWqFGjVCfBvv32W9jb2yM2Nhbz5s2Dk5OTzvct6Pr166hbt676BSyfl5eXevmz3N3dy7yuwtaty76a/9+C/ezt7TVCoTDu7u4ICQnB0qVLUbVqVQQEBGDhwoWlen6eFR8fDwBo1KhRiX0rV66MXbt2YdeuXVi+fDm8vLxw584dWFhYqPvkB+sbb7yhfpHI/9u5cyfu3LkDoOhtUFQboP1cxcXFQQiBSZMmaa0rLCwMANTri4iIQHJyMurVqwdvb2+MHz8ep0+fVo+lVCrxzTff4I8//kC1atXg5+eH6dOnIzExsdhtUtr9TR//pgGgwh3jt7GxgYuLC86ePVuq+xWcfRSlqCsWhA6/UFnUOnJzczVuW1hYYN++fdi7dy+2bt2K7du3Y+3atXjjjTewc+fOMl81UdDzPJZ8SqUSPXv2xMqVK3HlyhWEh4cX2XfatGmYNGkSBg0ahK+++gr29vYwMTHBJ598ovM7GwAaQaCLkydPqv+BnjlzRmP2VN5KW6sudN1Xy2rmzJkICgrCpk2bsHPnTowePRqRkZE4dOgQatasWW7rNTU1RceOHdW3AwIC0KBBA3z44YfYvHkzAKj3k6ioKDg7O2uNYWZW9sgq+Fzlrys0NBQBAQGF3if/RcTPzw/x8fHqbbZ06VLMnj0bixcvxpAhQwAAn3zyCd5++21s3LgRO3bswKRJkxAZGYno6Gg0bdq0zHU/Sx//poEKOOMHgG7duiE+Ph4HDx4ssa+rqyvy8vK03qIlJSUhOTkZrq6ueqvLzs4OycnJWu0FX7WBp5fZdejQAbNmzcI///yDqVOnIjo6Wv1WtqD8Oi9evKi17MKFC6hatSosLS2f7wEUoX///jh58iSePHmCvn37Ftlv/fr1aN++PX788Uf07dsXnTp1QseOHbW2iT6DLTU1FcHBwWjYsCGGDRuG6dOn4+jRo2Uez9XVFZcvX9Z6obpw4YJ6eXnRdV/N/29cXJxGv/v37+s88/P29sYXX3yBffv2Yf/+/bh16xYWL16sXq7rc5R/0re0EzEAqF69OsaOHYvff/8dhw4d0hjPyckJHTt21PrL/9RrUdugqLbCeHh4AHh6aKWwdXXs2FHjkLK9vT2Cg4OxZs0a3Lx5E40bN9aaCNWpUwfjxo3Dzp07cfbsWWRlZWHmzJlF1mCs/a1CBv+nn34KS0tLDBkyBElJSVrL4+PjMXfuXABPD1UAwJw5czT6zJo1CwDQtWtXvdVVp04dPHr0SOMtYEJCgtaVQw8ePNC6b5MmTQAAmZmZhY5dvXp1NGnSBCtXrtQI0rNnz2Lnzp3qx1ke2rdvj6+++goLFiwodBaWz9TUVGvm8csvv6iPk+bLf4Eq7EWytD777DPcuHEDK1euxKxZs+Dm5obAwMAit2NJunTpgsTERKxdu1bdlpOTg/nz58PKygr+/v7PXXNx6wZK3lc7dOgAMzMzLFq0SKPfggULSlzH48ePkZOTo9Hm7e0NExMTjW1maWmp0/PTqVMnWFtbIzIyUuuKIl1moaNGjUKVKlXw9ddfA3j6LsDGxgbTpk1Ddna2Vv/8z9C4uLigUaNG+L//+z+kpKSol//55584c+ZMiesFnr64tGvXDkuWLEFCQkKR6wKevqg+y8rKCp6enuptlpaWpvX469SpA2tr62L3RWPtbxXuUA/wdIOuXr0affr0gZeXFwYOHIhGjRohKysLBw4cUF8OBQA+Pj4IDAzE999/j+TkZPj7++PIkSNYuXIlevTogfbt2+utrr59++Kzzz7Du+++i9GjR6svQ6tXr57Gyc2IiAjs27cPXbt2haurK+7cuYPvvvsONWvWRJs2bYocf8aMGXjrrbfQqlUrDB48WH05p0qlKvYQzPMyMTHBF198UWK/bt26ISIiAsHBwWjdujXOnDmDVatWqWdW+erUqQNbW1ssXrwY1tbWsLS0RMuWLUt9vDw6OhrfffcdwsLC1JeXLl++HO3atcOkSZMwffr0Uo0HAMOGDcOSJUsQFBSE48ePw83NDevXr8fff/+NOXPm6HxRQVHi4uIwZcoUrfamTZuia9euOu2r1apVw5gxYzBz5ky888476Ny5M06dOoU//vgDVatWLXa2Hh0djZEjR+L9999HvXr1kJOTg6ioKJiamqJXr17qfs2bN8fu3bsxa9YsuLi4wN3dHS1bttQaz8bGBrNnz8aQIUPw6quvon///rCzs8OpU6eQlpaGlStXFrs9HBwcEBwcjO+++w7nz5+Hl5cXFi1ahA8++ADNmjVD37594ejoiBs3bmDr1q3w9fVVv8BNmzYN3bt3h6+vL4KDg/Hw4UMsWLAAjRo10ngxKM7ChQvRpk0beHt7Y+jQofDw8EBSUhIOHjyIf//9F6dOnQLw9KKPdu3aoXnz5rC3t8exY8ewfv16jBw5EgBw6dIldOjQAb1790bDhg1hZmaG3377DUlJScW+Sy7v/a1IpboG6AVz6dIlMXToUOHm5ibMzc2FtbW18PX1FfPnz9e4PCs7O1tMnjxZuLu7i0qVKolatWoV+wGuggpeglXU5ZxCPP1gVqNGjYS5ubmoX7+++Omnn7Qu59yzZ4/o3r27cHFxEebm5sLFxUX069dPXLp0SWsdBS953L17t/D19RUWFhbCxsZGvP3220V+gKvg5aJFffimoKI+bPOsoi7nHDdunPpDRb6+vuLgwYOFXoa5adMm0bBhQ2FmZlboB7gK8+w4jx8/Fq6urqJZs2YiOztbo9/YsWOFiYmJOHjwYLGPoajnOykpSQQHB4uqVasKc3Nz4e3trfU8FLcPFLc+FPLhKABi8ODBQgjd99WcnBwxadIk4ezsLCwsLMQbb7whzp8/LxwcHMTw4cPV/QpeznnlyhUxaNAgUadOHVG5cmVhb28v2rdvL3bv3q0x/oULF4Sfn5+wsLDQ6QNcmzdvFq1bt1bvl6+99ppYs2aNenlx+1R8fLwwNTXVugw1ICBAqFQqUblyZVGnTh0RFBQkjh07pnHfn3/+WTRo0EAolUrRqFEjsXnzZtGrVy/RoEEDdZ+Snqv4+HgxcOBA4ezsLCpVqiRq1KghunXrJtavX6/uM2XKFPHaa68JW1tbYWFhIRo0aCCmTp0qsrKyhBBC3Lt3T4wYMUI0aNBAWFpaCpVKJVq2bCnWrVunsa6iPsD1PPsbABEWFlboYyuK4v/fkYgquOTkZNjZ2WHKlCn4/PPPjV2O0TRp0gSOjo7YtWuXsUt5YVXIY/xEsivsW1Pzzw28CF/7awjZ2dla5ytiYmJw6tQpabZBWXHGT1QBrVixAitWrFB/Zchff/2FNWvWoFOnTtixY4exyzOIa9euoWPHjhgwYABcXFxw4cIFLF68GCqVCmfPnoWDg4OxS3xhVciTu0Sya9y4MczMzDB9+nQ8fvxYfcK3sBPHLys7Ozs0b94cS5cuxd27d2FpaYmuXbvi66+/ZuiXgDN+IiLJ8Bg/EZFkGPxERJJh8BMRSealPLmbkVNyHyJ9eJyu/bUCROXByboUP7RSAs74iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpIMg5+ISDIMfiIiyTD4iYgkw+AnIpKMmbELoBfHjz98j3lzZuI/Awbi04mfG7scqsB+W/8zNq5fi8SE2wAAdw9PBA0Zjtd92yLh9i30fieg0PtFfD0T7TsWvoz0h8FPAICzZ05j/S8/o169+sYuhV4CTk7OGD5yLGrWdoUQAtu3bMLEcaOwbNV61HZzx8btMRr9N//2C9ZELUfL1m2NU7BkeKiHkJaaiomfjUfY5CmwUamMXQ69BHz92qFVGz/Uqu2K2q5uGDZiDCyqVMG5M6dgamoKh6pVNf72792DNzoGoEqVKsYuXQoMfsK0KRHw8/PH661aG7sUegnl5uZi945tyEhPxyuNm2gtv3j+HC5fuoCu3XsavjhJGfVQz71797Bs2TIcPHgQiYmJAABnZ2e0bt0aQUFBcHR0NGZ5Uvhj21acP/8PVq9db+xS6CUTH3cJHwX/B1lZWbCwqIKpM+bC3aOOVr8tm36Fq7sHvH2aGqFKORltxn/06FHUq1cP8+bNg0qlgp+fH/z8/KBSqTBv3jw0aNAAx44dK3GczMxMPH78WOMvMzPTAI+g4ktMSMD0r6ci8psZUCqVxi6HXjK1Xd2xbPUGLFmxGt3f642p4Z/j6pV4jT6ZGRnYvX0bunG2b1AKIYQwxopff/11+Pj4YPHixVAoFBrLhBAYPnw4Tp8+jYMHDxY7Tnh4OCZPnqzR9vmkMHzxZbi+S37pRO/ZjbGjR8DU1FTdlpubC4VCARMTExw9eUZjGWl7nJ5t7BIqjE8+HoIaNWph/Odh6rbtWzfjm6++xK9/RMPOzt6I1b34nKwr6W0sowW/hYUFTp48iQYNGhS6/MKFC2jatCnS09OLHSczM1Nrhi9MlZzB6iA1NQW3b9/WaAv7fCLcPDwQPHgo6tatZ6TKKg4Gv+7GDB8EJ+fq+Dx8qrpt1LAgqGztMGX6bCNWVjHoM/iNdozf2dkZR44cKTL4jxw5gmrVqpU4jlKpHfIZOXop8aVnaWmlFe4WVarAVmXL0KfnsnjBbLzeui2qOVdHWloqdm3fipPHj2Lm/CXqPv/evIFTJ49jxtxFRqxUTkYL/tDQUAwbNgzHjx9Hhw4d1CGflJSEPXv24IcffsC3335rrPKI6DkkP3iAqWH/xf17d2FpZY06deth5vwlePX1/105tnXzr3B0qqbRRoZhtEM9ALB27VrMnj0bx48fR25uLgDA1NQUzZs3R0hICHr37l2mcTnjJ0PhoR4ylJfiGP+zsrOzce/ePQBA1apVUanS8z1ABj8ZCoOfDOWlC359Y/CToTD4yVD0Gfz85C4RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZM106nT59WucBGzduXOZiiIio/CmEEKKkTiYmJlAoFCiqa/4yhUKB3NxcvRdZWhk5xq6AZPE4PdvYJZAknKwr6W0snWb8V69e1dsKiYjIuHSa8Vc0nPGToXDGT4aizxl/mU7uRkVFwdfXFy4uLrh+/ToAYM6cOdi0aZPeCiMiovJR6uBftGgRQkJC0KVLFyQnJ6uP6dva2mLOnDn6ro+IiPSs1ME/f/58/PDDD/j8889hamqqbm/RogXOnDmj1+KIiEj/Sh38V69eRdOmTbXalUolUlNT9VIUERGVn1IHv7u7O2JjY7Xat2/fDi8vL33URERE5UinyzmfFRISghEjRiAjIwNCCBw5cgRr1qxBZGQkli5dWh41EhGRHpXpcs5Vq1YhPDwc8fHxAAAXFxdMnjwZgwcP1nuBZcHLOclQeDknGYo+L+d8ruv409LSkJKSAicnJ70VpA8MfjIUBj8ZisE/uVuYO3fu4OLFiwCefmWDo6Oj3ooiIqLyU+qTu0+ePMEHH3wAFxcX+Pv7w9/fHy4uLhgwYAAePXpUHjUSEZEelTr4hwwZgsOHD2Pr1q1ITk5GcnIytmzZgmPHjuHDDz8sjxqJiEiPSn2M39LSEjt27ECbNm002vfv34/OnTu/ENfy8xg/GQqP8ZOhGPW7ehwcHKBSqbTaVSoV7Ozs9FIUERGVn1IH/xdffIGQkBAkJiaq2xITEzF+/HhMmjRJr8UREZH+6XSop2nTplAoFOrbly9fRmZmJmrXrg0AuHHjBpRKJerWrYsTJ06UX7U64qEeMhQe6iFDMfjlnD169NDbComIyLj4QyxEz4EzfjIUo/8QCxERVVyl/uRubm4uZs+ejXXr1uHGjRvIysrSWP7gwQO9FUdERPpX6hn/5MmTMWvWLPTp0wePHj1CSEgIevbsCRMTE4SHh5dDiUREpE+lPsZfp04dzJs3D127doW1tTViY2PVbYcOHcLq1avLq1ad8Rg/GQqP8ZOhGPUYf2JiIry9vQEAVlZW6u/n6datG7Zu3aq3woiIqHyUOvhr1qyJhIQEAE9n/zt37gQAHD16FEqlUr/VERGR3pU6+N99913s2bMHADBq1ChMmjQJdevWxcCBAzFo0CC9F0hERPr13NfxHzp0CAcOHEDdunXx9ttv66uu58Jj/GQoPMZPhvLC/ALXs+7cuYOlS5fiv//9rz6Gey4MfjIUBj8ZygsZ/KdOnUKzZs2Qm5urj+GeC4OfDIXBT4bCT+4SEVGZMfiJiCTD4CcikozO39UTEhJS7PK7d+8+dzFEFY2r31hjl0CSSD+5QG9j6Rz8J0+eLLGPn5/fcxVDRETlT+fg37t3b3nWQUREBsJj/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkilT8O/fvx8DBgxAq1atcOvWLQBAVFQU/vrrL70WR0RE+lfq4N+wYQMCAgJgYWGBkydPIjMzEwDw6NEjTJs2Te8FEhGRfpU6+KdMmYLFixfjhx9+QKVK//u2OF9fX5w4cUKvxRERkf6VOvgvXrxY6Cd0VSoVkpOT9VETERGVo1IHv7OzM+Li4rTa//rrL3h4eOilKCIiKj+lDv6hQ4dizJgxOHz4MBQKBW7fvo1Vq1YhNDQUH330UXnUSEREeqTzd/XkmzBhAvLy8tChQwekpaXBz88PSqUSoaGhGDVqVHnUSEREelTmn17MyspCXFwcUlJS0LBhQ1hZWem7tjLjTy+Sodi9OtLYJZAkjPK1zAWZm5ujYcOGeiuEiIgMo9TB3759eygUiiKXR0dHP1dBRERUvkod/E2aNNG4nZ2djdjYWJw9exaBgYH6qouIiMpJqYN/9uzZhbaHh4cjJSXluQsiIqLypbcvaRswYACWLVumr+GIiKic6C34Dx48iMqVK+trOCIiKielPtTTs2dPjdtCCCQkJODYsWOYNGmS3gojIqLyUergV6lUGrdNTExQv359REREoFOnTnorjIiIykepgj83NxfBwcHw9vaGnZ1dedVERETlqFTH+E1NTdGpUyd+CycRUQVW6pO7jRo1wpUrV8qjFiIiMoAy/RBLaGgotmzZgoSEBDx+/Fjjj4iIXmw6f0lbREQExo0bB2tr6//d+ZmvbhBCQKFQIDc3V/9VlhK/pI0MhV/SRoaizy9p0zn4TU1NkZCQgPPnzxfbz9/fXy+FPQ8GPxkKg58MxSjfzpn/+vAiBDsREZVdqY7xF/etnEREVDGU6jr+evXqlRj+Dx48eK6CiIiofJUq+CdPnqz1yV0iIqpYShX8ffv2hZOTU3nVQkREBqDzMX4e3yciejnoHPxl/E12IiJ6weh8qCcvL6886yAiIgPR2w+xEBFRxcDgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJGNm7ALIeBYtnI/F3y3QaHNzd8emLduNVBG9DEKD38RXo7tjwaq9GP/tBgDAjh/GwK9FXY1+P6z/C6On/gwA8K5XA6HBb6J1kzpwsLXE9dsPsHT9X1i4JsbQ5UuBwS+5Op518f3S5erbpmamRqyGKrrmDWtjcC9fnL70r9ayHzf8ja8WbVHfTsvIVv9/U69auPvgCYK/WIl/Ex/idR8PLPyiH3Lz8rB47T6D1C4TBr/kzExNUdXR0dhl0EvA0sIcy6cF4eOv1mDCkM5ay9MzspB0/0mh9/2/TYc0bl+7dR8tG7uj+xs+DP5ywGP8krt+4zo6tmuDLgEdMPHTcUi4fdvYJVEFNWdiH2zffxZ7D18sdHmfLi1wM/prHPvlv4gY9Q4sKlcqdjyVVWU8fJxWHqVKjzN+iXk3boyvpkbCzc0dd+/exZJFCxE88D/YsOl3WFpaGbs8qkDeD2iOJg1qoc2A6YUuX/vHMdxIeICEu4/gXdcFU8Z0Rz1XJ/QNXVpo/9d93PFep+Z4d/Si8ixbWi908N+8eRNhYWFYtmxZkX0yMzORmZmp0SZMlVAqleVdXoXXpq2/+v/r1W8A78Y+eOvN9tix/Q/07PW+ESujiqRmNVvMGN8L3T5agMysnEL7LPv1b/X/n4u7jYR7j7H9+9Fwr1kVV/+9p9G3YZ3qWDd7GKZ+vw17Dl0o19pl9UIf6nnw4AFWrlxZbJ/IyEioVCqNvxnfRBqowpeLjY0NXF3dcPPGDWOXQhVIU6/aqOZgg4OrP8OTo3Px5Ohc+LWoi4/7+ePJ0bkwMVFo3efomWsAgDq1NM8vNfBwxrYlo7BswwF8s3SHIcqXklFn/Js3by52+ZUrV0ocY+LEiQgJCdFoE6ac7ZdFWmoqbt68ia7v8GQv6W7vkYto/t5UjbbvJw/AxatJmLliF/LyhNZ9fOrXBAAk3nukbvPycMYf34/Gqt8PI3zh7+VbtOSMGvw9evSAQqGAENo7Rj6FQnu28CylUvuwTkbh7zapgJkzvoF/u/ao7uKCu3fuYNHC+TA1NcFbXboZuzSqQFLSMvFPfIJGW2p6Fh48SsU/8Qlwr1kVfd5qgR1/ncP95FR416uB6eN6Yv/xyzh7+enFBA3rVMcf34/G7gPnMe+naFRzsAYA5OYJ3HuYYvDH9LIzavBXr14d3333Hbp3717o8tjYWDRv3tzAVckjKSkRE8aHIDk5GXb29mjarDmiVq+Dvb29sUujl0h2dg7eaFkfI/u3h6WFOf5NeoiNe2Lx9TOHct7t2BRO9tbo3+019O/2mrr9+u37aNA1zBhlv9QUorjpdjl755130KRJE0RERBS6/NSpU2jatCny8vJKNS5n/GQodq+ONHYJJIn0kwtK7qQjo874x48fj9TU1CKXe3p6Yu/evQasiIjo5WfUGX954YyfDIUzfjIUfc74X+jLOYmISP8Y/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREklEIIYSxiyDjy8zMRGRkJCZOnAilUmnscuglxn3N+Bj8BAB4/PgxVCoVHj16BBsbG2OXQy8x7mvGx0M9RESSYfATEUmGwU9EJBkGPwEAlEolwsLCeLKNyh33NePjyV0iIslwxk9EJBkGPxGRZBj8RESSYfATEUmGwU9YuHAh3NzcULlyZbRs2RJHjhwxdkn0Etq3bx/efvttuLi4QKFQYOPGjcYuSVoMfsmtXbsWISEhCAsLw4kTJ+Dj44OAgADcuXPH2KXRSyY1NRU+Pj5YuHChsUuRHi/nlFzLli3x6quvYsGCBQCAvLw81KpVC6NGjcKECROMXB29rBQKBX777Tf06NHD2KVIiTN+iWVlZeH48ePo2LGjus3ExAQdO3bEwYMHjVgZEZUnBr/E7t27h9zcXFSrVk2jvVq1akhMTDRSVURU3hj8RESSYfBLrGrVqjA1NUVSUpJGe1JSEpydnY1UFRGVNwa/xMzNzdG8eXPs2bNH3ZaXl4c9e/agVatWRqyMiMqTmbELIOMKCQlBYGAgWrRogddeew1z5sxBamoqgoODjV0avWRSUlIQFxenvn316lXExsbC3t4etWvXNmJl8uHlnIQFCxZgxowZSExMRJMmTTBv3jy0bNnS2GXRSyYmJgbt27fXag8MDMSKFSsMX5DEGPxERJLhMX4iIskw+ImIJMPgJyKSDIOfiEgyDH4iIskw+ImIJMPgJyKSDIOfiEgyDH56aQUFBWn80Ee7du3wySefGLyOmJgYKBQKJCcnl9s6Cj7WsjBEnfRiYPCTQQUFBUGhUEChUMDc3Byenp6IiIhATk5Oua/7119/xVdffaVTX0OHoJubG+bMmWOQdRHxS9rI4Dp37ozly5cjMzMT27Ztw4gRI1CpUiVMnDhRq29WVhbMzc31sl57e3u9jENU0XHGTwanVCrh7OwMV1dXfPTRR+jYsSM2b94M4H+HLKZOnQoXFxfUr18fAHDz5k307t0btra2sLe3R/fu3XHt2jX1mLm5uQgJCYGtrS0cHBzw6aefouDXUBU81JOZmYnPPvsMtWrVglKphKenJ3788Udcu3ZN/WVidnZ2UCgUCAoKAvD0a6sjIyPh7u4OCwsL+Pj4YP369Rrr2bZtG+rVqwcLCwu0b99eo86yyM3NxeDBg9XrrF+/PubOnVto38mTJ8PR0RE2NjYYPnw4srKy1Mt0qZ3kwBk/GZ2FhQXu37+vvr1nzx7Y2Nhg165dAIDs7GwEBASgVatW2L9/P8zMzDBlyhR07twZp0+fhrm5OWbOnIkVK1Zg2bJl8PLywsyZM/Hbb7/hjTfeKHK9AwcOxMGDBzFv3jz4+Pjg6tWruHfvHmrVqoUNGzagV69euHjxImxsbGBhYQEAiIyMxE8//YTFixejbt262LdvHwYMGABHR0f4+/vj5s2b6NmzJ0aMGIFhw4bh2LFjGDdu3HNtn7y8PNSsWRO//PILHBwccODAAQwbNgzVq1dH7969NbZb5cqVERMTg2vXriE4OBgODg6YOnWqTrWTRASRAQUGBoru3bsLIYTIy8sTu3btEkqlUoSGhqqXV6tWTWRmZqrvExUVJerXry/y8vLUbZmZmcLCwkLs2LFDCCFE9erVxfTp09XLs7OzRc2aNdXrEkIIf39/MWbMGCGEEBcvXhQAxK5duwqtc+/evQKAePjwobotIyNDVKlSRRw4cECj7+DBg0W/fv2EEEJMnDhRNGzYUGP5Z599pjVWQa6urmL27NlFLi9oxIgRolevXurbgYGBwt7eXqSmpqrbFi1aJKysrERubq5OtRf2mOnlxBk/GdyWLVtgZWWF7Oxs5OXloX///ggPD1cv9/b21jiuf+rUKcTFxcHa2lpjnIyMDMTHx+PRo0dISEjQ+A0BMzMztGjRQutwT77Y2FiYmpqWaqYbFxeHtLQ0vPnmmxrtWVlZaNq0KQDg/PnzWr9loI9fM1u4cCGWLVuGGzduID09HVlZWWjSpIlGHx8fH1SpUkVjvSkpKbh58yZSUlJKrJ3kweAng2vfvj0WLVoEc3NzuLi4wMxMcze0tLTUuJ2SkoLmzZtj1apVWmM5OjqWqYb8QzelkZKSAgDYunUratSoobFMqVSWqQ5d/PzzzwgNDcXMmTPRqlUrWFtbY8aMGTh8+LDOYxirdnoxMfjJ4CwtLeHp6alz/2bNmmHt2rVwcnKCjY1NoX2qV6+Ow4cPw8/PDwCQk5OD48ePo1mzZoX29/b2Rl5eHv7880907NhRa3n+O47c3Fx1W8OGDaFUKnHjxo0i3yl4eXmpT1TnO3ToUMkPshh///03WrdujY8//ljdFh8fr9Xv1KlTSE9PV7+oHTp0CFZWVqhVqxbs7e1LrJ3kwat66IX3n//8B1WrVkX37t2xf/9+XL16FTExMRg9ejT+/fdfAMCYMWPw9ddfY+PGjbhw4QI+/vjjYq/Bd3NzQ2BgIAYNGoSNGzeqx1y3bh0AwNXVFQqFAlu2bMHdu3eRkpICa2trhIaGYuzYsVi5ciXi4+Nx4sQJzJ8/HytXrgQADB8+HJcvX8b48eNx8eJFrF69WuefFbx16xZiY2M1/h4+fIi6devi2LFj2LFjBy5duoRJkybh6NGjWvfPysrC4MGD8c8//2Dbtm0ICwvDyJEjYWJiolPtJBFjn2QguTx7crc0yxMSEsTAgQNF1apVhVKpFB4eHmLo0KHi0aNHQoinJ3PHjBkjbGxshK2trQgJCREDBw4s8uSuEEKkp6eLsWPHiurVqwtzc3Ph6ekpli1bpl4eEREhnJ2dhUKhEIGBgUKIpyek58yZI+rXry8qVaokHB0dRUBAgPjzzz/V9/v999+Fp6enUCqVom3btmLZsmU6ndwFoPUXFRUlMjIyRFBQkFCpVMLW1lZ89NFHYsKECcLHx0dru3355ZfCwcFBWFlZiaFDh4qMjAx1n5Jq58ldefA3d4mIJMNDPUREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCQZBj8RkWQY/EREkmHwExFJhsFPRCSZ/weo9bSc8j9XzgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "LogisticRegression\n",
      "Accuracy: 0.9157\n",
      "Precision: 0.8848\n",
      "Recall: 0.9157\n",
      "F1 Score: 0.8901\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.44      0.10      0.16        41\n",
      "           1       0.92      0.99      0.96       457\n",
      "\n",
      "    accuracy                           0.92       498\n",
      "   macro avg       0.68      0.54      0.56       498\n",
      "weighted avg       0.88      0.92      0.89       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "LR = LogisticRegression()\n",
    "# Train the model\n",
    "LR.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = LR.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('LogisticRegression', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Classification Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "99f4c00f-eec8-4d34-b1b1-3a9a7673b513",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAGJCAYAAAB7KB+AAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA2jklEQVR4nO3deVxU1f8/8NeAMCA7CgJqIO64g2aKiVtSLrlmaibgvmQmUunXVMCFyhLccsmNDy65tX3UXHIpNVIJsUUzVFwDXEEH2ef8/vDHfBxm4AwKM6iv5+NBj+beM/e+53qH15x7zh0UQggBIiKiUpiZugAiIqr8GBZERCTFsCAiIimGBRERSTEsiIhIimFBRERSDAsiIpJiWBARkRTDgoiIpBgWAJKTk9G9e3c4ODhAoVDg22+/LdftX7p0CQqFAuvXry/X7T7NOnXqhE6dOpXb9lQqFUaNGgU3NzcoFAq899575bbtyig4OBheXl5les7hw4ehUChw+PDhCqnpaVfe52RZhYeHQ6FQaC0rKCjABx98gNq1a8PMzAx9+/YFACgUCoSHhxu1vkoTFhcuXMDYsWPh7e0NKysr2Nvbw9/fH4sWLUJ2dnaF7jsoKAh//PEH5s2bh7i4OLRu3bpC92dMwcHBUCgUsLe313sck5OToVAooFAo8Nlnn5V5+//++y/Cw8ORlJRUDtU+vvnz52P9+vUYP3484uLi8Pbbb1fo/ry8vDTHzczMDI6OjmjWrBnGjBmD48ePV+i+K6uic032ExwcbNS60tPTERYWhkaNGqFq1aqwsbGBn58f5s6di4yMDKPWUlZr167FggULMHDgQMTGxmLKlCkmq0VRGb4bateuXXjjjTegVCoxfPhwNG3aFHl5eTh69Ch27NiB4OBgrFq1qkL2nZ2djapVq2LGjBmYO3duhexDCIHc3FxYWFjA3Ny8QvZRkuDgYGzcuBFCCGzatAmDBg3SWh8eHo5PPvkEOTk5WLBgAcLCwsq0/YSEBLRp0wbr1q0r0y+BvLw8AIClpWWZ9leSl156CVWqVMHRo0fLZXsyXl5ecHJywtSpUwEA9+/fx9mzZ7Ft2zakpaVhypQpWLhwYYXtPz8/H2q1Gkql0uDnqNVq5OXlwdLSEmZm5f85MT4+HhcuXNA8TklJwaxZszBmzBi8/PLLmuV169ZFu3btyn3/+pw8eRI9evSASqXCsGHD4OfnB+DhefvVV1+hffv22LdvHwBoehWm6nkVFBSgoKAAVlZWmmWDBw/G0aNHce3aNa22OTk5qFKlCqpUqWK8AoWJXbx4Udja2opGjRqJf//9V2d9cnKyiImJqbD9X758WQAQCxYsqLB9mFJQUJCwsbER3bt3F3379tVZX79+fTFgwIDHPgYnT54UAMS6desMap+VlVXmfRiiTp06omfPnuW2vfz8fJGbm1viek9PT737e/Dggejbt68AIL744otyq+dpZOi5oVKpKmT/d+/eFTVr1hQ1atQQZ8+e1VmflpYm5syZo3kcEBAgAgICKqSWx9W5c2fRpEmTCt1Hdna2KCwslLYzeViMGzdOABDHjh0zqH1+fr6IjIwU3t7ewtLSUnh6eorp06eLnJwcrXZFb+YjR46INm3aCKVSKerUqSNiY2M1bWbPni0AaP14enoKIR7+ki36/0cVPedR+/btE/7+/sLBwUHY2NiIBg0aiOnTp2vWp6Sk6H3THDhwQHTo0EFUrVpVODg4iNdff12cOXNG7/6Sk5NFUFCQcHBwEPb29iI4ONigX7xFYbF+/XqhVCrF3bt3NetOnDghAIgdO3bohMXt27fF1KlTRdOmTYWNjY2ws7MTr776qkhKStK0OXTokM7xe/R1BgQEiCZNmoiEhATx8ssvC2trazF58mTNukffmMOHDxdKpVLn9Xfv3l04OjqK69ev6319JdWQkpIihBAiPT1djBgxQri6ugqlUimaN28u1q9fr7WNon+fBQsWiOjoaOHt7S3MzMzEqVOnSjyuJYWFEELcv39fODs7i5o1awq1Wq1ZXlhYKKKjo4WPj49QKpXC1dVVjBkzRty5c0dnG7t37xYdO3YUtra2ws7OTrRu3Vps3LhRs17f+bl582bh6+ureU7Tpk21PmgVHatDhw5pPW/r1q3C19dXWFlZiWrVqom33npLXLt2TatN0Xl07do10adPH2FjYyOqV68upk6dKgoKCvQeB31hsW7dOgFAHD58WIwfP164uLgIR0dHrddd9J6wtbUVPXr0EH/++afOts+ePSsGDBggnJychFKpFH5+fuK7777TavPxxx8LAFrHrTTFz8nc3Fwxc+ZM4evrK+zt7UXVqlVFhw4dxMGDB3WeKzv2eXl5Ijw8XNSrV08olUrh7Ows/P39xb59+zRtHv3d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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "DecisionTreeClassifier\n",
      "Accuracy: 0.9096\n",
      "Precision: 0.9106\n",
      "Recall: 0.9096\n",
      "F1 Score: 0.9101\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.45      0.46      0.46        41\n",
      "           1       0.95      0.95      0.95       457\n",
      "\n",
      "    accuracy                           0.91       498\n",
      "   macro avg       0.70      0.71      0.70       498\n",
      "weighted avg       0.91      0.91      0.91       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "DT = DecisionTreeClassifier()\n",
    "# Train the model\n",
    "DT.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = DT.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('DecisionTreeClassifier', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Classification Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "53ae0518-cdbc-498a-91b8-69ae30bf1d15",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\anaconda\\envs\\enVaziz\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "E:\\anaconda\\envs\\enVaziz\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "E:\\anaconda\\envs\\enVaziz\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "E:\\anaconda\\envs\\enVaziz\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1531: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "Support Vector Machine\n",
      "Accuracy: 0.9177\n",
      "Precision: 0.8421\n",
      "Recall: 0.9177\n",
      "F1 Score: 0.8783\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.00      0.00      0.00        41\n",
      "           1       0.92      1.00      0.96       457\n",
      "\n",
      "    accuracy                           0.92       498\n",
      "   macro avg       0.46      0.50      0.48       498\n",
      "weighted avg       0.84      0.92      0.88       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "SVM = SVC()\n",
    "# Train the model\n",
    "SVM.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = SVM.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('Support Vector Machine', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Classification Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "f59a5771-b1b6-4d40-b0e6-6e673ad64704",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "GaussianNB\n",
      "Accuracy: 0.9237\n",
      "Precision: 0.9142\n",
      "Recall: 0.9237\n",
      "F1 Score: 0.9176\n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.55      0.39      0.46        41\n",
      "           1       0.95      0.97      0.96       457\n",
      "\n",
      "    accuracy                           0.92       498\n",
      "   macro avg       0.75      0.68      0.71       498\n",
      "weighted avg       0.91      0.92      0.92       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "gnb = GaussianNB()\n",
    "# Train the model\n",
    "gnb.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = gnb.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('GaussianNB', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Classification Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "b4eb9cf9-2f49-4061-968d-857f96bb8578",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sklearn.neighbors._classification.KNeighborsClassifier"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "b07b742f-74b4-4edd-8e9f-a7f628aabc52",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "KNeighbors\n",
      "Accuracy: 0.8313\n",
      "Precision: 0.8886\n",
      "Recall: 0.8313\n",
      "F1 Score: 0.8551\n",
      "Classification Report: \n",
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.23      0.46      0.31        41\n",
      "           1       0.95      0.86      0.90       457\n",
      "\n",
      "    accuracy                           0.83       498\n",
      "   macro avg       0.59      0.66      0.61       498\n",
      "weighted avg       0.89      0.83      0.86       498\n",
      "\n"
     ]
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=2)\n",
    "knn.fit(X_train, y_train)\n",
    "# Make predictions\n",
    "y_pred = knn.predict(X_test)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('KNeighbors', y_test, y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " if key == 'Diagnosis Report':\n",
    "     print(value) # Print report separately for better readability\n",
    " else:\n",
    "     print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "fec5cc82-7911-46d2-8b63-ca6c739245a0",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.feature_selection import SelectKBest, chi2, RFE\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import ( confusion_matrix,\n",
    " accuracy_score,\n",
    " precision_score,\n",
    " recall_score,\n",
    " f1_score,\n",
    " classification_report\n",
    ")\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "ab80e83c-0e1e-40d2-a790-c81950816c4c",
   "metadata": {},
   "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>Unnamed: 0</th>\n",
       "      <th>PatientID</th>\n",
       "      <th>Age</th>\n",
       "      <th>Gender</th>\n",
       "      <th>Ethnicity</th>\n",
       "      <th>SocioeconomicStatus</th>\n",
       "      <th>EducationLevel</th>\n",
       "      <th>BMI</th>\n",
       "      <th>Smoking</th>\n",
       "      <th>AlcoholConsumption</th>\n",
       "      <th>...</th>\n",
       "      <th>Itching</th>\n",
       "      <th>QualityOfLifeScore</th>\n",
       "      <th>HeavyMetalsExposure</th>\n",
       "      <th>OccupationalExposureChemicals</th>\n",
       "      <th>WaterQuality</th>\n",
       "      <th>MedicalCheckupsFrequency</th>\n",
       "      <th>MedicationAdherence</th>\n",
       "      <th>HealthLiteracy</th>\n",
       "      <th>Diagnosis</th>\n",
       "      <th>DoctorInCharge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>71</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>31.069414</td>\n",
       "      <td>1</td>\n",
       "      <td>5.128112</td>\n",
       "      <td>...</td>\n",
       "      <td>7.556302</td>\n",
       "      <td>76.076800</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1.018824</td>\n",
       "      <td>4.966808</td>\n",
       "      <td>9.871449</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>34</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>29.692119</td>\n",
       "      <td>1</td>\n",
       "      <td>18.609552</td>\n",
       "      <td>...</td>\n",
       "      <td>6.836766</td>\n",
       "      <td>40.128498</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.923538</td>\n",
       "      <td>8.189275</td>\n",
       "      <td>7.161765</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>80</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>37.394822</td>\n",
       "      <td>1</td>\n",
       "      <td>11.882429</td>\n",
       "      <td>...</td>\n",
       "      <td>2.144722</td>\n",
       "      <td>92.872842</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1.429906</td>\n",
       "      <td>7.624028</td>\n",
       "      <td>7.354632</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "      <td>40</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>31.329680</td>\n",
       "      <td>0</td>\n",
       "      <td>16.020165</td>\n",
       "      <td>...</td>\n",
       "      <td>7.077188</td>\n",
       "      <td>90.080321</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3.226416</td>\n",
       "      <td>3.282688</td>\n",
       "      <td>6.629587</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>5</td>\n",
       "      <td>43</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>23.726311</td>\n",
       "      <td>0</td>\n",
       "      <td>7.944146</td>\n",
       "      <td>...</td>\n",
       "      <td>3.553118</td>\n",
       "      <td>5.258372</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.285466</td>\n",
       "      <td>3.849498</td>\n",
       "      <td>1.437385</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 55 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   Unnamed: 0  PatientID  Age  Gender  Ethnicity  SocioeconomicStatus  \\\n",
       "0           0          1   71       0          0                    0   \n",
       "1           1          2   34       0          0                    1   \n",
       "2           2          3   80       1          1                    0   \n",
       "3           3          4   40       0          2                    0   \n",
       "4           4          5   43       0          1                    1   \n",
       "\n",
       "   EducationLevel        BMI  Smoking  AlcoholConsumption  ...   Itching  \\\n",
       "0               2  31.069414        1            5.128112  ...  7.556302   \n",
       "1               3  29.692119        1           18.609552  ...  6.836766   \n",
       "2               1  37.394822        1           11.882429  ...  2.144722   \n",
       "3               1  31.329680        0           16.020165  ...  7.077188   \n",
       "4               2  23.726311        0            7.944146  ...  3.553118   \n",
       "\n",
       "   QualityOfLifeScore  HeavyMetalsExposure  OccupationalExposureChemicals  \\\n",
       "0           76.076800                    0                              0   \n",
       "1           40.128498                    0                              0   \n",
       "2           92.872842                    0                              1   \n",
       "3           90.080321                    0                              0   \n",
       "4            5.258372                    0                              0   \n",
       "\n",
       "   WaterQuality  MedicalCheckupsFrequency  MedicationAdherence  \\\n",
       "0             1                  1.018824             4.966808   \n",
       "1             0                  3.923538             8.189275   \n",
       "2             1                  1.429906             7.624028   \n",
       "3             0                  3.226416             3.282688   \n",
       "4             1                  0.285466             3.849498   \n",
       "\n",
       "   HealthLiteracy  Diagnosis  DoctorInCharge  \n",
       "0        9.871449          1               0  \n",
       "1        7.161765          1               0  \n",
       "2        7.354632          1               0  \n",
       "3        6.629587          1               0  \n",
       "4        1.437385          1               0  \n",
       "\n",
       "[5 rows x 55 columns]"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('updated_dataframe.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "ce542a4c-47f4-438d-b040-a75e4199f11b",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.drop('Diagnosis', axis=1)\n",
    "y = data['Diagnosis']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "cf5f9c9a-9911-4316-9133-0afee15d1a3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "06e972fc-de88-4dc2-b06b-81bdeb8047a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "select_feature = SelectKBest(chi2,k=8).fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "c2fdf5ed-adb3-4de4-af55-8716a4c56a96",
   "metadata": {},
   "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>Feature</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Unnamed: 0</td>\n",
       "      <td>11105.687566</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>PatientID</td>\n",
       "      <td>11092.431189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Age</td>\n",
       "      <td>0.409156</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Gender</td>\n",
       "      <td>1.841790</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Ethnicity</td>\n",
       "      <td>0.273777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>SocioeconomicStatus</td>\n",
       "      <td>0.698923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>EducationLevel</td>\n",
       "      <td>0.206205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>BMI</td>\n",
       "      <td>6.654978</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Smoking</td>\n",
       "      <td>1.926516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>AlcoholConsumption</td>\n",
       "      <td>0.180814</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>PhysicalActivity</td>\n",
       "      <td>0.155489</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>DietQuality</td>\n",
       "      <td>3.811407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>SleepQuality</td>\n",
       "      <td>0.523254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>FamilyHistoryKidneyDisease</td>\n",
       "      <td>4.007120</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>FamilyHistoryHypertension</td>\n",
       "      <td>0.714770</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>FamilyHistoryDiabetes</td>\n",
       "      <td>0.259340</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>PreviousAcuteKidneyInjury</td>\n",
       "      <td>0.000135</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>UrinaryTractInfections</td>\n",
       "      <td>1.878154</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>SystolicBP</td>\n",
       "      <td>36.315961</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>DiastolicBP</td>\n",
       "      <td>17.386074</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>FastingBloodSugar</td>\n",
       "      <td>85.934846</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>HbA1c</td>\n",
       "      <td>2.084787</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>SerumCreatinine</td>\n",
       "      <td>34.514075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>BUNLevels</td>\n",
       "      <td>56.606824</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>GFR</td>\n",
       "      <td>576.756165</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>ProteinInUrine</td>\n",
       "      <td>7.852323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>ACR</td>\n",
       "      <td>11.386439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>SerumElectrolytesSodium</td>\n",
       "      <td>0.061782</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>SerumElectrolytesPotassium</td>\n",
       "      <td>0.000378</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>SerumElectrolytesCalcium</td>\n",
       "      <td>0.000104</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>SerumElectrolytesPhosphorus</td>\n",
       "      <td>0.003406</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>HemoglobinLevels</td>\n",
       "      <td>1.450841</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>CholesterolTotal</td>\n",
       "      <td>15.269504</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>CholesterolLDL</td>\n",
       "      <td>1.549602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>CholesterolHDL</td>\n",
       "      <td>25.331345</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>35</th>\n",
       "      <td>CholesterolTriglycerides</td>\n",
       "      <td>51.760050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>36</th>\n",
       "      <td>ACEInhibitors</td>\n",
       "      <td>0.126792</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>37</th>\n",
       "      <td>Diuretics</td>\n",
       "      <td>0.698474</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>38</th>\n",
       "      <td>NSAIDsUse</td>\n",
       "      <td>0.157743</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>Statins</td>\n",
       "      <td>0.249069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>40</th>\n",
       "      <td>AntidiabeticMedications</td>\n",
       "      <td>0.347334</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>41</th>\n",
       "      <td>Edema</td>\n",
       "      <td>1.700093</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>42</th>\n",
       "      <td>FatigueLevels</td>\n",
       "      <td>0.814905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>43</th>\n",
       "      <td>NauseaVomiting</td>\n",
       "      <td>0.470643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>44</th>\n",
       "      <td>MuscleCramps</td>\n",
       "      <td>17.275810</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>45</th>\n",
       "      <td>Itching</td>\n",
       "      <td>25.997463</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>46</th>\n",
       "      <td>QualityOfLifeScore</td>\n",
       "      <td>43.119328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>47</th>\n",
       "      <td>HeavyMetalsExposure</td>\n",
       "      <td>0.015072</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>48</th>\n",
       "      <td>OccupationalExposureChemicals</td>\n",
       "      <td>0.200599</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>49</th>\n",
       "      <td>WaterQuality</td>\n",
       "      <td>0.478490</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50</th>\n",
       "      <td>MedicalCheckupsFrequency</td>\n",
       "      <td>0.706549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>51</th>\n",
       "      <td>MedicationAdherence</td>\n",
       "      <td>0.213963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>HealthLiteracy</td>\n",
       "      <td>0.000136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>53</th>\n",
       "      <td>DoctorInCharge</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          Feature         Score\n",
       "0                      Unnamed: 0  11105.687566\n",
       "1                       PatientID  11092.431189\n",
       "2                             Age      0.409156\n",
       "3                          Gender      1.841790\n",
       "4                       Ethnicity      0.273777\n",
       "5             SocioeconomicStatus      0.698923\n",
       "6                  EducationLevel      0.206205\n",
       "7                             BMI      6.654978\n",
       "8                         Smoking      1.926516\n",
       "9              AlcoholConsumption      0.180814\n",
       "10               PhysicalActivity      0.155489\n",
       "11                    DietQuality      3.811407\n",
       "12                   SleepQuality      0.523254\n",
       "13     FamilyHistoryKidneyDisease      4.007120\n",
       "14      FamilyHistoryHypertension      0.714770\n",
       "15          FamilyHistoryDiabetes      0.259340\n",
       "16      PreviousAcuteKidneyInjury      0.000135\n",
       "17         UrinaryTractInfections      1.878154\n",
       "18                     SystolicBP     36.315961\n",
       "19                    DiastolicBP     17.386074\n",
       "20              FastingBloodSugar     85.934846\n",
       "21                          HbA1c      2.084787\n",
       "22                SerumCreatinine     34.514075\n",
       "23                      BUNLevels     56.606824\n",
       "24                            GFR    576.756165\n",
       "25                 ProteinInUrine      7.852323\n",
       "26                            ACR     11.386439\n",
       "27        SerumElectrolytesSodium      0.061782\n",
       "28     SerumElectrolytesPotassium      0.000378\n",
       "29       SerumElectrolytesCalcium      0.000104\n",
       "30    SerumElectrolytesPhosphorus      0.003406\n",
       "31               HemoglobinLevels      1.450841\n",
       "32               CholesterolTotal     15.269504\n",
       "33                 CholesterolLDL      1.549602\n",
       "34                 CholesterolHDL     25.331345\n",
       "35       CholesterolTriglycerides     51.760050\n",
       "36                  ACEInhibitors      0.126792\n",
       "37                      Diuretics      0.698474\n",
       "38                      NSAIDsUse      0.157743\n",
       "39                        Statins      0.249069\n",
       "40        AntidiabeticMedications      0.347334\n",
       "41                          Edema      1.700093\n",
       "42                  FatigueLevels      0.814905\n",
       "43                 NauseaVomiting      0.470643\n",
       "44                   MuscleCramps     17.275810\n",
       "45                        Itching     25.997463\n",
       "46             QualityOfLifeScore     43.119328\n",
       "47            HeavyMetalsExposure      0.015072\n",
       "48  OccupationalExposureChemicals      0.200599\n",
       "49                   WaterQuality      0.478490\n",
       "50       MedicalCheckupsFrequency      0.706549\n",
       "51            MedicationAdherence      0.213963\n",
       "52                 HealthLiteracy      0.000136\n",
       "53                 DoctorInCharge           NaN"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.DataFrame([])\n",
    "data._append(pd.DataFrame({'Feature': X.columns, 'Score':select_feature .scores_}))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "id": "fed46173-88ba-41d3-84ec-d7cc5b901727",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_selected = select_feature.transform(X_train)\n",
    "X_test_selected = select_feature.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "id": "3176c480-7c3a-446d-bc00-0088d2220e39",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "\n",
    " # Calculate metrics\n",
    " accuracy = accuracy_score(y_true, y_pred)\n",
    " precision = precision_score(y_true, y_pred, average='weighted')\n",
    " recall = recall_score(y_true, y_pred, average='weighted')\n",
    " f1 = f1_score(y_true, y_pred, average='weighted')\n",
    " cm = confusion_matrix(y_test, y_pred)\n",
    " # Output results\n",
    " metrics = {\n",
    " 'Model Name': model_name,\n",
    " 'Accuracy': accuracy,\n",
    " 'Precision': precision,\n",
    " 'Recall': recall,\n",
    " 'F1 Score': f1,\n",
    "\n",
    "\n",
    " }\n",
    "\n",
    " return metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "id": "b026703d-8330-428d-b376-9faf1ba1aa02",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "GaussianNB\n",
      "Accuracy: 0.9187\n",
      "Precision: 0.9003\n",
      "Recall: 0.9187\n",
      "F1 Score: 0.9073\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'max_depth': 10, 'min_samples_leaf': 4, 'min_samples_split': 2, 'n_estimators': 100}\n"
     ]
    }
   ],
   "source": [
    "# Define the Random Forest Classifier\n",
    "rf_classifier = RandomForestClassifier(random_state=42)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'n_estimators': [100, 200, 300],\n",
    " 'max_depth': [None, 10, 20, 30],\n",
    " 'min_samples_split': [2, 5, 10],\n",
    " 'min_samples_leaf': [1, 2, 4]\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=rf_classifier,\n",
    "param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train_selected, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_rf_classifier = grid_search.best_estimator_\n",
    "# Make predictions using the best model\n",
    "y_pred = best_rf_classifier.predict(X_test_selected)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('GaussianNB', y_test,y_pred)\n",
    "\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "\n",
    "\n",
    "# Print the best parameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "3a8d0087-dd2d-43d8-b4f3-3529c340a8ad",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Selected Features (RFE): [ 0  1 20 22 23 24 25 27 44 45]\n"
     ]
    }
   ],
   "source": [
    "from sklearn.feature_selection import RFE\n",
    "clf_rf_2 = RandomForestClassifier(random_state=43)\n",
    "\n",
    "rfe_selector = RFE(estimator=clf_rf_2, n_features_to_select=10)\n",
    "\n",
    "X_train_selected_rfe = rfe_selector.fit_transform(X_train, y_train)\n",
    "X_test_selected_rfe = rfe_selector.transform(X_test)\n",
    "\n",
    "# Get the selected feature indices\n",
    "selected_features = rfe_selector.get_support(indices=True)\n",
    "\n",
    "print(\"Selected Features (RFE):\", selected_features)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "id": "2475594a-4893-40a2-9868-12573829bbf5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "RandomForestClassifier\n",
      "Accuracy: 0.9337\n",
      "Precision: 0.9243\n",
      "Recall: 0.9337\n",
      "F1 Score: 0.9275\n",
      "\n",
      "Best hyperparameters found by GridSearchCV:\n",
      "{'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 2, 'n_estimators': 100}\n"
     ]
    }
   ],
   "source": [
    "# Define the Random Forest Classifier\n",
    "rf_classifier = RandomForestClassifier(random_state=43)\n",
    "# Define the hyperparameters for grid search\n",
    "param_grid = {\n",
    " 'n_estimators': [100, 200, 300],\n",
    " 'max_depth': [None, 10, 20, 30],\n",
    " 'min_samples_split': [2, 5, 10],\n",
    " 'min_samples_leaf': [1, 2, 4]\n",
    "}\n",
    "# Initialize GridSearchCV\n",
    "grid_search = GridSearchCV(estimator=rf_classifier,\n",
    "param_grid=param_grid, cv=5, scoring='accuracy', n_jobs=-1)\n",
    "# Fit the grid search to the data\n",
    "grid_search.fit(X_train_selected_rfe, y_train)\n",
    "# Get the best estimator from grid search\n",
    "best_rf_classifier = grid_search.best_estimator_ \n",
    "# Make predictions using the best model\n",
    "y_pred = best_rf_classifier.predict(X_test_selected_rfe)\n",
    "# Evaluate the model\n",
    "evaluation_results = evaluate_model('RandomForestClassifier', y_test,\n",
    "y_pred)\n",
    "# Print the evaluation results\n",
    "for key, value in evaluation_results.items():\n",
    " print(f\"{key}: {value:.4f}\" if isinstance(value, float) else\n",
    "f\"{key}: \\n{value}\")\n",
    "# Print the best parameters found by grid search\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV:\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f8c38e14-4e4d-4550-ab3f-4d71cc2b3999",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
