{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 691,
   "id": "7bc20a84-03ce-4e82-94cd-99a24d08f233",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import LabelEncoder, StandardScaler\n",
    "from sklearn.impute import SimpleImputer\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, recall_score, f1_score, classification_report\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 692,
   "id": "7a9089bb-2971-4f2a-a282-7ed5ea457c9f",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 693,
   "id": "9c390b04-c781-4470-a271-acf7676e3f50",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 693,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 694,
   "id": "d472eeb9-e490-46eb-8576-481d7ddb702e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "classification\n",
       "ckd       248\n",
       "notckd    150\n",
       "ckd\\t       2\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 694,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['classification'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 695,
   "id": "42dc5db4-93f0-4c5f-9428-9006e95118b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop(columns=['id'], inplace=True, errors='ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 696,
   "id": "0a5ae434-77ae-49db-909d-4879159cb962",
   "metadata": {},
   "outputs": [],
   "source": [
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 697,
   "id": "76a94515-5f3a-4dcf-bbf4-aa7931ecd5e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_encoders = {}\n",
    "for column in data.select_dtypes(include=['object']).columns:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])\n",
    "    label_encoders[column] = le"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 698,
   "id": "12cf046f-e6c8-418e-a4a3-87cc7395afcc",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = data.drop('classification', axis=1).values\n",
    "y = data['classification'].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 699,
   "id": "1ea3f1bd-eeb5-425f-a19c-d08a3d114da9",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 700,
   "id": "ac107eed-72b3-4123-8d24-fc72ac1df807",
   "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",
    "\n",
    "    print(f\"\\nModel Name: {model_name}\")\n",
    "    print(f\"Accuracy: {accuracy:.4f}\")\n",
    "    print(f\"Precision: {precision:.4f}\")\n",
    "    print(f\"Recall: {recall:.4f}\")\n",
    "    print(f\"F1 Score: {f1:.4f}\")\n",
    "    print(\"\\nClassification Report:\\n\", 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()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 701,
   "id": "f0aaf2f8-4b8d-4fb9-b0d9-ca28e8f12b20",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Random Forest Classifier\n",
      "Accuracy: 1.0000\n",
      "Precision: 1.0000\n",
      "Recall: 1.0000\n",
      "F1 Score: 1.0000\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        76\n",
      "           2       1.00      1.00      1.00        44\n",
      "\n",
      "    accuracy                           1.00       120\n",
      "   macro avg       1.00      1.00      1.00       120\n",
      "weighted avg       1.00      1.00      1.00       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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y5buob87d+5s27Zt85NKAEDiBxiNwSxYsMDeffddd6OlHu+8844tXrzYbr31Vj+pBAAk/hhM8eLFbcaMGXbOOedELJ8zZ45dcsklR8S9MIzBIK8wBoO8UqRgPmjBlC1b1kqVKpVpuZaVKVMmVukCABzlchxgND1Z98KsW7cufZn+vvPOO23o0KGxTh8A4CgVVaNLXw2jmWIhP/zwg51wwgnuIatXr3ZfFbNhwwbGYQAA0QeYdu3aRbMaAACxudHySMUgP/IKg/zIK0XywyA/AADRyHFM1A+MjR492l5//XU39rJv376I1zdv3pzTTQIAElCOWzAjRoywv//973bddde5O/c1o6xDhw6WnJxsw4cP95NKAEDiB5gpU6a4X7QcOHCgFSxY0Dp16uS+pv++++6z+fPn+0klACDxA4zuealfv777u0SJEunfP3b55Ze7r48BACBXAaZKlSq2du1a9/eJJ55oM2fOdH8vWrTI3QsDAECuAkz79u1t1qxZ7u++ffu6u/dPOukk69q1q914440cVQBAbO6D0bjL3LlzXZC54oor7EjAfTDIK9wHg7xSJD/eB9OkSRM3k+zss8+2Bx98MDapAgAc9WJ2o6XGZfiySwBACHfyAwC8IMAAALwgwAAAvIh6XoIG8g9GvwVzpGBmD/LK9ZOWxDsJyCem9WxsCRtgvvzyy0Ou06JFi8NNDwAgQUQdYGbPnu03JQCAhMIYDADACwIMAMALAgwAwAsCDADACwIMAODICTBz5syxzp07W9OmTW3NmjVu2eTJk+2zzz6LdfoAAPklwEydOtVat25tRYsWdffG7N271y3XL1vybcoAgFwHmAceeMDGjx9vzz33nBUqVCh9efPmze2LL77I6eYAAAkqxwFmxYoVWd6xX6pUKdu6dWus0gUAyG8BplKlSvbjjz9mWq7xl5o1a8YqXQCA/BZgbr75ZuvXr58tWLDAkpKS7Pfff7cpU6bYoEGDrFevXn5SCQA46uT4V54HDx5saWlpduGFF9quXbtcd1lKSooLMH379vWTSgDAUScpCIIgN2/ct2+f6yrbsWOH1a1b10qUKGFHij0H4p0C5Bd8XT/yyrRE/rr+jAoXLuwCCwAAMQkw559/vht7yc5HH32U000CABJQjgNMo0aNIp7v37/fli5dat98841169YtlmkDAOSnADN69Ogslw8f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ZiVLlox3cpDAyGv5B11kAAAvCDAAAC8IMAAALwgwcDTYOmzYMAZd4R15Lf9gkB8A4AUtGACAFwQYAIAXBBgAgBcEGACAFwQY2FNPPWXVq1e3IkWK2Nlnn20LFy6Md5KQYPTVMGeeeaYdc8wxVqFCBWvXrp2tWLEi3smCZwSYfO61116zAQMGuGmjX3zxhTVs2NBat25t69evj3fSkEA++eQT6927t82fP98++OAD279/v7Vq1cp27twZ76TBI6Yp53NqsahmOXbsWPc8LS3Nqlatan379rXBgwfHO3lIUBs2bHAtGQWeFi1axDs58IQWTD62b98+W7JkiV100UXpy5KTk93zefPmxTVtSGz6oks59thj450UeESAycc2btxoqampVrFixYjler5u3bq4pQuJTa3kO+64w5o3b2716tWLd3LgUUGfGweAjDQW880339hnn30W76TAMwJMPlauXDkrUKCA/fHHHxHL9bxSpUpxSxcSV58+feydd96xTz/91KpUqRLv5MAzusjyscKFC1vjxo1t1qxZEd0Xet60adO4pg2JRXOJFFzefPNN++ijj6xGjRrxThLyAC2YfE5TlLt162ZnnHGGnXXWWTZmzBg3dbRHjx7xThoSrFvs5ZdftunTp7t7YUJjfPply6JFi8Y7efCEacpwU5QfeeQRd9E3atTInnjiCTd9GYiVpKSkLJdPnDjRunfvnufpQd4gwAAAvGAMBgDgBQEGAOAFAQYA4AUBBgDgBQEGAOAFAQYA4AUBBgDgBQEGAOAFAQYJS3eI66d5Q8477zz3NfF57eOPP3Z3sm/dujXP9vVITSfyFwIM8pQKQhVieujLNmvVqmUjR460AwcOeP/sadOm2f33339EFrbVq1d33wMHJBK+7BJ57pJLLnHfQbV3715777333BchFipUyIYMGZLlr24qEMUCv54I5C1aMMhzKSkp7vdmqlWrZr169XI/0fyvf/0roqvnr3/9qx133HFWp04dt/w///mPXXvttVa6dGkXKNq2bWu//PJL+jb1y5z6Zmi9XrZsWbvrrrvcV8SHy9hFpgB39913W9WqVV2a1Jp64YUX3HbPP/98t06ZMmVcSyb0hYz6OYNRo0a5r5vXtwA3bNjQ/vnPf0Z8joJm7dq13evaTng6c0P71rNnz/TP1DF5/PHHs1x3xIgRVr58eStZsqTddtttLkCHRJN2IJZowSDuVNht2rQp/bl+j0YF5AcffOCe79+/31q3bu1+o2bOnDlWsGBBe+CBB1xLaNmyZa6F89hjj9mLL75oEyZMsFNOOcU912+PXHDBBdl+bteuXW3evHnu26NV2K5atcr9jLQCztSpU+2qq66yFStWuLSEvlJeBfRLL71k48ePt5NOOsn9cFbnzp1dod6yZUsXCDt06OBaZbfccostXrzYBg4ceFjHR4FBP871xhtvuOA5d+5ct+3KlSu7oBt+3IoUKeK69xTU9JMLWl/BOpq0AzGnb1MG8kq3bt2Ctm3bur/T0tKCDz74IEhJSQkGDRqU/nrFihWDvXv3pr9n8uTJQZ06ddz6IXq9aNGiwYwZM9zzypUrBw8//HD66/v37w+qVKmS/lnSsmXLoF+/fu7vFStWqHnjPj8rs2fPdq9v2bIlfdmePXuCYsWKBXPnzo1Yt2fPnkGnTp3c30OGDAnq1q0b8frdd9+daVsZVatWLRg9enQQrd69ewdXXXVV+nMdt2OPPTbYuXNn+rJx48YFJUqUCFJTU6NKe1b7DBwOWjDIc/rJ3BIlSriWiWrn119/vQ0fPjz99fr160eMu3z11Vf2448/uh+qCrdnzx776aefbNu2bbZ27dqI37BRK0c/opbdr1EsXbrU/Vx0TmruSsOuXbvs4osvjliubqjTTjvN/f3dd99l+i2dWPw66FNPPeVaZ6tXr7bdu3e7z9Rv94RTK6xYsWIRn7tjxw7XqtL/h0o7EGsEGOQ5jUuMGzfOBRGNsygYhCtevHjEcxWO+mnnKVOmZNqWundyIze/oqh0yLvvvmvHH398xGsaw/Hl1VdftUGDBrluPwUNBVr9QNyCBQuO+LQjfyPAIM8pgGhAPVqnn366vfbaa1ahQgU3HpIVjUeowG3RooV7rmnPS5Ysce/NilpJaj198sknbpJBRqEWlAbYQ+rWresKY7Uismv5aPwnNGEhZP78+XY4Pv/8c2vWrJndfvvt6cvUcstILT21bkLBU5+rlqLGlDQx4lBpB2KNWWQ44t1www1Wrlw5N3NMg/wajNdA9l/+8hf77bff3Dr9+vWzhx56yN566y37/vvvXWF8sHtYdN9Jt27d7MYbb3TvCW3z9ddfd69rhptmj6k7b8OGDa4FoJaDWhL9+/e3SZMmuUL+iy++sCeffNI9F83c+uGHH+zOO+90EwT0O/SafBCNNWvWuK678MeWLVvcgLwmC8yYMcNWrlxpQ4cOtUWLFmV6v7q7NNts+fLlbibbsGHDrE+fPpacnBxV2oGYO6wRHOAwBvlz8vratWuDrl27BuXKlXOTAmrWrBncfPPNwbZt29IH9TWAX7JkyaB06dLBgAED3PrZDfLL7t27g/79+7sJAoULFw5q1aoVTJgwIf31kSNHBpUqVQqSkpJcukQTDcaMGeMmHRQqVCgoX7580Lp16+CTTz5Jf9/bb7/ttqV0nnvuuW6b0Qzya52MD01w0AB99+7dg1KlSrl969WrVzB48OCgYcOGmY7bfffdF5QtW9YN7uv46L0hh0o7g/yItST9E/uwBQDI7+giAwB4QYABAHhBgAEAeEGAAQB4QYABAHhBgAEAeEGAAQB4QYABAHhBgAEAeEGAAQB4QYABAJgP/w+AckAQjgIVewAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rf_classifier = RandomForestClassifier(n_estimators=100, random_state=42)\n",
    "rf_classifier.fit(x_train, y_train)\n",
    "y_pred_rf = rf_classifier.predict(x_test)\n",
    "evaluate_model('Random Forest Classifier', y_test, y_pred_rf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 702,
   "id": "048a8049-942a-427b-8860-f7dfd50a53a2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Logistic Regression\n",
      "Accuracy: 0.9583\n",
      "Precision: 0.9601\n",
      "Recall: 0.9583\n",
      "F1 Score: 0.9586\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       0.99      0.95      0.97        76\n",
      "           2       0.91      0.98      0.95        44\n",
      "\n",
      "    accuracy                           0.96       120\n",
      "   macro avg       0.95      0.96      0.96       120\n",
      "weighted avg       0.96      0.96      0.96       120\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\linear_model\\_logistic.py:465: 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": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGJCAYAAACDyOR3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK8FJREFUeJzt3QmcjXX///HPLIwxdmPNkn2JUJbsSSGVLN2iZEmKJNnCT9aU7lSE4m5RkrpVKkvdJCRlF0mWFCUaS8VYZjFmrv/j873/Z+5zZs6MM5yZMzPf1/PxOMxc58x1vuc617ne3+26TpDjOI4AAKwTHOgCAAACgwAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAyKCDBw9Ku3btpHDhwhIUFCSffvqpX9f/66+/mvW+/fbbfl1vTnbzzTebm7+cP39eHnroISldurTZ1k888YTkNl999ZV5bfq/P+j+qOvT/RP+MWnSJLNNAylHBsAvv/wijzzyiFSuXFny5csnhQoVkubNm8vLL78ssbGxmfrcffr0kR9++EGeeeYZWbhwoTRs2FByi759+5odUrent+2o4af36+2FF17I8Pr/+OMPs9Pv2rVLAunZZ581B7RBgwaZ9/CBBx7I1Oe79tpr5c4775ScQLeNvys1aYWJ6xYaGirXXHON2f+OHTuWqc+NFJwcZsWKFU54eLhTpEgR5/HHH3dee+01Z86cOU6PHj2cPHnyOAMGDMi0546JidHrJjnjxo3LtOdISkpyYmNjnUuXLjlZrU+fPk5oaKgTEhLiLF68ONX9EydOdPLly2e2wfTp0zO8/m3btpm/feuttzL0d/Hx8ebmL02aNHGaN2/uZJWKFSs6d9xxh5OVEhMTzX6k/2dERESE2Q9S0v1R16f759XS91/3gylTpjgLFy50Xn/9dad///5mv6tSpYp5HhskJCQE/LWGSg5y+PBh6dGjh1SsWFHWrl0rZcqUSb5v8ODB8vPPP8tnn32Wac9/6tQp83+RIkUy7Tm0RqStmkAJCwszran3339funfv7nHfe++9J3fccYcsWbIkS8oSExMj+fPnl7x58/p1vSdPnpTatWv7bX2XLl2SpKQkv5fzagQHB/t1PwoJCTE3f7r99tuTW9DaJRcZGSn//Oc/ZdmyZan2vczkOI7ExcVJeHi4ZCVt+egtoJwcZODAgabm8O233/qcsFrLqFy5spM3b15TExs7dqwTFxfntYa2YcMGp1GjRk5YWJhTqVIlZ8GCBR61X31u95v+ndIak+tnd66/cffFF1+Y2mfhwoVNbat69eqmTC6HDx/2Wktes2aN06JFCyd//vzmbzt16uTs3bvX6/MdPHjQlEkfV6hQIadv377OhQsXLru99G+0TG+//bbZBqdPn06+b+vWrWbdS5YsSdUC+Ouvv5wRI0Y4derUMX9fsGBBp0OHDs6uXbuSH7Nu3bpU28/9dbZu3dq57rrrnO3btzstW7Y0rbyhQ4cm36c3l969e5vypXz97dq1My3DY8eOeX19aZVBt7k6ceKE8+CDDzolS5Y067/++uvNtnDnen/09c+YMcPsW8HBwc7OnTuvqgXg676qNXp9n8uUKWO20c033+z8+OOP5vHuNXfXa9X/XX766Sena9euTqlSpczru+aaa5x7773XOXPmjLnf27ZxrdNVa3dtK5fPP//cadWqlVOgQAHzvjds2NBZtGhRuq/VtS5tEaZs3evyZ5991mP5vn37nG7dujlFixY15b7xxhudpUuXplrv999/b8qirVR9bU8//bQzf/78VOV2vR8rV64069J16nupdJ/X/a5cuXLmfdAWyXPPPZeqJfX+++87N9xwQ/Lr1n1/5syZyfdfvHjRmTRpklO1alWz/mLFipnPvX7+0zs++POYletaAMuXLzf9/s2aNfPp8VqrWLBggdxzzz0yYsQI2bJli0ybNk327dsnn3zyicdjtfWgj+vfv7/p558/f77pk7zxxhvluuuuk65du5qa/7Bhw6Rnz57SsWNHKVCgQIbK/+OPP5q+4Ouvv16mTJliatv6vN9++226f/fll1+a2pK+du1D1/752bNnm5r6d999Z/qY3WntqVKlSua16v1vvPGGlCxZ0tSufKGvdeDAgfLxxx/Lgw8+mFz7r1mzptxwww2pHn/o0CHTb/yPf/zDPO+JEyfkX//6l7Ru3Vr27t0rZcuWlVq1apnXPGHCBHn44YelZcuW5m/d38u//vrLvE5t5fXq1UtKlSrltXw61qMtQH2fNm3aZGqm+nxffPGF6dPX5/NGy6D363tYrlw5s0+oEiVKmG2qA836fjz22GPmdXz44YdmHzhz5owMHTrUY11vvfWWqTXqa9H3sVixYnI1fN1Xx44d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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "LR = LogisticRegression(max_iter=1000)\n",
    "LR.fit(x_train, y_train)\n",
    "y_pred_lr = LR.predict(x_test)\n",
    "evaluate_model('Logistic Regression', y_test, y_pred_lr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 703,
   "id": "8906ec12-44d4-4003-898a-7bbab1369884",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Decision Tree Classifier\n",
      "Accuracy: 0.9917\n",
      "Precision: 1.0000\n",
      "Recall: 0.9917\n",
      "F1 Score: 0.9958\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.99      0.99        76\n",
      "           1       0.00      0.00      0.00         0\n",
      "           2       1.00      1.00      1.00        44\n",
      "\n",
      "    accuracy                           0.99       120\n",
      "   macro avg       0.67      0.66      0.66       120\n",
      "weighted avg       1.00      0.99      1.00       120\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAGJCAYAAABLpA6hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL5RJREFUeJzt3Qm8TfX+//GPYzpmMkuJDJlTKkNxi0vjNTUPhiRJkih0k6iuftWNqLhXJVdKg0pp0JySWahIk3KV6Rgzi/V/vL/99777jM752s7e9nk9H4/9OGevvfZe3/1dw+c77pUvCILAAADwkOTzJgAAhCACAPBGEAEAeCOIAAC8EUQAAN4IIgAAbwQRAIA3gggAwBtBBADgLU8Fke+//97atWtnpUqVsnz58tnrr78e1c//+eef3ec+++yzUf3cY9lf/vIX94iWnTt32g033GCVKlVyeX3bbbdZIuvevbuddNJJOXrPJ5984vJGf+EvHvIxX758du+996ZatnDhQmvRooUVK1bMvb506VK3jv7PE0Hkxx9/tN69e1uNGjUsOTnZSpYsaS1btrTHHnvM9uzZc1S33a1bN/vqq6/sgQcesClTpljTpk0tkS42OoiUnxnlowKoXtfjkUceyfHn//bbb+5A1QEbS//4xz9ckO7Tp4/bh9ddd91R3Z4u4KF8S0pKstKlS1vDhg3txhtvtPnz5x/VbR9LtE9C+ZTVI6cB8Wh57bXX7IILLrBy5cpZoUKFrEqVKnb55ZfbRx99ZPHswIEDdtlll9mWLVts9OjR7hyoVq1aTNNUIDc39tZbb7kMKFy4sHXt2tUaNGhg+/fvt88//9zuuOMO++abb+zf//73Udm2Lqxz5861v//973bLLbcclW1oZ2o7BQsWtFgoUKCA7d6929588013QkSaOnWqC9p79+71+mwFkREjRriLwKmnnprt97333nsWTTrJmzVrZsOHD7fcou87cOBA9//vv/9uK1eutJdfftkmTpxoAwYMsEcfffSobVvbOHToUI7e06pVK3cc6uKYW7RNXdAiqcZ45plnuoAbUrx4cYsl/VTg9ddf74JekyZN7Pbbb3e12nXr1rnA0qZNG5szZ44r6ceDPXv2uPM6shD+yy+/uONC+Rty991325AhQxI7iKxevdquvPJKd6HVhaBy5crh1/r27Ws//PCDCzJHy6ZNm9xflSSPFpW0dKGOFQVn1epeeOGFdEHk+eeft4suusimT5+eK2lRMCtatGjUL2QbN260evXqRe3z/vjjD3eRziqdxx9/vF177bWplv3f//2fXX311a40WKtWLVczOhp8CiSqMeX2caiWBT0i3XTTTW5Z2rzLaf5H0z//+U8XQNQMquAf2QSkAqYCYeRFO9aS0+xHHf8ZXceU5mimO3T+ZkuQS2666Sb9WnAwZ86cbK1/4MCBYOTIkUGNGjWCQoUKBdWqVQuGDh0a7N27N9V6Wn7RRRcFn332WXDGGWcEhQsXDqpXrx5Mnjw5vM7w4cPdtiMfep9069Yt/H+k0Hsivffee0HLli2DUqVKBcWKFQtq167t0hSyevVq955Jkyalet+HH34YnH322UHRokXde//2t78FK1asyHB733//vUuT1itZsmTQvXv3YNeuXYfNL71HaXr22WddHmzdujX82oIFC9xnT58+3f19+OGHw69t3rw5GDhwYNCgQQP3/hIlSgTnn39+sHTp0vA6H3/8cbr8i/yerVu3DurXrx8sWrQoOOecc4IiRYoE/fv3D7+mR0jXrl1d+tJ+/3bt2gWlS5cOfv311wy/X2ZpUJ7Lhg0bguuvvz6oUKGC+/xGjRq5vIgU2j/6/qNHj3bHVlJSUvDll19mmq+h4ysjv//+e3DccccFxx9/fHDo0KHw8oMHD7rPr1evnkuL0nTjjTcGW7ZsSfcZb7/9dtCqVaugePHiLu+bNm0aTJ06Nfx6RsfnCy+8EJx22mnh92jfjRkzJl1e6W+kl156yb0vOTk5KFu2bHDNNdcEa9euzfA40vIOHTq4/8uVK+eOkT/++CPICb1Xn5fd/F+5cmXQpUuXoEyZMi7fTj/99GDGjBnpPlfHto6vqlWrumvDySefHDz44IMu37Oye/dut79OOeWUbH2XjPJx9uzZwaWXXhqccMIJbttVq1YNbrvtNvfZkdatW+fOXR0bWq9SpUruvA8dr7Jw4UJ33GtfaJ+cdNJJQY8ePVJ9jrava4MoL9Me/6FzK6PrlUyZMiW8z5WvV1xxRbBmzZpU62R1/mZHroVcNbGoVJLdaqKqapMnT7ZLL73UNSWo/XnUqFGuKUHVzkiqxWi9nj17un6PZ555xvURnH766Va/fn3r3Lmzi9xqerjqqqvswgsvzHG1Wk1tF198sTVq1MhGjhzpSv3arqq+Wfnggw9c26u+u/oUVD0dN26cqzEsWbIkXRuxahDVq1d331WvP/XUU1ahQgVX8s0OfVeVAF999VVXbQ/VQk455RQ77bTT0q3/008/uQEGambUdjds2GD/+te/rHXr1rZixQrXVly3bl33ne+55x7XNHHOOee490buy82bN7vvqdqmSp4VK1bMMH3q+1JNVPtJzYv58+d321Ozl0qB2l5GlAa9rn1YtWrVcPNS+fLlXZ6q8177Q02V+h5qbtIxsG3bNuvfv3+qz5o0aZJr1tN30X487rjjzIeOoU6dOtnTTz/t8krHmqjPT6XdHj162K233upq4Y8//rh9+eWX7ngJ1S60jvaR3jd06FB3jGqdd99919VyMvL++++7Y1jNLqFjQueEPjft94wUSs8ZZ5zhji3tZ+0LvU/bjCzZHjx40Nq3b29nnXWW6z/TMawS/MknnxyVGldG+a/zS+eEan1qllGn8UsvvWQdO3Z0tWflc6iErGPz119/dfl84okn2hdffOHyT01SY8aMyXS7ajZXX4JqITrufOi4UhqUD2XLlrUFCxa483nt2rXutZAuXbq479SvXz93jqsGoX23Zs2a8HMN8tHxq++r/NfAHJ23mdH3Vf6oX1DHlfZlZueZqO932LBh7pqi66laY5RWNT2m3efZPX8zFOSC7du3uyipkk12qBSs9W+44YZUywcNGuSWf/TRR+FlKqVpmUoIIRs3bnQlGZWeMioFRcpuTUQlJz3ftGlTpunOqCZy6qmnupKoSvwhy5YtcyUwlcrTbk+l6UidOnVyJZXDCZUgRSWlNm3auP9VOlMpaMSIERnmgWp2aUtwWk/5p5pgZKkpo1pWqCSj1yZMmJDha5E1EZk1a5Zb//777w9++uknV6Lu2LFjkB0Z1QxUCtfnPffcc+Fl+/fvD5o3b+4+e8eOHeHvpfVUw9Mx4ru9SKHjIlRiVo1YzyNrE/Luu++mWr5t2zZXizjrrLOCPXv2pFo3slaT9vhUCVHpz6oknbYErbzQMagaS+S2Zs6c6da75557Um1PyyL3vTRp0sTVDKJRE8ko/3W8NmzYMFVLg/KhRYsWQa1atcLL7rvvPve53333Xar3DxkyJMifP3+6Unakxx57zG3/tddey1b6M6qJpK1xyKhRo4J8+fIFv/zyS7imlNG1JpLSoHV0XmUlsiYSmaaXX345y+vVzz//7PLjgQceSLXeV199FRQoUCDV8qzO3+zIldFZO3bscH9LlCiRrfXffvtt91edXpFCpc+0fSdqIw+VjkXRvU6dOq6UHS2hqD1jxoxsd3SqZKTRTCoRR5Z2VZv561//Gv6ekVSLiKTvpVJCKA+zQ6VYDUtcv369K/Xrb2YlW5UE1YYeKoFqWyphK/9UE8oufY5KutmhEphKVardqOakdl/VRnwpH9U5qhJ6iEr7Kq1pSPCnn36aan2VEnWMREOoRqsOd1FpVEPItX9TUlLCD9WKte7HH3/s1lOpVO9RKTRtu3dWQzV1HO7atcu9P7sWLVrkSr4333xzqm2pj0w11Iz6IjM6DqN1PqXNf9UOdJyqxKw8CeWZjkXViDSyUDWPUP4qLWXKlEmVv23btnXH7+zZs6N2HcpIkSJFwv9rP6SkpLgaua73Kt2H1lEfj87BrVu3Znk9mTlzphtxFW2q0eg6pTyNzCedJ+rDCx2HPudvWrkSRDTsNPJEOxyNPtCFrWbNmqmWKwOU+Xo9kqq0aekgy2wH+rjiiitcdVvVQlX1VO1TdTurgBJKpy7IGTXPaKfqQMzqu+h7SE6+i5rrdKK8+OKLblSWqr1p8zJE6Q91DutA0pBHneDLly+37du3Z3ubqmbnpHNUzSQKrAqyY8eOdU12vpTPSn8oGEbmcej1SGruihYFqcgLky54yjd9H+Vj5EPrhjpGNcpGNEIxJxQIateu7Zoe1Kyn5jA1f2Ulq+NQQSRt/ijQpA2y0Tyf0ua/miF1EVbTS9o8C43CC+Wb8lffN+16CiKR60XjOpQRNUeFCoUqFJQvX941r0nofNF5pKbGd955x10r1Hz00EMPucJciN6jYKoRjzrnOnTo4Jr59u3bZ9GgfFKe6rxIm1dq/kybTzk9fyPlSp+Idp7aur/++uscvS+7k2cya9/Mzp1/M9uGSjWRVLpQKUcRXCU3Hci6SJ933nmuPd+3jTWa3yVEB7FK+OpTUukx7WSlSGpf1cmri9F9993nTg5djNVunJOhpZEltOxQqS10IGvuTmQt4mjLaVqzEjqmQ0FaeaYAouCdkSOtAemzFXhnzZrlLlJ66OKjIfPa39EQrWM5u/kfOs4GDRrkah4Zicxf1fLuvPPODNdTgM2MAmboeFNfS07pmqBtq+Y0ePBg93nFihVztSQFlsjzRefPJZdc4vobta90jqkvSjUuDS3WdeeVV16xefPmuf5iraNzUH1PWnakQ6GVFm1Dx0dG+zPt5x/JOZFrHevqlNYcEHWmNm/ePMt1NQxYmaBoGipNijoD1VEazck1KmHpM9NKWzoTXVzVoamHhgfqAqxhgQosoZJQ2u8hq1atSvfat99+60ogOgiPBjVfaYCB0qxaU2Z0IJ977rmucziS8kTpC4nmbFjVvlR1VjOkmgJUSlPHqWpMPpTPqjnpmImsjSiPQ68fDapZaJDHCSecED5O1fmsjmjVWrM6MbVeKAhlVkvMjEqMukDpoe+s2omaA3WhyuizIo9DFXoiaVmsJ6uFhgarCTKj8yhtvinfD7deRs4++2x3vmsI/F133ZXjYKng891337lgraAd8n4mTYtKq5rg9dC1TPONFCSee+658Dqa86SHOsE1AOaaa66xadOmpZoD4kPbVsFTtb6sAusxNWNdJQddMJU5CgZpqXqv0SKh5hhJO9IiNKlLbbnRosxWNVQXoZDQxKNIKn2kFZp0l1kVVHNhtI4OushApQuHai+h73k0KDCoZqFRQWoGzIxOpLS1HLU7h9qgQ0LBLqOAm1MqxalZQPmifarRKhqt5VuVVz6qqUA1w8j5BxqJohJXqLkhmjQiTLPldVyoIBEKsmqDVolVeZ+W0hTKP/ULqQlMpdO0E0CzqnWqnyCSgqb62CSz/NMvM6gGM2HChFTrqJSqpo1onk8+lDaNrlMg1LmX2RyvUP6qIKqSe1rKW+VxZjTvQceevrP+ZpTPusBrxFVGQkEn8n1BEISvWyEavZV2n+o6o/0dyn81Dabd/uGuJzmhlgilV81labej52mPoyORazURZaIirfoWVGqLnLGuIXqhIZnSuHFjd1FRzUUHhi4C2rG66KgaqgtktKiUrgNKJWF1xOoAGD9+vIvekR3L6gRWc5ZOOJXc1BTz5JNPunZplXAy8/DDD7v2a9W+NAQ5NMRXna9ZNTMdKV1cNIs1OzVEfTfVDFQrUGlLTTFpJ45p/6k/ShcinQwKKhoCmtP+BVXnlW9q6w4NOVZzjC4iKkmrVpJTGiqqC5COn8WLF7ugpBqWhq+qIHIkHamigBoqPaoUrOG8Ol4VuFTK1CCBEB2req7goGYnBQuVsFUS1Xt0wdFwdDXxqi9KhSrVwFRzVCl52bJl7hjMrGlK6ytwqUahY081Zh1PugBF1tojaftqo9c+VvrUdBga4qu80rDpWHviiSfceaSflOnVq5c7/pRGBQwNn1W+iH7Z4o033nDHbWgYv2q2Om61zzVMNrIGnVbolzFUI1ALgvaFClnal2p60nVG16OMqPlK54Ga3XRMaB9Onz49XV+RaitqrVDAU21bkwBVKNX3CbUKaP/qPNB1R5+pfhrNQtdnRqNwqc+8//773dBn5YmumzoPNNxcadE5o+8RFUEu09C8Xr16uYk1moSjYY6awDdu3LhUw/s02VDDUjVxsGDBgm5yT1aTDQ83tDSzIb6hSYQa/qj01KlTxw0VTTtkThMGNUS5SpUqbj39veqqq1INNcxssuEHH3zgvqMm8Wh44yWXXJLpZMO0Q4j1WZGT6rIzxDczmQ3x1VDoypUru/QpnXPnzs1waK6GsWoCnYYIZjTZMCORn6Ohttpfmvyk/RtpwIABbtiztp2VzPa3JhtqopYmxmn/aLho2v2Q1TGQ1fZCE7s0jFP7T99Vx/D8+fMzfd+///1vNyRWeapjXOm58847g99++y3Vem+88YYbxho6Ns4880w3mTCzIb6vvPKKm6CmIbv6nieeeGLQu3dvN7ntcJMNX3zxRTdUV8O3Nekuq8mGaWU2mc13smFGfvzxRzfsXUPSdc5rot7FF1/svnPaSZ66FtSsWdPlgfa58vCRRx5xw5mzI5SPygcdzzr+NRHvk08+yTIfdd62bdvWDR3Xdnv16uWG7EeeDykpKUHfvn3dpEblgSYOayi3JnuGLFmyxF0/tP9CE1L1XTXhLxpDfEM0wVgTnZUOPZQmpW3VqlXhdbI6f7Mj3/9PKAAAOZanfgoeABBdBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALzFz30go6hIk6NzD3VEx+b542KdBGQiKSl6v5GG6EqO06s1NREAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4K+D/VkTLt2+NsGpVyqZbPuHF2TbgwZds1sT+1qpprVSvTXzlc7v1gWm5mEqELF600P7z7NO2YsU3lrJpkz065nE7t03bWCcLEaY9P9UmT3raUlI2We06p9iQu4ZZw0aNYp2shEQQiQNnX/uw5U/KF35er2YVe3tCP3v1/S/Dy56ePsfuGz8z/Hz33gO5nk78ac+ePVa79inWoVMXG3hbv1gnB2m8+87b9shDo+zu4SOsYcPGNnXKZOvTu6fNmPmulS2bvrCGI0MQiQMpW3emej6oRwP7cc0m+2zx9+Fle/butw2bf49B6pDW2ee0cg/EpymTJ1nnSy+3jp26uOcKJrNnf2Kvvzrdeva6MdbJSzgxDSIpKSn2zDPP2Ny5c239+vVuWaVKlaxFixbWvXt3K1++vOU1BQvktysvPMPGPvdRquVXXNjULd+weYe9PftrGzXxHdtDbQRI5cD+/bZyxTfWs1fv8LKkpCRr1qyFLV/2v5o9EiCILFy40Nq3b29Fixa1tm3bWu3atd3yDRs22NixY+3BBx+0WbNmWdOmTbP8nH379rlHpODQQcuXlN+ORX87t5GVLlHEnntzfnjZi+8ssjXrtti6TdutYa0qdn//Dla7WgW7ctBTMU0rEG+2bttqBw8eTNdspeerV/8Us3QlspgFkX79+tlll11mEyZMsHz5/tcfIEEQ2E033eTWUS0lK6NGjbIRI0akWpa/4hlWsPKZdizq1rGFzZqzwgWMkGdenRP+/5sffrN1KTvs3X/fatWrlrPVa1NilFIAiOEQ32XLltmAAQPSBRDRMr22dOnSw37O0KFDbfv27akeBSqebseiEyuXsfPOqmPPvv5Flust/Opn9/fkE/Jecx+QlTKly1j+/Plt8+bNqZbrebly5WKWrkQWsyCivo8FCxZk+rpeq1ix4mE/p3DhwlayZMlUj2O1Keu6vzW3jVt+t3c++ybL9RrXqer+rk/5X20FgFnBQoWsbr36Nn/e/1owDh06ZPPnz7VGjZvENG2JKmbNWYMGDbIbb7zRFi9ebG3atAkHDPWJfPjhhzZx4kR75JFHLK9Q7atrh2Y2deZ8O3jwUHi5mqyuuKCpzfr8G9u8bZc1rH28PTSwsxu59fX3v8U0zXnV7t277L9r1oSf//rrWlv17UorWaqUVa5cJaZpg9l13XrYsLsGW/36DaxBw0b23JTJblh2x06dY520hBSzINK3b19XvRw9erQ9+eSTrjNMVBU9/fTT7dlnn7XLL7/c8go1Y51Y+Tib/Pq8VMsPHPjDvXbL1edasSKFbO2Grfb6h0vtwadmxSyted2Kb762Xtd3Cz//58MPur+X/K2jjXzgz/8RO+dfcKFt3bLFnnx8rJtsWOeUuvbkv56ysjRnHRX5AvVix9iBAwfccF9RYClYsOARfV6RJrdEKWU4GjbPHxfrJCATSRGTXhFfkuN0Vl9cJEtBo3LlyrFOBgAgh/gBRgCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwli8IgsASzN4/Yp0CAIiu5AIWl6iJAAC8EUQAAN4IIgAAbwQRAIA3gggAwBtBBADgjSACAPBGEAEAeCOIAAC8EUQAAN4IIgAAbwQRAIA3gggAwBtBBADgjSACAPBGEAEAeCOIAAC8ZeteWcuXL8/2BzZq1Mg/NQCAxLs9blJSkuXLl88yWzX0mv4ePHjQYo3b4wJINMlxenvcbCVr9erVRz8lAIDErIkca6iJAEg0yQUSqGN9ypQp1rJlS6tSpYr98ssvbtmYMWNsxowZ0U4fACCO5TiIjB8/3m6//Xa78MILbdu2beE+kNKlS7tAAgDIO3IcRMaNG2cTJ060v//975Y/f/7w8qZNm9pXX30V7fQBABIpiKiTvUmTJumWFy5c2Hbt2hWtdAEAEjGIVK9e3ZYuXZpu+bvvvmt169aNVroAAMeAHPf3qz+kb9++tnfvXjc3ZMGCBfbCCy/YqFGj7Kmnnjo6qQQAJM4Q36lTp9q9995rP/74o3uuUVojRoywnj17WjxgiC+ARJNcIAHniezevdt27txpFSpUsHhCEAGQaJLjNIh4J2vjxo22atUq979+7qR8+fLRTBcAIBE71n///Xe77rrrXBNW69at3UP/X3vttbZ9+/ajk0oAQGIEkRtuuMHmz59vb731lptsqMfMmTNt0aJF1rt376OTSgBAYvSJFCtWzGbNmmVnn312quWfffaZnX/++XExV4Q+EQCJJrlAgtREypYta6VKlUq3XMvKlCkTrXQBAI4BOQ4id999t5srsn79+vAy/X/HHXfYsGHDop0+AMCx3pylnznRCKyQ77//3vbt22cnnniie75mzRr3sye1atWyJUuWWKzRnAUg0STHaXNWtpLVsWPHo58SAMAxh5tSAcAxIDmRbkoFAIDkOLbpJlSjR4+2l156yfWF7N+/P9XrW7ZsIWcBII/IcU1EP7T46KOP2hVXXOFmqGukVufOnS0pKcn9KCMAIO/IcZ/IySefbGPHjrWLLrrISpQo4e4tElo2b948e/755y3W6BMBkGiSE6VPRHNCGjZs6P4vXrx4+PeyLr74YvdTKACAvCPHQaRq1aq2bt06979qIO+99577f+HChW6uCAAg78hxEOnUqZN9+OGH7v9+/fq5WeqaZNi1a1e7/vrrj0YaAQCJOk9E/SBffPGFCySXXHKJxYNE6ROZ9vxUmzzpaUtJ2WS165xiQ+4aZg0bNYp1svD/sX/iVyLum+RE6RNJq1mzZm6E1llnnWX/+Mc/opMq2LvvvG2PPDTKet/c16a9/JrVqXOK9end0zZv3hzrpIH9E9fYN8fojPVly5bZaaed5uaRxFoi1ESuufIyq9+god119z3u+aFDh6xdm9Z21dXXWc9eN8Y6eXke+yd+Jeq+SU7Umgii78D+/bZyxTfWrHmL8DLNw2nWrIUtX/ZlTNMG9k88Y9/kPoJIHNq6baur0eneLZH0PCUlJWbpwp/YP/GLfZMHg8iePXvs888/txUrVqR7be/evfaf//wny/frJ+l37NiR6qFlAICjL9utbOo8z8qmTZtyvPHvvvvO2rVr536DS/cr0S13p02bZpUrV3avayJjjx493PDhzIwaNcr9FEukvw8bbnffc+z+BEuZ0mUsf/786ToC9bxcuXIxSxf+xP6JX+ybOK6JfPnll1k+1q5da61atcrRxgcPHmwNGjSwjRs32qpVq9zPqLRs2dIFlewaOnSoCzaRjzsGD7VjWcFChaxuvfo2f97c8DJ1Ds6fP9caNW4S07SB/RPP2DdxXBP5+OOPo75xzS/54IMPXAlBjzfffNNuvvlmO+ecc9z2ihUrdtjP0Cz5tDPlE2F01nXdetiwuwZb/foNrEHDRvbclMmu6a9jp86xThrYP3GNfZO7YjpoTDu2QIH/JUFNWuPHj7dbbrnFWrduHRc/5hgr519woW3dssWefHysmzBV55S69uS/nrKyVMnjAvsnfrFv8tCdDc8880z30ynXXXddutcUSKZOneo6ynM69yQRaiIAEIl5Ipn8DtcLL7yQ4WuPP/64XXXVVZaAd+8FgITBPdYB4BiQTE0EAJBovILIZ599Ztdee601b97cfv31V7dsypQpbtIgACDvyHEQmT59urVv396KFCni5oeEZodrfga/4gsAeUuOg8j9999vEyZMsIkTJ1rBggXDyzVJcMmSJdFOHwAgkYKIZpZnNDO9VKlStm3btmilCwCQiEGkUqVK9sMPP6Rbrv6QGjVqRCtdAIBEDCK9evWy/v372/z5890M899++81NChw0aJD16dPn6KQSABCXcjzyeMiQIe4Hzdq0aWO7d+92TVv67SoFEc0+BwDkHd6TDffv3++atXbu3Gn16tWz4sWLW7xgsiGARJMcp5MNmbEOAMeA5DgNIjlO1rnnnuv6QjLz0UcfHWmaAADHiBwHkVNPPTXV8wMHDtjSpUvt66+/tm7dukUzbQCARAsio0ePznD5vffe6/pHAAB5R9T6RNTJrvuDbNmyxWKNPhEAiSY50X/Fd+7cuZacnBytjwMAHANyHNs6d059n2JVZNatW2eLFi2yYcOGRTNtAIBECyL6jaxISUlJVqdOHRs5cqS1a9cummkDACRSn4judT5nzhxr2LChlSlTxuIVfSIAEk1yIvSJ5M+f39U2+LVeAIBXx3qDBg3sp59+IvcAAH43pdKPLc6cOdN1qO/YsSPVAwCQd2S7T0Qd5wMHDrQSJUr8780RP3+ij9Fz9ZvEGn0iABJNcoFjPIioP0Q1j5UrV2a5XuvWrS3WCCIAEk3ysR5ENJR3/fr1VqFCBYt3BBEAiSa5QAL0iWT1670AgLwnRzURTTQ8XCDht7MAIO/URHKUrBEjRqSbsQ4AyLvoEwGAY0Dysd4nQn8IAMA7iCTgrdgBAEco2xWkQ4cOHem2AAAJJmo3pQIA5D0EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwFqe3OQEQC1dMWhTrJCATM3o1tXhETQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCIAAG8EEQCAN4IIAMAbQQQA4I0gAgDwRhABAHgjiAAAvBFEAADeCCJxbNrzU+2Cv55nZzRpaNdceZl9tXx5rJOECOyf+NOlcSWb0aup9Wx2Qoav33N+Lff6WdVK53raEhVBJE69+87b9shDo6z3zX1t2suvWZ06p1if3j1t8+bNsU4a2D9xqWa5ota+bnlbvXl3hq//rUFFC4JcT1bCI4jEqSmTJ1nnSy+3jp262Mk1a9rdw0dYcnKyvf7q9FgnDeyfuJNcIMluP6+GPTH7Z9u572C616sfV8Q6NKxo42avjkn6EhlBJA4d2L/fVq74xpo1bxFelpSUZM2atbDly76MadrA/olHvVueaIvXbLdlv/2e7rVC+ZNs4Hk17F9frLFte/6ISfoSGUEkDm3dttUOHjxoZcuWTbVcz1NSUmKWLvyJ/RNfzqlRxmqUK2r/Wbg2w9d7Nj/Bvt2w0xb8si3X05YXEEQAHLPKFStoNzQ/0R79eLUdOJi+w+PME0tZoyol7Km5/41J+vKCArFOANIrU7qM5c+fP10nrZ6XK1cuZunCn9g/8ePkcsWsdNGCNrpTvfCy/En5rH7l4nZR/Qr2zsqNVqlkYXu+W5NU7xvc9mRbsX6n3f3WqhikOrEQROJQwUKFrG69+jZ/3lw7r01bt+zQoUM2f/5cu/Kqa2OdvDyP/RM/lv+2w/q98nWqZbe2rm5rt+21V5etsx17/7BZKzelen3cpQ3smXn/tQVraN6KBoJInLquWw8bdtdgq1+/gTVo2MiemzLZ9uzZYx07dY510sD+iRt7DhyyNVv3plq298Ah+33vH+HlGXWmb9q53zb+vj/X0pnICCJx6vwLLrStW7bYk4+PtZSUTVbnlLr25L+esrI0l8QF9g/wp3xBkHjTb/Yyig/wcsWkRbFOAjKhmfbxiNFZAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4yxcEQeD/dhxt+/bts1GjRtnQoUOtcOHCsU4OIrBvAIJI3NuxY4eVKlXKtm/fbiVLlox1chCBfQPQnAUAOAIEEQCAN4IIAMAbQSTOqcN2+PDhdNzGIfYNQMc6AOAIUBMBAHgjiAAAvBFEAADeCCIAAG8EkTj2xBNP2EknnWTJycl21lln2YIFC2KdJJi5nzo544wzrESJElahQgXr2LGjrVq1KtbJAmKCIBKnXnzxRbv99tvdENIlS5ZY48aNrX379rZx48ZYJy3P+/TTT61v3742b948e//99+3AgQPWrl0727VrV6yTBuQ6hvjGKdU8VNp9/PHH3fNDhw7ZCSecYP369bMhQ4bEOnmIsGnTJlcjUXBp1apVrJMD5CpqInFo//79tnjxYmvbtm14WVJSkns+d+7cmKYN6ekHGOW4446LdVKAXEcQiUMpKSl28OBBq1ixYqrler5+/fqYpQvpqYZ42223WcuWLa1BgwaxTg6Q6wrk/iaBxKG+ka+//to+//zzWCcFiAmCSBwqV66c5c+f3zZs2JBquZ5XqlQpZulCarfccovNnDnTZs+ebVWrVo11coCYoDkrDhUqVMhOP/10+/DDD1M1m+h58+bNY5o2mGksigLIa6+9Zh999JFVr1491kkCYoaaSJzS8N5u3bpZ06ZN7cwzz7QxY8a4IaQ9evSIddLyPDVhPf/88zZjxgw3VyTUT6W7HBYpUiTWyQNyFUN845iG9z788MPuInXqqafa2LFj3dBfxFa+fPkyXD5p0iTr3r17rqcHiCWCCADAG30iAABvBBEAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiSFiaPa5b14b85S9/cT/bnts++eQTN8t927ZtufZd4zWdSDwEEeQqXex0odJDPzRZs2ZNGzlypP3xxx9Hfduvvvqq3XfffXF5QT3ppJPc76MBxxp+gBG57vzzz3e/M7Vv3z57++233Q8aFixY0IYOHZrhXR4VbKKBOw8C0UdNBLmucOHC7r4o1apVsz59+rjb/r7xxhupmmUeeOABq1KlitWpU8ct/+9//2uXX365lS5d2gWDDh062M8//xz+TN0JUr98rNfLli1rd955p/vJ9khpm7MUxAYPHuzuXa80qVb09NNPu88999xz3TplypRxNZLQDyvqJ/lHjRrlfv5dv9jbuHFje+WVV1JtR4Gxdu3a7nV9TmQ6fei79ezZM7xN5cljjz2W4bojRoyw8uXLW8mSJe2mm25yQTgkO2kHcoqaCGJOF7TNmzeHn+u+KboIvv/+++75gQMHrH379u5eKp999pkVKFDA7r//flejWb58uaup/POf/7Rnn33WnnnmGatbt657rvt9nHfeeZlut2vXru6e9fp1ZF1QV69e7W5NrKAyffp069Kli61atcqlJfQT77oIP/fcczZhwgSrVauWuyHVtdde6y7crVu3dsGuc+fOrnZ144032qJFi2zgwIFHlD+6+OumVy+//LILkF988YX77MqVK7vAGplvycnJrilOgUu3DdD6CsjZSTvgRb/iC+SWbt26BR06dHD/Hzp0KHj//feDwoULB4MGDQq/XrFixWDfvn3h90yZMiWoU6eOWz9ErxcpUiSYNWuWe165cuXgoYceCr9+4MCBoGrVquFtSevWrYP+/fu7/1etWqVqitt+Rj7++GP3+tatW8PL9u7dGxQtWjT44osvUq3bs2fP4KqrrnL/Dx06NKhXr16q1wcPHpzus9KqVq1aMHr06CC7+vbtG3Tp0iX8XPl23HHHBbt27QovGz9+fFC8ePHg4MGD2Up7Rt8ZOBxqIsh1uqVs8eLFXQ1Dpeyrr77a7r333vDrDRs2TNUPsmzZMvvhhx/cDaAi7d2713788Ufbvn27rVu3LtW9VlRb0Q29MrvTwdKlS90tiHNSAlcadu/ebX/9619TLVeTUZMmTdz/K1euTHfPl2jcjfKJJ55wtaw1a9bYnj173DZ1j5lIqk0VLVo01XZ37tzpakf6e7i0Az4IIsh16icYP368CxTq99AFP1KxYsVSPdcFULcLnjp1arrPUlOMD587ECod8tZbb9nxxx+f6jX1qRwt06ZNs0GDBrkmOgUGBVPdrGz+/Plxn3YkPoIIcp2ChDqxs+u0006zF1980SpUqOD6JzKi/gFdVFu1auWea8jw4sWL3XszotqOakGffvqp69hPK1QTUqd2SL169dwFV7WBzGow6o8JDRIImTdvnh2JOXPmWIsWLezmm28OL1MNLC3V2FRLCQVIbVc1PvXxaDDC4dIO+GB0FuLeNddcY+XKlXMjstSxrg5wdR7feuuttnbtWrdO//797cEHH7TXX3/dvv32W3fBzWqOh+Zl6B72119/vXtP6DNfeukl97pGjmlUlpreNm3a5EryqgGoRjBgwACbPHmyu5AvWbLExo0b556LRkR9//33dscdd7hOed2LXR3+2fHrr7+6ZrbIx9atW10nuDroZ82aZd99950NGzbMFi5cmO79aprSKK4VK1a4EWLDhw+3W265xZKSkrKVdsDLYXtNgKPUsZ6T19etWxd07do1KFeunOuIr1GjRtCrV69g+/bt4Y50dZqXLFkyKF26dHD77be79TPrWJc9e/YEAwYMcJ3yhQoVCmrWrBk888wz4ddHjhwZVKpUKciXL59Ll6hzf8yYMa6jv2DBgkH58uWD9u3bB59++mn4fW+++ab7LKXznHPOcZ+ZnY51rZP2oUEF6hTv3r17UKpUKffd+vTpEwwZMiRo3Lhxuny75557grJly7oOdeWP3htyuLTTsQ4f3GMdAOCN5iwAgDeCCADAG0EEAOCNIAIA8EYQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAGC+/h93nZYy/ozIfgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "DT = DecisionTreeClassifier()\n",
    "DT.fit(x_train, y_train)\n",
    "y_pred_dt = DT.predict(x_test)\n",
    "evaluate_model('Decision Tree Classifier', y_test, y_pred_dt)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 704,
   "id": "46e3f17b-7490-4341-8514-0c931fedd79f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Support Vector Machine\n",
      "Accuracy: 0.8333\n",
      "Precision: 0.8502\n",
      "Recall: 0.8333\n",
      "F1 Score: 0.8360\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       0.92      0.80      0.86        76\n",
      "           2       0.72      0.89      0.80        44\n",
      "\n",
      "    accuracy                           0.83       120\n",
      "   macro avg       0.82      0.84      0.83       120\n",
      "weighted avg       0.85      0.83      0.84       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAGJCAYAAACtjcXlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALppJREFUeJzt3Qd4VNUa7vEvCSGEklBCBwGlSBMQECmCAhJsVBuKNAWliQJSjiJFPFhQUECwAV5EDlhR9IgIiIUOgnJEuvReghASQtj3+ZZ35k6GSUjImgyZ/H/PM4Rpe9Zu691rr7VnQhzHcQQAgEwKzewEAABQBAoAwAoCBQBgBYECALCCQAEAWEGgAACsIFAAAFYQKAAAKwgUAIAVQR8o27Ztk1atWkl0dLSEhITIF198YXX6f/31l5nuzJkzrU43O7v11lvNzZYzZ87IY489JiVKlDDL+qmnnrI2beBqNXPmTLO9r127Nsv3uas6UHbs2CGPP/64XHvttZInTx6JioqSxo0byxtvvCHnzp3z62d37dpVfv/9d3nxxRdl1qxZUq9ePQkW3bp1MxucLk9fy1HDVJ/X2/jx4zM8/QMHDsioUaNkw4YNEkj//ve/zc7Vu3dvsw4feeQRv37e+fPnzbZZp04ds2wLFiwo1atXl169esmff/4pwUSXbXoOsl5//XWzHX3//fepvubdd981r/nyyy+tlvGjjz6SiRMnSlYqX768mZeWLVumOa/prfBzDMfPFixY4ERGRjoFCxZ0nnzySeedd95xJk+e7Dz44INOeHi407NnT799dnx8vH5PmfPss8/67TMuXrzonDt3zrlw4YKT1bp27erkypXLCQsLc+bOnXvJ8yNHjnTy5MljlsGrr76a4emvWbPGvHfGjBkZel9iYqK52dKgQQOncePGTla5++67zTLt3LmzM2XKFGfixInOE0884ZQpUybDy+Jqly9fPrMdXc7+/fud0NBQp3v37qm+5tZbb3WKFCninD9/3moZ77rrLqdcuXJOVtLP031H5/ngwYOXPN+sWTP3vqX7iT/MmDEj3dO3vc9dKb+2UHbt2iUPPviglCtXTv744w9z1NezZ0/p27evzJkzxzymR37+cvToUfNXjzD9RY9QtNUVFhYmgRARESEtWrQwy9PXkd1dd92VZWWJj483f3Pnzm1uthw5csTqOrxw4YJphfiyZs0aWbBggYwZM8a0hvr06SMDBgyQqVOnmtOb99xzj2R3+n2wGT0zUKpUKbntttvks88+k8TExEue379/v/z4449y3333SXh4uFzt0toGXPQsSv78+WXu3LkpHt+3b5/89NNPWbpvXY7tfe6K+TOt9KhOP+KXX35J1+uTkpKcMWPGONdee62TO3duc5QwfPhwJyEhIcXr9HE9avnpp5+c+vXrOxEREU6FChWcDz74IMXRuX625811lKNHZL6OeFzv8fTdd9+Zo+Po6GhzNFe5cmVTJpddu3b5PIpfvHix06RJEydv3rzmvW3atHH++OMPn5+3bds2UyZ9XVRUlNOtWzfn7Nmzl11e+h4t08yZM80yOHnypPu51atXm2l/+umnl7RQjh8/7gwaNMipUaOGeX+BAgWc1q1bOxs2bHC/ZunSpZcsP8/51CO06tWrO2vXrnVuueUW0wodMGCA+zm9uXTp0sWUz3v+W7VqZVquevTrS2pl0GWuDh8+7PTo0cMpVqyYmf4NN9xgloUn1/rR+Z8wYYLZtvSo89dff/X5mXPmzDGv/+GHH9K1/NO7Hen9vn37Oh9++KHZhrS8N954o7Ns2TKf7928ebNz3333mXVTuHBh07rXlnBm9pdvv/3WqVu3rvlsXRa+lm1arRXXEbNuU97Gjx9vntN9UiUnJ5vPqFatmvk8XUe9evVyTpw4ccl7v/nmG6dp06ZO/vz5zfzWq1fPmT17tnlOt6PU9mN/bQOey0z3xZtuuinFc6+88oppienZFu8WxMaNG80y1PpIy1O8eHHTqjt27Ngln7Fv3z5T9pIlS5r1V758eVNnuloaruX9888/O08//bQTExNj6pN27do5R44cSTEt733Ote/omYuxY8c6pUuXNuVp3ry5qW+8rVy50omNjTX1j+7Luj70czPKr4GiM6ErL710RehCuPfee82pBq2I9L4uQO+VXaVKFbOy/vWvf5lTaLpzhoSEOJs2bXKvWNdO06lTJ2fWrFnO559/nqGKQKelK1o38DfeeMOZNm2aM3jwYLOw0wqURYsWmVNRWnHoxjd69GizMRQqVMhdGXp+Xp06dZwOHTo4b731lvPYY4+Zx4YMGZKu5aWBcPr0adP8fv/9993PPfXUU87111+fYmdy0R3guuuuc4YNG+a8/fbbplLSdaWB5qrcDx06ZB7X92pFoMtPbzt27DDP68ZbokQJp2jRok7//v3NdL744gufG7cGnZ4u0vB3nRrUZanT1mmmRsugz+uyq127trsMZ86cMaczq1atak6b6s725ptvmmDTaeopKu/1oxWbbosvvfSS2S52797t8zOXL19uXq+nYrXCthkoGuA6L7pcX375ZfNe3Xl///33S95bs2ZN55577jHbtp5608ceeeSRK95fKlasaLY/Xee67LXC0WWplYwuN9ey1flPTVxcnNnOOnbseMlzuv/p5+gpYKXbse4Duhz184YOHWq2Vd0GPE+J6X6j+60umxdffNHMh77XNa96QKfrXpebq4yu/dhf24BnoOjn63u3b9/ufk7L8/jjj/s8JTV+/HhTBl3HGjh6kKXrWEPJtWyU7melSpUyAaH7qi6jESNGmPlxHRi6pq/1gwbBpEmTzIGgno69//770xUo+l49iND5HTVqlPk874DUg1+t5xo2bOi89tpr5rUazPrYqlWrnKsiUHTj0xlq27Ztul6vR8f6et2YPGkFro8vWbIkxcrWx3788Uf3Y5rYunPoAnfxVZlmpCJwBdLRo0dTLbevQNENTo+YtCXgogGnR0W603t/nh6leGrfvr05AkpvoCitVFq0aOE+OtTKXoPM1zLQI1h9jfd86PLTHSE9fSiuI0fdEXw957lxq4ULF5rX69HSzp07zdGod8V3uZ3bk1YYOj094nfRikp3Cp22hqxrvvR1euTlfVTni+70rnnTAxY9GNFKzlflk9FA0Zu26Fx0mlpB6/r2fq+2aD316dPHPK7b0ZXuL9pCudI+FBdtNWmZdf92+fPPP830XS13baXofVcrw0U/3/PxU6dOmRaJ9pF5t748K9/U+lD8tQ14bnN6AKT70gsvvGAe11a2Tktblr4CJT4+PtVWr2d9pfWA1ge++kdc8+6afsuWLVMsDw1PDRVdfpcLFA0oz74VPTDWx10HMTrdSpUqmdaJ52fofGgr6/bbb3euij6U06dPm78FChRI1+u/+eYb83fgwIEpHh80aJD5+/XXX6d4vFq1anLLLbe47xctWlSqVKkiO3fuFFtc5+3nz58vFy9eTNd7Dh48aEZF6QiswoULux+/4YYb5Pbbb3fPp6cnnngixX2dr+PHj7uXYXo89NBD8sMPP8ihQ4dkyZIl5q8+llq/S2joP6s+OTnZfJaeK9blt379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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "SVM = SVC()\n",
    "SVM.fit(x_train, y_train)\n",
    "y_pred_svm = SVM.predict(x_test)\n",
    "evaluate_model('Support Vector Machine', y_test, y_pred_svm)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 705,
   "id": "4b51c1fa-0f34-4894-a60e-3fd2f360b96f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Gaussian Naive Bayes\n",
      "Accuracy: 0.9667\n",
      "Precision: 0.9694\n",
      "Recall: 0.9667\n",
      "F1 Score: 0.9669\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.95      0.97        76\n",
      "           2       0.92      1.00      0.96        44\n",
      "\n",
      "    accuracy                           0.97       120\n",
      "   macro avg       0.96      0.97      0.96       120\n",
      "weighted avg       0.97      0.97      0.97       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAGJCAYAAAB2Nm/HAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALlxJREFUeJzt3QmcjfX////XjGUwsmSXIllKhLTYokW0fMpSH1GypE1IoQ8+JUv60EoU2rRIpVKJ+qSSisgWqQ9pTwpRluwa1+/2fP//Z75nzpzhPczMmTnzuN9uh5lznTnnfV3nuq7ne7vOSQiCIDAAADwk+jwIAAAhNAAA3ggNAIA3QgMA4I3QAAB4IzQAAN4IDQCAN0IDAOCN0AAAeMvXofHtt99a69atrWTJkpaQkGBvvvlmlj7/Tz/95J732WefzdLnzcvOPfdcd8sqO3futOuvv94qVqzotvVtt92WZc8d76pVq2bdu3e3eJLV+xdyYWh8//33dtNNN1n16tWtSJEiVqJECWvWrJk98sgjtmfPnmx97W7dutmXX35p9957r02dOtXOOOMMixc6Gegkqu0ZbTsqMLVctwcffDDTz//bb7/Z8OHDbeXKlRZL//nPf1wo9+rVy72H1157bba/5sGDB+3555+3Cy+80MqWLWuFChWy8uXLuwrIE088Yfv27cv2MuRler+03+l4//XXX9Mt10m/bt26lpece+65qceTboULF7YTTzzRbrzxRvvll18snhSM5Yu//fbb9s9//tOSkpKsa9eubkfZv3+/LViwwO644w773//+5w7C7KAT6aJFi+zOO++0Pn36ZMtrVK1a1b2OTiqxULBgQdu9e7fNmjXLOnbsmGbZtGnT3EG7d+/eI3puhcaIESNcbbVBgwbef/fee+9ZVvrwww+tcePGNmzYMMsJej/bt29vc+bMsaZNm9rAgQOtQoUK9ueff9rHH39st9xyiy1evNiefvppy+3Wrl1riYmxqzcqXMeMGWMTJkzIsufM6v0rM6pUqWKjR492P+s8tnr1aps8ebLbV9asWWPFihWzeBCz0Pjxxx+tU6dO7sSqA79SpUqpy3r37m3fffedC5XssnnzZvd/qVKlsu01QrWpWFEYq9X20ksvpQuNF1980S699FKbMWNGjpRF4aWDRjWwrPT7779bnTp1suz5/v77b9eSyKict99+uzsJjBs3zvr165dm2YABA1wL7v3337e8QPtHLKmy8eSTT9qQIUOscuXKWfKcWb1/ZUbJkiWtS5cuae5Ta0OV0k8//dS1TONCECM333yzPl03+PTTT70ef+DAgWDkyJFB9erVg8KFCwdVq1YNhgwZEuzduzfN43T/pZdeGsyfPz8488wzg6SkpODEE08MnnvuudTHDBs2zL12+E1/J926dUv9OVzob8K99957QbNmzYKSJUsGycnJQa1atVyZQn788Uf3N88880yav5s7d27QvHnzoFixYu5vL7/88mD16tVRX+/bb791ZdLjSpQoEXTv3j3YtWvXYbeX/kZlevbZZ9022Lp1a+qyJUuWuOeeMWOG+/+BBx5IXfbHH38EAwYMCOrWrev+/phjjgkuuuiiYOXKlamPmTdvXrrtF76eLVu2DE499dRg2bJlwTnnnBMULVo06NevX+oy3UK6du3qyhe5/q1btw5KlSoV/Prrr1HXL6MyaJvLpk2bguuuuy4oX768e/7TTjvNbYtwofdH6z927Fi3byUmJgYrVqyI+prr1q0LChQo4LZHZuj5mzRpEhx77LFBkSJFgtNPPz149dVXo5Ylcl8R3a/9IWTHjh1ue2o/1bFQrly5oFWrVsHy5ctTH/PNN98EHTp0CCpUqODW/7jjjguuuuqqYNu2bamP0d9rP8nMex++7adPnx6MGjXKPbde4/zzz3f76+FoHfX3r7zySlCwYMGgb9++aZaH9p9wU6ZMCc477zy3rlrnU045JZg4cWK65w7fvzZu3Ojer+HDh6d73Ndff+3KMGHChNT7dIxou1apUsW9xkknnRSMGTMmSElJOew6tYxSZnnttdfc63z44Yep9/30009Br1693PlC+4P2iyuvvDJ135Xvv//e/d3DDz+c7jl1ztSyF198MfW+9evXBz169HD7u8pep06d4Omnn073t+PHj3fLdEzq+GrUqFEwbdq0IDNi1tJQl4nGMdTE96HBzueee86uvPJKV6NTF4Cagmr2vfHGG2keq1aKHtezZ083bjFlyhTXx9+oUSM79dRTrUOHDq6FoVpj586d7ZJLLrHixYtnqvzqOvvHP/5hp512mo0cOdLV2vS6qlEcygcffGAXX3yxW3eNCai7Q81ztQg+//xz190TTi0E1Va0rlr+1FNPuf7z++67z6ucWtebb77ZXn/9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vx84cMDatGnjvuNj/vz5VrBgQRs1apRrsaxatcq1RB566CF79tlnbcqUKXbKKae43/XdDeeff36Gr9u1a1f3Xej6VF+dQH/88Uf3FbgKkRkzZtgVV1xha9eudWUJfXy3TrovvPCCTZ482WrWrOm+TKhLly7uRN2yZUsXbh06dHCtpxtvvNGWLVtmAwYMOKrto5O9vrDo1VdfdYG4cOFC99yVKlVyQRq+3YoUKeK61hRU+nh7PV4B7FN2wIs+5RbIKd26dQvatm3rfj548GDw/vvvB0lJScHAgQNTl1eoUCHYt29f6t9MnTo1qF27tnt8iJYXLVo0mDNnjvu9UqVKwf3335+6/MCBA0GVKlVSX0tatmwZ9OvXz/28du1aNUPc60czb948t3zr1q2p9+3duzcoVqxYsHDhwjSP7dmzZ9C5c2f385AhQ4I6deqkWT5o0KB0zxWpatWqwdixYwNfvXv3Dq644orU37Xdjj322GDXrl2p902aNCkoXrx4kJKS4lX2aOsMRKKlgRynr/ssXry4a0GoFn311Vfb8OHDU5fXq1cvzTjGF198Yd9995378p5we/fute+//962b99uGzZsSPMdIGqN6IulMvrk/5UrV7qvus1MDVtl2L17t1144YVp7lcXUMOGDd3Pa9asSfddJFnxLYiPPfaYa0WtW7fO9uzZ415T330STq2lYsWKpXndnTt3utaP/j9c2QEfhAZynPr5J02a5IJB4xY6wYdLTk5O87tOePpa2mnTpqV7LnWtHIkj+bY4lUPefvttO+6449Is05hIdnn55Zdt4MCBrstNQaDw1JdmLV68ONeXHfGH0ECOUyho0NnX6aefbtOnT7fy5cu78YVo1L+vk2iLFi3c75rCu3z5cve30ag1o1bOxx9/7AbiI4VaOhqEDqlTp447waq2n1ELReMpoUH9kM8++8yOxqeffmpNmza1W265JfU+tbAiqUWmVkgoEPW6atFpjEaTBw5XdsAHs6eQ611zzTVWtmxZN2NKA+EasNZg76233mrr1693j+nXr5+NGTPG3nzzTfv666/dCfZQ11jough9N/p1113n/ib0nK+88opbrpldmjWlrrTNmze7mrpq+Krx33777fbcc8+5E/fnn39uEyZMcL+LZix9++23dscdd7hBdH0vtgboffz666+u2yz8tnXrVjdorQH1OXPm2DfffGNDhw61pUuXpvt7dTVpltXq1avdDK5hw4ZZnz59LDEx0avsgJd0oxxADg2EZ2b5hg0bgq5duwZly5Z1A+fVq1cPbrjhhmD79u2pA98a5C5RokRQqlSpoH///u7xGQ2Ey549e4Lbb7/dDaIXLlw4qFGjRjBlypTU5SNHjgwqVqwYJCQkuHKJBuPHjRvnBuYLFSoUlCtXLmjTpk3w8ccfp/7drFmz3HOpnOecc457Tp+BcD0m8qZJABrE7t69e1CyZEm3br169QoGDx4c1K9fP912u/vuu4MyZcq4AXBtH/1tyOHKzkA4fPAd4QAAb3RPAQC8ERoAAG+EBgDAG6EBAPBGaAAAvBEaAABvhAYAwBuhAQDwRmgAALwRGgAAb4QGAMB8/T/8PQkspe9OEQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gnb = GaussianNB()\n",
    "gnb.fit(x_train, y_train)\n",
    "y_pred_gnb = gnb.predict(x_test)\n",
    "evaluate_model('Gaussian Naive Bayes', y_test, y_pred_gnb)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 706,
   "id": "f2ea3923-dbde-4033-be51-fb80831f83d7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sklearn.neighbors._classification.KNeighborsClassifier"
      ]
     },
     "execution_count": 706,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "KNeighborsClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 707,
   "id": "ef68565e-e675-479c-b08c-3ab37c755e53",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: K-Nearest Neighbors\n",
      "Accuracy: 0.8417\n",
      "Precision: 0.8403\n",
      "Recall: 0.8417\n",
      "F1 Score: 0.8404\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       0.86      0.89      0.88        76\n",
      "           2       0.80      0.75      0.78        44\n",
      "\n",
      "    accuracy                           0.84       120\n",
      "   macro avg       0.83      0.82      0.83       120\n",
      "weighted avg       0.84      0.84      0.84       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGJCAYAAABl4S8zAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALcFJREFUeJzt3Qd4FNX6x/E3QAi9SOgogpQLgqAgCAgBQUGlY8OLVLFQRIoKKlJEQSx0QVFQARU7Cl4RqSK9KlIEQbjSa5AWYjL/5z33P8fdzYZsIMluku/nefZJdmZ29uzs7PnNmXNmN8xxHEcAABCRLMEuAAAgdBAKAACLUAAAWIQCAMAiFAAAFqEAALAIBQCARSgAACxCAQBgEQqXsHPnTrnjjjskf/78EhYWJl999VWKrv+PP/4w633vvfdSdL3pWcOGDc0tpZw5c0YefvhhKVasmNnWTz75ZIqtG+mf7hNDhw697Mf26tUryeV0/brssWPHJD0I+VD4/fff5dFHH5WyZctKjhw5JF++fFKvXj0ZN26cnD9/PlWfu1OnTvLLL7/ISy+9JDNmzJCaNWtKRtG5c2ezo+r29LcdNRB1vt5ee+21ZK//wIED5sOwadMmCaaXX37ZhO7jjz9u3sOHHnooVZ/v2muvlebNmyeYrs+dNWtWadasmVy4cCHRx+r27t27d4J5S5YsMfM+++wzSe++/fbbZFXEepCgr71FixaJHlhdzj4K/7JJCJs3b57ce++9EhERIR07dpQqVarIxYsXZfny5fLUU0/Jr7/+Km+//XaqPLdWlCtXrpTnnnsuoKOBy1G6dGnzPOHh4RIM2bJlk3Pnzsk333wj9913n9e8WbNmmRBOrAILJBSGDRtmKrrq1asH/Ljvv/9eUtKiRYvklltukSFDhkiw6LbUEG7SpIlpbep2vZSpU6fKoEGDpESJEpIRaShMmjQp2Ufoc+fOlfXr10uNGjVSrCz6+dPPAdJBS2HPnj3ywAMPmIpz69atpmXQvXt36dmzp3z00Udm2vXXX59qz3/06FHzt0CBAqn2HHqEoxWEHkEGg4Zt48aNzfb09eGHH8rdd9+dZmXRcFLZs2c3t5Ry5MiRFH0P//77b3NgEqiPP/7YtDhvu+02mTNnTpKBoPt0XFycjBo1SkJBcl9varnmmmukYMGC5kAjJen7kRFCwXGcFDtzErKhMHr0aHM++N1335XixYsnmF+uXDnp06eP18774osvynXXXWcqOz1CffbZZyUmJsZv815bG7Vq1TI7hZ6a+uCDD+wyegSjYaS0RaKVtz5O6RGf+7+/84aeFixYILfeequplPLkySMVK1Y0ZUqqT0GPbuvXry+5c+c2j23VqpVs27bN7/Pt2rXLlEmX076PLl262Ao2EA8++KD85z//kVOnTtlpa9euNaePdJ6vEydOyIABA6Rq1armNenppzvvvFM2b97sdarj5ptvNv9redzTUO7r1NMB2urTo74GDRpIrly57Hbx7VPQClXfI9/X37RpU1NJaIvEH/d0ix5caIvTLYNuczcsunXrJkWLFjXrr1atmrz//vuJnpoYO3as3bf0gCQQn3zyiXTo0MG8nq+//jrJQFC6b2mrWFsLib02T/v375euXbua16Fl01CZNm2a1zJaqb/wwgvmCFv3Ed2vdP9avHhxsl7v9u3b5Z577pGrrrrKvBY9naqvy1NsbKypuMuXL2+WKVSokPkM6GdB6b6qrQTlvie+nxt/8ubNK3379jWt2g0bNiS5vO7P2n909dVXm9eg9cUrr7wi8fHxSfYpLFmyxLw2Lb9ug7feesvv59ulrT/dn93t/9133/ldTvsUtEWunxndLlp/+bbEk1uPzZ8/35Q1Z86cppyB1DtJckJUyZIlnbJlywa8fKdOnfQrwJ177rnHmTRpktOxY0dzv3Xr1l7LlS5d2qlYsaJTtGhR59lnn3UmTpzo3HTTTU5YWJizZcsWs8zmzZudMWPGmMe3b9/emTFjhvPll1/a59F1+BoyZIhZ3qXryp49u1OzZk1n3LhxzpQpU5wBAwY4DRo0sMvs2bPHPGb69Ol22oIFC5xs2bI5FSpUcEaPHu0MGzbMiYyMdAoWLGiW932+G2+80Wnbtq3z5ptvOg8//LCZ9vTTTwe0vXLnzu2cPn3ayZEjh/Puu+/aeU8++aTzr3/9y5bv1VdftfPWrl3rXHfddc7AgQOdt956yxk+fLh5r/Lnz+/s37/fLHPo0CEzXR/7yCOPmO2nt99//93Mj4qKcooVK+YULlzY6d27t1nPV199ZefpzXXy5EmnVKlSzs033+z8/fffZppuS123rjMxWgadr9uuevXqtgxnzpxxzp0751SqVMkJDw93+vbt64wfP96pX7++WefYsWMTvD+V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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn = KNeighborsClassifier(n_neighbors=2)\n",
    "knn.fit(x_train, y_train)\n",
    "y_pred_knn = knn.predict(x_test)\n",
    "evaluate_model('K-Nearest Neighbors', y_test, y_pred_knn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 708,
   "id": "55549f93-cedb-4ef2-a600-0c03af4b303f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
    "from sklearn.impute import SimpleImputer\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 709,
   "id": "706701e7-4387-40c3-9a66-e809f0777b3d",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 709,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 710,
   "id": "e41585ce-78f7-42c9-9b7b-55e824164a5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "classification\n",
       "ckd       248\n",
       "notckd    150\n",
       "ckd\\t       2\n",
       "Name: count, dtype: int64"
      ]
     },
     "execution_count": 710,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['classification'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 711,
   "id": "9e3de928-8f50-45ba-bf4b-03b8b9583a13",
   "metadata": {},
   "outputs": [],
   "source": [
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 712,
   "id": "9e32ddc9-9ac1-4c9c-a4f9-590af286cb10",
   "metadata": {},
   "outputs": [],
   "source": [
    "data[categorical_cols] = data[categorical_cols].apply(LabelEncoder().fit_transform)\n",
    "\n",
    "# Define features and target\n",
    "x = data.drop(['classification'], axis=1)\n",
    "y = data['classification']\n",
    "\n",
    "# Scaling features (X)\n",
    "scaler = StandardScaler()\n",
    "x = scaler.fit_transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 713,
   "id": "df0c5c2a-09cd-49d6-9d6d-6a97a1983635",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_encoders = {}\n",
    "for column in data.select_dtypes(include=['object']).columns:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])\n",
    "    label_encoders[column] = le"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 714,
   "id": "d51d29ab-9839-4362-809c-30f5cbd12267",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.drop('classification', axis=1).values # Replace 'classification' with you\n",
    "y = data['classification'].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 715,
   "id": "0104ea6d-feb9-459e-8b82-678a93c93844",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 716,
   "id": "3b62365b-b798-4f36-9c68-70b9b73a8480",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "    mae = mean_absolute_error(y_true, y_pred)\n",
    "    mse = mean_squared_error(y_true, y_pred)\n",
    "    rmse = np.sqrt(mse)\n",
    "    r2 = r2_score(y_true, y_pred)\n",
    "\n",
    "    print(f\"\\nModel: {model_name}\")\n",
    "    print(f\"Mean Absolute Error (MAE): {mae:.4f}\")\n",
    "    print(f\"Mean Squared Error (MSE): {mse:.4f}\")\n",
    "    print(f\"Root Mean Squared Error (RMSE): {rmse:.4f}\")\n",
    "    print(f\"R^2 Score: {r2:.4f}\")\n",
    "\n",
    "    plt.figure(figsize=(8, 6))\n",
    "    plt.scatter(y_true, y_pred, alpha=0.6)\n",
    "    plt.plot([min(y_true), max(y_true)], [min(y_true), max(y_true)], 'r--')\n",
    "    plt.xlabel('True Values')\n",
    "    plt.ylabel('Predicted Values')\n",
    "    plt.title(f'{model_name} - True vs Predicted')\n",
    "    plt.grid(True)\n",
    "    plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 717,
   "id": "4ac95268-28bf-44f7-99d7-649b344e98ac",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model: Random Forest Regressor\n",
      "Mean Absolute Error (MAE): 0.0617\n",
      "Mean Squared Error (MSE): 0.0300\n",
      "Root Mean Squared Error (RMSE): 0.1731\n",
      "R^2 Score: 0.9677\n"
     ]
    },
    {
     "data": {
      "image/png": "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YezZs6cxR44cxqtXr6rbO3fubBw0aFDy8X/++afR3d3dOHHiROPJkyfV7E4PDw/j0aNHk48ZN26cuo/ffvvN+Pfff6tZ5sWKFTPGxMQYHbVf5Dl7enoaly5dagwNDU2+REREqNvl+uOPPzbu3r3beP78eeOmTZuM1apVM5YqVcoYGxtrtCfp7RuZQb5+/XrjuXPnjAcPHjS2a9fO6O3tbTx+/LhTnzMm9evXV1UIUnOUc0aex+HDh9VF3sYnT56sfv7vv//U7dIn0jcm//77rzFbtmzGAQMGqPeYadOmGd3c3Izr1q1Lc187at/Mnz9fvf9Kn5i/z8jMcZOPPvrIuG3bNnXOyPt148aNjXny5FGz1h21X6TCycqVK41nzpxR/xf17dvX6Orqqv5mnP2cMenUqZOqQGCJI5wzvXr1UtWA5HmY/21ER0cnH2NP8QwD3kzyzTffGIsUKaICNindsmfPnuTbnnvuOVUaydzixYuNTz31lDpeygf9/vvvKW6XUh6ff/65MX/+/OoNplGjRsbTp08bHblfihYtqt58Ul/kD0jIH13Tpk2NefPmVX9QcnyPHj3s7s32cfqmX79+ycfKOfHiiy8aDx06ZHT2c0acOnVKnScbNmx44L4c5ZwxlYxKfTH1hVxL36T+nSpVqqh+LF68uCptl56+dtS+kZ8fdryQD0+BgYGqXwoWLKi2z549a3Tkfvnyyy+NJUqUUB+kc+XKZWzQoIFxy5YtD9yvM54zQj4Q+fj4GGfMmGHxPh3hnIGFPpGL+XuHPcUzLveeFBERERGRQ2IOLxERERE5NAa8REREROTQGPASERERkUNjwEtEREREDo0BLxERERE5NAa8REREROTQGPASERERkUNjwEtEREREDo0BLxERWRQcHIwpU6bo3QwioifGgJeIKIO4uLg89DJ8+PAsaUfFihXx7rvvWrzt559/hpeXF27evJklbSEisgUMeImIMkhoaGjyRUZG/f39U+z7+OOPk4+VVd0TExMzpR1vvfUWFi5ciJiYmAdumzNnDl555RXkyZMnUx6biMgWMeAlIsogBQoUSL4EBASoUV3T9qlTp+Dn54e1a9eievXqapR1586d6NatG1q1apXifvr164cGDRokbxsMBowdOxbFihWDj48PKleujKVLl1ptR6dOnVSwu2zZshT7z58/j23btqmA+Ny5c2jZsiXy58+P7Nmzo2bNmti0aZPV+7xw4YJ6PkeOHEned/fuXbVP7tPk2LFjaN68ubpPue/OnTunGE2WdssItDyP3Llzo3HjxoiKikpHLxMRpR8DXiKiLDRo0CCMGzcOJ0+eRKVKldL0OxLs/vTTT5g+fTqOHz+ODz/8UAW127dvt3i8jN5KMDt79uwU++fOnYtChQqhadOmiIyMxIsvvojNmzfj8OHDeOGFF9CiRQtcvHjxsZ+bBMDPP/88qlatigMHDmDdunW4du0a2rRpo26XUe727dvjzTffVM9fAuXWrVur0W4ioszknqn3TkREKYwcORJNmjRJ8/FxcXEYM2aMGn2tU6eO2le8eHE1OvzDDz/gueees/h7MoorI60yqisjwxJUzps3D127doWrq6saJZaLyahRo7BixQqsWrUKffr0eazn9u2336pgV9prIkF34cKF8c8//6ggW9I4JMgtWrSoul1Ge4mIMhtHeImIslCNGjXSdfzZs2cRHR2tgmRJEzBdZMRX0hKskeNlNFdydoWM5Mrobffu3dW2BJ+SU1y2bFnkyJFD3aeMuj7JCO9ff/2FrVu3pmhnmTJl1G3SVgmwGzVqpILcN954AzNnzsSdO3ce+/GIiNKKI7xERFnI19c3xbaMtqb+Sj8hISH5ZwlMxe+//46CBQumOE7ygK2R+5X8YBnVleoQEvg2bNhQjQ4LCXY3btyIiRMnomTJkiqn9vXXX0d8fLzV+xPmbTVvp6mtkhbx5ZdfPvD7gYGBcHNzU4+5a9cubNiwAd988w0+/fRT7N27V41CExFlFo7wEhHpKG/evCq31Zz5xLBy5cqpwFZGXiUwNb9IqsDDyGjupUuXsHz5cpWuIGkOJn/++acKiF999VU14ioT62Ri2sPaKczbat5OUa1aNZVjLPV7U7fVFOjLJLd69ephxIgRKnfY09NTtY2IKDMx4CUi0pFM8pIJXpKicObMGQwbNkxVOjCRyg4yGisT1WS0VlIDDh06pEZHZfthZNRU7r9nz54qaJbcWZNSpUqpQFiCVklF6NChg6oGYY2MAD/99NPJE+5kwtxnn32W4pjevXvj9u3bamLa/v37VVvXr1+vAu+kpCQ1kiv5vfJ8JYCXx79x44ZKqyAiykwMeImIdNSsWTN8/vnnGDhwoCoNFhERgS5duqQ4RiaUyTFSrUGCQ6moICkOaUkDkFFdyZOVgNbb2zt5/+TJk5EzZ07UrVtXpSFIO2SE9mFkAppMOpOyalI6bfTo0SluDwoKUiPHEtxKJQgZOZbjJEdYUiKkLvGOHTtUdYinnnpKBcyTJk1Sk+uIiDKTi5H1YIiIiIjIgXGEl4iIiIgcGgNeIiIiInJoDHiJiIiIyKEx4CUiIiIih8aAl4iIiIgcGgNeIiIiInJoDHiJiIiIyKEx4CUiIiIih8aAl4iIiIgcGgNeIiIiInJoDHiJiIiICI7s/0pIkmCCayzNAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "rf = RandomForestRegressor(n_estimators=100, random_state=42)\n",
    "rf.fit(x_train, y_train)\n",
    "y_pred = rf.predict(x_test)\n",
    "evaluation_results = evaluate_model('Random Forest Regressor', y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 718,
   "id": "c579ac6b-974a-4e1d-9b20-2b946c741ef0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model: Decision Tree Regressor\n",
      "Mean Absolute Error (MAE): 0.0833\n",
      "Mean Squared Error (MSE): 0.1667\n",
      "Root Mean Squared Error (RMSE): 0.4082\n",
      "R^2 Score: 0.8206\n"
     ]
    },
    {
     "data": {
      "image/png": "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0OiX0OiXtNE3h8R9840Srr1WcatWKZAzp37o1EkVn3025vvF73PG4rXixYunK+CNyJQGi9HHjh2rTp06HTHYNUWKFNHpp5+uFStWpLlP7ty53ZKa/bCy82TO7ueLJPRNaPRL2uib0OiX0OiXtMV039iY4DPPSPfdZ9GcVL68Dk6YoN/+/luVY7lfwuScychzRGR29Zw5c1wAm9aIbXKW3rBy5UqVYu5qAACQXps3S1deKfXs6QW79vWSJQrUr+93y3AMfA14LRhdunSpW8yqVavc16tXr3brDzzwgDp37hzyZrUGDRqoevXqhz127733uoD4999/17x583TFFVcoISFBHTp0yIZXBAAAosLGjdInn0h2Jfm556S33rLLxn63CsfI15SGb775RhdccEHSeq9evdz/Xbp00bhx49xNZ8HgN8jyNN5++21XkzeUv/76ywW3//zzj0488UQ1btxYCxYscF8DAACky+mnS6+/LpUtK9Wt63drEMkBb5MmTVw+blos6E3N6vDaXXlpmThxYqa1DwAAxIhNm6Trr7fRNwtQvG2tW/vdKmSSiLxpDQAAINN88YVkqY9r1kg//CD9+qvNYuV3q5CJIvKmNQAAgOOWmCgNGiRZeqUFu2ecYdO4EuxGIX6iAAAg9vz9t9SpkzdTmrnuOumFF6QCBfxuGbIAAS8AAIgt69ZJ9ep5/+fNK40aJdnMaXFxfrcMWYSAFwAAxJaSJaXzz5e++06aPFmqVs3vFiGLEfACAIDoZ6O5efJIRYt6I7kvvSTFx0v58/vdMmQDbloDAADRbeZMqXZtr+xYsBxqwYIEuzGEgBcAAESnAwekhx+WWrb0blJbuVL691+/WwUfEPACAIDoY2XGLrxQevxxb1T35pulhQulE07wu2XwATm8AAAgukyf7pUcs9nTLHXB8nXbt/e7VfARAS8AAIgee/dKt9ziBbt16kiTJkmVKvndKviMlAYAABA9cueW3nxTuuMOad48gl04jPACAIDI9t570rZt3mxppmFDbwH+Q8ALAAAi0759Up8+0lNPeTOm1a8vVa7sd6sQhgh4AQBA5Fm1yrsR7auvvHWrwnDqqX63CmGKgBcAAESWd97xJpHYulUqUkQaN05q3drvViGMcdMaAACIDFZPt2dP6aqrvGD37LOlpUsJdnFUBLwAACAyxMVJhQt7X993n/T551K5cn63ChGAlAYAABDedu6U8uf3vu7bV2reXGrc2O9WIYIwwgsAAMLT7t3eJBLnnivt2eNtS0gg2EWGEfACAIDws2yZl6P74otenu7MmX63CBGMgBcAAISX11+X6tWTvvtOOvFEafp0qVUrv1uFCEbACwAAwsOuXdINN0idOnl5u02aSN9+K7Vo4XfLEOEIeAEAQHi49VZp7FivGkO/ftInn0ilSvndKkQBqjQAAIDwMGCA9PXX0nPPSRde6HdrEEUY4QUAAP7YsUOaMuXQevny0g8/EOwi0xHwAgCA7Pf999KZZ0pt20offXRoezyhCTIfZxUAAMje6YHHjJHOOkv65RepdGmpQAG/W4UoRw4vAADIHtu2STffLE2c6K1fdJH06qte6TEgCzHCCwAAst6SJV5tXQt2bba0J56QPviAYBfZghFeAACQ9X76SVqxQipb1gt6GzXyu0WIIQS8AAAg6117rbR1q9S+vVSsmN+tQYwhpQEAAGQ+q6d77rnSxo2Htt12G8EufEHACwAAMrcKw8iR0jnnSHPnSn36+N0igJQGAACQSf79V7r+eundd731K6+Uhg/3u1UAI7wAACATLFgg1anjBbu5cknPPiu99ZZUpIjfLQMY4QUAAMfp/felK66QDhyQKlaUJk3ySpABYYKAFwAAHJ/zzpPKl5fq1vVmUStUyO8WASkQ8AIAgIz78UepalUpLs4LcOfNk4oX99aBMEMOLwAASL/ERGnwYKlWLWnUqEPbbcY0gl2EKUZ4AQBA+vz9t9SpkzRjxqHpgoEIwAgvAAA4utmzpdq1vWA3b17pf/+TXn7Z71YB4R/wfv7552rVqpVKly6tuLg4TZs27Yj7z5492+2Xelm/fn2K/UaNGqXy5csrT548atCggb766qssfiUAAESpgwelAQOkpk2ldeukKlW8WdSs3i4pDIgQvga8O3fuVK1atVyAmhHLli3TunXrkpaTTjop6bFJkyapV69e6tevnxYvXuyO37JlS/1tl2EAAEDG/PCDNHCgl7vbrZsX7Far5nergMjJ4b344ovdklEW4BZJo5D1iBEj1L17d3WzN6Wk0aNH64MPPtDYsWPVh+kNAQDIGLs5zWZLK1bMy98FIlBE3rRWu3Zt7d27V9WrV1f//v11js3XLWnfvn1atGiRHnjggaR94+Pj1axZM82fPz/N49mxbAnatm2b+3///v1uyWrB58iO54o09E1o9Eva6JvQ6JfQ6JcQDhxQ/KBBOtC69aG+ue027zH6iXMmjPomI88TFwgEAgoDlos7depUtWnT5oipDJbHW79+fRegvvzyy3rttde0cOFC1a1bV2vXrlWZMmU0b948NWzYMOn7evfurTlz5rj9QrGgeYDlJ6UyYcIE5cuXL5NeIQAA4S3PP/+o3ogRKv7jj9pWtqxmjxihQM6cfjcLCGnXrl3q2LGjtm7dqkJHmewkokZ4zzjjDLcENWrUSCtXrtRTTz3lAt9jZSPClvebfIS3bNmyatGixVE7MLM+ocycOVPNmzdXTn6xpEDfhEa/pI2+CY1+CY1+OSTu44+VcP/9itu0SYECBZT70UddsEvfpMQ5Ez59E7winx4RFfCGctZZZ2nu3Lnu6+LFiyshIUEbNmxIsY+tlyxZMs1j5M6d2y2p2Q8rO0/m7H6+SELfhEa/pI2+CY1+CS2m+8UuCz/yiPTEE9567dqKmzxZ8TZV8IcfxnbfHAH94n/fZOQ5Ir4O79KlS1WqVCn3da5cuVSvXj3NmjUr6fHExES3njzFAQAASPrnH6lJk0PBruXq2j0vlSr53TIgU/k6wrtjxw6tWLEiaX3VqlUugC1WrJhOOeUUl2qwZs0avfrqq+7xkSNHqkKFCqpWrZr27Nnjcng//fRTzQjO+CK51IQuXbq4PF8b/bXvsfJnwaoNAADgP1bxyEbJLH3PJpK4+mq/WwREX8D7zTff6IILLkhaD+bRWsA6btw4V2N39erVSY9bFYZ77rnHBcF2M1nNmjX1ySefpDhGu3bttHHjRvXt29dNSGEVHaZPn64SJUpk86sDACAM7dsn2f3qlsqXkGB3aEu7d0sVK/rdMiA6A94mTZroSEUiLOhNzqot2HI0PXr0cAsAAEjm999tZEhq0EB65hlvW+nSfrcKyHIRn8MLAADSYepUqU4d6auvpNdftzu6/W4RkG0IeAEAiGY2sdKdd0pXXilt2SKdfba0ZIlEqh9iCAEvAADRym4Mb9RIevZZb/3ee6XPP5fKlfO7ZUC2ivg6vAAAII2b05o2lezm7xNOkMaPly691O9WAb5ghBcAgGiUK5f01FNS48ZWtJ5gFzGNgBcAgGjx669eykKQ5e3OmSOdfLKfrQJ8R8ALAEA0eOMNqW5d6aqrpDVrDm2P5089wLsAAIBItmuXdOON0nXXSTt3StWqEeQCqfCOAAAgUv38szeJhE0LHBcn9e0rzZollSrld8uAsEKVBgAAIpFVXbjtNm+E12rqWkqDVWUAcBhGeAEAiER2M5oFu82aSd9+S7ALHAEjvAAARIpAwEtdMDaZRL160i23SAkJfrcMCGuM8AIAEAmB7pgx0tVXS4mJ3rb8+aXbbyfYBdKBgBcAgHC2fbt07bXSTTdJ77wjTZ7sd4uAiENKAwAA4WrJEqltW2nFCm8k9/HHvXUAGULACwBAOKYwvPCC1KuXtHevN1PaxInSOef43TIgIpHSAABAuLn3Xi8/14Ldyy6Tli4l2AWOAwEvAADhpmNH76a04cOl996TTjjB7xYBEY2UBgAAwiGF4fvvpZo1vXUrN/bHHwS6QCZhhBcAAD9t3ixdeaV05pnS4sWHthPsApmGgBcAAL8sXCjVqSNNm+at//ij3y0CohIBLwAAfqQwWH5u48Ze6sKpp0rz5kmdOvndMiAqkcMLAEB2+ucfqWtX6f33vfVrrvFmUStc2O+WAVGLEV4AALLTG294wW7u3F6t3UmTCHaBLMYILwAA2alHD+mXX7ypgmvX9rs1QExghBcAgKz0999ekLtrl7ceHy89/zzBLpCNGOEFACCrzJkjdeggrVsnHTzopTAAyHaM8AIAkNksuB04ULrwQi/YrVLFmyoYgC8Y4QUAIDOtXy9dd500a5a33qWLNGqUN1UwAF8Q8AIAkJkTSbRuLW3YIOXL5+XqWsALwFcEvAAAZJaTT/bSGapXlyZP9lIZAPiOgBcAgOOxfbtUsKD3dZky0syZ0umneyO8AMICN60BAHCsPv5YqlhRmjbt0DYrN0awC4QVAl4AADLqwAHpgQekiy6SNm6UnnlGCgT8bhWANBDwAgCQEX/+KTVpIg0Z4q3fdpv04YdSXJzfLQOQBnJ4AQBIr/ff96ou/PuvVKiQ9PLL0jXX+N0qAEdBwAsAQHp8/73UqpX3db160qRJXv4ugLBHwAsAQHrUqOHNlpaQIA0dKuXO7XeLAKQTAS8AAGl57z2pfn2pdGlv/dlnydUFIhA3rQEAkNrevdJdd3mzpl17rTeZhCHYBSISI7wAACS3cqXUrp20aNGhfN3ERC+VAUBE8nWE9/PPP1erVq1UunRpxcXFaVrywt0hvPPOO2revLlOPPFEFSpUSA0bNtTHVvQ7mf79+7tjJV8qV66cxa8EABAVpkyR6tb1gt1ixaT/+z9p2DApZ06/WwbAz4B327ZtLlD9+eefM/y9O3fuVK1atTRq1Kh0B8gW8H744YdatGiRLrjgAhcwL1myJMV+1apV07p165KWuXPnZrhtAIAYsmePV0+3bVv7wyadc460dKl02WV+twyAHykNbdu21XnnnacePXpo9+7dql+/vn7//XcFAgFNnDhRV111VbqPdfHFF7slvUaOHJlifdCgQXr33Xf1f//3f6pTp07S9hw5cqhkyZLpPi4AIMZZju7s2d7XNoPagAGM6gKxHPDaKOtDDz3kvp46daoLdLds2aLx48frsccey1DAe7wSExO1fft2FbPLTsksX77cpUnkyZPHpT0MHjxYp5xySprH2bt3r1uSj1qb/fv3uyWrBZ8jO54r0tA3odEvaaNvQqNfQtu/b5/3f65c0htvKG7NGgVatvzvwdjuK86Z0OiX8OmbjDxPXMAi1gzImzevfv31V5UtW1adO3d2geWQIUO0evVqVa1aVTt27DiWNrtcWwug27Rpk+7vGTp0qHvuX375RSeddJLb9tFHH7k2nHHGGS6dYcCAAVqzZo1++OEHFSxYMORxLO/X9kttwoQJypcv3zG9HgBA+Irfu1c1Xn5ZO0uX1oorrvC7OQCOwa5du9SxY0dt3brV3duVqSO8FujOnz/fjapOnz7dpTGYzZs3uxHV7GLBqAWpltIQDHZN8hSJmjVrqkGDBipXrpwmT56sG264IeSxHnjgAfXq1SvFCK+9zhYtWhy1AzPrE8rMmTNdfnJOLqGlQN+ERr+kjb4JjX5J5ueflaNjR8X9+KMCuXLpr/PO07nt29MvqXDOhEa/hE/fBK/Ip0eGA96ePXvq2muvVYECBVyaQJMmTZJSHWrYLDTZwILsG2+8UVOmTFGzZs2OuG+RIkV0+umna8WKFWnukzt3brekZj+s7DyZs/v5Igl9Exr9kjb6JrSY75fx472b03btkkqU0MFx47Rn71765Qjom9DoF//7JiPPkeEqDbfddpsb4R07dqy+/PJLxcd7hzj11FNdDm9We/PNN9WtWzf3/6WXXnrU/S29YeXKlSpVqlSWtw0AEKZ27pS6dvUWC3abNnVVGAL2P4Cod0wTT1hlBksXWLVqlSpWrOiqIqQn+AwVjCYfebXjLV261KVL2OixpRpY/u2rr76alMbQpUsXPf300y5VYf369Ul5xYULF3Zf33vvva5UmaUxrF27Vv369VNCQoI6dOhwLC8VABDpDhyQGjf2yozZIE3//tKDD3oTSXDjERAT4o8lQdhyYe1mLqt3azermTvuuMPdQJYR33zzjSsnFiwpZnm09nXfvn3dut10Fjy+eemll3TgwAHdfvvtbsQ2uNxl0z/+56+//nLBrd20ZiXUTjjhBC1YsMBNVgEAiEE5cngju3al79NPpUceYdY0IMZkeITXRl2//fZbzZ49WxdddFHSdsultWoHffr0SfexLP/3SEUixo0bl2LdnvNogjfRAQBi2Pbtkl0FrFTJW7/zTqlzZ6loUb9bBiASAl6bVW3SpEk6++yzXSmxIBvttVxZAAB89e233oxpiYneFMFWbcf+XhHsAjErwykNGzduTFEGLPk0wckDYAAAspVdMRw9WmrQQPr1V2+64GRpcQBiV/yx3LD2wQcfJK0Hg9yXX37ZzWoGAEC227pVat9euvVWmz5Tshup7Sa16tX9bhmASExpGDRokJvc4aeffnI3kFnFBPt63rx5mjNnTta0EgCAtFjaQrt2kqXV2Q1qdgP13Xd7FRkA4FhGeBs3buxKh1mwaxNNzJgxw6U4WG3eevXqZU0rAQBIi00Nb8FuuXLSF19I99xDsAvg+OvwWu3dMWPGHMu3AgCQuV5+WXroIWnoUG5MA5A5AW/yurih2IQRAABkmYULJbuX5NFHvXW7kZpBGACZGfCWL1/+iNUYDh48mNFDAgCQvioMTz0l3X+/N3tarVrSVVf53SoA0RjwLlmyJMX6/v373bYRI0bo8ccfz8y2AQDg+ecfb7a099/31q++2mY88rtVAKI14K1ln6hDlCorXbq0nnzySV155ZWZ1TYAAKR587ySY3/+KeXO7Y3y3nKLN5kEAGTVTWuhnHHGGfr6668z63AAAEijRkl33WX5ct40wZMnS7Vr+90qANEe8G7bti3FeiAQ0Lp169S/f39VCs5ZDgBAZqhQwQt2O3SQXnxRKljQ7xYBiIWAt0iRIofdtGZBb9myZTVx4sTMbBsAIFZnTStc2Pv6kku8qgxnnkkKA4DsC3g/++yzFOvx8fE68cQTddpppymHzXADAMCxsJHcwYOlp5+WvvnGm0jCnHWW3y0DEOEyHKGef/75WdMSAEDs2rBBuu466ZNPvPU335T69PG7VQBiKeB977330n3Ayy+//HjaAwCINbNmSdde6wW9+fJJzz8vdenid6sAxFrA26ZNm3QdzHJ7mXgCAJAu9vfCZksbONCbVKJaNa8KQ9WqfrcMQCwGvImJiVnfEgBAbHn22UPTA994o5e7ayO8AJDJ4jP7gAAApItNHnHuudIbb0hjxhDsAsgyx1RWYefOnZozZ45Wr16tffv2pXjszjvvzKy2AQCiyYED0iuvSNdfLyUkSHnySHPmUG4MQPgFvEuWLNEll1yiXbt2ucC3WLFi2rRpk/Lly6eTTjqJgBcAcLi//vImj5g7V1q7VurXz9tOsAsgHFMa7r77brVq1UqbN29W3rx5tWDBAv3xxx+qV6+ehg0bljWtBABErg8+8KYDtmDXZkqrUsXvFgGIMRkOeJcuXap77rnHTTiRkJCgvXv3ulnWhg4dqgcffDBrWgkAiDz790v33Sdddpn0zz9S3bp2mVBq29bvlgGIMRkOeHPmzOmCXWMpDJbHawoXLqw///wz81sIAIg8f/whnXeeFLzyd8cd0rx5UsWKfrcMQAzKcA5vnTp19PXXX6tSpUpu1rW+ffu6HN7XXntN1atXz5pWAgAiy7ZtdknQRkOksWOlK6/0u0UAYli6R3iDE0oMGjRIpUqVcl8//vjjKlq0qG699VZt3LhRL730Uta1FAAQ3mzyiKAaNaSJE70UBoJdAJES8JYpU0Z9+vRRoUKFdMEFFySlNEyfPl3btm3TokWLVKtWraxsKwAgXP32m3TOOdKCBYe2tW4tVajgZ6sAIGMB7+2336633npLVapU0bnnnqtx48a50mQAgBj31luW7ybNn29/LFKO9AJAJAW8jzzyiFasWKFZs2bp1FNPVY8ePVxqQ/fu3bVw4cKsbSUAIPzs2eMFuNdc4+XsNmokTZ1KbV0AkV+loUmTJho/frzWr1+v4cOH6+eff1bDhg1VrVo1jRgxImtaCQAIL8uXSw0bSs8/763ff780e7Z0yil+twwAjj/gDSpQoIBuvPFGzZ07V//3f//nAuD7rN4iACC6LVvm1dS1KgzFi0sffSQNGWJ1K/1uGQBkTlmyIMvfnTx5sl555RUX9FasWJGAFwBiwemnSxdeKG3ZIk2YYHc1+90iAMjcgHfevHkaO3aspkyZogMHDujqq6/WwIEDdZ4VGAcARO+obunS3tTAlqP7+utS3rxSjmMeNwGA8EtpsKmDgxUavv/+ez355JMujcHyeQl2ASCKvfqql8Jwyy2HKjBY4EuwCyBCpPu3lQW41113nRvZZUY1AIgBO3dKPXpI48Z56+vXS7t3S/ny+d0yAMiagHft2rXKyQ0JABAbfvxRattW+uknKT5e6tdPeughKSHB75YBQNYFvAS7ABADLGXhlVe8kV0bzbWp5O3GtCZN/G4ZAGR/WTIAQBSyCSRsJNeC3RYtvNJjBLsAIhx3HAAADilcWHrjDclm0LTJJCydAQAiHAEvAMR6CsNLL0lFi3o5u8Zq7NoCALEU8G6zS1zpVKhQoeNpDwAgu9jv9u7dpcmTbfpM6eyzmRoYQOwGvEWKFFGcFRpPh4MHDx5vmwAAWW3xYm9Ed+VKr55u//7SySf73SoAyBLpSs767LPP9Omnn7rFZlk76aST1Lt3b02dOtUt9nWJEiXcYxnx+eefq1WrVipdurQLqKdNm3bU75k9e7bq1q2r3Llz67TTTtO4YH3IZEaNGqXy5csrT548atCggb766qsMtQsAojqF4dlnpYYNvWC3XDnpiy+ke+4hXxdAbI/wnn/++UlfP/rooxoxYoQ6dOiQtO3yyy9XjRo19NJLL6lLly7pfvKdO3eqVq1auv7663XllVcedf9Vq1bp0ksv1S233KI33nhDs2bN0o033qhSpUqpZcuWbp9JkyapV69eGj16tAt2R44c6R5btmyZC9QBIGYdPKiE9u2lqVO99datvRJklr8LAFEswx/n58+fr/r16x+23bZldCT14osv1mOPPaYrrrgiXftbEFuhQgUNHz7cTXPco0cPXX311XrqqaeS9rFgvHv37urWrZuqVq3qvidfvnwZHn0GgKiTkKBA+fJWWF0aOdILfAl2AcSADFdpKFu2rMaMGaOhQ4em2P7yyy+7x7KSBdvNmjVLsc1Gb3v27Om+3rdvnxYtWqQHHngg6fH4+Hj3Pfa9adm7d69bUt+kt3//frdkteBzZMdzRRr6JjT6JW30TYgUhm3btP+/6YD39uunnB07SrVqSQcOKNZxvqSNvgmNfgmfvsnI82Q44LXR1KuuukofffSRSxkwNrK7fPlyvf3228pK69evd7nCydm6Bai7d+/W5s2b3U1zofb55Zdf0jzu4MGDNWDAgMO2z5gxw40OZ5eZM2dm23NFGvomNPolbfSNlHP7dtV55hnl3rZNcx9/3N2cNnP2bO/BNWv8bl5Y4XxJG30TGv3if9/s2rUr6wLeSy65RL/++qteeOGFpCDSbjyzvNqsHuHNKjYibHm/QRZA22tp0aJFtpRZs08odnI0b96cKZxToW9Co1/SRt944ubPV8Iddyjuzz8VyJVLLYoW1cfbt8d8v6TG+ZI2+iY0+iV8+iYjZXOPaeIJCwYHDRqk7FayZElt2LAhxTZbt6A0b968SkhIcEuofex702IVH2xJzX5Y2XkyZ/fzRRL6JjT6JW0x2zeJidKwYdKDD7qb1FSpkuImT1ZCtWrShx/Gbr8cBf2SNvomNPrF/77JyHMcUw2aL774Qtddd50aNWqkNf9dFnvttdc0d+5cZaWGDRu6ygzJ2ScJ225y5cqlevXqpdgnMTHRrQf3AYCotXGjdNll3pTAFuxaNZ1Fi6Tatf1uGQD4KsMBr+Xp2o1iNqK6ePHipJu9tm7dmuFR3x07dmjp0qVuCZYds69Xr16dlGrQuXPnpP0tbeK3335zdX8tneL555/X5MmTdffddyftY6kJdlPd+PHj9fPPP+vWW2915c+sagMARDX7PffRR1KePN50wW+8IRUs6HerACDyAl4rI2alviyoTD6UfM4557gAOCO++eYb1alTxy3BYNW+7tu3r1tft25dUvBrrCTZBx984EZ1rX6vlSez6hDBGrymXbt2GjZsmDtG7dq1XQA9ffr0w25kA4CoM2KE1YiUFi70pgxO5wyZABDtMpzDaxM4nHfeeYdtL1y4sLZs2ZKhYzVp0kQBK5mThlCzqNn3LFmy5IjHtfq8tgBAVLP7FSyFy8qMmdNPt7I5BLoAcLwjvHbz14oVKw7bbvm7p556akYPBwA4Fp9+6uXmdupkc64f2k6wCwDHH/DaLGZ33XWXFi5cqLi4OK1du9ZN83vvvfe6fFkAQBaym9H695dsEp7166UqVSSmTQeAzE1p6NOnj6t80LRpU1fw19IbrKSXBbx33HFHRg8HAEivdeu89IXgiO4NN0jPPCNl4wQ5ABATAa+N6j700EO67777XGqDVVqoWrWqChQokDUtBABYDUbp2mu90mP580svvuitAwAyP6Xh+uuv1/bt213NWwt0zzrrLBfsWukvewwAkAVWrfKC3Zo1vdq6BLsAkHUBr9W33b1792Hbbdurr76a0cMBANKSvIqNlRl7+WVpwQLpjDP8bBUARG/Aa/MV2+QSVkbMRnhtPbhs3rxZH374oU7ixgkAyBwffiiddZa0efOh6guWs5s3r98tA4DozeEtUqSIy9+15XSr9ZiKbR8wYEBmtw8AYsv+/dJDD0lPPumtDxkiPfGE360CgNgIeD/77DM3unvhhRe66YWLFSuW9Jjl85YrV06lS5fOqnYCQPT74w+pfXsvbcFY5ZtHH/W7VQAQOwHv+eef7/5ftWqVTjnlFDeiCwDIJO++K3Xr5qUwFC4sjR0rXXml360CgNi8ae3TTz/VW2+9ddj2KVOmuBvaAAAZZNOot2njBbtnninZ9OkEuwDgX8A7ePBgFS9e/LDtdsPaoEGDMqtdABA7Lr9cOuUU6e67bZ52qUIFv1sEALE98cTq1atVIcQvY8vhtccAAOnw1VfeaK6lh9k9Ed9956UyAAD8H+G1kdzv7BdzKt9++61OOOGEzGoXAESnPXukHj2kBg2kV145tJ1gFwDCZ4S3Q4cOuvPOO1WwYEGdd955btucOXN01113qb3dXQwACG3FCqltWy9H13BVDADCM+AdOHCgfv/9dzVt2lQ5cnjfnpiYqM6dO5PDCwBpmThRuukmaft2ye6DeO016aKL/G4VAMSEDAe8VnN30qRJLvC1NIa8efOqRo0aLocXAJCKTcXes6f00kveul0ZmzBBKlPG75YBQMzIcMAbZLOthZpxDQCQzKJF0pgx3s1pNoNav37Sf1fHAADZI12/dXv16uVGdPPnz+++PpIRI0ZkVtsAIPI1biwNGybVrCk1a+Z3awAgJqUr4F2yZIn22/zu/32dFmZfAxDzdu6Uevf2auqedpq37SgDBQCAMAh4P/vss5BfAwCS+fFHrwrDTz9JX38tLVggxWe4+iMAIJPxmxgAjlcgII0d600kYcFuqVLS0KEEuwAQSSO8V2ZgTvd33nnneNoDAJFlxw7p1lul11/31lu08EqOnXSS3y0DAGQk4C2cbAagQCCgqVOnum3169d32xYtWqQtW7ZkKDAGgIhnE0dYgLtsmZSQYIXKpfvvZ2QXACIx4H0l2fSX999/v9q2bavRo0crwX7BSzp48KBuu+02FSpUKOtaCgDhpmRJb0pgq6lrE0tYRQYAQNjJcDHIsWPHau7cuUnBrrGvrVxZo0aN9OSTT2Z2GwEgfGzbJuXNK+XMaTPxSG+95a3b7GkAgLCU4etuBw4c0C+//HLYdttmUwwDQNSysoz16kmPPHJoW9myBLsAEG0jvN26ddMNN9yglStX6qyzznLbFi5cqCFDhrjHACAqqzA8/7xXT3ffPmnSJG/WtIIF/W4ZACArAt5hw4apZMmSGj58uNatW+e2lSpVSvfdd5/uueeejB4OAMLbli3SjTdKb7/trbdu7ZUgI9gFgOgNeOPj49W7d2+3bLNcNomb1QBEJ5s8ol07adUqL2fX7lG4806bVtLvlgEAMuCYaudYHu8nn3yiN998M2k64bVr12qH1aMEgGhgv89atvSC3QoVpC+/lO66i2AXAGJhhPePP/7QRRddpNWrV2vv3r1q3ry5ChYsqCeeeMKtW7kyAIh4BQpIzzwjvfuu9PLLXvkxAEBsjPDeddddbsKJzZs3K6+V4vnPFVdcoVmzZmV2+wAg+8yf743kBl13nTR5MsEuAMTaCO8XX3yhefPmKZfVn0ymfPnyWrNmTWa2DQCyh5VUHD5cevBBb0rgpUulE0/0HiOFAQBiL+C1Wrs2s1pqf/31l0ttAICIsmmT1KWL9OGH3vp550m5c/vdKgCAnykNLVq00MiRI5PW7aY1u1mtX79+uuSSSzKzbQCQtb74Qqpd2wt28+SRXnpJmjDBSs/43TIAgN91eO2mtapVq2rPnj3q2LGjli9fruLFi7uqDQAQESkMQ4ZIfftKdsXqjDO8XN2aNf1uGQAgHALesmXL6ttvv9WkSZPc/za6azOvXXvttSluYgOAsGV5ud9+6wW7nTp5s6hZVQYAQFTKUMC7f/9+Va5cWe+//74LcG0BgIiaItiCXVvGjJHatJHat+fGNACIchnK4c2ZM6dLYwCAiGIjuQMGeLOmWdBrLE+3QweCXQCIARm+ae322293k0zYbGsAEPbWrbO7baX+/aUpU6RPP/W7RQCAcA94v/76a73zzjs65ZRT1LJlS1155ZUplmMxatQoV8c3T548atCggb766qs0923SpImrDJF6ufTSS5P26dq162GP2412AGLMzJleFQYLcvPnl15/XWra1O9WAQDC/aa1IkWK6Kqrrsq0BtjNb7169XJTEluwayXPLJBetmyZTrIC8KlYsL1v376k9X/++Ue1atXSNddck2I/C3BfeeWVpPXc1NUEYkbcwYOKtwoMTzzhpTBY9QWrwmDVGAAAMSfDAW/yIDIzjBgxQt27d1e3bt3cugW+H3zwgcaOHas+ffoctn+xYsVSrE+cOFH58uU7LOC1ALdkyZKZ2lYAkaHuyJFKsBq75pZb7BeNRBUZAIhZOTIyw9qTTz6p9957z42wNm3a1E02cTylyOw4ixYt0gMPPJC0LT4+Xs2aNdN8m9M+Hf73v/+pffv2ym+XK5OZPXu2GyEuWrSoLrzwQj322GM64YQTQh5j7969bgnatm1bUlUKW7Ja8Dmy47kiDX0TGv2SNuuTVZdcojI//qiDzzyjQNu2wQcUyzhnQqNf0kbfhEa/hE/fZOR54gKB4C3LRzZw4ED179/fBaMW5H788cfq0KGDG4k9VmvXrlWZMmU0b948NWzYMGl77969NWfOHC1cuPCI32+5vpYGYfudddZZh436VqhQQStXrtSDDz6oAgUKuCA6ISHhsOPY6xpgd3CnMmHCBHccAOEt7sABFV61SlsqVUralmP3bh1gVBcAotauXbvcBGhbt25VoaPMkJnugLdSpUq69957dfPNN7v1Tz75xN0otnv3bjcq60fAa22xIPa777474n6//fabKlas6NpsI9PpGeG1CTY2bdp01A7MrE8oM2fOVPPmzV3pNxxC34RGvySzerUSrrtOcd9+qwPz5mn/6afTNyFwzoRGv6SNvgmNfgmfvrF4zWb6TU/Am+6UhtWrV+uSSy5JWreRXqt+YEHrySeffEwNtUbaiOuGDRtSbLf1o+Xf7ty5043kPvroo0d9nlNPPdU914oVK0IGvJbvG+qmNvthZefJnN3PF0nom9Bivl/ee8/KskibN0uFCyun/S6pVs09FPN9kwb6JTT6JW30TWj0i/99k5HnSPfQrNXdtbJhqZ/oePI0cuXKpXr16mnWrFkpcoVtPfmIbyhTpkxxo7LXXXfdUZ/nr7/+ctUcSpUqdcxtBRBGrFJLr15S69ZesHvmmdKSJVLLln63DAAQhtI9wmuZD1bfNvlIqM26dsstt6S4YczKhmWElSTr0qWL6tev7/JwrSyZjd4GqzZ07tzZpT0MHjz4sJvV2rRpc9iNaDt27HD5uFY6zUaJLYfXUiROO+00V+4MQIRbtcqbDjhYr9sCX/v9kCuX3y0DAER6wGtBaWrpGV09mnbt2mnjxo3q27ev1q9fr9q1a2v69OkqUaJEUipF6hxhq9E7d+5czZgx47DjWYqE5fSOHz9eW7ZsUenSpdWiRQt30x21eIEoYJNHWLBbtKg0frzUqpXfLQIAREvAm9n1d5Pr0aOHW0Kx8mKpnXHGGW7EOZRgBQkAUcrKGP77r3T33dIpp/jdGgBABDi28goAkF1WrJCuv97KqXjrOXJITz1FsAsAyLqZ1gAg29h0wDfeKG3fLtlU40OG+N0iAEAEYoQXQPjZvdubErhdOy/YPfdc6Y47/G4VACBCEfACCC/Llklnny29+KIUFyc9/LD06adSmTJ+twwAEKFIaQAQPj76SLrmGptZxkthsIoMzZv73SoAQIQj4AUQPipX9m5Ku+AC6Y03JCaLAQBkAgJeAP765x8pOIFMhQrSl196gW9Cgt8tAwBECXJ4Afhn3DipXDkpee3satUIdgEAmYqAF0D227HDpm+UbApxy9d99VW/WwQAiGIEvACy1/ffS2ee6QW5Nm34449Lr73md6sAAFGMHF4A2cOmA3/5ZenOO6U9e7wyY2++6dXYBQAgCxHwAsgeX3wh3XST9/XFF3sjvMWL+90qAEAMIOAFkD3OO0/q3l2qVEm65x4vnQEAgGxAwAsg61IY/vc/qXVr6cQTvW3B2dMAAMhGDLEAyHxbt0pt23ojulaNITHR206wCwDwASO8ADLX119L7dpJq1ZJOXNKLVoQ6AIAfEXACyDzUhieeUa67z5p/35v1rRJk7wSZAAA+IiAF8Dx27JF6tpVevddb/2qq7wSZEWK+N0yAADI4QWQCSxlwSaUyJVLeu45acoUgl0AQNhghBfAsbEb0SzQtaVwYemtt7y0hrp1/W4ZAAApMMILIOM2bZJatZKef/7Qtjp1CHYBAGGJgBdAxmdMq11b+vBD6aGHvBJkAACEMQJeAOlPYRg0SLrgAmnNGumMM6TPP/fSGQAACGPk8AI4ur//ljp1kmbM8Nbta0tnKFDA75YBAHBUBLwAjmzXLql+fenPP6W8eaVRo7wSZEwmAQCIEKQ0ADiyfPmkW2+Vqlb1ZlHr1o1gFwAQUQh4ARxu3Tpp+fJD6/ff7wW71ar52SoAAI4JAS+AlGbO9KowXHGFl85g4uO9kV4AACIQAS8Az4ED0sMPSy1bejepWZBr9XYBAIhw3LQGwCsz1rGjV2bM3HSTNHKkd5MaAAARjoAXiHXTp3tlxmw018qMjRkjtW/vd6sAAMg0BLxALAsEpCFDvGDXpgaeNEmqVMnvVgEAkKnI4QVimZUXe+MNqXdvad48gl0AQFQi4AVizf/9n9S376H1MmWkJ56Q8uTxs1UAAGQZUhqAWLFvn/TAA9KIEd76uedKzZv73SoAALIcAS8QC1at8m5E++orb71nT+n88/1uFQAA2YKAF4h277wjXX+9tHWrVLSoNG6cdPnlfrcKAIBsQw4vEM0eeki66iov2D37bGnJEoJdAEDMIeAFopmVGjNWhcEmlShXzu8WAQCQ7UhpAKKNTQt80kne11dfLf3wg1Stmt+tAgDAN4zwAtFi927plluk6tWltWsPbSfYBQDEOAJeIBosW+bl6L74ojdr2scf+90iAADCRlgEvKNGjVL58uWVJ08eNWjQQF8FSyeFMG7cOMXFxaVY7PuSCwQC6tu3r0qVKqW8efOqWbNmWr58eTa8EsAHr78u1asnffeddOKJ0vTpUrdufrcKAICw4XvAO2nSJPXq1Uv9+vXT4sWLVatWLbVs2VJ/Wx5iGgoVKqR169YlLX/88UeKx4cOHapnnnlGo0eP1sKFC5U/f353zD179mTDKwKyR8LevUq46SapUydp506pSRPp22+lFi38bhoAAGHF94B3xIgR6t69u7p166aqVau6IDVfvnwaO3Zsmt9jo7olS5ZMWkqUKJFidHfkyJF6+OGH1bp1a9WsWVOvvvqq1q5dq2nTpmXTqwKyXqW33lK81dSNi5P69ZM++UQqVcrvZgEAEHZ8rdKwb98+LVq0SA/YdKf/iY+PdykI8+fPT/P7duzYoXLlyikxMVF169bVoEGDVO2/G3NWrVql9evXu2MEFS5c2KVK2DHb22xTqezdu9ctQdu2bXP/79+/3y1ZLfgc2fFckYa+Cc36Y/lVV+m0v/9W4MEHFbjgAikx0VtiHOdMaPRLaPRL2uib0OiX8OmbjDxPXMCGRH1io65lypTRvHnz1LBhw6TtvXv31pw5c1w6QmoWtFo+ro3cbt26VcOGDdPnn3+uH3/8USeffLI71jnnnOOObTm8QW3btnUjw5ZCkVr//v01YMCAw7ZPmDDBjTYD4SBh926VmzlTv112mX0y9Ls5AAD4ateuXerYsaOLBy3dNarq8FpgnDw4btSokapUqaIXX3xRAwcOPKZj2giz5REnH+EtW7asWrRocdQOzKxPKDNnzlTz5s2VM2fOLH++SELf/Oe775Tj2msVt2yZqlaqpL133km/pIFzJjT6JTT6JW30TWj0S/j0TfCKfHr4GvAWL15cCQkJ2rBhQ4rttm65uelhHVqnTh2tWLHCrQe/z46RfITX1mvXrh3yGLlz53ZLqGNn58mc3c8XSWK2b+wCzJgx0l13SXbTZenSSmjUKKkvYrZf0oG+CY1+CY1+SRt9Exr94n/fZOQ5fL0umitXLtWrV0+zZs1K2mZ5ubaefBT3SA4ePKjvv/8+KbitUKGCC3qTH9M+AVh6RHqPCYQF++TasaN0881esHvxxdLSpdJ55/ndMgAAIorvKQ2WStClSxfVr19fZ511lquwsHPnTle1wXTu3Nnl+Q4ePNitP/roozr77LN12mmnacuWLXryySddWbIbb7zRPW55uj179tRjjz2mSpUquQD4kUceUenSpdWmTRtfXyuQblZezKYFtisXCQnSoEHSvfeSuwsAQCQGvO3atdPGjRvdRBFWXcHSDqZPn55Uamz16tWuckPQ5s2bXRkz27do0aJuhNhuVLOSZslverOg+aabbnJBcePGjd0xU09QAYQtu/PU6kuXLStNnGjJ6n63CACAiOV7wGt69OjhllBmz56dYv2pp55yy5HYKK+NBNsCRAwrKRb8cFe/vvT229I550jFivndMgAAIhrXR4Fw8PXXUvXq0pIlh7a1akWwCwBAJiDgBfyuwvD0095I7s8/S/ff73eLAACIOmGR0gDEpH//la6/Xnr3XW/9yiul//3P71YBABB1GOEF/LBggVSnjhfs5solPfus9NZbUpEifrcMAICowwgvkN1syuxzz5UOHJAqVpRsuut69fxuFQAAUYuAF8huZ54pXXCBd0PaSy9J2TB9NQAAsYyAF8iuUd0aNaR8+bzSY9OmSXnzWg09v1sGAEDUI4cXyOraujZLoFVh6Nnz0HYLfAl2AQDIFozwAlnl77+lTp2kGTO89V27vLzdHLztAADITozwAlnBZgisXdsLdi11wcqNvfYawS4AAD4g4AUy08GDkk1p3bSptG6dVKWK9NVXXr1dUhgAAPAFAS+QmTZulJ55xsvd7dr10JTBAADAN1xfBTJTyZJe6oIFvp07+90aAABAwAscJ7sJbcAAqX59qXVrb9vFF/vdKgAA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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dt = DecisionTreeRegressor(random_state=42)\n",
    "dt.fit(x_train, y_train)\n",
    "y_pred = dt.predict(x_test)\n",
    "evaluation_results = evaluate_model('Decision Tree Regressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 719,
   "id": "e5f55aa4-7d9d-4cda-b9e3-33b1d0c39b35",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model: Support Vector Regressor\n",
      "Mean Absolute Error (MAE): 0.5195\n",
      "Mean Squared Error (MSE): 0.5051\n",
      "Root Mean Squared Error (RMSE): 0.7107\n",
      "R^2 Score: 0.4562\n"
     ]
    },
    {
     "data": {
      "image/png": "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5vpjjitTlRjQ8n18//33TSDGwKypgh+q+EEkHNcN240fVphKc/7555ufv7ffftsEi43BD0e8TvjzyZ9bBvLff/+9+UDEduDz8LXzgyVTSIgfGmh7naPEOUskTkyZMsVyuVzmMXToUOvqq6+2Pv74Y6uysrJOvUWLFvEvpvXMM89s9j1YfvPNN9fs82uWHX744XXq/etf/zLlv/zyS51/y8dPP/1UU7ZkyRIrMTHROvLII2vKRo0aZXm9XmvBggU1ZStWrLDS0tKsYcOG1ZTx/Pj99tprL8vn89V5/nvvvdcc42tpjN9//93Uv/baa+uUn3DCCeb8CgoKzP7w4cOtvn37WuXl5TV1AoGAtccee1g9e/asKbvpppvM93vrrbc2ey7Wpx9//DFkO/P9aNOmjdWnTx+rrKyspvz999839fm9g0aPHm3Krrnmmka9zmCbffrpp9batWutv//+23rjjTes1q1bWwkJCWY/qLGv9aKLLrIcDoc1a9asmrL169db2dnZm70HnTt3NmWTJ0+uc15jx461UlJSrLlz59Yp5+vi9bp06VKzf8kll1jp6embvd+19e/f3xo5cuQW22HAgAGmjXmeQbxWnU6nddppp212fZ944olWc3r99dfN83z++eeNeu599tnHPOrj9cA2Dvrqq6/M93jxxRfr1GP7hyqvj78nBg8eXKfshx9+MP/2ueeeM/t837nP19BUPF++77wW+Zg/f7515513muupX79+Ybtu3nnnHfPv77nnnpo6vIb23nvvzX4Gg+0eNG/ePHNd8HeU3+8P+bNMO++8c8j3pDnOUaQ+pRlI3GCvFHtmDz/8cPzyyy+45557TI8Ke95C3TpuijFjxtTZDw4m+/DDD+uUDx061NwiDmIvBXsjePvQ7/ebB2/dsfePvWZB7du3N72n7LVgT1tt7KVxuVzbdP69e/fGwIED6ww4YS8v24W3N9lLzB5a9sSwx6qoqMj0tPKxfv1604681RpMA2DPJUdlB3sva/unaX/Yi8gcZvY41x6MNXLkSOy000744IMPNvs3F1xwQZNe7wEHHGB6qnnbk2kE7E3la+XtYWrKa2XvNd/X2oPYmJbQULoDUz/4PWpjSgV7p9nTF3wuPnievCaCqSjskeb7Uj9loDbWYa8yzzEU9oZxBgnezuV51h5sxZ+R+tcssacsUrbludmu7Bnl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Y6wXXnjBTO3EqaAGDhxYZzqioJkzZ1ojRoww55mcnGztt99+1vTp00NOM8UprkLhlDi5ublmWp2mTNN17LHHmvqcuiwUThnG6ZvatWtneTwe8xz/93//Z6a4qo3TPrEdeJxtnZeXZ6YiWrduXU2dd9991+rdu7fldrs3m37n1VdfNe3DduI0VyeffLK1bNmykFMbNdaW2ozTDnXv3t08glNfNfa1cnomTiHEc+XrHDdunDVhwgTzXKtWraozxVJD02YVFRWZqdF4TbK9cnJyzDRg9913X830cXzegw46yEyrxTqdOnWyzjvvPGvlypU13+f222+3hgwZYmVmZlpJSUnmer/jjjs2m4KO05Ptueeepg6n+zrssMPMdVxb8PrmtFGRmpqroefmz1G3bt1MO3CqMU6zV39qrqCJEyeaKbb4WvkzyinXeH1zyrvGePLJJ8258N/W/7leuHCh+b3C64bT2PFa5c8r2/efNPb63dbrJvjzeOqpp5r3mr/X+HVwWrEtTc0V9PTTT9f8PPJ3HKfh+uSTT2qO8zrnObKN+O9rT9MV7nMUqc/B/0U6oBaJVezFYq8qb3cGFydoCHvoOIUX8zKl5eOKR+xRZw7gtk6dJiIiDVPOrIjINuJt+tqYt8pbzUxTUCArItK8lDMrIrKNmHvKPFXmrTKv9r///a/J3eQMAyIi0rwUzIqIbCOOxOZglokTJ5p0kkGDBpmAtv4AOhERCT/lzIqIiIhIzFLOrIiIiIjELAWzIiIiIhKz4i5nliuYrFixwkzSvjVLfoqIiIhI82IWLBcq4eIcXIVuS+IumGUg25i17UVEREQksrjsO1c83JK4C2bZIxtsnMascb+tuL491zsPLqMom6htQlO7NExtE5rapWFqm9DULg1T20RHu3B6Q3Y+BuO2LYm7YDaYWsBAdnsFs8nJyea59ENRl9omNLVLw9Q2oaldGqa2CU3t0jC1TXS1S2NSQjUATERERERiloJZEREREYlZCmZFREREJGYpmBURERGRmKVgVkRERERiloJZEREREYlZCmZFREREJGYpmBURERGRmKVgVkRERERiloJZEREREYlZCmZFREREJGYpmBURERGRmKVgVkRERERiloLZZhQIWFi8rsR8zS33RURERCR83GH8XlLL7OUFeHPmMixeW4hRrYA7P/oTXVqn4+hBeeiTmxHp0xMRERFpEdQz20yB7ISp8/DbsgJkJHpNGbfcZzmPi4iIiMi2UzAbZkwlYI/shpJK9GiTitREu/ObW+6z/K2Zy5VyICIiIhIGCmbDbPH6EsxfU4z2GUlwOBx1jnGf5fPWFJl6IiIiIrJtFMyGWVG5DxVVASR5XSGPs5zHWU9EREREto2C2TBLS3QjweNEWaU/5HGW8zjriYiIiMi2UTAbZl1apZjc2JUFZbCsunmx3Gd5zzZppp6IiIiIbBsFs2HmdDrM9FvZKV6TO1tcnU7ALfdZftSgXFNPRERERLaNgtlmwHlkLx7eE33zMlBQXmnKuO2Xl2nKNc+siIiISHgocbOZMGDt3T4dC1YX4I8f1uC6Q3qhe9sM9ciKiIiIhJF6ZpsRA9cuOXZuLLcKZEVERETCS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiIxS8GsiIiIiMQsBbMiIiIiErMUzIqIiIhIzFIwKyIiIiINCgQsLF5XYr7mlvvRxB3pExARERGR6DR7eQHenLkMi9cWYlQr4M6P/kSX1uk4elAe+uRmAPHeMztu3DjsuuuuSEtLQ5s2bTBq1CjMmTNni/9m0qRJcDgcdR6JiYnb7ZxFRERE4iWQnTB1Hn5bVoCMRK8p45b7LOdxxHsw++WXX2LMmDH47rvv8Mknn6CqqgoHHXQQSkrsruyGpKenY+XKlTWPJUuWbLdzFhEREWnpAgHL9MhuKKlEjzapSE20b+Zzy32WvzVzeVSkHEQ0zWDy5Mmb9bqyh3bGjBkYNmxYg/+OvbHt2rVr1HNUVFSYR1BhYaHZMnDmo7kFn2N7PFesUduEpnZpmNomNLVLw9Q2oaldGqa2QU1uLFML8jIS4HZYcCJgyrl1O5ymfNHaAixYXYAuOSkIt6a0v8OyrMiH1NXmz5+Pnj174rfffkOfPn1C1mHAe/bZZyM3NxeBQACDBg3CnXfeiZ133jlk/VtuuQW33nrrZuUvvfQSkpOTw/4aRERERGTblJaW4qSTTkJBQYG5Ix8TwSwD08MPPxz5+fn4+uuvG6z37bffYt68eejXr595gffddx+mTZuG33//HXl5eY3qme3YsSPWrVv3j40Trk8WTKE48MAD4fF4mv35YonaJjS1S8PUNqGpXRqmtglN7dIwtc2mnlkO9mKOLFML2CM72LUUM/ydEIATxeU+FJRX4rpDejVLzyzjtZycnEYFs1EzmwFzZ2fPnr3FQJaGDh1qHkF77LEHevXqhSeeeAJjx47drH5CQoJ51McLdHtepNv7+WKJ2iY0tUvD1DahqV0aprYJTe3SsHhvm+5tM8ysBRzs1SPBY1ILiIGsz3JgWUEF+uVlmnpOpyPsz9+Uto+KeWYvvPBCvP/++/j8889D9q7+04sdOHCgSVEQERERkW3HAJXTb2WneDF/TbHpiSVuuc/yowblNksg2+RzjeSTM8OBgezbb7+Nzz77DF27dm3y9/D7/SbHtn379s1yjiIiIiLxqE9uBi4e3hN98zJMSgFxyx5ZlkfLPLPuSKcWcCDWu+++a+aaXbVqlSnPyMhAUlKS+fq0004zg704Jy3ddttt2H333dGjRw+TX3vvvfeaqbk4KExEREREwocBa+/26WbWgj9+WGNyZJsrtSAmg9nHHnvMbPfdd9865c888wxOP/108/XSpUvhdG7qQN64cSPOOeccE/hmZWVh8ODBmD59Onr37r2dz15ERESk5XM6HWaQ1x+A2UZTIBvxYLYxEyl88cUXdfbHjx9vHiIiIiIiUTEATERERERkayiYFREREZGYpWBWRERERGKWglkRERERiVkKZkVEREQkZimYFREREZGYpWBWRERERGKWglkRERERiVkKZkVEREQkZimYFREREZGYpWBWRERERGKWglkRERERiVkKZkVEREQkZimYFREREZGYpWBWRERERGKWglkRERERiVkKZkVEREQkZimYFREREZEGBQIWFq8rMV9zy/1o4o70CYiIiIhIdJq9vABvzlyGxWsLMaoVcOdHf6JL63QcPSgPfXIzEA3UMysiIiIiIQPZCVPn4bdlBchI9JoybrnPch6PBgpmRURERKQOphKwR3ZDSSV6tElFaqJ9M59b7rP8rZnLoyLlQMGsiIiIiNSxeH0J5q8pRvuMJDgAFJVXmXJuuc/y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UTAbZnNXl4AZBFsKVR3V9Q7Ymk7Tigpg6FBg1ix7PykJOP984MorgQ4dtva0RURERGKSgtkwS/I4zZoDnEKWs2DVz+ngolpMM2C9JvXEBpNs2QO7007AvHnAhRcCl18OtG4d3hchIiIiEiOUMxtme/bIQYLbhYDlQKLbAW/1PLPcct8ud5l6/6iyEnjqKWDHHYG5czeV33svsGQJMG6cAlkRERGJawpmw6xH6zTs2jnbzGhQ6uM0XHbCAbfcZ/kunbNNvQaVl9sDuXr2BM45x+6F5UwFQbm5QHb2dng1IiIiItFNwWyYcYnaId2ytliHx0MuZVtSAowfD3TrBowZY88T27498MADwD33NN9Ji4iIiMQo5cyGmc8XwBszlpmvGa4GQ9baX785YznO27s73GaFsGqBADB4MDBnjr3P5WavuQY480wgMXE7vwoRERGR2KCe2TD7esFaLM8vNwPA3C6H2VLt/WX5ZaYe8vPtwV2mghM48US7V5Z5svPnA//6lwJZERERkWgPZh955BF06dIFiYmJ2G233fDDDz9ssf7rr7+OnXbaydTv27cvPvzwQ0SLP1YWwucPmI7WQIArfdnRLLfcZ3l60Uak3XYz0KmTvehB0NVX2z2znC/WG4ZFFURERERauIgHs6+++iouv/xy3HzzzZg5cyb69++PESNGYM2aNSHrT58+HSeeeCLOOusszJo1C6NGjTKP2bNnIxpwJgN2trK/lQ9/9XJg3OYUb8B1nz2FaY+dicEvPQEUFQGvvbbpH3POWLcyP0RERERiJph94IEHcM455+CMM85A79698fjjjyM5ORlPP/10yPoPPfQQDj74YFx11VXo1asXxo4di0GDBuHhhx9GNOjSKrnWKl92WdLatbjx48cx7bGzcPaP7yC5qgKFffoD774L/Pe/kT1hERERkRgW0W7AyspKzJgxA9dee21NmdPpxAEHHIBvv/025L9hOXtya2NP7jvvvBOyfkVFhXkEFRYWmm1VVZV5hFt6ghMpHgtVAXvf67QwZNw4ZC5caPZn5PXCxL1PwNljz8OATtn2ygr1V1eIE8H2b473IZapXRqmtglN7dIwtU1oapeGqW2io12a8jwRDWbXrVsHv9+Ptm3b1inn/l9//RXy36xatSpkfZaHMm7cONx6662blU+ZMsX0ADeHO3apuz+/7Eh0njIFc447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2LFjpE9FRERERP4hbsvIyNhSFTisxoS8LUggEMCKFSuQlpYGh8OxXT5ZMHD++++/kZ6e3uzPF0vUNqGpXRqmtglN7dIwtU1oapeGqW2io10YnjKQ7dChA5zOLWfFxl3PLBskLy9vuz8v33j9UISmtglN7dIwtU1oapeGqW1CU7s0TG0T+Xb5px7ZIA0AExEREZGYpWBWRERERGKWgtlmlpCQgJtvvtlspS61TWhql4apbUJTuzRMbROa2qVhapvYa5e4GwAmIiIiIi2HemZFREREJGYpmBURERGRmKVgVkRERERiloJZEREREYlZCma3wiOPPIIuXbogMTERu+22G3744Yct1n/99dex0047mfp9+/bFhx9+WOc4x+DddNNNaN++PZKSknDAAQdg3rx5aMnt8uSTT2LvvfdGVlaWefA1169/+umnm1Xaaj8OPvhgxKKmtM2kSZM2e938d/F+zey7776btQsfI0eObFHXzLRp03DYYYeZVW94/u+8884//psvvvgCgwYNMqOMe/ToYa6hbf291RLa5q233sKBBx6I1q1bm0nehw4dio8//rhOnVtuuWWza4a/r1tyu/B6CfWztGrVKsT7NRPqdwgfO++8c4u6ZsaNG4ddd93VrIbapk0bjBo1CnPmzPnHfxet8YyC2SZ69dVXcfnll5vpKWbOnIn+/ftjxIgRWLNmTcj606dPx4knnoizzjoLs2bNMhcMH7Nnz66pc88992DChAl4/PHH8f333yMlJcV8z/LycrTUduEvU7bL559/jm+//dYskXfQQQdh+fLldeoxEFm5cmXN4+WXX0asaWrbEP/w1n7dS5YsqXM8Hq8ZBia124Q/Qy6XC8cee2yLumZKSkpMWzCQaIxFixaZgH6//fbDzz//jEsvvRRnn312naBta67BltA2DGQYzPIP7owZM0wbMbDh7+LaGKjUvma+/vprtOR2CWLwUvt1M6iJ92vmoYceqtMmXLo1Ozt7s98zsX7NfPnllxgzZgy+++47fPLJJ6iqqjJ/g9leDYnqeIZTc0njDRkyxBozZkzNvt/vtzp06GCNGzcuZP3jjjvOGjlyZJ2y3XbbzTrvvPPM14FAwGrXrp1177331hzPz8+3EhISrJdfftlqqe1Sn8/ns9LS0qxnn322pmz06NHWEUccYcW6prbNM888Y2VkZDT4/XTN2MaP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nYVXXnkFZWVlmx175plncPjhhyMnJ6dZnltEJNoomBURaaR27drVPDIyMkxvbHD/r7/+QlpaGj766CMMHjzY9I5+/fXXOP300zFq1Kg63+fSSy/FvvvuW7MfCAQwbtw4dO3aFUlJSejfvz/eeOONBs/jlFNOMYHsm2++Wad80aJF+OKLL0ywu2DBAhxxxBFo27YtUlNTseuuu+LTTz9t8HsuXrzYvJ6ff/65piw/P9+U8XsGzZ49G4cccoj5nvzep556ap1eYJ43e475Olq1aoUDDjgAJSUlTWhlEZGmUTArIhJG11xzDe666y78+eef6NevX6P+DQPZ5557Do8//jh+//13XHbZZSZg/fLLL0PWZ68rA9Wnn366TvmkSZOQl5eHgw46CMXFxTj00EMxdepUzJo1CwcffDAOO+wwLF26dKtfG4Pb/fffHwMHDsRPP/2EyZMnY/Xq1TjuuOPMcfZOn3jiiTjzzDPN62cQfNRRR5leahGR5uJutu8sIhKHbrvtNhx44IGNrl9RUYE777zT9JoOHTrUlHXr1s306j7xxBPYZ599Qv479r6yh5S9sezRZcD47LPPYvTo0XA6naZ3l4+gsWPH4u2338Z7772HCy+8cKte28MPP2wCWZ5vEAPqjh07Yu7cuSaAZmoFA9jOnTub4+ylFRFpTuqZFREJo1122aVJ9efPn4/S0lITAPPWffDBnlqmCjSE9dkLyxxZYg8se13POOMMs8/Akjm8vXr1QmZmpvme7C3dlp7ZX375BZ9//nmd89xpp53MMZ4rg+fhw4ebAPbYY4/Fk08+iY0bN27184mINIZ6ZkVEwiglJaXOPntJ699mr6qqqvmaQSd98MEHyM3NrVOPebcN4fdlPi57YzmLAoPa/fbbz/TqEgPZTz75BPfddx969OhhcliPOeYYVFZWNvj9qPa51j7P4LkyVeHuu+/e7N+3b98eLpfLPOf06dMxZcoU/Oc//8H111+P77//3vQei4g0B/XMiog0o9atW5tc0tpqD7Lq3bu3CVrZY8qgs/aDt++3hL2wf//9N9566y2TQsDUg6BvvvnGBLtHHnmk6SnlIDUO8trSeVLtc619njRo0CCT08v5aeufazCI54CxPffcE7feeqvJ1fV6vebcRESai4JZEZFmxAFTHCzFtIF58+bh5ptvNjMCBHEGBPaictAXe1l5u37mzJmmV5P7W8LeTn7/c8891wTEzFUN6tmzpwlyGZAyPeCkk04ysyY0hD23u+++e83gNQ4+u+GGG+rUGTNmDDZs2GAGef3444/mXD/++GMTVPv9ftMDy3xavl4G53z+tWvXmlQHEZHmomBWRKQZjRgxAjfeeCOuvvpqMz1WUVERTjvttDp1ODiLdTirAQM/zjzAtIPG3JpnbyzzUhmsJiYm1pQ/8MADyMrKwh577GFSA3ge7FndEg7m4gAuTi3G6cNuv/32Osc7dOhgenwZuHLGBPb4sh5zcpmmwHl3p02bZmZR2GGHHUwwfP/995uBaiIizcVhac4UEREREYlR6pkVERERkZilYFZEREREYpaCWRERERGJWQpmRURERCRmKZgVERERkZilYFZEREREYpaCWRERERGJWQpmRURERCRmKZgVERERkZilYFZEREREYpaCWRERERFBrPp/zT4wLy+mXBYAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "svr = SVR()\n",
    "svr.fit(x_train, y_train)\n",
    "y_pred = svr.predict(x_test)\n",
    "evaluation_results = evaluate_model('Support Vector Regressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 720,
   "id": "dec89821-55b6-4569-9897-f03e2bbb70ff",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model: Gradient Boosting Regressor\n",
      "Mean Absolute Error (MAE): 0.0593\n",
      "Mean Squared Error (MSE): 0.0205\n",
      "Root Mean Squared Error (RMSE): 0.1432\n",
      "R^2 Score: 0.9779\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAcgRJREFUeJzt3Qd8U9X7x/FvWzqgQNkbZCobBUTBBTKcKO4tblFxK4r+HIgKiiI4cfydP/2JirhFFEEFVGQpyBBQ9l4FSnfzfz33mtKWFFpIe5P08369QnpPLsnJyU3y5NznnBPl8/l8AgAAAMJQtNcVAAAAAA4UwSwAAADCFsEsAAAAwhbBLAAAAMIWwSwAAADCFsEsAAAAwhbBLAAAAMIWwSwAAADCFsEsAAAAwhbBLBAEV1xxhRo3bpyvLCoqSg8//LBndYo0tCcQGuyzzj7z/KZMmeK8P+06VOuIyEYwi7D2zz//aODAgTr00ENVoUIF59K6dWvddNNN+uOPPxTp3nvvPY0aNapYH/D2peO/JCQkqEWLFrr77ru1detWee2rr74KuYB1+fLl+dosOjpa1apV0ymnnKKff/7Z6+qVGXZc5H0dCrt0795dkezNN9/c6z1sn3/2ObhhwwaFk1B8vyM8lfO6AsCB+uKLL3TBBReoXLlyuuSSS9ShQwcn0Fi0aJE+/vhjvfTSS06we8ghh3hSv9TUVKduJR3Mzp8/X7fddluR/8/hhx+uO++80/k7LS1Ns2bNcgLiH374QTNmzJDXX24vvPBCwC+40mjPfbnooot06qmnKjs7W3/99ZdefPFF9ejRQ7/99pvatWvnWb3KirPPPlvNmzfP3d61a5duuOEGnXXWWc5tfrVr11ZZ8Mgjj6hJkybOe3jq1KnO5529f+zzwH7Ul6bjjz/eeX/GxcUF7f0OFAfBLMLSsmXLdOGFFzqB6qRJk1S3bt18tz/xxBNOsGHB7b6kpKQoMTGxROpoPSahqH79+rr00ktzt6+55hpVrFhRTz31lJYsWeL01IYir9uzY8eO+drtuOOOc3pnLYiwY600leRxWxIs4LJAZ3/vx31p3769c/HbvHmzE8xaWd7XpSQeOxTZsde5c+fc93D16tU1cuRIffrpp84Pr9I8bqxtvX5/omyLrHc3yownn3zS+WB+44039gpkjfXg3XLLLWrYsGFumeVPWdBmgbD1sFWqVMnp0TU//fSTzjvvPDVq1Ejx8fHO/7v99tud3oaCPvnkE7Vt29b58Lbr8ePHFznHc82aNbrqqquc3iN7nDZt2uj111/Pt48//+yDDz7QY489pgYNGjiP1bNnTy1dujR3Pzud+uWXX2rFihW5pxwL5u0WVZ06dXLbLa/vv//eCdrsC7BKlSo688wztXDhwr3+/5w5c5wv18qVKzttbHX95Zdf8u2TmZmpIUOGOMGyPR/78j322GP17bff5r4+1kvjbzv/pbD29J92tjax/2v1S0pK0pVXXqndu3fne2x7He14qFGjhvO6n3HGGc5rcTB5uNYuxo6nvLZv3+70lNsxZK+x9Sbaj6ucnJx8+23ZskWXXXaZ02ZW9/79++v333936mSnkoty3Np9Wq+6HUfWpnZcXX/99dq2bVu+x5o5c6ZOOukk5/mXL1/e6dGz4zCv999/X506dXLu3+pkvc2jR4/Ot8/ff//tvE8szcJ6/44++mjnGAx0/Nr9/ec//3F+PNm+O3bsUEnb12P7j5fCTttbOkleX3/9de6xb21y2mmn6c8//9zn41s723299dZbe932zTffOLfZGSWzc+dO5zix96wdJ7Vq1VLv3r01e/bsA3ruJ554onNtZ6OCddz4fD49+uijzmeQtaOdiQjUBoXlzP7666/OY1etWtVpR/vh4T+m9vd+D3YdEdnomUVYsi8ECxKOOuqoYv2/rKws50vdgijrifSfjvvwww+dAMh6eizIstPtzz33nFavXu3c5jdx4kSdc845Tl7usGHDnIDEgif7IN0fy2ezL3/7wLb8tpo1azpfmFdffbXzZVswVWD48OFOj8ddd92l5ORkJ4C3LyP7gjD333+/U251fOaZZ5wy+/LaHwsqrVfL32tlgaj16NipQgty/L777jsnQG3atKkTCFhAaG1yzDHHOF+4/sDZvjjsS98CoEGDBik2NlYvv/yyE2xb6oL/NbL7sDazXqQuXbo4z9m+/O2+7EvcvqjWrl3rBLfvvPOOiur888936m33bff12muvOYGBBZB+9sVpPw4seLTXwOplwcnB8Ac/9kXtZ8fQCSec4ATK9nzsx9H06dM1ePBgrVu3Lje/2b6o+/bt6xxndsy1bNnS6VGzgLY4x609hgVjdgxasG6BzPPPP++8ptOmTXNei40bN6pPnz7O8Xbvvfc6gbPV3VJx/KzNrTfPfoT4281+tNh93HrrrbnHb7du3ZznaI9l7xML2uyHwUcffeSc7s9r6NChTo+oHb/p6enFPgV9MA72se34s9fC2tzaw56z9cBb+1vbFvaj0XpK7f1ix1rB13Ls2LHOsWL3aQYMGOC0m30W2OeJfZZYuoC1u50FKC7/jyp7XYJx3JgHH3zQCRQtILWLvb/sWMrIyNhvfeyYOv30053OBjuG7AezPTf77Lbt/b3fS6OOiCA+IMwkJyf77NDt16/fXrdt27bNt2nTptzL7t27c2/r37+/8//uvffevf5f3v38hg0b5ouKivKtWLEit+zwww/31a1b17d9+/bcsokTJzr3e8ghh+T7/1b20EMP5W5fffXVzv/dvHlzvv0uvPBCX1JSUm4dJk+e7PzfVq1a+dLT03P3Gz16tFM+b9683LLTTjttr8fdF9vX7qPg5ZhjjtmrXvZca9Wq5duyZUtu2e+//+6Ljo72XX755bll9jrExcX5li1bllu2du1aX6VKlXzHH398blmHDh2c+u7LTTfd5NQnkILtaX9b2VVXXZVvv7POOstXvXr13O1Zs2Y5+91222359rviiiv2us9A/vnnH2e/IUOGOMfU+vXrfT/99JPvyCOPdMo//PDD3H2HDh3qS0xM9P3111/57sOOuZiYGN/KlSud7XHjxjn/d9SoUbn7ZGdn+0488USn/I033tjvcWt1sPJ33303X/mECRPylY8fP97Z/u233wp9jrfeequvcuXKvqysrEL3sfaz+7HH9du5c6evSZMmvsaNGzv1z3v8Nm3aNOD7KljstSj4+u3rsf3HS0HW1lZur7P/OVWpUsV37bXX5tvPXnd7nxYsL2jw4MG+2NhY39atW3PL7H1s95n3WLX7suO9uPz1/e6775w2WLVqle/99993jvny5cv7Vq9eHZTjZuPGjc772t6zOTk5ufvdd999zn52/wXb3a6NHUd2XNjnjX0m55X3vgp7v5dEHRHZSDNA2PGfrgzUC2m9gdYD5b/4T2PlZT1hBdmpVz9LX7CeS+uFshjKegKM9azNnTvX6XGx09l+1qtoPSv7Yvczbtw4pzfO/rb791+s58R6WAueXrQeibw9Sv7T2naq92BYT6n1htjFekkslcF6V62HzZ9W4X+u1qNpp5T97DShPV8buGFsMJT1Vvfr18/pkfKz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AADI7+mnpREj3L9tkJfNI1uvnte1AgKiZxYAAOR3xx3SscdKn38uffghgSxCmqfB7I8//qi+ffuqXr16ioqK0ie2csg+TJkyxdmv4GX9+vWlVmcAACJKTo70yitS377u36ZiRemnn6TTT/e6dkBoB7MpKSnq0KGDXrA8nGJYvHix1q1bl3upVatWidURAICINX++dNxx7iCvL76QPvrI6xoB4ZUze8oppziX4rLgtUqVKiVSJwAAIl5qqlr9978qZ2dEs7LcntjHHpPOOcfrmiEE5eT4tHxzivO3XTernaTo6CiFirAcAHb44YcrPT1dbdu21cMPP6xjjjmm0H1tP7v47dixw7nOzMx0LiXN/xil8VjhhrYJjHYpHG0TGO1SONpmb1HffaeYgQN16N9/O9s5Z5yhbFvBq0EDN83An2pQRnHM5Ldw3Q59OnetVm7ZodOrSU9O+FONqlfWmYfXU6u6lVVSitP+UT6frUPnPct9HT9+vPr167fP9ALLm+3cubMToL722mt655139Ouvv6pjx44B/48Fu0OGDNmr/L333lOFChWC+hwAAAhpOTk64c47VeWff5Ravbr+uPZarT/6aK9rBexl9+7duvjii5WcnKzKNjVcpASzgZxwwglq1KiRE9QWtWe2YcOG2rx5834bJ1i/LL799lv17t1bsbGxJf544YS2CYx2KRxtExjtUjja5t8BXraK17/PP2rmTPneeUcTjz9ePc44o+y2SyE4ZvakFjz5zWItWJuspjUrKibKp04xKzUru5GyfVH6e9MutamXpLtPOqxEUg4sXqtRo0aRgtmwTDPIq0uXLpo6dWqht8fHxzuXguwALc2DtLQfL5zQNoHRLoWjbQKjXQpXZttm4UJ3cFfPntJDD7llXbsqs3NnZX31VdltlyIo623z96Zd+mvTbtWonKicqBhFyU0/yVG0cqKinfLFm3ZrzY4MJ9gNtuK0fdjPMzt37lzVrVvX62oAABA60tKkBx90V+uyKbZs0YOdO72uFcLIzrQspWfmqHxcTMDbrdxut/285mnP7K5du7R06dLc7X/++ccJTqtVq+akDgwePFhr1qzR22+/7dw+atQoNWnSRG3atFFaWpqTM/v9999r4sSJHj4LAABCyPffSwMGSEuWuNunneYuRVupktc1QxiplFBO8bHRSs3IVsWEvcNFK7fbbT+veVqDmTNnqkePHrnbd9iKI5L69++vN99805lDduXKlbm3Z2Rk6M4773QCXBu81b59e3333Xf57gMAgDJp82bprrukt95yt+2s5bPPutNtRYXONEoID42rJ6p5rYqatzpZzeMrSnkOIRtutS45Ve0bVHH2K9PBbPfu3Z0GKYwFtHkNGjTIuQAAgAJs6smxY93A9YYbpMcfl5KSvK4VwlR0dJTO6dhAa7alaunGXWqQFC8lSrvSsrQ6OV3VEuN0dsf6ITHfrPd9wwAA4MBs2iTVrOn+3bSpNGaMdNhhEtNtIQja1k/SLT1baNzs1Vq+aYcTzCanZTg9shbI2u2hgGAWAIBwY1NOPvGENGyY9O230rHHuuX9+3tdM0SYtvWT1LpuZS3bkKwFMzbqvlNahdwKYGE/mwEAAGXKjz/aUpjuVFs2a4GlFgAlyALXxjXc3Fi7DqVA1hDMAgAQDrZula65xlYLkhYtkmrXlt5/3x3kBZRhpBkAABDqxo1zB3VZjqyxhRAsxaBqVa9rBniOYBYAgFC3e7cbyLZpI738snTMMV7XCAgZBLMAAISajAzJFhVq3drdvvRS9/qCC6S4OE+rBoQacmYBAAglU6dKRxwh9ewpJSe7ZTZ37GWXEcgCARDMAgAQCrZtc3NhjztOWrBAys52B3oB2CeCWQAAvGQrYdqsBK1aSa+84pbZrAUWyB51lNe1A0IeObMAAHiZG3vmmdKECe52y5buAK/jj/e6ZkDYoGcWAACvWA6sLUdr1488Is2dSyALFBPBLAAApemXX6RVq/ZsP/20NG+e9MADUny8lzUDwhLBLAAApcFmJrjxRqlbN+nmm/eUW8/soYd6WTMgrJEzCwBASQ/w+ugj6ZZbpPXr3TJbucvyZZlqCzhoBLMAAJSU5culgQOlL790t1u0cAd49ejhdc2AiEEwCwBASfjpJ+nkk92laGNjpcGD3UtCgtc1AyIKwSwAACWhUyepdm2pYUO3N9am3QIQdAwAAwAgGHbskEaMcFfuMhUqSD/+KE2eTCALlCB6ZgEAONgBXuPHuzMUrF3rBrE33eTe1qCB17UDIh7BLAAAB2rlSneA1+efu9vNmrnL0gIoNaQZAABQXFlZ0qhRUuvWbiBbrpx0//3u4gcnnuh17YAyhZ5ZAACK6/rrpddfd/8+5hh3gFebNl7XCiiT6JkFAKC4LLWgRg3plVfcQV4EsoBn6JkFAGB/PvtMWrZMuv12d/uII6QVK9zBXgA8RTALAEBh1qxxZymw2QosL7ZPnz29sASyQEggzQAAgIJsrtjnnnNnJvAHsnfdJTVp4nXNABRAzywAAHnNnStdd53022/u9tFHu7mx7dp5XTMAARDMAgDgt3On1L27lJwsVa4sDR/uzlwQzYlMIFQRzAIA4FepkvTAA9KMGe48snXrel0jAPvBT00AQNlly8+ef740efKesjvukMaOJZAFwgQ9swCAsicnRxozRho8WNqxQ/rzT3f1LksniIryunYAioFgFgBQtvzxh5sH+8sv7naXLu4KXuTFAmHpoN+5O3bs0CeffKKFCxcGp0YAAJSE3bule++VOnVyA1nLj7Xpt6ZPlw4/3OvaASitYPb888/X888/7/ydmpqqzp07O2Xt27fXuHHjDrQeAACUrK+/lp54QsrKks4+W7JOGFuWNibG65oBKM1g9scff9Rxxx3n/D1+/Hj5fD5t375dzz77rB599NGDqQsAAMFf/MDPAtirr5Y+/VSyzpf69b2sGQCvgtnk5GRVq1bN+XvChAk655xzVKFCBZ122mlasmRJsOoFAMDBDfB69VWVO/xwxdrcscYGdr32mnTGGV7XDoCXwWzDhg31888/KyUlxQlm+9g61ZK2bdumhISEYNYNAIDiW7BAOuEEZxWvqMWL1eSrr7yuEYBQms3gtttu0yWXXKKKFSuqUaNG6m4rpfybftCOpf4AAF5JTZUef9zNi83MlBITlT1kiJY0aaLmXtcNQOgEszfeeKO6dOmiVatWqXfv3or+dyqTpk2bkjMLAPDGpEnSgAHS0qXudt++0vPPK6duXfnomQUi2gHNM2szGNjsBf/884+aNWumcuXKOTmzAAB44t133UDWBnXZdFv9+rk5stZDCyCiFTtndvfu3br66qudQV9t2rTRypUrnfKbb75Zw4cPL4k6AgCQn8/nrtzlN2KENGiQmy971lms4gWUIcUOZgcPHqzff/9dU6ZMyTfgq1evXhpra1kDAFCSFi2SevSQLrrIDWpN9epurmzlyl7XDkCopxnYal8WtB599NGKyvPL13pply1bFuz6AQDgSkuT7AzgsGFSRoZUoYKbWtCihdc1AxBOPbObNm1SrVq19iq3qbryBrcAAATNlClShw7SkCFuIHvqqdKf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o0ePVoMGDfTaa68xLReAyDRlinTdddKSJe726adLzz8vHXKI1zUDgJBR7AFg1gtr870WZEvc2gIGxdG9e3f5bLnFQgRa3cv+z5w5c4r1OAAQlhYtcgNZW7XL0grOOstdmhYAUPwVwPxsJoBXX311r3LrIbXbAAAHyH7cr169Z9t6ZUeMkBYskM4+m0AWAILRM2urbZ1zzjn6+uuvddRRRzllM2bM0JIlSzRu3Lji3h0AwCxebAMDbPCA9OefUmKiFB0t3XWX1zUDgMjqmT311FP1119/qW/fvtq6datzsb+tzG4DABSDrVBoC7u0b+/myG7cKP32m9e1AoCwcUCLJlg6weM2uhYAcOB++MGdbst6Zc3JJ0svvmijXb2uGQBEbs+s+emnn3TppZeqW7duztRZ5p133tHUqVODXT8AiDw2xdbVV9uIVjeQtWW6339fsnm0CWQBoGSDWcuLtamwbMWt2bNnK91OkUlKTk6mtxYAisJWttm+3f3bemZt1oILLmCAFwCURjD76KOPOlNz2YwGeZcaO+aYY5zgFgAQgC0QY/mwfs8+K02bJtlUh1WqeFkzAChbwezixYt1/PHH71WelJSk7f6eBgCAKyNDeuwxqW1b6fbb95TXry916+ZlzQCgbAazderUybcErZ/lyzZt2jRY9QKA8GfjCI44QvrPf9xZCzZtcq8BAN4Fs9dee61uvfVW/frrr4qKitLatWv17rvv6q677tINN9wQvJoBQLjats1d8OC449wFD2rWlN59V/rmGyk+3uvaAUDZnprr3nvvVU5Ojnr27Kndu3c7KQfx8fFOMHvzzTeXTC0BIFzYHLGnn74nP9aW+X7iCalaNa9rBgARqdjBrPXG3n///br77ruddINdu3apdevWqlixYsnUEADCyWGHSeXKSa1aSS+/7PbOAgBCJ83gqquu0s6dOxUXF+cEsV26dHEC2ZSUFOc2AChzc8a+847k87nblStL334rzZlDIAsAoRjMvvXWW0pNTd2r3MrefvvtYNULAELfzz9LHTtKl19uH457ylu3JjcWAEItzWDHjh3y+XzOxXpmExIScm/Lzs7WV199pVq1apVUPQEgdNg0hPfd584Raz2y1atLFSp4XSsAKJOKHMxWqVLFyZe1y6GHHrrX7VY+ZMiQYNcPAEKHBa4ffijdequ0fr1bdsUV0ogRUo0aXtcOAMqkIgezkydPdnplTzzxRGdJ22p5RuZa/uwhhxyievXqlVQ9AcB7d9whjRrl/m0/6m2AV/fuXtcKAMq0IgezJ5xwgnP9zz//qFGjRk5PLACUKeed56YW3HOPzVMo5Um3AgCEydRc33//vTN7wXn2oZ7Hhx9+6Mw7279//2DWDwC88+uv0sKFbiqBseVnV6yQGB8AAOE7m8GwYcNUI0BumA3+evzxx4NVLwDwzo4d0sCBUteu0oABUt4lvAlkASC8e2ZXrlypJk2a7FVuObN2GwCE9QCvjz+WbrlFWrvWLTv/fCkpyeuaAQCC1TNrPbB//PHHXuW///67qtv0NAAQjuzH+JlnSuee6wayzZu7ix/Y/Nk1a3pdOwBAsHpmL7roIt1yyy2qVKmSjj/+eKfshx9+0K233qoLL7ywuHcHAN5LSXEXP9iyRYqNlQYNku6/Xypf3uuaAQCCHcwOHTpUy5cvV8+ePVXO1h+XlJOTo8svv5ycWQDhKTHRnTv2m2/c6bbatPG6RgCAkgpmbU7ZsWPHOkGtpRaUL19e7dq1c3JmASAs7NwpPfigdMEF0tFHu2WDB7u9sdHFzr4CAIRTMOtnq4AFWgkMAELap5+6MxWsXm1zDUqzZ0sxMdK/Z5oAAOGlSJ/ed9xxh9MTm5iY6Py9LyNHjgxW3QAgeCx4vflm6ZNP3G2bleXJJ91AFgAQ2cHsnDlzlJmZmft3YVgVDEDIyc6WXnjBTSHYtcvtgb3rLumBB6QKFbyuHQCgNILZyZMnB/wbAELe+PHu4C5jiyDYAK927byuFQAgSEgSAxDZzj5b6ttXOvVU6brrGOAFAGUxmD3bvgyK6GNbPQcAvPLll7butvT111KlSm7w+tlnXtcKAFBCitRFkZSUlHupXLmyJk2apJkzZ+bePmvWLKfMbgcAT9iqXeedJ51+ujRtmvTUU17XCAAQKj2zb7zxRu7f99xzj84//3yNGTNGMf+OAs7OztaNN97oBLoAUOoDvCwP1uaJ3bHDnZ3AZl2xVbwAABGv2Dmzr7/+uqZOnZobyBr726bs6tatm0aMGBHsOgJAYH/84ebB/vqru92li/TKK1KHDl7XDABQSoo9EiIrK0uLFi3aq9zKbFlbACg1w4e7gazlxj7/vDR9OoEsAJQxxe6ZvfLKK3X11Vdr2bJl6mK9ILLvkl81fPhw5zYAKElR/8557bBFWmzeWBvwVb++l9UCAIRLMPvUU0+pTp06evrpp7Vu3TqnrG7durr77rt15513lkQdAUBav14xt9yiTmvWSGee6ZbVqSO9/bbXNQMAhFMwGx0drUGDBjmXHTbYQmLgF4CSY+lLr75qo08VnZysetHRyrJUJxY+AAAcSM6sP2/2u+++0//+97/cJWzXrl2rXbZUJAAEy/z50nHHSQMGSMnJyunYUT/YINOWLb2uGQAgXIPZFStWqF27djrzzDN10003adOmTU75E088obtsvXMAOFipqdL990tHHOEO6qpYURo1StnTpim5WTOvawcACOdg9tZbb1Xnzp21bds2lS9fPrf8rLPOchZOAICgzB37zjt2GsjNj12wwD583DlkAQA4mJzZn376SdOnT1dcXFy+8saNG2uNDcwAgAOxZYtUtaq7/Kz1xL72mrR7t9Svn9c1AwBEUs+szSVrK34VtHr1alWyuR4BoDh8PluNRTr0UPfar08fAlkAQPCD2T59+mjUqFG52zYAzAZ+PfTQQzr11FOLe3cAyjKblaB7d+nqq6WtW6X33nODWwAASiqYtXlmp02bptatWystLU0XX3xxboqBDQIDgP1KS5Meekhq31768UepQgX7cJEmTrRfyF7XDgAQyTmzDRs21O+//66xY8c619YrayuCXXLJJfkGhAFAQL/8IvXvL/31l7t92mnSCy9Ihxzidc0AAJEezGZmZqply5b64osvnODVLgBQLDbAa8kSWzpQevZZ6Zxz6I0FAJROmkFsbKyTWgAARWY5sH/8sWe7Sxdp7Fhp4ULp3HMJZAEApZszawslWG6srQIGAPtkqQQ9e0pHHiktXryn/LzzpKQkL2sGACirObO//fabszjCxIkTnZXAEhMT893+8ccfB7N+AMJRerr05JPSY4+5f1s+/dy50mGHeV0zAEBZD2arVKmicyzHDQAC+ekn6brr3Gm3zEknSS++KDVt6nXNAAARqNjB7BtvvFEyNQEQ/m65RXruOffvWrWk0aOlCy4gLxYA4H3OrK38ZbmyxxxzjI488kjde++9Sk1NLbmaAQg/9eq51/6e2QsvJJAFAIRGMPvYY4/pvvvuU8WKFVW/fn2NHj3aGQwGoAxbtszNhfW78053HtmXX5aqVvWyZgCAMqLIwezbb7+tF198Ud98840++eQTff7553r33XedHlsAZUxGhvT441LbtpLNN23bJjZWOuoor2sHAChDihzMrly5Uqeeemrudq9evRQVFaW1a9eWVN0AhKJp06SOHaX773eXpbXFD7Zv97pWAIAyqsjBrM0rm5CQsNciCrYqGIAyYNs26frrpWOPlf78U6pRQ3rnHenbb93BXgAAhPJsBj6fT1dccYXi4+Nzy2w1sAEDBuSba5Z5ZoEItGKFmz6wYYO7fdVV7jyy1at7XTMAQBlX5GC2f//+e5Vdeumlwa4PgFDUqJHUpo07qGvMGOmEE7yuEQAAxQtmmV8WKEMsfeiFF6Qrr3SXnbXptd57z1ZNkfKcnQEAIOwWTQAQ4WxqLZsndt48ackSN6g1tWt7XTMAAA58ABiACJecLNnc0d26uYGs5cMyzRYAIMTRMwuUdT6fNG6cuxTtunVumeXIP/WUO2MBAAAhjGAWKOueecZducu0aOGu3tWjh9e1AgCgSEgzAMo6m5WkTh3pwQelP/4gkAUAhBV6ZoGy5rff3LSC4cPdbVvwYNkyqUIFr2sGAECx0TMLlBU7drh5sTao64knpE8+2XMbgSwAIEzRMwuUBePHSzffLK1Z425fcok7awEAAGGOYBaIZKtWuUHsp5+6282aSS+9JPXu7XXNAAAICoJZIJKn3DrtNHfO2HLlpEGDpP/8Rypf3uuaAQAQNOTMApHKlqB98kk3nWDuXOmxxwhkAQARh2AWiBS7dkl33CGNGbOn7OSTpalTpTZtvKwZAAAlhjQDIBJ89pk0cKCbI1u5snTBBVLVqnt6aAEAiFD0zALhzGYnOOcc6cwz3UC2SRNp7Ng9gSwAABGOYBYIR9nZ0vPPS61aSR9/LMXESPfcI82f76YWAABQRpBmAISjRYukW2+VcnKko4+WXn5Zat/e61oBAFDqCGZLUE6OT8s3pzh/23Wz2kmKjiZ/EQfRG2s9sMYGdD3wgFS7tnT99VI0J1kAAGUTwWwJmb8mWeNmr9byTTvUr7r0+NcL1bhmZZ3TsYHa1k/yunoIN199Jd12m7uSl39mgocf9rpWAAB4LiS6c1544QU1btxYCQkJOuqoozRjxoxC933zzTcVFRWV72L/L9QC2WcnLdG81clKSohzyuzatq3cbgeKZN066fzz3cUPliyRhg71ukYAAIQUz4PZsWPH6o477tBDDz2k2bNnq0OHDjrppJO0cePGQv9P5cqVtW7dutzLihUrFEqpBdYjuzUlQ81rVVTFBLfz265t28o/nr3G2Q8oVE6Ooi0PtmVL6cMP3fSCu+6S/u//vK4ZAAAhxfNgduTIkbr22mt15ZVXqnXr1hozZowqVKig119/vdD/Y72xderUyb3UtrzBELF8S4qWbtyluknlnXrmZdtWvmTjTmc/IKB583Tc4MGKuflmaccO6cgjpZkzpREjpMREr2sHAEBI8TRnNiMjQ7NmzdLgwYNzy6Kjo9WrVy/9/PPPhf6/Xbt26ZBDDlFOTo46duyoxx9/XG0KWeEoPT3dufjtsOBAUmZmpnMJtuSUNGVnZaliXLxilKNo5bjP69/rinFR2rIzy9kvs0q8yjJ/+5fE6xDOfN98o2qLF8tXqZJyHnlEOQMGuD2ztBPHTCFol8LRNoHRLoWjbUKjXYrzOFE+n8+z891r165V/fr1NX36dHXt2jW3fNCgQfrhhx/066+/7vV/LMhdsmSJ2rdvr+TkZD311FP68ccf9eeff6pBgwZ77f/www9ryJAhe5W/9957Tg8wEArK7d6trH+Px6jsbLV65x39ffrpSqtRw+uqAQBQ6nbv3q2LL77YifUsvTSiZjOwoDdv4NutWze1atVKL7/8soYGGBxjvb6Wk5u3Z7Zhw4bq06fPfhvnQFgu7JPfLNaCtclqWrOiYqJ86hSzUrOyGynbF6W/N+1Sm3pJuvukw8r8NF32q+vbb79V7969FRsbqzJpwwbF3H23ombPVtasWVJ8vNsuMTFlu10KwTETGO1SONomMNqlcLRNaLSL/0x6UXgazNaoUUMxMTHasGFDvnLbtlzYorAGPeKII7R06dKAt8fHxzuXQP+vpF6Mszo10qrtS7R44241SIqXEqUdaTlanZyuaokJ6tepkeLj3VkOULKvRciyxQ5sMNegQdL27c48sbFTp+ZbvatMtksR0TaB0S6Fo20Co10KR9t42y7FeQxPB4DFxcWpU6dOmjRpUm6Z5cHadt7e133Jzs7WvHnzVLduXYUKm0f2lp4t1K5BkpLTMpwyu27foIpTzjyzZdyCBdIJJ0jXXecGsh07SjYdHcvQAgBQbJ6nGVgKQP/+/dW5c2d16dJFo0aNUkpKijO7gbn88sudvNphw4Y524888oiOPvpoNW/eXNu3b9eIESOcqbmuueYahRILWFvXraxlG5K1YMZG3XdKK1YAK+uysiTL337iCXcwl81M8Oij0sCBUjnP34oAAIQlz79BL7jgAm3atEkPPvig1q9fr8MPP1wTJkzInW5r5cqVzgwHftu2bXOm8rJ9q1at6vTs2gAym9Yr1Fjg2rhGohZIzjWBbBlnMxL89psbyPbtKz3/vNSokde1AgAgrHkezJqBAwc6l0CmTJmSb/uZZ55xLkBY2LTJEn+kKlVsomHpxReluXOls85ytwEAQHgvmgBEJJvx7o033BW8bJCXX9Om0tlnE8gCABBJPbNARFm8WLr+eumHH9xtSy1ITZXKl/e6ZgAARBx6ZoFgsZXmHn5Yat/eDWQteH3ySXemAgJZAABKBD2zQDDMny+de67bK2tOOcXNj23c2OuaAQAQ0eiZBYLB5jneskWyxT4++ED68ksCWQAASgE9s8CBDvD67jupVy93MFf16tLnn7sDvmzmAgAAUCromQWKa8kSqXdvqU8f6aOP9pQffTSBLAAApYxgFiiqjAx3xa527SRbgjkhQdq82etaAQBQppFmABTF1KnSdddJCxe629YrawO8mjXzumYAAJRp9MyWoJwcn5ZvTnH+tmvbRhh65BHpuOPcQLZWLendd6UJEwhkAQAIAfTMlpD5a5I1bvZqLd+0Q/2qS49/vVCNa1bWOR0bqG39JK+rh+I45hh3kNc110jDh0vVqnldIwAA8C+C2RIKZJ+dtERbUzLUICneKUtKiNO81clasy1Vt/RsQUAbyv7+W5o3TzrzTHe7Z0+3V/aww7yuGQAAKIA0gyCzVALrkbVAtnmtiqqY4P5esGvbtvKPZ68h5SAUZWa6Pa9t2kiXXiqtWrXnNgJZAABCEsFskC3fkqKlG3epblJ5Rdmp6Txs28qXbNzp7IcQ8vPPUseO0uDBUlqa1KWLlJ3tda0AAMB+EMwG2c60LKVn5qh8XEzA263cbrf9EAK2b5duuMHNi7UlaWvUkN5+210QgRW8AAAIeeTMBlmlhHKKj41WakZ2bopBXlZut9t+8FhqqtS+/Z50giuvlEaMcFfzAgAAYYGe2SBrXD3RyY1dl5wqny15modtW3mLWpWc/eCx8uWliy+WDj1UmjxZev11AlkAAMIMwWyQRUdHOdNvVUuMc3Jnd/2bTmDXtm3lZ3es7+wHDwZ4Wc/r77/vKXv4YemPP6Tu3b2sGQAAOEAEsyXApt2y6bfaNUhSclqGU2bX7RtUYVour/z6q9S5szRokLuSl39wly1JG+9OnwYAAMIPiZslxALW1nUra9mGZC2YsVH3ndJKzWon0SNb2pKTpfvvd5eetbQPW/BgwADrQve6ZgAAIAj4Ri9BFrg2ruHmxto1gWwpssB13DipdWvphRfc7csukxYtcgd6FZg2DQAAhCd6ZhGZPvtMOvdc9+/mzaUxY9yVvAAAQEQhmC1BtsrX8s3u4gh2TZpBKTr9dKlbN+nEE900A8uNBQAAEYdgtoTMX5PsLGu7fNMO9asuPf71QjWuWdmZ6YABYCVg5kxp2DDpv/91p9yKiZF+/NG9BgAAEYuc2RIKZJ+dtETzVicrKSHOKbNr27Zyux1BsnOndNtt0lFHSR9/LA0fvuc2AlkAACIewWwJpBZYj+zWlAxn8QT/KmB2bdtW/vHsNc5+OEiffuoO8Bo92hreXQDhxhu9rhUAAChFBLNBtnxLirM4Qt2k8ooqMGLetq18ycadzn44QKtXS2edJfXr5/7dtKn0zTfSu+9KtWt7XTsAAFCKCGaDbGdaltIzc1Q+LvApbiu3220/HKA775Q++UQqV04aPFiaP1/q08frWgEAAA8wACzIKiWUU3xstFIzsnNTDPKycrvd9kMx2Dyx/p7uJ5+Utm6VRo6U2rXzumYAAMBD9MwGWePqiU5u7LrkVPksAMvDtq28Ra1Kzn4ogl273J7Ya6/dU3bIIdK33xLIAgAAgtlgs3lkbfqtaolxTu7srn/TCezatq387I71mW+2KL74QmrTxu2B/b//c9MJAAAA8iCYLQE2j+wtPVuoXYMkJadlOGV23b5BFaeceWb3Y+1a6bzzpL59pZUrpcaNpa++ktq29bpmAAAgxJC4WUIsYG1dt7KWbUjWghkbdd8prVgBbH+ys91lZ21Ql80fa/PEWorBgw9KiaRlAACAvRHMliALXBvXSNQCy6WtkUgguz8WwA4d6l536SK98orUoYPXtQIAACGMYBaeik5Pd2cqMFWqSC+8IK1fLw0YwApeAABgvwhm4ZmoCRN04s03KyotTbr8crfwnHO8rhYAAAgjDABD6bOe1wsvVLkzzlDixo2KfvbZPb2zAAAAxUAwi9KTkyO9/LLUsqU0dqx80dFaesYZyrY5Ywss/QsAAFAUpBmgdCxY4C58MH26u925s7JeeEF/rlunQypW9Lp2AAAgTNEzi9KxebMbyFrgOnq09Msv0hFHeF0rAAAQ5uiZRclZvVpq0MD9+/jjpRdflE4/XWrYcE/aAQAAwEGgZxbBt3GjdOml0mGHScuX7ym/4YY9gSwAAEAQEMwieKyn9f/+zx3g9e67kk259d13XtcKAABEMNIMEBwLF0rXXy/99JO7bfmwtoJX585e1wwAAEQwemZx8B591F121gLZChWkp5+WZswgkAUAACWOYLYE5eT4tHxzivO3Xdt2RMrIkDIz3cFdNgXXHXdI5ej0BwAAJY+Io4TMX5OscbNXa/mmHepXXXr864VqXLOyzunYQG3rJynsp9natk1q0cLdvu8+txe2b18WPwAAAKWKntkSCmSfnbRE81YnKykhzimza9u2crs9LNmSs2+95Q7wuvBCKSvLLU9IkM44g0AWAACUOoLZILNUAuuR3ZqSoea1Kqpigtv5bde2beUfz14TfikHf/0l9ewpXXGFtGWLm1awYYPXtQIAAGUcwWyQLd+SoqUbd6luUnlne0dqZr5rK1+ycaezX1hIT5ceeURq106aPFkqX1564glp1iypfn2vawcAAMo4cmaDbGdaltIzc5QWm63F63doV1q6eraRZq7YqooJ8TqkRqJzu+0X8taskXr1khYtcrdPPtldxatJE69rBgAA4CCYDbJKCeWUmZ2j2Su2KSUjS3FRbjrBrrQsbU3N1paUDDWqVsHZL+TVrStVqSLVri2NGiVdcAF5sQAAIKSEQUQVXhpVraDtqRnavjtTMdFSTKwb/MVERykn0+eUJ5XPdPYLyQFeH34onXaalJgoRUdL773nBrRVq3pdOwAAgL2QMxtky7emOL2wkk/ZOT6lZ2U75XZt21a+My3T2S+kLF0q9enj9r4OGbKn3FIKCGQBAECIIpgNsr827NTujGynJ1ZRFrq6nOsot4fWbrf9QmbBg8cek9q2lb77zp1mq0YNr2sFAABQJKQZBJl1vlrOrKkQV+7fnNlsVYgtp3K+KKVnZju3h8TMXNOmSddfL/35p7ttg71eeklq3tzrmgEAABQJPbNBlhgXs6dH1ueTddAa59rny+2hdfbz0quvSsce6wayNWtK//2vNHEigSwAAAgrBLNBVqVCnCrGux3emdm+3MUR7Nq2TcX4WGc/T516qlS5snT11e7UW5dcwkwFAAAg7BDMBllS+VgdUi1RlS2gjZKy/g1mnesoOeWHVKvg7Feq/vlHevrpPdu24MGSJdJrr0nVqpVuXQAAAIKEnNkga1w9UYc3quLMXpCRla3dabbyV6YS48upVkKcYstF64hGVZ39SoUtOztypDtDQWqqu5KXzVpgatUqnToAAACUEILZIIuOjtI5HRtozbZUbdmVrtqVrAc2VU1qVlBaVpSqV4zX2R3rO/uVuJ9/dgd4zZvnbvfoITVuXPKPCwAAUEpIMygBbesn6bT2dbU7M1t/rd/llNl1ama2U263l6jt26Ubb5SOOcYNZKtXl958U5o0STr00JJ9bAAAgFJEz2wJmL8mWf+bsVJbdmW4883+uwLY5l0ZTnmzmhVLLqC1Vbx695ZmznS3r7hCGjGCuWMBAEBEomc2yGzWgld+/FuL1u1Udk6OKia4A73s2rat/NUf/86d5SDobEaCe++VWrSQvv9eeuMNAlkAABCxCGaD7O/NuzRzxVYnpkwqH5e7gIJd27aV/7Ziq7NfUGRlSU89Jb333p6ys8+W5s93c2QBAAAiGGkGQWbL1O5Ky1JsTJRWbU1RjLMCmLRhR5qyfVGqXD7Wud32a16r0sE92IwZ0nXXSb//7ubFnnyyO82WRcxxHs9jCwAAUAromQ26KKcXdktKpjJz/l0JzFJZrXc2R26501t7ELMZ7Ngh3XKLdPTRbiBbtar05JNSlSrBehIAAABhgZ7ZIGtWI1FpFrXug91u+x3Q4K7x46Wbb5bWrnXLLr3UXQyBOWMBAEAZRM9skC3fuiu3N7Ywvn/3K7aFC6VzznED2WbNpIkTpXfeIZAFAABlFj2zQfbdgk1F3u+kNvWKd+etW7u9spUrS/ffL5Uvf2CVBAAAiBD0zAZZemZ28PabNUs67jhp6dI9ZaNHS48+SiALAABAMBt8SRViDn6/nTul22+XunSRpk515431s5kKAAAA4CDNIMjKRUUf3H6ffSYNHCitWuVuX3SR9MwzQawhAABA5CCYDbKYmOgD22/NGjcf1mYrME2aSC+9JJ10UgnUEgAAIDKQZhBkXZtUP7D93nzTDWTLlXPTCmwFLwJZAACAfaJnNshqVokr+n6ZmVJsrFtw113SokXSoEFSu3YlW0kAAIAIQTAbZO//8m+u6z6Uz0hT8g23S2v/lH7+2Q1o4+PdOWMBAAAQXmkGL7zwgho3bqyEhAQdddRRmjFjxj73//DDD9WyZUtn/3bt2umrr75SqFi8Yec+b++x7Dd9+3836LjP33an3vryy1KrGwAAQKTxPJgdO3as7rjjDj300EOaPXu2OnTooJNOOkkbN24MuP/06dN10UUX6eqrr9acOXPUr18/5zLfckxDQE5O4PW/au7aquc/Ga43PhqiBjs2aWO1Om4g269fqdcRAAAgUngezI4cOVLXXnutrrzySrVu3VpjxoxRhQoV9Prrrwfcf/To0Tr55JN19913q1WrVho6dKg6duyo559/XqGgXFROvu0oX44af/21vn75Bp2+eKqyoqL1cpezdcf9b0innupZPQEAACKBpzmzGRkZmjVrlgYPHpxbFh0drV69eulnyyUNwMqtJzcv68n95JNPAu6fnp7uXPx27NjhXGdmZjqXYFufvFvxMXt6Z+OjfKr/00+qlL5bf9RtoQdOHahFtZuqVpqvRB4/nPiff1lvh4Jol8LRNoHRLoWjbQKjXQpH24RGuxTncTwNZjdv3qzs7GzVrl07X7ltL7KR/QGsX78+4P5WHsiwYcM0ZMiQvconTpzo9AAH211t9i77vc4Nqvn77/rnlFN0VYyt/GVL2WaHVK6vl7799luvqxCSaJfC0TaB0S6Fo20Co10KR9t42y67d+8u8r4RP5uB9frm7cm1ntmGDRuqT58+qly5ctAfr+3D3+Tbjo/2aWjnhrp9wyFKn5V/Kdr5D5fteWTtV5e9KXr37q1Y/xRloF32gbYJjHYpHG0TGO1SONomNNrFfyY95IPZGjVqKCYmRhs2bMhXbtt16tQJ+H+svDj7x8fHO5eC7IUoiRcjPTsqcHlO1F638SYp2dci3NEuhaNtAqNdCkfbBEa7FI628bZdivMYng4Ai4uLU6dOnTRp0qTcspycHGe7a9euAf+Plefd39gvhcL2L23R4TLyDgAAIAJ4nmZgKQD9+/dX586d1aVLF40aNUopKSnO7Abm8ssvV/369Z3cV3PrrbfqhBNO0NNPP63TTjtN77//vmbOnKlXXnlFoaBGYow2pmQXaT8AAACEeTB7wQUXaNOmTXrwwQedQVyHH364JkyYkDvIa+XKlc4MB37dunXTe++9p//85z+677771KJFC2cmg7Zt2yoUdGxYVRMWbS7SfgAAAAjzYNYMHDjQuQQyZcqUvcrOO+885xKK2jeuUqRg1vYDAADAwSF1M8hWbUkN6n4AAAAoHMFskK1PTg/qfgAAACgcwWyQxcVEBXU/AAAAFI5gNsiOaFw1qPsBAACgcASzQVYpPjao+wEAAKBwBLNBVi4mWvtLIIj6dz8AAAAcHCKqYPNJ0fuJZp3bfaVVIQAAgMhFMBtkzWtXVLn9DO6KjYl29gMAAMDBIZgNsqTysSofWy431cCfTeC/tvKEuBhnPwAAAETACmCRpkJ8jDKzc5yLz+fmE9hVXEy0YmOiVCEuxusqAgAARASC2SBLSc9W1QpxivJJ6dk5SoixYDZV1RPjlJYdpfiYaFWpEOfsBwAAgINDMBtklRLKqVpinBO8rt+RprT0TKc8OiraKatdOd4Z+2X7AQAA4OAQUQVZ4+qJal6rouatTlbHhlWUmmHBbIqOaFRF5eNitXRTito3qOLsBwAAgIPDALAgi46O0jkdGzi9sxa4Rv07FMyubdvKz+5Y39kPAAAAB4dgtgS0rZ+kW3q2ULsGSUpOy3DK7Np6ZK3cbgcAAMDBI82ghFjA2rpuZS3bkKwFMzbqvlNaqVntJHpkAQAAgoie2RJkgWvjGm5urF0TyAIAAAQXwSwAAADCFsEsAAAAwhbBLAAAAMIWwSwAAADCFsEsAAAAwhbBLAAAAMIWwSwAAADCFsEsAAAAwhbBLAAAAMIWwSwAAADCFsEsAAAAwhbBLAAAAMIWwWwJysnxafnmFOdvu7ZtAAAABE+5IN4X8pi/JlnjZq/W8k071K+69PjXC9W4ZmWd07GB2tZP8rp6AAAAEYGe2RIKZJ+dtETzVicrKSHOKbNr27Zyux0AAAAHj2A2yCyVwHpkt6ZkqHmtiqqY4HZ+27VtW/nHs9eQcgAAABAEBLNBtnxLipZu3KW6SeUVFRWV7zbbtvIlG3c6+wEAAODgEMwG2c60LKVn5qh8XEzA263cbrf9AAAAcHAIZoOsUkI5xcdGKzUjO+DtVm63234AAAA4OASzQda4eqKTG7suOVU+X/68WNu28ha1Kjn7AQAA4OAQzAZZdHSUM/1WtcQ4J3d217/pBHZt21Z+dsf6zn4AAAA4OASzJcDmkb2lZwu1a5Ck5LQMp8yu2zeo4pQzzywAAEBwkLhZQixgbV23spZtSNaCGRt13ymt1Kx2Ej2yAAAAQUTPbAmywLVxDTc31q4JZAEAAIKLYBYAAABhi2AWAAAAYYtgFgAAAGGLYBYAAABhi2AWAAAAYYtgFgAAAGGLYBYAAABhi2AWAAAAYYtgFgAAAGGLYBYAAABhi2AWAAAAYYtgFgAAAGGLYBYAAABhq5zKGJ/P51zv2LGjVB4vMzNTu3fvdh4vNja2VB4zXNA2gdEuhaNtAqNdCkfbBEa7FI62CY128cdp/rhtX8pcMLtz507numHDhl5XBQAAAPuJ25KSkva1i6J8RQl5I0hOTo7Wrl2rSpUqKSoqqlR+WVjgvGrVKlWuXLnEHy+c0DaB0S6Fo20Co10KR9sERrsUjrYJjXax8NQC2Xr16ik6et9ZsWWuZ9YapEGDBqX+uPbC86YIjLYJjHYpHG0TGO1SONomMNqlcLSN9+2yvx5ZPwaAAQAAIGwRzAIAACBsEcyWsPj4eD300EPONfKjbQKjXQpH2wRGuxSOtgmMdikcbRN+7VLmBoABAAAgctAzCwAAgLBFMAsAAICwRTALAACAsEUwCwAAgLBFMHsAXnjhBTVu3FgJCQk66qijNGPGjH3u/+GHH6ply5bO/u3atdNXX32V73Ybg/fggw+qbt26Kl++vHr16qUlS5Yoktvl1Vdf1XHHHaeqVas6F3vOBfe/4oornFXa8l5OPvlkhaPitM2bb7651/O2/1fWj5nu3bvv1S52Oe200yLqmPnxxx/Vt29fZ9Ubq/8nn3yy3/8zZcoUdezY0Rll3Lx5c+cYOtjPrUhom48//li9e/dWzZo1nUneu3btqm+++SbfPg8//PBex4x9Xkdyu9jxEui9tH79epX1YybQZ4hd2rRpE1HHzLBhw3TkkUc6q6HWqlVL/fr10+LFi/f7/0I1niGYLaaxY8fqjjvucKanmD17tjp06KCTTjpJGzduDLj/9OnTddFFF+nqq6/WnDlznAPGLvPnz8/d58knn9Szzz6rMWPG6Ndff1ViYqJzn2lpaYrUdrEPU2uXyZMn6+eff3aWyOvTp4/WrFmTbz8LRNatW5d7+d///qdwU9y2MfbFm/d5r1ixIt/tZfGYscAkb5vYeygmJkbnnXdeRB0zKSkpTltYIFEU//zzjxPQ9+jRQ3PnztVtt92ma665Jl/QdiDHYCS0jQUyFszaF+6sWbOcNrLAxj6L87JAJe8xM3XqVEVyu/hZ8JL3eVtQU9aPmdGjR+drE1u6tVq1ant9zoT7MfPDDz/opptu0i+//KJvv/1WmZmZznewtVdhQjqesam5UHRdunTx3XTTTbnb2dnZvnr16vmGDRsWcP/zzz/fd9ppp+UrO+qoo3zXX3+983dOTo6vTp06vhEjRuTevn37dl98fLzvf//7ny9S26WgrKwsX6VKlXxvvfVWbln//v19Z555pi/cFbdt3njjDV9SUlKh98cx43rmmWecY2bXrl0Rd8z42Uf0+PHj97nPoEGDfG3atMlXdsEFF/hOOumkoLV1uLZNIK1bt/YNGTIkd/uhhx7ydejQwRcpitIukydPdvbbtm1boftwzLhs/6ioKN/y5csj9pgxGzdudNrnhx9+8BUmlOMZemaLISMjw/l1b93mftHR0c629S4GYuV59zf2K8W/v/Wq2KmdvPvYWsR2Sqew+4yEdilo9+7dzi9D+wVcsAfXegsOO+ww3XDDDdqyZYvCyYG2za5du3TIIYc4PdZnnnmm/vzzz9zbOGZc//d//6cLL7zQ+eUfScdMce3vMyYYbR0pcnJytHPnzr0+Z+w0qJ2Gbtq0qS655BKtXLlSZcHhhx/unA623utp06bllnPM5P+csedtn8eRfMwkJyc71wXfG+ESzxDMFsPmzZuVnZ2t2rVr5yu37YK5Rn5Wvq/9/dfFuc9IaJeC7rnnHueDIe+bwE4Xv/3225o0aZKeeOIJ57TIKaec4jxWuDiQtrEg7PXXX9enn36q//73v84XcLdu3bR69Wrndo4ZObl7dmrLTqfnFQnHTHEV9hmzY8cOpaamBuX9GSmeeuop54fi+eefn1tmX7SWYzxhwgS99NJLzhey5fNb0BupLIC108Djxo1zLvaj2XLSLZ3AcMy41q5dq6+//nqvz5lIO2ZycnKc9KRjjjlGbdu2LXS/UI5nypXovQNFMHz4cL3//vtOj1regU7W6+Zniebt27dXs2bNnP169uypSGWDVOziZ4Fsq1at9PLLL2vo0KGe1i2UekvsmOjSpUu+8rJ6zGD/3nvvPQ0ZMsT5kZg3N9R+7PjZ8WKBivXCffDBB05uYCSyH8x2yfsZs2zZMj3zzDN65513PK1bKHnrrbdUpUoVJy80r0g7Zm666SancyDc8n7zome2GGrUqOEMONmwYUO+ctuuU6dOwP9j5fva339dnPuMhHbJ21NiwezEiROdD4V9sdM59lhLly5VuDiYtvGLjY3VEUcckfu8y/oxYwMU7MdPUb40wvGYKa7CPmNsEKGNJg7GMRju7Hix3jULNgqeJi3IgpdDDz00oo+ZQOyHof85c8y4o/LtDNlll12muLi4iD1mBg4cqC+++MIZjN2gQYN97hvK8QzBbDHYAd2pUyfnFGbe7nnbztuTlpeV593f2MhB//5NmjRxXuS8+9jpQRsFWNh9RkK7+Ec9Wk+jnarp3Lnzfh/HTrNb/qOdIgsXB9o2ednpvnnz5uU+77J8zPinhklPT9ell14akcdMce3vMyYYx2A4s9ksrrzySuc67zRuhbE0BOuljORjJhCbCcP/nMv6MWMsRcmC06L8aA7HY8bn8zmB7Pjx4/X999873yv7E9LxTIkOL4tA77//vjMy78033/QtWLDAd9111/mqVKniW79+vXP7ZZdd5rv33ntz9582bZqvXLlyvqeeesq3cOFCZxRkbGysb968ebn7DB8+3LmPTz/91PfHH384o7GbNGniS01N9UVqu9hzjouL83300Ue+devW5V527tzp3G7Xd911l+/nn3/2/fPPP77vvvvO17FjR1+LFi18aWlpvnBS3LaxkdbffPONb9myZb5Zs2b5LrzwQl9CQoLvzz//LNPHjN+xxx7rjNYvKFKOGXsec+bMcS72ET1y5Ejn7xUrVji3W5tY2/j9/fffvgoVKvjuvvtu5zPmhRde8MXExPgmTJhQ5LaO1LZ59913nc9fa5O8nzM2wtrvzjvv9E2ZMsU5ZuzzulevXr4aNWo4o7sjtV1sJpBPPvnEt2TJEue76NZbb/VFR0c775myfsz4XXrppc5I/UAi4Zi54YYbnFlz7HnkfW/s3r07d59wimcIZg/Ac88952vUqJETjNn0Jb/88kvubSeccIIzPVBeH3zwge/QQw919rcpdL788st8t9t0Fg888ICvdu3azodHz549fYsXL/ZFcrsccsghzgdLwYu9OYy9ofr06eOrWbOm82ax/a+99tqw+yA9kLa57bbbcve1Y+LUU0/1zZ4921fWjxmzaNEi5ziZOHHiXvcVKceMf9qkghd/W9i1tU3B/3P44Yc77di0aVNnerfitHWkto39va/9jf0wqlu3rtMu9evXd7aXLl3qi+R2eeKJJ3zNmjVzfiRXq1bN1717d9/333+/1/2WxWPG2I+d8uXL+1555ZWA9xkJx4wCtIld8n52hFM8E/XvkwIAAADCDjmzAAAACFsEswAAAAhbBLMAAAAIWwSzAAAACFsEswAAAAhbBLMAAAAIWwSzAAAACFsEswAAAAhbBLMAUEY1btxYo0aN8roaAHBQCGYBoIiioqL2eXn44YdLpR7t2rXTgAEDAt72zjvvKD4+Xps3by6VugCA1whmAaCI1q1bl3uxHs3KlSvnK7vrrrty97WVwrOyskqkHldffbXef/99paam7nXbG2+8oTPOOEM1atQokccGgFBDMAsARVSnTp3cS1JSktMb699etGiRKlWqpK+//lqdOnVyekenTp2qK664Qv369ct3P7fddpu6d++eu52Tk6Nhw4apSZMmKl++vDp06KCPPvqo0HpceumlTiA7bty4fOX//POPpkyZ4gS7y5Yt05lnnqnatWurYsWKOvLII/Xdd98Vep/Lly93ns/cuXNzy7Zv3+6U2X36zZ8/X6eccopzn3bfl112Wb5eYKu39Rzb86hevbp69eqllJSUYrQyABQPwSwABNG9996r4cOHa+HChWrfvn2R/o8Fsm+//bbGjBmjP//8U7fffrsTsP7www8B97deVwtUX3/99Xzlb775pho0aKA+ffpo165dOvXUUzVp0iTNmTNHJ598svr27auVK1ce8HOz4PbEE0/UEUccoZkzZ2rChAnasGGDzj//fOd2652+6KKLdNVVVznP34Lgs88+2+mlBoCSUq7E7hkAyqBHHnlEvXv3LvL+6enpevzxx51e065duzplTZs2dXp1X375ZZ1wwgkB/5/1vloPqfXGWo+uBYxvvfWW+vfvr+joaKd31y5+Q4cO1fjx4/XZZ59p4MCBB/Tcnn/+eSeQtfr6WUDdsGFD/fXXX04AbakVFsAecsghzu3WSwsAJYmeWQAIos6dOxdr/6VLl2r37t1OAGyn7v0X66m1VIHC2P7WC2s5ssZ6YK3X9corr3S2LbC0HN5WrVqpSpUqzn1ab+nB9Mz+/vvvmjx5cr56tmzZ0rnN6mrBc8+ePZ0A9rzzztOrr76qbdu2HfDjAUBR0DMLAEGUmJiYb9t6SQueZs/MzMz924JO8+WXX6p+/fr59rO828LY/Vo+rvXG2iwKFtT26NHD6dU1Fsh+++23euqpp9S8eXMnh/Xcc89VRkZGofdn8tY1bz39dbVUhSeeeGKv/1+3bl3FxMQ4jzl9+nRNnDhRzz33nO6//379+uuvTu8xAJQEemYBoATVrFnTySXNK+8gq9atWztBq/WYWtCZ92Kn7/fFemFXrVqljz/+2EkhsNQDv2nTpjnB7llnneX0lNogNRvkta96mrx1zVtP07FjRyen1+anLVhXfxBvA8aOOeYYDRkyxMnVjYuLc+oGACWFYBYASpANmLLBUpY2sGTJEj300EPOjAB+NgOC9aLaoC/rZbXT9bNnz3Z6NW17X6y30+7/uuuucwJiy1X1a9GihRPkWkBq6QEXX3yxM2tCYazn9uijj84dvGaDz/7zn//k2+emm27S1q1bnUFev/32m1PXb775xgmqs7OznR5Yy6e152vBuT3+pk2bnFQHACgpBLMAUIJOOukkPfDAAxo0aJAzPdbOnTt1+eWX59vHBmfZPjargQV+NvOApR0U5dS89cZaXqoFqwkJCbnlI0eOVNWqVdWtWzcnNcDqYT2r+2KDuWwAl00tZtOHPfroo/lur1evntPja4GrzZhgPb62n+XkWpqCzbv7448/OrMoHHrooU4w/PTTTzsD1QCgpET5mDMFAAAAYYqeWQAAAIQtglkAAACELYJZAAAAhC2CWQAAAIQtglkAAACELYJZAAAAhC2CWQAAAIQtglkAAACELYJZAAAAhC2CWQAAAIQtglkAAAAoXP0/YwCgPc6MknIAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "gbr = GradientBoostingRegressor(random_state=42)\n",
    "gbr.fit(x_train, y_train)\n",
    "y_pred = gbr.predict(x_test)\n",
    "evaluation_results = evaluate_model('Gradient Boosting Regressor', y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 721,
   "id": "174e875c-cbaa-4683-ab15-26a2ddb04293",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model: K-Nearest Neighbors Regressor\n",
      "Mean Absolute Error (MAE): 0.4017\n",
      "Mean Squared Error (MSE): 0.5150\n",
      "Root Mean Squared Error (RMSE): 0.7176\n",
      "R^2 Score: 0.4456\n"
     ]
    },
    {
     "data": {
      "image/png": "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X+vZs6f7cWCvnQXMdl+23n60zZo1y93fmjVrXMBmLGi1/2s/EIJ9b8/Z9s077rgjOWCx18neKxagWLqR/UCz1y04svrFF1+49+6JJ57otrcfQPZesedr26Xed+yHpAXQgwcPdqOL2elYHzs97+m09nnbP+01v+eee1LcZuvsM8D2l71797r3oKVp2Q9WC3rtdbQjNRasWfCWUcEfXvY5lhn7jfWb/aCx94i9dyxtxFLP7PMjPewHlO0np59+uksHsmB/7ty57keT9YM9jj13+/Fq6SrGfliY7GojokAAiDKvv/66fesEKlWqFMidO3dg0qRJGf6/3333XWD58uWBXLlyBW6//fbk288666xArVq1kpf//PPPQEJCQuCxxx5LcT+LFi1y/zd0/a5duw55vCFDhgTi4uICf/31V/K6a665xrXhvvvuS7HtN99849a//fbbKdZPnjw5xfqJEycmP4e0bNiwwW3Tv3//dPXLV1995bZ/9913A1u2bAkUL148cMkll6Roc8GCBZOXt2/fHihWrFigZ8+eKe5n7dq1gaJFi6ZYb20I/aiZP3++W+7du3eK/9u9e/dD2hz8v9dee22KbS+99NJAyZIlU6yz7ezy/fffJ6+zfs+XL5/bPqh9+/aBPHnyuNc/aPXq1YHChQsHzjzzzEP2lRYtWgT279+f4rHsOd56662BjAre5xdffOFeo7///jvw3nvvBY477rhA3rx53XLQueeeG6hTp05gz549yeuSkpICp59+eqBatWrJ62677Ta3jy1cuDB53aZNmwIlSpRwj7VixYrk9faesXW2T4UaNGiQe31///33FOttH7X9f+XKlW75jjvuCBQpUuSQ/ghVr169wIUXXnjYfqhfv36gdOnSrp1BP/74YyA+Pj5w9dVXH/L6d+nSJZCVbL+3x7H3QXoe2z4n7JKavU+sjzP6nk5Ls2bNAo0aNUqxbt68ee7/vvHGG27ZXvfgezejgu9r2xftsmzZssDgwYPd/lS3bt1M22/sM9r+/9ChQ5O3sX3ojDPOcOvtfZHW58XSpUvdfmHv4QMHDqR4HHs/BNnndrjXJCvaiOhESgOi1rp169zhOztMdTRsdMlGGF955RX3Sz8cGzW1w1422mKlsYIXG0WxUZ+vvvoqedvQfDYbCbTtbETCYjEbzUnNRmBD2SiwjcbYKFjoY9nhYxu5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NUqxTVJSklsObgMAMWvDBumii7wpgS3YtWo68+dL9ev73TIA8FWGA17L07UTxWxEdcGCBckne23dujXDo747duzQDz/84C7BsmN2feXKlcmpBldffXXy9pY28ccff7i6v5ZO8cILL2jChAm68847k7ex1AQ7qW7MmDH69ddfdfPNN7vyZ1a1AQBimn3OffaZlC+fN13w229LhQv73SoAiL6A18qIWakvCypDh5KbN2/uAuCM+P7779WgQQN3CQardr1fv35uec2aNcnBr7GSZJ988okb1bX6vVaezKpDBGvwmk6dOmnYsGHuPurXr+8C6MmTJx9yIhsAxJzhw61GpDR3rjdlcDpnyASAWJfhHF6bwOHMM888ZH3RokW1ZcuWDN1Xy5YtFbCSOWkIN4ua/Z+FCxce9n6tPq9dACCm2fkKlsJlZcbMySdb2RwCXQA41hFeO/lr2bJlh6y3/N0TTzwxo3cHADgaX37p5eZ262Zzrh9cT7ALAMce8NosZnfccYfmzp2ruLg4rV692k3ze/fdd7t8WQBAFrKT0QYMkGwSnrVrpRo1JKZNB4DMTWm47777XOWDc8891xX8tfQGK+llAe9tt92W0bsDAKTXmjVe+kJwRPe666TnnpOycYIcAMgRAa+N6j744IO65557XGqDVVqoWbOmChUqlDUtBABYDUbpyiu90mMFC0ovv+wtAwAyP6Xh2muv1fbt213NWwt0mzRp4oJdK/1ltwEAssCKFV6wW7euV1uXYBcAsi7gtfq2u3fvPmS9rXvjjTcyencAgLSEVrGxMmMjR0pz5kinnOJnqwAgdgNem6/YJpewMmI2wmvLwcvmzZv16aefqjQnTgBA5vj0U6lJE2nz5oPVFyxnN39+v1sGALGbw1usWDGXv2uXk63WYyq2fuDAgZndPgDIWfbtkx58UHrySW/58celJ57wu1UAkDMC3q+++sqN7p5zzjlueuESJUok32b5vJUqVVK5cuWyqp0AEPv++kvq3NlLWzBW+eaRR/xuFQDknID3rLPOcn9XrFihE044wY3oAgAyyYcfSj16eCkMRYtKo0ZJHTr43SoAyJknrX355Zd67733Dln/7rvvuhPaAAAZZNOot2/vBbunnirZ9OkEuwDgX8A7ZMgQlSpV6pD1dsLa4MGDM6tdAJBzXHKJdMIJ0p132jztUpUqfrcIAHL2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7HisaHNg9myV+f57BfLmVdJTTynJZlCzaYJzeF+xz6SNvgmPfgmPfkkbfRMe/RI5fZORx4kLBOyUd3+sXr1a5cuX16xZs9SsWbPk9X379tWMGTM013I2j8BGez///HP9/PPPLgfYjBs3zo0SV6lSRcuXL9cDDzygQoUKuSA6wWbgSmXAgAEaOHDgIevHjh3r7gf+qvrhh9pQp462WSoDAACAvEHPrl27auvWrSpSpEjsliV7/PHHXXBro7nBYNd07tw5+XqdOnVUt25dVa1a1W13brCUVQgbYbY84tAR3mBu8JE6MLN+oUydOlWtW7dW7ty5laOtX6+EO+/UgSFDpBNO8PpGom9SYZ9JG30THv0SHv2SNvomPPolcvomeEQ+PXwNeEuVKuVGXNetW5divS1b3u3hDBs2zAW8X3zxhQtoD+fEE090j7Vs2bKwAa/l+9olNXuxsnNnzu7HizgzZkhdukhr1ij+33+lL75IvinH900a6Je00Tfh0S/h0S9po2/Co1/875uMPIavJ63lyZNHjRo1SnHCWfAEtNAUh9SGDh2qQYMGafLkyWrcuPERH+eff/7Rpk2bVLZs2UxrOzLRgQPSoEHSOee4YFc1akjPPON3qwAAQIzwvUqDpRJYbd0xY8bo119/1c0336ydO3e6qg3m6quvTnFS2xNPPKGHH37YVXGw2r1r1651lx07drjb7e8999yjOXPm6M8//3TBc7t27XTSSSe5cmeIMGvXSva69Ovnyo+5aYK/+06qXdvvlgEAgBjhew5vp06dtGHDBvXr188FrlZuzEZuj7fpYiWtXLnSVW4IevHFF111h8svvzzF/VgdXzv5zFIkfvrpJxdAb9myReXKlXO5uDYiHC5tAT5avNibMc1SWuzkwBdftF84frcKAADEGN8DXtOrVy93CcdONAtlo7aHkz9/fle1IVokJQX058ad7rr9rXp8UcXHxylHqFpVsh82xx0nTZjgpTIAAADEYsCbUy1etVXvL/hHf27YpvYlpcGf/arKxxXRZQ0rqHb5oopJNppbqpRk5eHy55c+/liy+siUfwMAALGaw5uTg93npi3Von+2qmi+PG6d/bVlW2+3x5zJk73c3MGDD66rWJFgFwAAZCkCXp/SGGxk99+de3VS6UIqlM8baLe/tmzrP1iwym0XE2xKYDvx8PzzpY0bpUmTcvxM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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "knn = KNeighborsRegressor()\n",
    "knn.fit(x_train, y_train)\n",
    "y_pred = knn.predict(x_test)\n",
    "evaluation_results = evaluate_model('K-Nearest Neighbors Regressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 795,
   "id": "b350d28b-0d6c-44d6-9e37-7e7b0ab02d59",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV\n",
    "from sklearn.preprocessing import LabelEncoder, StandardScaler\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, recall_score, f1_score, classification_report\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 796,
   "id": "e870a1f9-a36b-4ca6-886a-212412e8e3e0",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 796,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 797,
   "id": "d7d12ac8-fd08-488a-a561-20dccdaa53fd",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop(columns=['id'], inplace=True, errors='ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 798,
   "id": "5a6d7b7e-6ddc-4229-a849-f77e85b6ad31",
   "metadata": {},
   "outputs": [],
   "source": [
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "from sklearn.impute import SimpleImputer\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 799,
   "id": "829898cd-8eb2-44ce-b247-597a8f3dc344",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_encoders = {}\n",
    "for column in categorical_cols:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])\n",
    "    label_encoders[column] = le"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 800,
   "id": "b98931fc-18a9-4af9-9430-45aef52d5e85",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.drop('classification', axis=1).values\n",
    "y = data['classification'].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 801,
   "id": "736ee121-3ff6-45b0-b638-f7a6365fe9c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = StandardScaler()\n",
    "X = scaler.fit_transform(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 802,
   "id": "dc9235a6-11d0-452f-bd4f-79792157ccd2",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 803,
   "id": "19e7fef0-1cc5-4368-a41b-5c4f9b513bf3",
   "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",
    "\n",
    "    print(f\"\\nModel Name: {model_name}\")\n",
    "    print(f\"Accuracy: {accuracy:.4f}\")\n",
    "    print(f\"Precision: {precision:.4f}\")\n",
    "    print(f\"Recall: {recall:.4f}\")\n",
    "    print(f\"F1 Score: {f1:.4f}\")\n",
    "    print(\"\\nClassification Report:\\n\", 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()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 804,
   "id": "e12cb92f-546a-4c38-a902-af028abe5dc8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Random Forest Classifier\n",
      "Accuracy: 1.0000\n",
      "Precision: 1.0000\n",
      "Recall: 1.0000\n",
      "F1 Score: 1.0000\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      1.00      1.00        76\n",
      "           2       1.00      1.00      1.00        44\n",
      "\n",
      "    accuracy                           1.00       120\n",
      "   macro avg       1.00      1.00      1.00       120\n",
      "weighted avg       1.00      1.00      1.00       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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y5buob87d+5s27Zt85NKAEDiBxiNwSxYsMDeffddd6OlHu+8844tXrzYbr31Vj+pBAAk/hhM8eLFbcaMGXbOOedELJ8zZ45dcsklR8S9MIzBIK8wBoO8UqRgPmjBlC1b1kqVKpVpuZaVKVMmVukCABzlchxgND1Z98KsW7cufZn+vvPOO23o0KGxTh8A4CgVVaNLXw2jmWIhP/zwg51wwgnuIatXr3ZfFbNhwwbGYQAA0QeYdu3aRbMaAACxudHySMUgP/IKg/zIK0XywyA/AADRyHFM1A+MjR492l5//XU39rJv376I1zdv3pzTTQIAElCOWzAjRoywv//973bddde5O/c1o6xDhw6WnJxsw4cP95NKAEDiB5gpU6a4X7QcOHCgFSxY0Dp16uS+pv++++6z+fPn+0klACDxA4zuealfv777u0SJEunfP3b55Ze7r48BACBXAaZKlSq2du1a9/eJJ55oM2fOdH8vWrTI3QsDAECuAkz79u1t1qxZ7u++ffu6u/dPOukk69q1q914440cVQBAbO6D0bjL3LlzXZC54oor7EjAfTDIK9wHg7xSJD/eB9OkSRM3k+zss8+2Bx98MDapAgAc9WJ2o6XGZfiySwBACHfyAwC8IMAAALwgwAAAvIh6XoIG8g9GvwVzpGBmD/LK9ZOWxDsJyCem9WxsCRtgvvzyy0Ou06JFi8NNDwAgQUQdYGbPnu03JQCAhMIYDADACwIMAMALAgwAwAsCDADACwIMAODICTBz5syxzp07W9OmTW3NmjVu2eTJk+2zzz6LdfoAAPklwEydOtVat25tRYsWdffG7N271y3XL1vybcoAgFwHmAceeMDGjx9vzz33nBUqVCh9efPmze2LL77I6eYAAAkqxwFmxYoVWd6xX6pUKdu6dWus0gUAyG8BplKlSvbjjz9mWq7xl5o1a8YqXQCA/BZgbr75ZuvXr58tWLDAkpKS7Pfff7cpU6bYoEGDrFevXn5SCQA46uT4V54HDx5saWlpduGFF9quXbtcd1lKSooLMH379vWTSgDAUScpCIIgN2/ct2+f6yrbsWOH1a1b10qUKGFHij0H4p0C5Bd8XT/yyrRE/rr+jAoXLuwCCwAAMQkw559/vht7yc5HH32U000CABJQjgNMo0aNIp7v37/fli5dat98841169YtlmkDAOSnADN69Ogslw8f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ZiVLlox3cpDAyGv5B11kAAAvCDAAAC8IMAAALwgwcDTYOmzYMAZd4R15Lf9gkB8A4AUtGACAFwQYAIAXBBgAgBcEGACAFwQY2FNPPWXVq1e3IkWK2Nlnn20LFy6Md5KQYPTVMGeeeaYdc8wxVqFCBWvXrp2tWLEi3smCZwSYfO61116zAQMGuGmjX3zxhTVs2NBat25t69evj3fSkEA++eQT6927t82fP98++OAD279/v7Vq1cp27twZ76TBI6Yp53NqsahmOXbsWPc8LS3Nqlatan379rXBgwfHO3lIUBs2bHAtGQWeFi1axDs58IQWTD62b98+W7JkiV100UXpy5KTk93zefPmxTVtSGz6oks59thj450UeESAycc2btxoqampVrFixYjler5u3bq4pQuJTa3kO+64w5o3b2716tWLd3LgUUGfGweAjDQW880339hnn30W76TAMwJMPlauXDkrUKCA/fHHHxHL9bxSpUpxSxcSV58+feydd96xTz/91KpUqRLv5MAzusjyscKFC1vjxo1t1qxZEd0Xet60adO4pg2JRXOJFFzefPNN++ijj6xGjRrxThLyAC2YfE5TlLt162ZnnHGGnXXWWTZmzBg3dbRHjx7xThoSrFvs5ZdftunTp7t7YUJjfPply6JFi8Y7efCEacpwU5QfeeQRd9E3atTInnjiCTd9GYiVpKSkLJdPnDjRunfvnufpQd4gwAAAvGAMBgDgBQEGAOAFAQYA4AUBBgDgBQEGAOAFAQYA4AUBBgDgBQEGAOAFAQYJS3eI66d5Q8477zz3NfF57eOPP3Z3sm/dujXP9vVITSfyFwIM8pQKQhVieujLNmvVqmUjR460AwcOeP/sadOm2f33339EFrbVq1d33wMHJBK+7BJ57pJLLnHfQbV3715777333BchFipUyIYMGZLlr24qEMUCv54I5C1aMMhzKSkp7vdmqlWrZr169XI/0fyvf/0roqvnr3/9qx133HFWp04dt/w///mPXXvttVa6dGkXKNq2bWu//PJL+jb1y5z6Zmi9XrZsWbvrrrvcV8SHy9hFpgB39913W9WqVV2a1Jp64YUX3HbPP/98t06ZMmVcSyb0hYz6OYNRo0a5r5vXtwA3bNjQ/vnPf0Z8joJm7dq13evaTng6c0P71rNnz/TP1DF5/PHHs1x3xIgRVr58eStZsqTddtttLkCHRJN2IJZowSDuVNht2rQp/bl+j0YF5AcffOCe79+/31q3bu1+o2bOnDlWsGBBe+CBB1xLaNmyZa6F89hjj9mLL75oEyZMsFNOOcU912+PXHDBBdl+bteuXW3evHnu26NV2K5atcr9jLQCztSpU+2qq66yFStWuLSEvlJeBfRLL71k48ePt5NOOsn9cFbnzp1dod6yZUsXCDt06OBaZbfccostXrzYBg4ceFjHR4FBP871xhtvuOA5d+5ct+3KlSu7oBt+3IoUKeK69xTU9JMLWl/BOpq0AzGnb1MG8kq3bt2Ctm3bur/T0tKCDz74IEhJSQkGDRqU/nrFihWDvXv3pr9n8uTJQZ06ddz6IXq9aNGiwYwZM9zzypUrBw8//HD66/v37w+qVKmS/lnSsmXLoF+/fu7vFStWqHnjPj8rs2fPdq9v2bIlfdmePXuCYsWKBXPnzo1Yt2fPnkGnTp3c30OGDAnq1q0b8frdd9+daVsZVatWLRg9enQQrd69ewdXXXVV+nMdt2OPPTbYuXNn+rJx48YFJUqUCFJTU6NKe1b7DBwOWjDIc/rJ3BIlSriWiWrn119/vQ0fPjz99fr160eMu3z11Vf2448/uh+qCrdnzx776aefbNu2bbZ27dqI37BRK0c/opbdr1EsXbrU/Vx0TmruSsOuXbvs4osvjliubqjTTjvN/f3dd99l+i2dWPw66FNPPeVaZ6tXr7bdu3e7z9Rv94RTK6xYsWIRn7tjxw7XqtL/h0o7EGsEGOQ5jUuMGzfOBRGNsygYhCtevHjEcxWO+mnnKVOmZNqWundyIze/oqh0yLvvvmvHH398xGsaw/Hl1VdftUGDBrluPwUNBVr9QNyCBQuO+LQjfyPAIM8pgGhAPVqnn366vfbaa1ahQgU3HpIVjUeowG3RooV7rmnPS5Ysce/NilpJaj198sknbpJBRqEWlAbYQ+rWresKY7Uismv5aPwnNGEhZP78+XY4Pv/8c2vWrJndfvvt6cvUcstILT21bkLBU5+rlqLGlDQx4lBpB2KNWWQ44t1www1Wrlw5N3NMg/wajNdA9l/+8hf77bff3Dr9+vWzhx56yN566y37/vvvXWF8sHtYdN9Jt27d7MYbb3TvCW3z9ddfd69rhptmj6k7b8OGDa4FoJaDWhL9+/e3SZMmuUL+iy++sCeffNI9F83c+uGHH+zOO+90EwT0O/SafBCNNWvWuK678MeWLVvcgLwmC8yYMcNWrlxpQ4cOtUWLFmV6v7q7NNts+fLlbibbsGHDrE+fPpacnBxV2oGYO6wRHOAwBvlz8vratWuDrl27BuXKlXOTAmrWrBncfPPNwbZt29IH9TWAX7JkyaB06dLBgAED3PrZDfLL7t27g/79+7sJAoULFw5q1aoVTJgwIf31kSNHBpUqVQqSkpJcukQTDcaMGeMmHRQqVCgoX7580Lp16+CTTz5Jf9/bb7/ttqV0nnvuuW6b0Qzya52MD01w0AB99+7dg1KlSrl969WrVzB48OCgYcOGmY7bfffdF5QtW9YN7uv46L0hh0o7g/yItST9E/uwBQDI7+giAwB4QYABAHhBgAEAeEGAAQB4QYABAHhBgAEAeEGAAQB4QYABAHhBgAEAeEGAAQB4QYABAJgP/w+AckAQjgIVewAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Parameters: {'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 5, 'n_estimators': 100}\n"
     ]
    }
   ],
   "source": [
    "param_grid_rf = {\n",
    "    'n_estimators': [100, 200],\n",
    "    'max_depth': [None, 10, 20],\n",
    "    'min_samples_split': [2, 5],\n",
    "    'min_samples_leaf': [1, 2]\n",
    "}\n",
    "rf = RandomForestClassifier(random_state=42)\n",
    "grid_rf = GridSearchCV(estimator=rf, param_grid=param_grid_rf, cv=2, scoring='accuracy')\n",
    "grid_rf.fit(X_train, y_train)\n",
    "\n",
    "best_rf = grid_rf.best_estimator_\n",
    "y_pred_rf = best_rf.predict(X_test)\n",
    "evaluate_model('Random Forest Classifier', y_test, y_pred_rf)\n",
    "print(\"Best Parameters:\", grid_rf.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 805,
   "id": "5b2c8e97-7136-40c3-a980-8e23fdc8d5e0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Logistic Regression\n",
      "Accuracy: 0.9833\n",
      "Precision: 0.9841\n",
      "Recall: 0.9833\n",
      "F1 Score: 0.9834\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.97      0.99        76\n",
      "           2       0.96      1.00      0.98        44\n",
      "\n",
      "    accuracy                           0.98       120\n",
      "   macro avg       0.98      0.99      0.98       120\n",
      "weighted avg       0.98      0.98      0.98       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAGJCAYAAACDyOR3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAK9pJREFUeJzt3Qd4FOX69/E7BULovYkgXekoRbqAAmKjeBAUqSIgItIO8CpSRPHYQMADRxRFRAVFRdADIk2Q3kSliIqiSJdeAiTzXvdzrt3/brIJG9hkkn2+n+taQmY3s8/Ozs7vaTMb4TiOIwAA60S6XQAAgDsIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCIBU2rNnj7Ro0ULy5MkjERER8tlnn4V0/b/99ptZ7zvvvBPS9WZmt912m7mFypkzZ+SRRx6RokWLmm395JNPSrhZsWKFeW36MxR0f9T16f6J0Bg9erTZpm7KlAHwyy+/SO/evaVMmTKSLVs2yZ07tzRo0EBee+01OX/+fJo+d9euXeX777+X5557TmbNmiW1atWScNGtWzezQ+r2DLQdNfz0fr29/PLLqV7/X3/9ZXb6bdu2iZuef/55c0Dr27eveQ8ffvjhNH2+G264Qe6++27JDHTbhLpSk1yYeG7R0dFy3XXXmf1v//79afrcSMTJZBYuXOjExsY6efPmdZ544gnnjTfecKZMmeJ07NjRyZIli9OrV680e+5z587pdZOcp556Ks2eIyEhwTl//rxz+fJlJ7117drViY6OdqKiopw5c+YkuX/UqFFOtmzZzDZ46aWXUr3+jRs3mr99++23U/V3cXFx5hYqdevWdRo0aOCkl1KlSjl33XWXk57i4+PNfqQ/UyNHjhxmP0hM90ddn+6f10rff90Pxo4d68yaNcuZPn2607NnT7PflS1b1jyPDS5duuT6a42WTGTv3r3SsWNHKVWqlCxbtkyKFSvmva9fv37y888/yxdffJFmz3/kyBHzM2/evGn2HFoj0laNW2JiYkxr6oMPPpAOHTr43ff+++/LXXfdJfPmzUuXspw7d06yZ88uWbNmDel6Dx8+LJUqVQrZ+i5fviwJCQkhL+e1iIyMDOl+FBUVZW6hdOedd3pb0NolV7BgQfnXv/4ln3/+eZJ9Ly05jiMXLlyQ2NhYSU/a8tGbq5xMpE+fPqbm8O233wadsFrLKFOmjJM1a1ZTExsxYoRz4cKFgDW0VatWObVr13ZiYmKc0qVLOzNnzvSr/epz+97075TWmDz/9+X5G19fffWVqX3myZPH1LYqVKhgyuSxd+/egLXkpUuXOg0bNnSyZ89u/vbee+91duzYEfD59uzZY8qkj8udO7fTrVs35+zZs1fcXvo3WqZ33nnHbIPjx49779uwYYNZ97x585K0AI4dO+YMHjzYqVKlivn7XLlyOa1atXK2bdvmfczy5cuTbD/f19mkSROncuXKzqZNm5xGjRqZVt6AAQO89+nNo0uXLqZ8iV9/ixYtTMtw//79AV9fcmXQba4OHTrk9OjRwylcuLBZf7Vq1cy28OV5f/T1T5gwwexbkZGRztatW6+pBRDsvqo1en2fixUrZrbRbbfd5vz444/m8b41d89r1Z8eP/30k9OuXTunSJEi5vVdd911zgMPPOCcOHHC3B9o23jW6am1e7aVx5dffuk0btzYyZkzp3nfa9Wq5cyePTvF1+pZl7YIE7fudfnzzz/vt3znzp1O+/btnXz58ply33LLLc78+fOTrPe7774zZdFWqr62Z5991pkxY0aScnvej0WLFpl16Tr1vVS6z+t+V6JECfM+aIvkhRdeSNKS+uCDD5ybb77Z+7p13584caL3/osXLzqjR492ypUrZ9afP39+87nXz39Kx4dQHrPCrgWwYMEC0+9fv379oB6vtYqZM2fK/fffL4MHD5b169fL+PHjZefOnfLpp5/6PVZbD/q4nj17mn7+GTNmmD7JW265RSpXrizt2rUzNf+BAwdKp06dpHXr1pIzZ85Ulf/HH380fcHVqlWTsWPHmtq2Pu+3336b4t99/fXXprakr1370LV/fvLkyaamvmXLFtPH7EtrT6VLlzavVe9/8803pXDhwqZ2FQx9rX369JFPPvlEevTo4a3933jjjXLzzTcnefyvv/5q+o3/8Y9/mOc9dOiQ/Oc//5EmTZrIjh07pHjx4nLTTTeZ1/zMM8/Io48+Ko0aNTJ/6/teHjt2zLxObeV17txZihQpErB8OtajLUB9n9auXWtqpvp8X331lenT1+cLRMug9+t7WKJECbNPqEKFCpltqgPN+n48/vjj5nV89NFHZh84ceKEDBgwwG9db7/9tqk16mvR9zF//vxyLYLdV0eMGCEvvvii3HPPPdKyZUv57rvvzE8tS0ouXrxoHhcXFyf9+/c3A+Da375w4ULz+nRSg24bLUedOnXM61Jly5ZNsS9f9w/9fGi59POxdetWWbRokTz44IOp3gaeAeZ8+fL5fWZ0P9cxguHDh0uOHDlk7ty50qZNG9MSbdu2rXmcvpamTZuaFrSWRR+n+72+N4Hs3r3bfI51LLFXr15SsWJF0+LUfVbXpctLliwpa9asMes7cOCATJw40fztkiVLzN82b97c+5nS90k/x579RD+n+v55tuepU6dk06ZN5vN4xx13pMsxKyhOJnHy5EmTlvfdd19Qj9fapz7+kUce8Vs+ZMgQs3zZsmV+aarLvvnmG++yw4cPm1TVmm2g2p+vYFsAWsvQ348cOZJsuQO1AGrUqGFqpVrT9q3taM1Ta8OJn09rsb7atm3rFChQINnn9H0dWoNX999/v9O8eXPzf639FC1a1BkzZkzAbaC1k8Q1JH2cbj+tzQQzBqA1fL1v2rRpAe/zbQGoxYsXm8ePGzfO+fXXX01NrE2bNk4wAtXItfam63vvvff8anH16tUz6z516pT3denjtGWl+8jVPt/V7KsHDx40YzSJX6fWNH1r64FaANpC0d8/+uijqxoDSNwC0FaD1nx1PCVxP/aVxgk86/r666/NZ+GPP/5wPv74Y6dQoUJmn9HfPXQfrFq1ql8NWNdfv359p3z58t5l/fv3dyIiIvxaYvp50Zp3oBaALlu0aJFfubTFoK9fW0q+hg8fbsYn9u3bZ37XFoK+/ymN01WvXv2Krb7Ex4e0OGZdSaaZBaQJqnLlyhXU47/88kvzc9CgQX7LPbW+xGMF2ifsqZV6aoVaK9Dabah4xg7mz59v+oyDoTUPnTWjye5by9RWhNYkPK/Tl9befenr0tq1ZxsGQ2twOoXw4MGDpratP5Or1WktS/ucVXx8vHkubR3p9tMaT7B0Pd27dw/qsToVV2tp2qrQFov2d2sr4GrpdtRasdbsPLJkySJPPPGEmTa6cuVKv8e3b9/e7COhEOy+unTpUjPe8Nhjj/k9Tmv0V6I1fLV48WJT071WWgs+ffq0qZUnHmsIdmrj7bffbrbh9ddfb2qyWmvX/n9tnam///7b7HvaotXnOnr0qLnp/qWtGZ2V5pk1pK2OevXqSY0aNbzr18/LQw89FPC5tYXXsmVLv2Xa4tPPirZAPM+lNy2n7tfffPON93N89uxZsw2So4/R1ouWMVhuHLMyTQDo1ESlO0Iwfv/9d3NQKleunN9y/ZDrm6P3+9LmXmK6Ixw/flxC5YEHHjDNWW3mafeGdnVoczalMPCUU9/YQF0auoPqzpjSa/E0qVPzWrSLS8N2zpw5Mnv2bKldu3aSbemh5Z8wYYKUL1/eHMR1ME93xu3bt8vJkyeDfk5t5qdmIFWnouqHXANy0qRJppvraul21vJ7gsx3G3vuT3wACZVg91XPz8SP023g220SiJZXDyzaLaLvjx78Xn/99VS9P4mnYqsqVarI1dLn14Poxx9/bPY33Zd9u2y0i0OHJkaOHGn2J9/bqFGjvAP6nm0TaP9Mbp8N9P7t2bPHBEni59IA8H0uDeAKFSqY7koNK+0G07/zpRUT7VrTx1WtWlWGDh1qPg8Z7ZgVnZkCQPt2f/jhh1T9XbC1keRmOATzjZnJPYfWGnzpLAOtRSxfvtykue40eoBt1qyZ6b8O1SyLa3ktHvpB1Jq19kdqjUL7NFOaO64fUv0gPPvss+aApDuynmAVbEtHpXYWhvY3ez6Uem6Gb+09raXFjJG0PinolVdeMS1JbYHq/qatG+1fXrdunbfWnZ60b9wzC0j79Bs2bGhamdo/ry1Iz74zZMiQJLX1Kx3gr+b9S0hIMK3qf/7znwH/Rg/mSisaWunQ1tR///tfc9MxoS5dupjPi2rcuLEJSc+21uDVStK0adNMBdDtY1amawEoHUDVjaoDf1eiU0X1DU3cBNMBSk1mvT9UNHV1nYklTmylB0YdPHr11VfNAKmeUKbNXA2F5F6H0g9FYrt27TK1OW06pwX9MOpBVltd2lpJjtbgdADurbfeMo/T7hmtNSXeJqE8wGmrR7uLtBmsA5Y6MLpx48arXp9uZ91XEgeWbmPP/Wkl2H3V81Nrxr60SyTYWp/WRp9++mlTEVm1apXpQtGDUmrfI8/gcGorZCkdzDSM9GTBKVOmmGU66cHTFaf7U6Cbp0tYt03i7aICLUvpNZ05cybZ5/KtcWtLVQfi//3vf3tPTH333Xf9nk8rQrqP6pTqP/74w3TbplSRSs9jVqYMAE1mPdhpgupGSUzfCJ0horRJqTwj9x564FU6nz1UdMfRprRvE0/77hOP2mufZmKePkudnRGInuugj9Gahe8BVT94WrPwvM60oAd1rdHrB1KboSl9eBPXOrQ/NfFZnZ6gChSWqTVs2DDZt2+f2S76nupMKJ0Jkdx2vBLdjjrOoS0yD+1v19lWWhvV2SFpJdh9VSsOOm986tSpfo/zHDBTouM/+noSh4FWSHy3mb5Hwbw/GvJ68NWDduIZSKmpgfrSWVjaKtDtoOvUmrYu07Ed/Twld16O0haCVgx9zzLXz5t2XwarQ4cOZh1as09Mt4ln+2ng+tJtqAd35dmWiR+j+5C2VlLaP9PzmJXpuoA8B1qdjqh96do3q00u7YPUKW46XcszbU9Vr17dHBDeeOMN8+bpB3jDhg3mgKHNTT24hYrWevWApFPStFmtg2z6IdUmo+8gqPYLas1L30hNc+2+0BqENr+1+Zucl156yfQ36iCXTvnyTAPVgb2UahTXSndsrS0G0zLT16a1HZ3Wqd0x+sHz1OB83z/ty9Qapx489GBTt27dVPena4tJt5v2A3umpWoTXA8W2hWlrYHU0laEHmh0/9m8ebMJFG3Z6NQ+/UAGO/kgOVozHDduXJLlNWvWNPtDMPuqjhvpNEPtyrn33nulVatWZhqodkFoSzCl2rtuM53eqlN1db/Ug5lO+9Tw1gFtD51CqNOO9aCjXa763uh7FKhLVrs0tDKm40PaWtSWsJZH939PV0hqaV+5llGnmOpkBh0n0M+GhpVO19R9Sit/eqD+888/zfN5Kofvvfee6cLRQXHPNFCttWsQBNOyGTp0qBmE1v3ZM51SW5q6P+u+oNNUdTvra9Z1atetfna1pa+fR62oecaMtGWq+6OuQ1sCOgVU16HvQXLS85jl5WRCOk1LL/lwww03mJMldDqanmQxefJkv+lielKFTl3UEyT0MhHXX399iidVXGn6YXLTQJWe4KEng2h5KlasaKYTJp7mpSdz6TTW4sWLm8fpz06dOvlNO0vuRDCdMqevUU/+0Slo99xzT7IngiWeZprcSTwpTQNNTnLTQHXqmefkJC3n2rVrA07f1BN4KlWqZKYzBjoRLBDf9eh0TH2/9CQcfX99DRw40EyN1edOSXLvt54I1r17d6dgwYLm/dHph4nfh5T2gZSeL9BJVnrTSyCkZl/VqYcjR44003J1Wzdr1sycKKXTfPVEyeSmgepUWZ0erCc26YlSOj2yadOmZr/ytWvXLnMyla47mBPBPv/8czMl07Nf1qlTx5wkdTUngimdTqxl1JtnmuUvv/xipjvra9Ztoyd53X333WbqqC+dAqonEepUSD2Ra/z48c6kSZPMc+kUWt/3I7kpmqdPnzbbXU/g0n1A9wV9fS+//LKZFqz0efWkQ52arY8pWbKk07t3b+fAgQPe9ej0ZN0WemKibpsbb7zRee6557zrSOlEsFAes64kQv8JfawASC9aW9Tat7YwnnrqKbeLk6HoRARt2WnffqgvZREOMtUYAGC7QFdp9fQZh/KS2eGwbbQfXru5tAuJg38YjAEAttNBau0f91yKZPXq1WaWiQ7K6jkmNtMxMg1B7YfXcQKdlaaD3zouhMAIACAT0dkmOhNIB7r14OYZGA40wGwbDUUdaNVBVB301QkCGgI6Jx+BMQYAAJZiDAAALEUAAIClCAAAsFRYDgLH1kz+bDsglA6vm+R2EWCJXDGhr6/TAgAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJaKdrsASD+7vhgjpYoXSLJ82pxvZOALc/2WfTalr7RsUFk6DHxDFqzYno6lRDh6+803ZPnSJfLb3l8lJiabVKtRU/o/OVhuKF3a7aJZjQCwSMPOL0lUZIT390rlisuX0/rLJ0u2+j2u/0NNxXFcKCDC1pZNG+UfHR+USpWrSHx8vLw+aYI83qenfPTpQonNnt3t4lmLALDI0eNn/H4f0r2K/LLviKzavMe7rFqF62TAw82kwUMvym9fj3ehlAhHk6dN9/t99LPj5Y7bGsjOHT/KzbVqu1Yu2zEGYKks0VHSsXVtmTl/rXdZbLYs8s74bvLkC3Pl0LHTrpYP4e3Mmf/tX7nz5HG7KFZztQVw9OhRmTFjhqxdu1YOHjxolhUtWlTq168v3bp1k0KFCrlZvLB2b9NqkjdXrLy3YL132YuD28u67/bKwhXfu1o2hLeEhAR55cXxUr3mzVKufAW3i2M11wJg48aN0rJlS8mePbvcfvvtUqHC/3aEQ4cOyaRJk+SFF16QxYsXS61atVJcT1xcnLn5chLiJSIyKk3Ln9l1bVNfFn+7Qw4cOWl+v6tJVbmtTgW5teMLbhcNYe5fz42VX37eI2++M9vtolgvwnHcGe679dZbpXr16jJt2jSJiPi/gUmlRerTp49s377dtA5SMnr0aBkzZozfsqgitSVLsTppUu5wULJYPtmxYIx0HDLdW9t/aUh7eaxTE0lI+L/dITo6SuLjE+Tbrb9Iy16vuVjijOvwukluFyFT+dfzz8o3y5fJG2/PkutKlHC7OJlKrpjI8AmA2NhY2bp1q9x4440B79+1a5fUrFlTzp8/n+oWQOFGw2gBpOCp3q2lZ/sGUv7OkeYAr4oUyCUF8ub0e9zmj5+SwS9+JF+s/EF+/+uYS6XN2AiA4Ohh5sXx42TFsq/lP2/NlJKlbnC7SJlOWgSAa11A2te/YcOGZANA7ytSpMgV1xMTE2Nuvjj4J09bW13uu1VmL1zvPfgrHfQNNPD7x4HjHPwRkm6fRf/9Ql55bYpkz5FDjh49YpbnzJlLsmXL5nbxrOVaAAwZMkQeffRR2bx5szRv3tx7sNcxgKVLl8r06dPl5Zdfdqt4YatZ3YpSslh+mfnZOreLAot8PPdD87N3j65+y0c9+7zcc19bl0oF17qA1Jw5c2TChAkmBPTkEBUVFSW33HKLDBo0SDp06HBV642t+XiISwoERhcQ0ktYjQH4unTpkpkSqgoWLChZsmS5pvURAEgvBADSS1iNAfjSA36xYsXcLgYAWIUzgQHAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgqehgHrR9+/agV1itWrVrKQ8AICMFQI0aNSQiIkIcxwl4v+c+/RkfHx/qMgIA3AqAvXv3psVzAwAyegCUKlUq7UsCAMj4g8CzZs2SBg0aSPHixeX33383yyZOnCjz588PdfkAABklAKZOnSqDBg2S1q1by4kTJ7x9/nnz5jUhAAAI0wCYPHmyTJ8+XZ566imJioryLq9Vq5Z8//33oS4fACCjBIAOCNesWTPJ8piYGDl79myoygUAyGgBULp0adm2bVuS5YsWLZKbbropVOUCAGSEWUC+tP+/X79+cuHCBTP3f8OGDfLBBx/I+PHj5c0330ybUgIA3A+ARx55RGJjY+Xpp5+Wc+fOyYMPPmhmA7322mvSsWPH0JcQAJAmIpzkTu8NggbAmTNnpHDhwpKRxNZ83O0iwBKH101yuwiwRK6YSPdbAB6HDx+W3bt3m//rJSAKFSoUynIBANJYqiPl9OnT8vDDD5tunyZNmpib/r9z585y8uTJtCklAMD9ANAxgPXr18sXX3xhTgTT28KFC2XTpk3Su3fv0JcQAJAxxgBy5MghixcvloYNG/otX7VqlbRq1SpDnAvAGADSC2MAyMxjAKleY4ECBSRPnjxJluuyfPnyhapcAIA0luoA0Omfei7AwYMHvcv0/0OHDpWRI0eGunwAgDQS1CwgvfSDzvTx2LNnj5QsWdLc1L59+8ylII4cOcI4AACEUwC0adMm7UsCAMg8J4JlVAwCI70wCAyrBoEBAOEh1WcC6xfATJgwQebOnWv6/i9evOh3/99//x3K8gEA0kiqWwBjxoyRV199VR544AFz5q/OCGrXrp1ERkbK6NGj06aUAAD3A2D27NnmG8EGDx4s0dHR0qlTJ3MZ6GeeeUbWrVsX+hICADJGAOic/6pVq5r/58yZ03v9n7vvvttcHgIAEKYBUKJECTlw4ID5f9myZeWrr74y/9+4caM5FwAAEKYB0LZtW1m6dKn5f//+/c3Zv+XLl5cuXbpIjx490qKMAICMeB6A9vuvWbPGhMA999wjGQHnASC9cB4ArD4P4NZbbzUzgerWrSvPP/98aEoFAEhzIYsUHRfgYnAAkHlwJjAAWIoAAABLEQAAYKmgrwWkA70p0e8CyCiOb5zidhFgifvf2uh2EWCJhb1ruxcAW7duveJjGjdufK3lAQCkk6ADYPny5WlbEgBAumIMAAAsRQAAgKUIAACwFAEAAJYiAADAUlcVAKtWrZLOnTtLvXr1ZP/+/WbZrFmzZPXq1aEuHwAgowTAvHnzpGXLlhIbG2vODYiLizPL9ZvBuBooAIRxAIwbN06mTZtmvhc4S5Ys3uUNGjSQLVu2hLp8AICMEgC7d+8OeMZvnjx55MSJE6EqFwAgowVA0aJF5eeff06yXPv/y5QpE6pyAQAyWgD06tVLBgwYIOvXr5eIiAj566+/ZPbs2TJkyBDp27dv2pQSAODetYA8hg8fLgkJCdK8eXM5d+6c6Q6KiYkxAaBfEg8ACPMvhb948aLpCjpz5oxUqlRJcubMKRnFhctulwC24HLQsOJy0IllzZrVHPgBAJlTqgOgadOmpu8/OcuWLbvWMgEAMmIA1KhRw+/3S5cuybZt2+SHH36Qrl27hrJsAICMFAATJkwIuHz06NFmPAAAYNnF4PTaQDNmzAjV6gAAmSUA1q5dK9myZQvV6gAAGa0LqF27dn6/6yzSAwcOyKZNm2TkyJGhLBsAICMFgF7zx1dkZKRUrFhRxo4dKy1atAhl2QAAGSUA4uPjpXv37lK1alXJly9f2pUKAJCxxgCioqJMLZ+rfgKAhYPAVapUkV9//TVtSgMAyNhfCKMXflu4cKEZ/D116pTfDQAQZmMAOsg7ePBgad26tfn93nvv9bskhM4G0t91nAAAEEZXA9X+f63x79y5M8XHNWnSRNzG1UCRXrgaKKy4GqgnJzLCAR4AkM5jACldBRQAEMbnAVSoUOGKIfD3339fa5kAABktAMaMGZPkTGAAgAUB0LFjRylcuHDalQYAkPHGAOj/BwBLA+AqvzseAJDZu4ASEhLStiQAgMz5hTAAgMyFAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigCAfPj+bLnzjmZSu2ZVeajjP+T77dvdLhLCzP01isrC3rWlV/3rA94/+s7y5v5bb8ib7mWzGQFguUX//VJefnG89H6sn3z40adSseKN0rd3Tzl27JjbRUOYKF8oh7S6qbDsPXYu4P33VS2S7mXC/xAAlps1821pd38HadO2vZQtV06eHjVGsmXLJp99Ms/toiEMZIuOlCHNysjkb36TM3GXk9xfukCstK1WVCau2OtK+WxHAFjs0sWLsnPHj3JrvfreZZGRkXLrrfVl+3dbXS0bwkPfhqVk474T8t3+U0nui4mOlKHNy8rU1b/LifNJwwFpjwCw2PETxyU+Pl4KFCjgt1x/P3r0qGvlQnhoXDa/lC2YXWZu+DPg/Y/Uu152Hjwj638/ke5lQwYJgPPnz8vq1atlx44dSe67cOGCvPvuuyn+fVxcnJw6dcrvpssAuKdgjqzSq35JeXnZr3Ip3klyf51SeaX6dbll+pp9rpQP/xMtLvrpp5+kRYsWsm/fPomIiJCGDRvKhx9+KMWKFTP3nzx5Urp37y5dunRJdh3jx4+XMWPG+C17auQoefqZ0Wle/swuX958EhUVlWTAV38vWLCga+VC5leuUHbJlz2LvNa+sndZVGSEVC6WS+6uXES+3HFYiuaOkTndb/b7uxF3lJMdB0/LiAW7XSi1fVwNgGHDhkmVKlVk06ZNcuLECXnyySelQYMGsmLFCilZsmRQ6xgxYoQMGjTIb5kTFZNGJQ4vWbJmlZsqVZb169ZKs+a3m2UJCQmyfv1a6dips9vFQyamff795v7gt2zAbaXlzxPnZd62g3LywiVZtOOI3/2vd6gib67dJxvoErIjANasWSNff/21qW3qbcGCBfLYY49Jo0aNZPny5ZIjR44rriMmJsbcfF1gPCloD3ftLiP/3zCpXLmKVKlaTd6bNdN0y7Vp287toiETO38pQX4/ft5vWdzleDkdd9m7PNDA75EzF+XQ6YvpVk7buRoAeqCJjv6/Img30NSpU+Xxxx+XJk2ayPvvv+9m8azQ6s7Wcvzvv+XfUybJ0aNHpOKNN8m///OmFKALCAh7EY7jJB2hSSd16tSR/v37y8MPP5zkPg2B2bNnm0FdnamSGrQAkF7uf2uj20WAJRb2rh1es4Datm0rH3zwQcD7pkyZIp06dRIX8wkAwpqrLYC0QgsA6YUWANJL2LUAAADuIQAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAALAUAQAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAEAAJYiAADAUgQAAFiKAAAASxEAAGApAgAALBXhOI7jdiHgvri4OBk/fryMGDFCYmJi3C4Owhj7WsZBAMA4deqU5MmTR06ePCm5c+d2uzgIY+xrGQddQABgKQIAACxFAACApQgAGDoYN2rUKAblkObY1zIOBoEBwFK0AADAUgQAAFiKAAAASxEAAGApAgDy+uuvyw033CDZsmWTunXryoYNG9wuEsKMXvqhdu3akitXLilcuLC0adNGdu/e7XaxrEcAWG7OnDkyaNAgMy1vy5YtUr16dWnZsqUcPnzY7aIhjKxcuVL69esn69atkyVLlsilS5ekRYsWcvbsWbeLZjWmgVpOa/xaM5syZYr5PSEhQa6//nrp37+/DB8+3O3iIUwdOXLEtAQ0GBo3bux2caxFC8BiFy9elM2bN8vtt9/uXRYZGWl+X7t2ratlQ3jTC8Gp/Pnzu10UqxEAFjt69KjEx8dLkSJF/Jbr7wcPHnStXAhv2sp88sknpUGDBlKlShW3i2O1aLcLAMAuOhbwww8/yOrVq90uivUIAIsVLFhQoqKi5NChQ37L9feiRYu6Vi6Er8cff1wWLlwo33zzjZQoUcLt4liPLiCLZc2aVW655RZZunSpX/Ncf69Xr56rZUN40bkmevD/9NNPZdmyZVK6dGm3iwRaANApoF27dpVatWpJnTp1ZOLEiWZqXvfu3d0uGsKs2+f999+X+fPnm3MBPGNM+s1gsbGxbhfPWkwDhZkC+tJLL5kPZY0aNWTSpElmeigQKhEREQGXv/3229KtW7d0Lw/+hwAAAEsxBgAAliIAAMBSBAAAWIoAAABLEQAAYCkCAAAsRQAAgKUIAACwFAGAsKVnmOpXD3rcdttt5jLE6W3FihXmTNgTJ06k22vNqOVExkIAIF3pgUoPMnrTi9GVK1dOxo4dK5cvX07z5/7kk0/k2WefzZAHQ/1OZr0OE5CeuBgc0l2rVq3MNWDi4uLkyy+/NBcKy5Ili4wYMSLgt5ZpUIQC3z4F+KMFgHQXExNjvm+gVKlS0rdvX/MVlJ9//rlfV8Zzzz0nxYsXl4oVK5rlf/zxh3To0EHy5s1rDuT33Xef/Pbbb9516jeb6ZVN9f4CBQrIP//5T3MJYl+Ju4A0gIYNG2a+A1nLpK2Rt956y6y3adOm5jH58uUzLQHPBcv0ctnjx483lzPWq1hWr15dPv74Y7/n0VCrUKGCuV/X41vOq6GvrWfPnt7n1G3y2muvBXzsmDFjpFChQpI7d27p06ePCVCPYMoOu9ACgOv0YHTs2DHv7/p9BHoAW7Jkifn90qVL0rJlS/MdBatWrZLo6GgZN26caUls377dtBBeeeUVeeedd2TGjBly0003md/12vPNmjVL9nm7dOlivvtYr36qB8O9e/ear8nUQJg3b560b99edu/ebcriuWSxHkDfe+89mTZtmpQvX958sUnnzp3NQbdJkyYmqNq1a2daNY8++qhs2rRJBg8efE3bRw/c+uUpH330kQm3NWvWmHUXK1bMhKLvdsuWLZvpvtLQ0Ut66+M1TIMpOyykVwMF0kvXrl2d++67z/w/ISHBWbJkiRMTE+MMGTLEe3+RIkWcuLg479/MmjXLqVixonm8h94fGxvrLF682PxerFgx58UXX/Tef+nSJadEiRLe51JNmjRxBgwYYP6/e/dubR6Y5w9k+fLl5v7jx497l124cMHJnj27s2bNGr/H9uzZ0+nUqZP5/4gRI5xKlSr53T9s2LAk60qsVKlSzoQJE5xg9evXz2nfvr33d91u+fPnd86ePetdNnXqVCdnzpxOfHx8UGUP9JoR3mgBIN3pVwLmzJnT1Oy1dvvggw/K6NGjvfdXrVrVr9//u+++k59//tl8kYivCxcuyC+//CInT56UAwcO+H2HgbYS9Etukrva+bZt28zXYaam5qtlOHfunNxxxx1+y7WbpWbNmub/O3fuTPJdCqH4drXXX3/dtG727dsn58+fN8+p393gS1sx2bNn93veM2fOmFaJ/rxS2WEfAgDpTvvFp06dag7y2s+vB2tfOXLk8PtdD1761ZWzZ89Osi7tvrgaV/MtVFoO9cUXX8h1113nd5+OIaSVDz/8UIYMGWK6tfSgrkGoX+Czfv36DF92ZGwEANKdHuB1wDVYN998s8yZM0cKFy5s+uMD0f5wPSA2btzY/K7TSjdv3mz+NhBtZWjrY+XKlWYQOjFPC0QHYD0qVapkDpZaC0+u5aDjD54BbY9169bJtfj222+lfv368thjj3mXacsnMW0paevAE276vNrS0jENHTi/UtlhH2YBIcN76KGHpGDBgmbmjw4C62CtDnQ+8cQT8ueff5rHDBgwQF544QX57LPPZNeuXeZgmdIcfp13r9+F3KNHD/M3nnXOnTvX3K8zlHT2j3ZXHTlyxNSgteatNfGBAwfKzJkzzUF4y5YtMnnyZPO70pk3e/bskaFDh5oBZP0eXB2cDsb+/ftN15Tv7fjx42bAVgeTFy9eLD/99JOMHDlSNm7cmOTvtTtHZwvt2LHDzEQaNWqU+SL2yMjIoMoOC7k9CAF7B4FTc/+BAwecLl26OAULFjSDxmXKlHF69erlnDx50jvoqwO8uXPndvLmzesMGjTIPD65QWB1/vx5Z+DAgWYAOWvWrE65cuWcGTNmeO8fO3asU7RoUSciIsKUS+lA9MSJE82gdJYsWZxChQo5LVu2dFauXOn9uwULFph1aTkbNWpk1hnMILA+JvFNB8B1ALdbt25Onjx5zGvr27evM3z4cKd69epJttszzzzjFChQwAz+6vbRv/W4UtkZBLYP3wkMAJaiCwgALEUAAIClCAAAsBQBAACWIgAAwFIEAABYigAAAEsRAABgKQIAACxFAACApQgAABA7/X9xBmkQUlg15AAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Parameters: {'C': 0.01, 'max_iter': 100, 'solver': 'lbfgs'}\n"
     ]
    }
   ],
   "source": [
    "param_grid_lr = {\n",
    "    'C': [0.01, 0.1, 1, 10],\n",
    "    'solver': ['liblinear', 'lbfgs'],\n",
    "    'max_iter': [100, 200, 300]\n",
    "}\n",
    "lr = LogisticRegression(random_state=42)\n",
    "grid_lr = GridSearchCV(estimator=lr, param_grid=param_grid_lr, cv=2, scoring='accuracy')\n",
    "grid_lr.fit(X_train, y_train)\n",
    "\n",
    "best_lr = grid_lr.best_estimator_\n",
    "y_pred_lr = best_lr.predict(X_test)\n",
    "evaluate_model('Logistic Regression', y_test, y_pred_lr)\n",
    "print(\"Best Parameters:\", grid_lr.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 806,
   "id": "ea904bec-da7e-4ac9-9267-325c49fe8e95",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Decision Tree Classifier\n",
      "Accuracy: 0.9750\n",
      "Precision: 0.9841\n",
      "Recall: 0.9750\n",
      "F1 Score: 0.9791\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.96      0.98        76\n",
      "           1       0.00      0.00      0.00         0\n",
      "           2       0.96      1.00      0.98        44\n",
      "\n",
      "    accuracy                           0.97       120\n",
      "   macro avg       0.65      0.65      0.65       120\n",
      "weighted avg       0.98      0.97      0.98       120\n",
      "\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n",
      "C:\\Users\\lenovo\\anaconda3\\envs\\TurkiS2\\Lib\\site-packages\\sklearn\\metrics\\_classification.py:1565: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n",
      "  _warn_prf(average, modifier, f\"{metric.capitalize()} is\", len(result))\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAGJCAYAAABLpA6hAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAL8FJREFUeJzt3Qm8TeX+x/Gf+ZjJLIUyZ4xkCLeIxkuaJ2NEuFIKlUSDbhNRcdPkSqXSqEHSLGOigSQpl0zHPJOz/q/vc//73H1G5zwdZ++zz+fttV/OXnvtvZ79rOH3jHvlCYIgMAAAPOT1eRMAAEIQAQB4I4gAALwRRAAA3ggiAABvBBEAgDeCCADAG0EEAOCNIAIA8Jargsjq1autY8eOVrJkScuTJ4+99dZbWfr5v/32m/vcF154IUs/Nyf729/+5h5ZZe/evXbDDTdYxYoVXV7ffPPNFst69Ohh1apVy9R7PvvsM5c3+h/+oiEf8+TJY/fcc0+SZYsXL7ZWrVpZ0aJF3evLli1z6+jvXBFE1qxZYzfeeKOdcsopFhcXZyVKlLDWrVvb448/bgcOHDiu2+7evbt9//33dv/999u0adOsWbNmFksXGx1Eys/U8lEBVK/r8cgjj2T68//44w93oOqAjaQHHnjABen+/fu7fXj99dcf1+3pAh7Kt7x581qpUqWsQYMG1rdvX1u4cOFx3XZOon0Syqf0HpkNiMfLm2++aeeff76VLVvWChYsaJUrV7YrrrjCPvnkE4tmR44cscsvv9y2b99u48aNc+dA1apVI5qm/Nm5sffee89lQKFChaxbt25Wv359O3z4sH311Vd222232Y8//mhPP/30cdm2Lqzz58+3O++80wYOHHhctqGdqe0UKFDAIiF//vy2f/9+e/fdd90JEW769OkuaB88eNDrsxVERo8e7S4CjRs3zvD7PvroI8tKOslbtGhho0aNsuyi73vrrbe6v/fs2WMrV6601157zaZMmWJDhgyxxx577LhtW9tISEjI1Hvatm3rjkNdHLOLtqkLWjjVGJs3b+4CbkixYsUskvRTgb169XJBr0mTJnbLLbe4Wu3GjRtdYGnfvr3NmzfPlfSjwYEDB9x5HV4I//33391xofwNueuuu2z48OGxHUTWrl1rV111lbvQ6kJQqVKlxNcGDBhgv/zyiwsyx8vWrVvd/ypJHi8qaelCHSkKzqrVvfzyyymCyEsvvWQXXnihzZw5M1vSomBWpEiRLL+QbdmyxerVq5dln/fnn3+6i3R66TzxxBPtuuuuS7Lsn//8p11zzTWuNFizZk1XMzoefAokqjFl93GolgU9wvXr188tS553mc3/rPToo4+6AKJmUAX/8CYgFTAVCMMv2pEWl2w/6vhP7TqmNGdlukPnb4YE2aRfv376teBg3rx5GVr/yJEjwZgxY4JTTjklKFiwYFC1atVgxIgRwcGDB5Osp+UXXnhh8OWXXwZnnHFGUKhQoaB69erB1KlTE9cZNWqU23b4Q++T7t27J/4dLvSecB999FHQunXroGTJkkHRokWDWrVquTSFrF271r3n+eefT/K+uXPnBmeddVZQpEgR996///3vwYoVK1Ld3urVq12atF6JEiWCHj16BPv27Ttmfuk9StMLL7zg8mDHjh2Jry1atMh99syZM93/Dz/8cOJr27ZtC2699dagfv367v3FixcPzjvvvGDZsmWJ63z66acp8i/8e7Zr1y447bTTgiVLlgRt2rQJChcuHAwePDjxNT1CunXr5tKX/Pt37NgxKFWqVLBhw4ZUv19aaVCey+bNm4NevXoF5cuXd5/fsGFDlxfhQvtH33/cuHHu2MqbN2/w7bffppmvoeMrNXv27AlOOOGE4MQTTwwSEhISlx89etR9fr169VxalKa+ffsG27dvT/EZ77//ftC2bdugWLFiLu+bNWsWTJ8+PfH11I7Pl19+OTj99NMT36N9N378+BR5pf/Dvfrqq+59cXFxQZkyZYJrr702WL9+farHkZZ37tzZ/V22bFl3jPz5559BZui9+ryM5v/KlSuDSy+9NChdurTLt6ZNmwZvv/12is/Vsa3jq0qVKu7acOqppwYPPvigy/f07N+/3+2vOnXqZOi7pJaPX3zxRXDZZZcFJ510ktt2lSpVgptvvtl9driNGze6c1fHhtarWLGiO+9Dx6ssXrzYHffaF9on1apVC3r27Jnkc7R9XRtEeZn8+A+dW6ldr2TatGmJ+1z5euWVVwbr1q1Lsk56529GZFvIVROLSiUZrSaqqjZ16lS77LLLXFOC2p/Hjh3rmhJU7QynWozW6927t+v3eO6551wfQdOmTe20006zrl27usitpoerr77aLrjggkxXq9XUdtFFF1nDhg1tzJgxrtSv7arqm56PP/7Ytb3qu6tPQdXTiRMnuhrD0qVLU7QRqwZRvXp19131+jPPPGPly5d3Jd+M0HdVCfCNN95w1fZQLaROnTp2+umnp1j/119/dQMM1Myo7W7evNn+9a9/Wbt27WzFihWurbhu3bruO999992uaaJNmzbuveH7ctu2be57qrapkmeFChVSTZ/6vlQT1X5S82K+fPnc9tTspVKgtpcapUGvax9WqVIlsXmpXLlyLk/Vea/9oaZKfQ81N+kY2Llzpw0ePDjJZz3//POuWU/fRfvxhBNOMB86hi655BJ79tlnXV7pWBP1+am027NnT/vHP/7hauFPPPGEffvtt+54CdUutI72kd43YsQId4xqnQ8//NDVclIzZ84cdwyr2SV0TOic0Ocm/57hQuk544wz3LGl/ax9ofdpm+El26NHj1qnTp3szDPPdP1nOoZVgj/11FOzpMaVWv7r/NI5oVqfmmXUafzqq69aly5dXO1Z+RwqIevY3LBhg8vnk08+2b7++muXf2qSGj9+fJrbVbO5+hJUC9Fx50PHldKgfChTpowtWrTInc/r1693r4Vceuml7jsNGjTIneOqQWjfrVu3LvG5Bvno+NX3Vf5rYI7O27To+yp/1C+o40r7Mq3zTNT3O3LkSHdN0fVUrTFKq5oek+/zjJ6/qQqywa5du1yUVMkmI1QK1vo33HBDkuVDhw51yz/55JPEZSqlaZlKCCFbtmxxJRmVnlIrBYXLaE1EJSc937p1a5rpTq0m0rhxY1cSVYk/ZPny5a4EplJ58u2pNB3ukksucSWVYwmVIEUlpfbt27u/VTpTKWj06NGp5oFqdslLcFpP+aeaYHipKbVaVqgko9cmT56c6mvhNRGZPXu2W/++++4Lfv31V1ei7tKlS5ARqdUMVArX57344ouJyw4fPhy0bNnSffbu3bsTv5fWUw1Px4jv9sKFjotQiVk1Yj0Pr03Ihx9+mGT5zp07XS3izDPPDA4cOJBk3fBaTfLjUyVEpT+9knTyErTyQsegaizh25o1a5Zb7+67706yPS0L3/fSpEkTVzPIippIavmv47VBgwZJWhqUD61atQpq1qyZuOzee+91n/vzzz8nef/w4cODfPnypShlh3v88cfd9t98880MpT+1mkjyGoeMHTs2yJMnT/D7778n1pRSu9aEUxq0js6r9ITXRMLT9Nprr6V7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AQB4I4gAALwRRAAA3ggiiFmaPa5b14b87W9/cz/bnt0+++wzN8t9586d2fZdozWdiD0EEWQrXex0odJDPzRZo0YNGzNmjP3555/HfdtvvPGG3XvvvVF5Qa1WrZr7fTQgp+EHGJHtzjvvPPc7U4cOHbL333/f/aBhgQIFbMSIEane5VHBJitw50Eg61ETQbYrVKiQuy9K1apVrX///u62v++8806SZpn777/fKleubLVr13bL//Of/9gVV1xhpUqVcsGgc+fO9ttvvyV+pu4EqV8+1utlypSx22+/3f1ke7jkzVkKYsOGDXP3rleaVCt69tln3eeeffbZbp3SpUu7GknohxX1k/xjx451P/+uX+xt1KiRvf7660m2o8BYq1Yt97o+JzydPvTdevfunbhN5cnjjz+e6rqjR4+2cuXKWYkSJaxfv34uCIdkJO1AZlETQcTpgrZt27bE57pvii6Cc+bMcc+PHDlinTp1cvdS+fLLLy1//vx23333uRrNd99952oqjz76qL3wwgv23HPPWd26dd1z3e/jnHPOSXO73bp1c/es168j64K6du1ad2tiBZWZM2fapZdeaqtWrXJpCf3Euy7CL774ok2ePNlq1qzpbkh13XXXuQt3u3btXLDr2rWrq1317dvXlixZYrfeeutfyh9d/HXTq9dee80FyK+//tp9dqVKlVxgDc+3uLg41xSnwKXbBmh9BeSMpB3wol/xBbJL9+7dg86dO7u/ExISgjlz5gSFChUKhg4dmvh6hQoVgkOHDiW+Z9q0aUHt2rXd+iF6vXDhwsHs2bPd80qVKgUPPfRQ4utHjhwJqlSpkrgtadeuXTB48GD396pVq1RNcdtPzaeffupe37FjR+KygwcPBkWKFAm+/vrrJOv27t07uPrqq93fI0aMCOrVq5fk9WHDhqX4rOSqVq0ajBs3LsioAQMGBJdeemnic+XbCSecEOzbty9x2aRJk4JixYoFR48ezVDaU/vOwLFQE0G20y1lixUr5moYKmVfc801ds899yS+3qBBgyT9IMuXL7dffvnF3QAq3MGDB23NmjW2a9cu27hxY5J7rai2oht6pXWng2XLlrlbEGemBK407N+/384999wky9Vk1KRJE/f3ypUrU9zzJSvuRvnkk0+6Wta6devswIEDbpu6x0w41aaKFCmSZLt79+51tSP9f6y0Az4IIsh26ieYNGmSCxTq99AFP1zRokWTPNcFULcLnj59eorPUlOMD587ECod8t5779mJJ56Y5DX1qRwvr7zyig0dOtQ10SkwKJjqZmULFy6M+rQj9hFEkO0UJNSJnVGnn366zZgxw8qXL+/6J1Kj/gFdVNu2beuea8jwN998496bGtV2VAv6/PPPXcd+cqGakDq1Q+rVq+cuuKoNpFWDUX9MaJBAyIIFC+yvmDdvnrVq1cpuuummxGWqgSWnGptqKaEAqe2qxqc+Hg1GOFbaAR+MzkLUu/baa61s2bJuRJY61tUBrs7jf/zjH7Z+/Xq3zuDBg+3BBx+0t956y3766Sd3wU1vjofmZege9r169XLvCX3mq6++6l7XyDGNylLT29atW11JXjUA1QiGDBliU6dOdRfypUuX2sSJE91z0Yio1atX22233eY65XUvdnX4Z8SGDRtcM1v4Y8eOHa4TXB30s2fPtp9//tlGjhxpixcvTvF+NU1pFNeKFSvcCLFRo0bZwIEDLW/evBlKO+DlmL0mwHHqWM/M6xs3bgy6desWlC1b1nXEn3LKKUGfPn2CXbt2JXakq9O8RIkSQalSpYJbbrnFrZ9Wx7ocOHAgGDJkiOuUL1iwYFCjRo3gueeeS3x9zJgxQcWKFYM8efK4dIk698ePH+86+gsUKBCUK1cu6NSpU/D5558nvu/dd991n6V0tmnTxn1mRjrWtU7yhwYVqFO8R48eQcmSJd1369+/fzB8+PCgUaNGKfLt7rvvDsqUKeM61JU/em/IsdJOxzp8cI91AIA3mrMAAN4IIgAAbwQRAIA3gggAwBtBBADgjSACAPBGEAEAeCOIAAC8EUQAAN4IIgAAbwQRAID5+j/P36iV8H81ywAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Parameters: {'criterion': 'gini', 'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 5}\n"
     ]
    }
   ],
   "source": [
    "param_grid_dt = {\n",
    "    'criterion': ['gini', 'entropy'],\n",
    "    'max_depth': [None, 10, 20],\n",
    "    'min_samples_split': [2, 5],\n",
    "    'min_samples_leaf': [1, 2]\n",
    "}\n",
    "dt = DecisionTreeClassifier(random_state=42)\n",
    "grid_dt = GridSearchCV(estimator=dt, param_grid=param_grid_dt, cv=2, scoring='accuracy')\n",
    "grid_dt.fit(X_train, y_train)\n",
    "\n",
    "best_dt = grid_dt.best_estimator_\n",
    "y_pred_dt = best_dt.predict(X_test)\n",
    "evaluate_model('Decision Tree Classifier', y_test, y_pred_dt)\n",
    "print(\"Best Parameters:\", grid_dt.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 807,
   "id": "26c35ea5-790d-4e85-953e-3531b2d8421c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Support Vector Machine\n",
      "Accuracy: 0.9917\n",
      "Precision: 0.9919\n",
      "Recall: 0.9917\n",
      "F1 Score: 0.9917\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.99      0.99        76\n",
      "           2       0.98      1.00      0.99        44\n",
      "\n",
      "    accuracy                           0.99       120\n",
      "   macro avg       0.99      0.99      0.99       120\n",
      "weighted avg       0.99      0.99      0.99       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZQAAAGJCAYAAACtjcXlAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAALS1JREFUeJzt3Qd0VNX69/EnCRCa1FClSBcEAUGRroDAtVAVAemKSpOqwFWkiBf/ioIUQVHAi6jYUfSKCEiRjgIiiKAo0nuQEgjhvOvZ9525M5NJmIQ9mWTy/awVZc7MnNmn7d/ZZ+8zE+E4jiMAAFyjyGudAQAAikABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwIuwDZffu3dK8eXPJmzevREREyGeffWZ1/n/88YeZ79y5c63ONyO74447zJ8tZ8+elUceeUSKFi1q1vWgQYOszRtIr+bOnWv2902bNqX5MZeuA+W3336Txx57TMqWLSvZs2eXPHnySP369eXVV1+VCxcuBPWzu3fvLj/99JM8//zzMm/ePKldu7aEix49epgdTtenv/WoYarP69/EiRNTPP+DBw/KmDFjZMuWLRJK//rXv8zB1adPH7MNu3btGtTPu3Tpktk3a9asadZtvnz55KabbpJHH31UfvnlFwknum4DOcl65ZVXzH707bffJvmaWbNmmdd8/vnnVsv47rvvyuTJkyUt3XDDDWZZmjVrluyyBlrhZxpOkC1atMjJkSOHky9fPueJJ55w3njjDWfatGlOx44dnaxZszq9e/cO2mefP39ev6fMefrpp4P2GVeuXHEuXLjgXL582Ulr3bt3d7JkyeJERUU5CxYsSPT86NGjnezZs5t18NJLL6V4/hs3bjTvnTNnTored/HiRfNnS506dZz69es7aeXee+8167RLly7O9OnTncmTJzuPP/64U6JEiRSvi/QuV65cZj+6mgMHDjiRkZFOz549k3zNHXfc4RQsWNC5dOmS1TLec889TunSpZ20pJ+nx44u86FDhxI937hxY/expcdJMMyZMyfg+ds+5lIrqC2UvXv3SseOHaV06dKyY8cOc9bXu3dv6devn7z33ntmmp75BcuxY8fM//UMM1j0DEVbXVFRURIK0dHR0rRpU7M+/Z3Z3XPPPWlWlvPnz5v/Z8uWzfzZcvToUavb8PLly6YV4s/GjRtl0aJFMm7cONMa6tu3rwwcOFBmzJhhLm/ed999ktHp98Gm9MpA8eLF5c4775RPPvlELl68mOj5AwcOyMqVK+WBBx6QrFmzSnqX3D7goldRcufOLQsWLPCavn//flm1alWaHltXY/uYS7VgppWe1elHfP/99wG9Pj4+3hk3bpxTtmxZJ1u2bOYsYeTIkU5cXJzX63S6nrWsWrXKufXWW53o6GinTJkyzttvv+11dq6f7fnnOsvRMzJ/Zzyu93j65ptvzNlx3rx5zdlcxYoVTZlc9u7d6/csfunSpU6DBg2cnDlzmve2atXK2bFjh9/P2717tymTvi5PnjxOjx49nHPnzl11fel7tExz58416+DUqVPu5zZs2GDm/fHHHydqoZw4ccIZOnSoU7VqVfP+6667zmnZsqWzZcsW92uWL1+eaP15Lqeeod10003Opk2bnIYNG5pW6MCBA93P6Z9Lt27dTPl8l7958+am5apnv/4kVQZd5+rIkSNOr169nMKFC5v533zzzWZdeHJtH13+SZMmmX1Lzzp//PFHv5/53nvvmdd/9913Aa3/QPcjfdyvXz/nnXfeMfuQlveWW25xVqxY4fe9O3fudB544AGzbQoUKGBa99oSvpbj5euvv3Zq1aplPlvXhb91m1xrxXXGrPuUr4kTJ5rn9JhUCQkJ5jOqVKliPk+30aOPPuqcPHky0Xu/+uorp1GjRk7u3LnN8tauXduZP3++eU73o6SO42DtA57rTI/F2267zeu5F1980bTE9GqLbwti69atZh1qfaTlKVKkiGnVHT9+PNFn7N+/35S9WLFiZvvdcMMNps50tTRc63v16tXO4MGDnZiYGFOftGnTxjl69KjXvHyPOdexo1cuxo8f71x//fWmPE2aNDH1ja9169Y5LVq0MPWPHsu6PfRzUyqogaILoRsvULohdCXcf//95lKDVkT6WFeg78auVKmS2Vj//Oc/zSU0PTgjIiKc7du3uzes66Dp1KmTM2/ePOfTTz9NUUWg89INrTv4q6++6sycOdMZNmyYWdnJBcqSJUvMpSitOHTnGzt2rNkZ8ufP764MPT+vZs2aTrt27ZzXXnvNeeSRR8y0p556KqD1pYFw5swZ0/x+66233M8NGjTIufHGG70OJhc9AMqVK+eMGDHCef31102lpNtKA81VuR8+fNhM1/dq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Fec1LS7+ivwdd9k93V9H/LGzl+To35fSrJwIo0DRiitLlv8VQS97zZgxQ/r37y+NGzeWd999N5TFyxRa/uNuOXXypLw2bYocP35MKt1YWV57/U0pyCUvACkU4Tihu6XotttukwEDBkjXrl0TPaehMn/+fNPJriORUoIWCtLKg3M2hboIyCQW9q4t6V1IR3m1bdtW3nvvPb/PTZs2TTp16iQhzDsAQEZpoQQLLRSkFVooSCsLaaEAADILAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWECgAACsIFACAFQQKAMAKAgUAYAWBAgCwgkABAFhBoAAArCBQAABWRDiO49iZFTKyixcvyoQJE2TkyJESHR0d6uIgjLGvhS8CBcaZM2ckb968EhsbK3ny5Al1cRDG2NfCF5e8AABWECgAACsIFACAFQQKDO0cHT16NJ2kCDr2tfBFpzwAwApaKAAAKwgUAIAVBAoAwAoCBQBgBYECmT59utxwww2SPXt2qVOnjmzYsCHURUKY0a9aufXWW+W6666TwoULS5s2bWTXrl2hLhYsI1AyuQULFsiQIUPMMM4ffvhBqlevLi1atJCjR4+GumgIIytWrJB+/frJunXrZMmSJRIfHy/NmzeXc+fOhbposIhhw5mctkj0zHHatGnm8ZUrV6RkyZIyYMAAGTFiRKiLhzB17Ngx01LRoGnUqFGoiwNLaKFkYpcuXZLNmzdLs2bN3NMiIyPN47Vr14a0bAhv+sWQqkCBAqEuCiwiUDKx48ePS0JCghQpUsRruj4+fPhwyMqF8Kat4EGDBkn9+vWlatWqoS4OLMpic2YAcDXal7J9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",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Parameters: {'C': 1, 'gamma': 'scale', 'kernel': 'rbf'}\n"
     ]
    }
   ],
   "source": [
    "param_grid_svm = {\n",
    "    'C': [0.01, 0.1, 1],\n",
    "    'kernel': ['linear', 'rbf'],\n",
    "    'gamma': ['scale', 'auto']\n",
    "}\n",
    "svm = SVC(random_state=42)\n",
    "grid_svm = GridSearchCV(estimator=svm, param_grid=param_grid_svm, cv=2, scoring='accuracy')\n",
    "grid_svm.fit(X_train, y_train)\n",
    "\n",
    "best_svm = grid_svm.best_estimator_\n",
    "y_pred_svm = best_svm.predict(X_test)\n",
    "evaluate_model('Support Vector Machine', y_test, y_pred_svm)\n",
    "print(\"Best Parameters:\", grid_svm.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 808,
   "id": "18372151-2d6e-4f03-88bb-301eda3f802e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: Gaussian Naive Bayes\n",
      "Accuracy: 0.9500\n",
      "Precision: 0.9560\n",
      "Recall: 0.9500\n",
      "F1 Score: 0.9506\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.92      0.96        76\n",
      "           2       0.88      1.00      0.94        44\n",
      "\n",
      "    accuracy                           0.95       120\n",
      "   macro avg       0.94      0.96      0.95       120\n",
      "weighted avg       0.96      0.95      0.95       120\n",
      "\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": [
      "Best Parameters: {'var_smoothing': 1e-09}\n"
     ]
    }
   ],
   "source": [
    "param_grid_gnb = {\n",
    "    'var_smoothing': [1e-9, 1e-8, 1e-7]\n",
    "}\n",
    "gnb = GaussianNB()\n",
    "grid_gnb = GridSearchCV(estimator=gnb, param_grid=param_grid_gnb, cv=2, scoring='accuracy')\n",
    "grid_gnb.fit(X_train, y_train)\n",
    "\n",
    "best_gnb = grid_gnb.best_estimator_\n",
    "y_pred_gnb = best_gnb.predict(X_test)\n",
    "evaluate_model('Gaussian Naive Bayes', y_test, y_pred_gnb)\n",
    "print(\"Best Parameters:\", grid_gnb.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 809,
   "id": "a0f2f227-a971-4e50-951d-38dc196ffbe2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Model Name: K-Nearest Neighbors\n",
      "Accuracy: 0.9583\n",
      "Precision: 0.9626\n",
      "Recall: 0.9583\n",
      "F1 Score: 0.9587\n",
      "\n",
      "Classification Report:\n",
      "               precision    recall  f1-score   support\n",
      "\n",
      "           0       1.00      0.93      0.97        76\n",
      "           2       0.90      1.00      0.95        44\n",
      "\n",
      "    accuracy                           0.96       120\n",
      "   macro avg       0.95      0.97      0.96       120\n",
      "weighted avg       0.96      0.96      0.96       120\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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jRsn58+fT/PX/vTTT+XJJ58MywpSfyNbrzsFhBoXxEO6a926tbnmTVxcnHz99dfmYmnZs2eXkSNH+v11OA2PYOBXvoCU0VJAuouOjja/11CmTBnp27ev+fnPL774wuswyNNPPy0lS5aUypUrm+n//e9/5e6775aCBQuayr1t27by559/2mXqL8jpFV91fuHCheWRRx4xl2v25Hv4SENp+PDh5jeptUzaannjjTfMcps3b24eU6hQIdNicC/appcWHz9+vLn0s17ds2bNmvLxxx97vY4GXaVKlcx8XY5nOS+GvrdevXrZ19R18vLLL/t97NixY6VIkSKSP39+eeCBB0yougIpO0BLASGnFdThw4ftff09B63UFi5caO7Hx8dLq1atzG88/PDDD5ItWzZ56qmnTIvjp59+Mi2JF198Ud566y2ZNWuWVKlSxdzXa/ffcMMNyb5u165dzW9R61VhtYLcuXOn+YlSDYlPPvlE7rjjDtm2bZspi3t5Z61U3333XZkxY4ZUrFjR/FhM586dTUXcrFkzE14dOnQwrZ8+ffrIunXrZOjQoZe0frQy1x+k+eijj0zgrVixwiy7RIkSJig911vOnDnNoS8NIr38uT5eAzaQsgOGXiUVSC/dunVz2rZta/5PTEx0Fi5c6ERHRzvDhg2z84sVK+bExcXZ58yePdupXLmyebxL5+fKlctZsGCBuV+iRAnnueees/Pj4+OdUqVK2ddSzZo1cwYOHGj+37ZtmzYjzOv7s3jxYjP/6NGjdtrZs2ed3LlzOytWrPB6bK9evZxOnTqZ/0eOHOlUrVrVa/7w4cOTLMtXmTJlnIkTJzqB6tevn3PHHXfY+7reLrvsMufUqVN22vTp0528efM6CQkJAZXd33tG1kNLAelOf44xb968pgWge8H33nuvjBkzxs6vXr26Vz/C5s2bZceOHebHWTydPXtWfv/9d4mNjZW9e/d6/QaEtib0h4OSuzL8pk2bzE+RpmYPWctw+vRpuemmm7ym6yGa2rVrm/9/+eWXJL9FEYxfsZs2bZppBe3evVvOnDljXlN/+8KTtnZy587t9bonT540rRf9m1LZAUUoIN3pcfbp06ebil/7DbQC95QnTx6v+1qh6c+GzpkzJ8my9NDHxbiYX/vScqivvvpKLr/8cq952ieRVj744AMZNmyYOSSmFb2Go/4o0urVq8O+7Mh4CAWkO630tVM3UNdcc43MnTtXihYtao7v+6PH17WSbNq0qbmvQ1zXr19vnuuPtka0lbJ06VLT0e3LbaloJ6+ratWqpgLVvfXkWhjan+F2mrtWrVoll+LHH3+Uhg0byoMPPminaQvJl7aotBXhBp6+rrbItI9EO+dTKjugGH2EsPevf/1LYmJizIgj7WjWDmHtTH3ooYfkr7/+Mo8ZOHCgTJgwQebNmye//vqrqUAvdI6Bnhegv03ds2dP8xx3mR9++KGZryOjdNSRHuo6ePCg2dPWPXTdYx88eLC8/fbbpmLesGGDTJkyxdxXOuJn+/bt8vDDD5tOav1dYu0AD8SePXvMYS3P29GjR02nsHZYL1iwQH777TcZNWqUrF27Nsnz9VCQjlLaunWrGQE1evRo6d+/v0RGRgZUdsAIdacGsm5Hc2rm79271+natasTExNjOqbLlSvn9O7d24mNjbUdy9qJnD9/fqdgwYLOkCFDzOOT62hWZ86ccQYPHmw6qXPkyOFUqFDBmTVrlp0/btw4p3jx4k5ERIQpl9LO7kmTJpmO7+zZsztFihRxWrVq5SxdutQ+78svvzTL0nI2adLELDOQjmZ9jO9NO9m1k7h79+5OgQIFzHvr27evM2LECKdmzZpJ1tsTTzzhFC5c2HQw6/rR57pSKjsdzVD8RjMAwOLwEQDAIhQAABahAACwCAUAgEUoAAAsQgEAYBEKAACLUAAAWIQCAMAiFAAAFqEAABDX/wE/ABYu4FsvcQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 400x400 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best Parameters: {'metric': 'euclidean', 'n_neighbors': 3, 'weights': 'distance'}\n"
     ]
    }
   ],
   "source": [
    "param_grid_knn = {\n",
    "    'n_neighbors': [3, 5, 7],\n",
    "    'weights': ['uniform', 'distance'],\n",
    "    'metric': ['euclidean', 'manhattan']\n",
    "}\n",
    "knn = KNeighborsClassifier()\n",
    "grid_knn = GridSearchCV(estimator=knn, param_grid=param_grid_knn, cv=2, scoring='accuracy')\n",
    "grid_knn.fit(X_train, y_train)\n",
    "\n",
    "best_knn = grid_knn.best_estimator_\n",
    "y_pred_knn = best_knn.predict(X_test)\n",
    "evaluate_model('K-Nearest Neighbors', y_test, y_pred_knn)\n",
    "print(\"Best Parameters:\", grid_knn.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 747,
   "id": "6929d1e2-8c2b-48b4-9078-6d8dbfd49230",
   "metadata": {},
   "outputs": [],
   "source": [
    "#8\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "from sklearn.model_selection import GridSearchCV, train_test_split\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
    "from sklearn.preprocessing import LabelEncoder, StandardScaler\n",
    "from sklearn.impute import SimpleImputer"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 748,
   "id": "05676ff6-2e68-4725-867e-be9a9b827950",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 748,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')\n",
    "data.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 749,
   "id": "f83f8f80-4e42-407a-a7ae-3fb624ff85cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "# Handle missing values\n",
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 750,
   "id": "c8ccf30a-6864-485e-86df-9d2834ac7caf",
   "metadata": {},
   "outputs": [],
   "source": [
    "for column in categorical_cols:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 751,
   "id": "9e9a86ce-d2fe-4898-9c6b-c6a221233383",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = data.drop(['classification', 'id'], axis=1)\n",
    "y = data['classification']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 752,
   "id": "d133507a-0efe-4a32-97ee-f9d493f8a028",
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = StandardScaler()\n",
    "x = scaler.fit_transform(x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 753,
   "id": "c75dfd39-6186-4723-afb7-d7265b710233",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(\n",
    "    x, y, test_size=0.20, random_state=42\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 754,
   "id": "7310dc9a-cdbf-47b1-a2c5-77b6ca420e2d",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "    mae = mean_absolute_error(y_true, y_pred)\n",
    "    mse = mean_squared_error(y_true, y_pred)\n",
    "    rmse = np.sqrt(mse)\n",
    "    r2 = r2_score(y_true, y_pred)\n",
    "\n",
    "    results = {\n",
    "        \"Mean Absolute Error (MAE)\": mae,\n",
    "        \"Mean Squared Error (MSE)\": mse,\n",
    "        \"Root Mean Squared Error (RMSE)\": rmse,\n",
    "        \"R^2 Score\": r2\n",
    "    }\n",
    "\n",
    "    print(f\"\\nEvaluation Results on Test Set for {model_name}:\")\n",
    "    for key, value in results.items():\n",
    "        print(f\"{key}: {value:.4f}\")\n",
    "\n",
    "    return results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 755,
   "id": "0387af80-534e-4cff-a2c5-1b66ab953578",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n",
      "Best Parameters (RandomForest): {'max_depth': 20, 'min_samples_leaf': 2, 'min_samples_split': 2, 'n_estimators': 100}\n",
      "Best CV RMSE: -0.29995128826454737\n",
      "\n",
      "Evaluation Results on Test Set for RandomForestRegressor:\n",
      "Mean Absolute Error (MAE): 0.0584\n",
      "Mean Squared Error (MSE): 0.0408\n",
      "Root Mean Squared Error (RMSE): 0.2020\n",
      "R^2 Score: 0.9551\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'Mean Absolute Error (MAE)': 0.05837390873015873,\n",
       " 'Mean Squared Error (MSE)': 0.040821747235607206,\n",
       " 'Root Mean Squared Error (RMSE)': np.float64(0.20204392402546334),\n",
       " 'R^2 Score': 0.9551409371037284}"
      ]
     },
     "execution_count": 755,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rf = RandomForestRegressor()\n",
    "param_grid_rf = {\n",
    "    'n_estimators': [100, 200],\n",
    "    'max_depth': [None, 10, 20],\n",
    "    'min_samples_split': [2, 5],\n",
    "    'min_samples_leaf': [1, 2]\n",
    "}\n",
    "grid_search = GridSearchCV(estimator=rf, param_grid=param_grid_rf, cv=5, scoring='neg_root_mean_squared_error', verbose=2, n_jobs=-1)\n",
    "grid_search.fit(x_train, y_train)\n",
    "\n",
    "print(\"Best Parameters (RandomForest):\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_rf = grid_search.best_estimator_\n",
    "y_pred = best_rf.predict(x_test)\n",
    "evaluate_model('RandomForestRegressor', y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 756,
   "id": "9ac1a8dd-1e16-4146-a6a3-790078185843",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n",
      "Best Parameters (DecisionTree): {'max_depth': None, 'min_samples_leaf': 2, 'min_samples_split': 5}\n",
      "Best CV RMSE: -0.3368068985607904\n",
      "\n",
      "Evaluation Results on Test Set for DecisionTreeRegressor:\n",
      "Mean Absolute Error (MAE): 0.0354\n",
      "Mean Squared Error (MSE): 0.0530\n",
      "Root Mean Squared Error (RMSE): 0.2301\n",
      "R^2 Score: 0.9418\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'Mean Absolute Error (MAE)': 0.035416666666666666,\n",
       " 'Mean Squared Error (MSE)': 0.05295138888888888,\n",
       " 'Root Mean Squared Error (RMSE)': np.float64(0.2301116878580679),\n",
       " 'R^2 Score': 0.9418116605616605}"
      ]
     },
     "execution_count": 756,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt = DecisionTreeRegressor(random_state=42)\n",
    "param_grid_dt = {\n",
    "    'max_depth': [None, 10, 20],\n",
    "    'min_samples_split': [2, 5],\n",
    "    'min_samples_leaf': [1, 2]\n",
    "}\n",
    "grid_search = GridSearchCV(estimator=dt, param_grid=param_grid_dt, cv=5, scoring='neg_root_mean_squared_error', verbose=2, n_jobs=-1)\n",
    "grid_search.fit(x_train, y_train)\n",
    "\n",
    "print(\"Best Parameters (DecisionTree):\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_dt = grid_search.best_estimator_\n",
    "y_pred = best_dt.predict(x_test)\n",
    "evaluate_model('DecisionTreeRegressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 757,
   "id": "260e1fec-b20a-4ea9-a614-d413b2411433",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 24 candidates, totalling 120 fits\n",
      "Best Parameters (SVR): {'C': 1, 'epsilon': 0.1, 'gamma': 'auto', 'kernel': 'rbf'}\n",
      "Best CV RMSE: -0.2718710257475324\n",
      "\n",
      "Evaluation Results on Test Set for SupportVectorRegressor:\n",
      "Mean Absolute Error (MAE): 0.1619\n",
      "Mean Squared Error (MSE): 0.0667\n",
      "Root Mean Squared Error (RMSE): 0.2582\n",
      "R^2 Score: 0.9267\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'Mean Absolute Error (MAE)': 0.16188998616170336,\n",
       " 'Mean Squared Error (MSE)': 0.06665973363107927,\n",
       " 'Root Mean Squared Error (RMSE)': np.float64(0.25818546363240374),\n",
       " 'R^2 Score': 0.9267475454603524}"
      ]
     },
     "execution_count": 757,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svr = SVR()\n",
    "param_grid_svr = {\n",
    "    'kernel': ['linear', 'rbf'],\n",
    "    'C': [0.1, 1, 10],\n",
    "    'epsilon': [0.1, 0.2],\n",
    "    'gamma': ['scale', 'auto']\n",
    "}\n",
    "grid_search = GridSearchCV(estimator=svr, param_grid=param_grid_svr, cv=5, scoring='neg_root_mean_squared_error', verbose=2, n_jobs=-1)\n",
    "grid_search.fit(x_train, y_train)\n",
    "\n",
    "print(\"Best Parameters (SVR):\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_svr = grid_search.best_estimator_\n",
    "y_pred = best_svr.predict(x_test)\n",
    "evaluate_model('SupportVectorRegressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 759,
   "id": "c770bd6f-db9e-431a-b208-5634b278d1d2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 32 candidates, totalling 160 fits\n",
      "Best Parameters (GradientBoosting): {'learning_rate': 0.1, 'max_depth': 3, 'min_samples_leaf': 2, 'min_samples_split': 2, 'n_estimators': 100}\n",
      "Best CV RMSE: -0.31630321137376216\n",
      "\n",
      "Evaluation Results on Test Set for GradientBoostingRegressor:\n",
      "Mean Absolute Error (MAE): 0.0516\n",
      "Mean Squared Error (MSE): 0.0132\n",
      "Root Mean Squared Error (RMSE): 0.1147\n",
      "R^2 Score: 0.9855\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'Mean Absolute Error (MAE)': 0.05155005283972934,\n",
       " 'Mean Squared Error (MSE)': 0.013154679787251067,\n",
       " 'Root Mean Squared Error (RMSE)': np.float64(0.11469385243879057),\n",
       " 'R^2 Score': 0.9855443079260977}"
      ]
     },
     "execution_count": 759,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gbr = GradientBoostingRegressor(random_state=42)\n",
    "param_grid_gbr = {\n",
    "    'n_estimators': [100, 200],\n",
    "    'learning_rate': [0.01, 0.1],\n",
    "    'max_depth': [3, 5],\n",
    "    'min_samples_split': [2, 5],\n",
    "    'min_samples_leaf': [1, 2]\n",
    "}\n",
    "grid_search = GridSearchCV(estimator=gbr, param_grid=param_grid_gbr, cv=5, scoring='neg_root_mean_squared_error', verbose=2, n_jobs=-1)\n",
    "grid_search.fit(x_train, y_train)\n",
    "\n",
    "print(\"Best Parameters (GradientBoosting):\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_gbr = grid_search.best_estimator_\n",
    "y_pred = best_gbr.predict(x_test)\n",
    "evaluate_model('GradientBoostingRegressor', y_test, y_pred)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 760,
   "id": "a2fafc5d-72af-48bb-97c5-791073f5fcb7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 12 candidates, totalling 60 fits\n",
      "Best Parameters (KNN): {'metric': 'euclidean', 'n_neighbors': 3, 'weights': 'distance'}\n",
      "Best CV RMSE: -0.3263938299616166\n",
      "\n",
      "Evaluation Results on Test Set for KNeighborsRegressor:\n",
      "Mean Absolute Error (MAE): 0.0576\n",
      "Mean Squared Error (MSE): 0.0795\n",
      "Root Mean Squared Error (RMSE): 0.2819\n",
      "R^2 Score: 0.9127\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'Mean Absolute Error (MAE)': 0.05756167745839408,\n",
       " 'Mean Squared Error (MSE)': 0.07947871063405507,\n",
       " 'Root Mean Squared Error (RMSE)': np.float64(0.28191968826964725),\n",
       " 'R^2 Score': 0.9126607575449944}"
      ]
     },
     "execution_count": 760,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "knn = KNeighborsRegressor()\n",
    "param_grid_knn = {\n",
    "    'n_neighbors': [3, 5, 7],\n",
    "    'weights': ['uniform', 'distance'],\n",
    "    'metric': ['euclidean', 'manhattan']\n",
    "}\n",
    "grid_search = GridSearchCV(estimator=knn, param_grid=param_grid_knn, cv=5, scoring='neg_root_mean_squared_error', verbose=2, n_jobs=-1)\n",
    "grid_search.fit(x_train, y_train)\n",
    "\n",
    "print(\"Best Parameters (KNN):\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_knn = grid_search.best_estimator_\n",
    "y_pred = best_knn.predict(x_test)\n",
    "evaluate_model('KNeighborsRegressor', y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 761,
   "id": "6aad9183-817c-4152-ac18-47f4822b7e7d",
   "metadata": {},
   "outputs": [],
   "source": [
    "#9\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV\n",
    "from sklearn.preprocessing import LabelEncoder, StandardScaler\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier\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.feature_selection import SelectKBest, chi2, RFE\n",
    "from sklearn.metrics import confusion_matrix, accuracy_score, precision_score, recall_score, f1_score, classification_report\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 762,
   "id": "f935f7fd-7c52-4490-8b0c-bdff4fad5e3b",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 762,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')\n",
    "data.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 763,
   "id": "ec2ae21f-dd40-4a0e-85b0-029102522a4d",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop(columns=['id'], inplace=True, errors='ignore')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 764,
   "id": "4de7b74d-0c72-4326-8177-aa84e12116a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.impute import SimpleImputer\n",
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 765,
   "id": "d204df7f-6235-4a95-90e3-3ee3a1794498",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Encode categorical features\n",
    "for column in categorical_cols:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 766,
   "id": "21e1da2f-94f3-4bfd-afa6-939623143e8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = data.drop('classification', axis=1)\n",
    "y = data['classification']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 767,
   "id": "0f0baf4c-3cf5-4c8a-be1f-3db06d0bd296",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 768,
   "id": "4e938c7e-4398-4d9a-954d-e9018a100a8b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "   Feature        Score\n",
      "9      bgr  2043.008503\n",
      "10      bu  1686.856733\n",
      "15     pcv   310.250116\n",
      "11      sc   256.031451\n",
      "3       al   186.592621\n",
      "17      rc   165.699338\n",
      "0      age   124.849701\n",
      "14    hemo    94.375933\n",
      "4       su    83.345841\n",
      "18     htn    70.099125\n",
      "16      wc    68.942749\n",
      "1       bp    64.019545\n",
      "21   appet    45.997599\n",
      "22      pe    36.693878\n",
      "23     ane    29.350488\n",
      "12     sod    22.669783\n",
      "7      pcc    21.560895\n",
      "8       ba    11.387755\n",
      "6       pc     8.318946\n",
      "19      dm     5.436793\n",
      "13     pot     4.199274\n",
      "5      rbc     2.557157\n",
      "20     cad     1.146111\n",
      "2       sg     0.004818\n"
     ]
    }
   ],
   "source": [
    "select_feature = SelectKBest(score_func=chi2, k=8)\n",
    "select_feature.fit(x_train, y_train)\n",
    "\n",
    "selected_features_chi2 = pd.DataFrame({\n",
    "    'Feature': x.columns,\n",
    "    'Score': select_feature.scores_\n",
    "})\n",
    "print(selected_features_chi2.sort_values(by='Score', ascending=False))\n",
    "\n",
    "x_train_selected = select_feature.transform(x_train)\n",
    "x_test_selected = select_feature.transform(x_test)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 769,
   "id": "a95a228e-7628-4706-b37e-22ed1bf10b66",
   "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",
    "\n",
    "    metrics = {\n",
    "        'Model Name': model_name,\n",
    "        'Accuracy': accuracy,\n",
    "        'Precision': precision,\n",
    "        'Recall': recall,\n",
    "        'F1 Score': f1\n",
    "    }\n",
    "\n",
    "    return metrics"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 770,
   "id": "029dbada-8c9c-49f0-b43e-019030d7f1dd",
   "metadata": {},
   "outputs": [],
   "source": [
    "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",
    "\n",
    "rf_classifier = RandomForestClassifier(random_state=42)\n",
    "grid_search = GridSearchCV(estimator=rf_classifier, param_grid=param_grid, cv=2, scoring='accuracy', n_jobs=-1)\n",
    "grid_search.fit(x_train_selected, y_train)\n",
    "\n",
    "best_rf_classifier = grid_search.best_estimator_\n",
    "y_pred = best_rf_classifier.predict(x_test_selected)\n",
    "\n",
    "evaluation_results = evaluate_model('RandomForestClassifier (Chi-Square)', y_test, y_pred)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 771,
   "id": "f43194c8-0cb1-4a6e-95d0-fa5ad86782ba",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "RandomForestClassifier (Chi-Square)\n",
      "Accuracy: 0.9875\n",
      "Precision: 0.9879\n",
      "Recall: 0.9875\n",
      "F1 Score: 0.9875\n",
      "\n",
      "Best hyperparameters found by GridSearchCV (Chi-Square):\n",
      "{'max_depth': None, 'min_samples_leaf': 1, 'min_samples_split': 10, 'n_estimators': 300}\n"
     ]
    }
   ],
   "source": [
    "for key, value in evaluation_results.items():\n",
    "    print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV (Chi-Square):\")\n",
    "print(grid_search.best_params_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 772,
   "id": "178be268-f43f-44ce-bcc8-ca0095e6520f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "Selected Features (RFE): [ 2  3  9 11 12 14 15 17]\n"
     ]
    }
   ],
   "source": [
    "rfe_selector = RFE(estimator=RandomForestClassifier(random_state=43), n_features_to_select=8)\n",
    "rfe_selector.fit(x_train, y_train)\n",
    "\n",
    "x_train_selected_rfe = rfe_selector.transform(x_train)\n",
    "x_test_selected_rfe = rfe_selector.transform(x_test)\n",
    "\n",
    "selected_features_rfe = rfe_selector.get_support(indices=True)\n",
    "print(\"\\nSelected Features (RFE):\", selected_features_rfe)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 773,
   "id": "96571fb2-1e78-4419-add5-fca304e8b96d",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_classifier_rfe = RandomForestClassifier(random_state=42)\n",
    "grid_search_rfe = GridSearchCV(estimator=rf_classifier_rfe, param_grid=param_grid, cv=2, scoring='accuracy', n_jobs=-1)\n",
    "grid_search_rfe.fit(x_train_selected_rfe, y_train)\n",
    "\n",
    "best_rf_classifier_rfe = grid_search_rfe.best_estimator_\n",
    "y_pred_rfe = best_rf_classifier_rfe.predict(x_test_selected_rfe)\n",
    "\n",
    "evaluation_results_rfe = evaluate_model('RandomForestClassifier (RFE)', y_test, y_pred_rfe)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 774,
   "id": "0ea8a2ed-1315-4f46-925c-282ec486952f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model Name: \n",
      "RandomForestClassifier (RFE)\n",
      "Accuracy: 0.9875\n",
      "Precision: 0.9879\n",
      "Recall: 0.9875\n",
      "F1 Score: 0.9875\n",
      "\n",
      "Best hyperparameters found by GridSearchCV (RFE):\n",
      "{'max_depth': None, 'min_samples_leaf': 4, 'min_samples_split': 10, 'n_estimators': 200}\n"
     ]
    }
   ],
   "source": [
    "for key, value in evaluation_results_rfe.items():\n",
    "    print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n",
    "\n",
    "print(\"\\nBest hyperparameters found by GridSearchCV (RFE):\")\n",
    "print(grid_search_rfe.best_params_)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 775,
   "id": "a496bec7-3bd5-4f0d-9fba-46919b792f2d",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.model_selection import GridSearchCV, train_test_split\n",
    "from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.feature_selection import RFE\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 776,
   "id": "5e08e4c6-210c-4b75-a2fe-f5ea72ded246",
   "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>id</th>\n",
       "      <th>age</th>\n",
       "      <th>bp</th>\n",
       "      <th>sg</th>\n",
       "      <th>al</th>\n",
       "      <th>su</th>\n",
       "      <th>rbc</th>\n",
       "      <th>pc</th>\n",
       "      <th>pcc</th>\n",
       "      <th>ba</th>\n",
       "      <th>...</th>\n",
       "      <th>pcv</th>\n",
       "      <th>wc</th>\n",
       "      <th>rc</th>\n",
       "      <th>htn</th>\n",
       "      <th>dm</th>\n",
       "      <th>cad</th>\n",
       "      <th>appet</th>\n",
       "      <th>pe</th>\n",
       "      <th>ane</th>\n",
       "      <th>classification</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>44</td>\n",
       "      <td>7800</td>\n",
       "      <td>5.2</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>7.0</td>\n",
       "      <td>50.0</td>\n",
       "      <td>1.020</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>38</td>\n",
       "      <td>6000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2</td>\n",
       "      <td>62.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>31</td>\n",
       "      <td>7500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>no</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>48.0</td>\n",
       "      <td>70.0</td>\n",
       "      <td>1.005</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>abnormal</td>\n",
       "      <td>present</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>32</td>\n",
       "      <td>6700</td>\n",
       "      <td>3.9</td>\n",
       "      <td>yes</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>poor</td>\n",
       "      <td>yes</td>\n",
       "      <td>yes</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>51.0</td>\n",
       "      <td>80.0</td>\n",
       "      <td>1.010</td>\n",
       "      <td>2.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>normal</td>\n",
       "      <td>normal</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>notpresent</td>\n",
       "      <td>...</td>\n",
       "      <td>35</td>\n",
       "      <td>7300</td>\n",
       "      <td>4.6</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>good</td>\n",
       "      <td>no</td>\n",
       "      <td>no</td>\n",
       "      <td>ckd</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   id   age    bp     sg   al   su     rbc        pc         pcc          ba  \\\n",
       "0   0  48.0  80.0  1.020  1.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "1   1   7.0  50.0  1.020  4.0  0.0     NaN    normal  notpresent  notpresent   \n",
       "2   2  62.0  80.0  1.010  2.0  3.0  normal    normal  notpresent  notpresent   \n",
       "3   3  48.0  70.0  1.005  4.0  0.0  normal  abnormal     present  notpresent   \n",
       "4   4  51.0  80.0  1.010  2.0  0.0  normal    normal  notpresent  notpresent   \n",
       "\n",
       "   ...  pcv    wc   rc  htn   dm  cad appet   pe  ane classification  \n",
       "0  ...   44  7800  5.2  yes  yes   no  good   no   no            ckd  \n",
       "1  ...   38  6000  NaN   no   no   no  good   no   no            ckd  \n",
       "2  ...   31  7500  NaN   no  yes   no  poor   no  yes            ckd  \n",
       "3  ...   32  6700  3.9  yes   no   no  poor  yes  yes            ckd  \n",
       "4  ...   35  7300  4.6   no   no   no  good   no   no            ckd  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 776,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv('kidney_disease.csv')\n",
    "data.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 777,
   "id": "2c00113b-69c0-4817-97dc-0859693e8642",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop(columns=['id'], inplace=True, errors='ignore')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 778,
   "id": "dfa454fc-7cc5-4d15-923e-8f6b1102e33c",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.impute import SimpleImputer\n",
    "numeric_cols = data.select_dtypes(include=['float64', 'int64']).columns\n",
    "categorical_cols = data.select_dtypes(include=['object']).columns\n",
    "\n",
    "imputer_num = SimpleImputer(strategy='mean')\n",
    "data[numeric_cols] = imputer_num.fit_transform(data[numeric_cols])\n",
    "\n",
    "imputer_cat = SimpleImputer(strategy='most_frequent')\n",
    "data[categorical_cols] = imputer_cat.fit_transform(data[categorical_cols])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 779,
   "id": "f07502ce-e45d-401c-99b9-09f79adc3a15",
   "metadata": {},
   "outputs": [],
   "source": [
    "for column in categorical_cols:\n",
    "    le = LabelEncoder()\n",
    "    data[column] = le.fit_transform(data[column])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 780,
   "id": "53881a98-e1f3-4385-b560-1189b24eef4b",
   "metadata": {},
   "outputs": [],
   "source": [
    "x = data.drop('classification', axis=1)\n",
    "y = data['classification']\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 781,
   "id": "d3fa026f-606b-42f9-8148-23d83405f5d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 782,
   "id": "71faf72e-4b99-43be-83b3-4067f27eb9b1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Selected features using tree-based importance: ['htn', 'bgr', 'bu', 'sod', 'rc', 'pcv', 'al', 'sc', 'sg', 'hemo']\n"
     ]
    }
   ],
   "source": [
    "model = RandomForestRegressor()\n",
    "model.fit(x_train, y_train)\n",
    "\n",
    "feature_importances = model.feature_importances_\n",
    "selected_features = x.columns[np.argsort(feature_importances)[-10:]]\n",
    "\n",
    "print(f\"Selected features using tree-based importance: {selected_features.tolist()}\")\n",
    "\n",
    "x_train_selected = x_train[selected_features]\n",
    "x_test_selected = x_test[selected_features]\n",
    "\n",
    "scaler = StandardScaler()\n",
    "x_train_selected = scaler.fit_transform(x_train_selected)\n",
    "x_test_selected = scaler.transform(x_test_selected)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 783,
   "id": "ff58cc7f-5167-4ef9-8aad-32517c902087",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "    mae = mean_absolute_error(y_true, y_pred)\n",
    "    mse = mean_squared_error(y_true, y_pred)\n",
    "    rmse = np.sqrt(mse)\n",
    "    r2 = r2_score(y_true, y_pred)\n",
    "\n",
    "    results = {\n",
    "        \"Mean Absolute Error (MAE)\": mae,\n",
    "        \"Mean Squared Error (MSE)\": mse,\n",
    "        \"Root Mean Squared Error (RMSE)\": rmse,\n",
    "        \"R^2 Score\": r2\n",
    "    }\n",
    "\n",
    "    return results"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 784,
   "id": "67e3e740-b83e-451e-a030-14b7fd5b4e5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 2 folds for each of 36 candidates, totalling 72 fits\n",
      "Best Parameters: {'max_depth': None, 'min_samples_leaf': 4, 'min_samples_split': 2}\n",
      "Best CV RMSE: -0.5247241079918532\n",
      "\n",
      "Evaluation Results on Test Set:\n",
      "Mean Absolute Error (MAE): 0.0567\n",
      "Mean Squared Error (MSE): 0.0572\n",
      "Root Mean Squared Error (RMSE): 0.2392\n",
      "R^2 Score: 0.9371\n"
     ]
    }
   ],
   "source": [
    "DT = DecisionTreeRegressor(random_state=42)\n",
    "param_grid = {\n",
    "    'max_depth': [None, 10, 20, 30],\n",
    "    'min_samples_split': [2, 5, 10],\n",
    "    'min_samples_leaf': [1, 2, 4],\n",
    "}\n",
    "\n",
    "grid_search = GridSearchCV(\n",
    "    estimator=DT,\n",
    "    param_grid=param_grid,\n",
    "    cv=2,\n",
    "    scoring='neg_root_mean_squared_error',\n",
    "    verbose=2,\n",
    "    n_jobs=-1\n",
    ")\n",
    "\n",
    "grid_search.fit(x_train_selected, y_train)\n",
    "\n",
    "print(\"Best Parameters:\", grid_search.best_params_)\n",
    "print(\"Best CV RMSE:\", grid_search.best_score_)\n",
    "\n",
    "best_DT = grid_search.best_estimator_\n",
    "y_pred = best_DT.predict(x_test_selected)\n",
    "evaluation_results = evaluate_model('Decision Tree Regressor', y_test, y_pred)\n",
    "\n",
    "print(\"\\nEvaluation Results on Test Set:\")\n",
    "for key, value in evaluation_results.items():\n",
    "    print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 785,
   "id": "72742ade-2404-4625-98d7-ec3040c3b749",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Selected features using RFE: ['sg', 'al', 'pcc', 'ba', 'hemo', 'htn', 'appet', 'ane']\n"
     ]
    }
   ],
   "source": [
    "# Feature Selection: Recursive Feature Elimination (RFE)\n",
    "model = LinearRegression()\n",
    "rfe = RFE(model, n_features_to_select=8)\n",
    "x_rfe = rfe.fit_transform(x, y)\n",
    "selected_features_rfe = x.columns[rfe.support_]\n",
    "print(f\"Selected features using RFE: {selected_features_rfe.tolist()}\")\n",
    "\n",
    "x_train_selected = x_train[selected_features_rfe]\n",
    "x_test_selected = x_test[selected_features_rfe]\n",
    "\n",
    "scaler = StandardScaler()\n",
    "x_train_selected = scaler.fit_transform(x_train_selected)\n",
    "x_test_selected = scaler.transform(x_test_selected)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 786,
   "id": "42284b14-4182-4c08-a450-9af6df3c9ca3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 2 folds for each of 108 candidates, totalling 216 fits\n",
      "Best Parameters: {'max_depth': 10, 'min_samples_leaf': 1, 'min_samples_split': 10, 'n_estimators': 100}\n",
      "\n",
      "Evaluation Results on Test Set:\n",
      "Mean Absolute Error (MAE): 0.0496\n",
      "Mean Squared Error (MSE): 0.0350\n",
      "Root Mean Squared Error (RMSE): 0.1871\n",
      "R^2 Score: 0.9615\n"
     ]
    }
   ],
   "source": [
    "rf_regressor = RandomForestRegressor()\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",
    "\n",
    "grid_search = GridSearchCV(\n",
    "    estimator=rf_regressor,\n",
    "    param_grid=param_grid,\n",
    "    cv=2,\n",
    "    scoring='neg_root_mean_squared_error',\n",
    "    verbose=2,\n",
    "    n_jobs=-1\n",
    ")\n",
    "\n",
    "grid_search.fit(x_train_selected, y_train)\n",
    "\n",
    "print(\"Best Parameters:\", grid_search.best_params_)\n",
    "\n",
    "best_rf = grid_search.best_estimator_\n",
    "y_pred = best_rf.predict(x_test_selected)\n",
    "\n",
    "evaluation_results = evaluate_model('RandomForestRegressor', y_test, y_pred)\n",
    "\n",
    "print(\"\\nEvaluation Results on Test Set:\")\n",
    "for key, value in evaluation_results.items():\n",
    "    print(f\"{key}: {value:.4f}\" if isinstance(value, float) else f\"{key}: \\n{value}\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5012807d-ca70-4b31-b3ba-8364987cdcad",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e45672fe-7f08-416b-bad3-aa270e464472",
   "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.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
