{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "30d2b35d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import required libraries\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sklearn.datasets import load_diabetes\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.impute import SimpleImputer\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.pipeline import make_pipeline\n",
    "from sklearn.linear_model import LinearRegression, LogisticRegression\n",
    "from sklearn.metrics import r2_score, mean_squared_error, accuracy_score, roc_auc_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "771180fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Continuous-target diabetes dataset shape: (442, 11)\n"
     ]
    },
    {
     "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>age</th>\n",
       "      <th>sex</th>\n",
       "      <th>bmi</th>\n",
       "      <th>bp</th>\n",
       "      <th>s1</th>\n",
       "      <th>s2</th>\n",
       "      <th>s3</th>\n",
       "      <th>s4</th>\n",
       "      <th>s5</th>\n",
       "      <th>s6</th>\n",
       "      <th>Target</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.038076</td>\n",
       "      <td>0.050680</td>\n",
       "      <td>0.061696</td>\n",
       "      <td>0.021872</td>\n",
       "      <td>-0.044223</td>\n",
       "      <td>-0.034821</td>\n",
       "      <td>-0.043401</td>\n",
       "      <td>-0.002592</td>\n",
       "      <td>0.019907</td>\n",
       "      <td>-0.017646</td>\n",
       "      <td>151.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.001882</td>\n",
       "      <td>-0.044642</td>\n",
       "      <td>-0.051474</td>\n",
       "      <td>-0.026328</td>\n",
       "      <td>-0.008449</td>\n",
       "      <td>-0.019163</td>\n",
       "      <td>0.074412</td>\n",
       "      <td>-0.039493</td>\n",
       "      <td>-0.068332</td>\n",
       "      <td>-0.092204</td>\n",
       "      <td>75.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.085299</td>\n",
       "      <td>0.050680</td>\n",
       "      <td>0.044451</td>\n",
       "      <td>-0.005670</td>\n",
       "      <td>-0.045599</td>\n",
       "      <td>-0.034194</td>\n",
       "      <td>-0.032356</td>\n",
       "      <td>-0.002592</td>\n",
       "      <td>0.002861</td>\n",
       "      <td>-0.025930</td>\n",
       "      <td>141.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.089063</td>\n",
       "      <td>-0.044642</td>\n",
       "      <td>-0.011595</td>\n",
       "      <td>-0.036656</td>\n",
       "      <td>0.012191</td>\n",
       "      <td>0.024991</td>\n",
       "      <td>-0.036038</td>\n",
       "      <td>0.034309</td>\n",
       "      <td>0.022688</td>\n",
       "      <td>-0.009362</td>\n",
       "      <td>206.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.005383</td>\n",
       "      <td>-0.044642</td>\n",
       "      <td>-0.036385</td>\n",
       "      <td>0.021872</td>\n",
       "      <td>0.003935</td>\n",
       "      <td>0.015596</td>\n",
       "      <td>0.008142</td>\n",
       "      <td>-0.002592</td>\n",
       "      <td>-0.031988</td>\n",
       "      <td>-0.046641</td>\n",
       "      <td>135.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        age       sex       bmi        bp        s1        s2        s3  \\\n",
       "0  0.038076  0.050680  0.061696  0.021872 -0.044223 -0.034821 -0.043401   \n",
       "1 -0.001882 -0.044642 -0.051474 -0.026328 -0.008449 -0.019163  0.074412   \n",
       "2  0.085299  0.050680  0.044451 -0.005670 -0.045599 -0.034194 -0.032356   \n",
       "3 -0.089063 -0.044642 -0.011595 -0.036656  0.012191  0.024991 -0.036038   \n",
       "4  0.005383 -0.044642 -0.036385  0.021872  0.003935  0.015596  0.008142   \n",
       "\n",
       "         s4        s5        s6  Target  \n",
       "0 -0.002592  0.019907 -0.017646   151.0  \n",
       "1 -0.039493 -0.068332 -0.092204    75.0  \n",
       "2 -0.002592  0.002861 -0.025930   141.0  \n",
       "3  0.034309  0.022688 -0.009362   206.0  \n",
       "4 -0.002592 -0.031988 -0.046641   135.0  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the built-in diabetes progression dataset with a continuous target\n",
    "uci = load_diabetes(as_frame=True)\n",
    "uci_data = uci.data.copy()\n",
    "uci_data[\"Target\"] = uci.target\n",
    "\n",
    "print(\"Continuous-target diabetes dataset shape:\", uci_data.shape)\n",
    "uci_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3fe603b3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pima dataset shape: (768, 9)\n"
     ]
    },
    {
     "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>Pregnancies</th>\n",
       "      <th>Glucose</th>\n",
       "      <th>BloodPressure</th>\n",
       "      <th>SkinThickness</th>\n",
       "      <th>Insulin</th>\n",
       "      <th>BMI</th>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <th>Age</th>\n",
       "      <th>Outcome</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6</td>\n",
       "      <td>148</td>\n",
       "      <td>72</td>\n",
       "      <td>35</td>\n",
       "      <td>0</td>\n",
       "      <td>33.6</td>\n",
       "      <td>0.627</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>85</td>\n",
       "      <td>66</td>\n",
       "      <td>29</td>\n",
       "      <td>0</td>\n",
       "      <td>26.6</td>\n",
       "      <td>0.351</td>\n",
       "      <td>31</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>8</td>\n",
       "      <td>183</td>\n",
       "      <td>64</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>23.3</td>\n",
       "      <td>0.672</td>\n",
       "      <td>32</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>89</td>\n",
       "      <td>66</td>\n",
       "      <td>23</td>\n",
       "      <td>94</td>\n",
       "      <td>28.1</td>\n",
       "      <td>0.167</td>\n",
       "      <td>21</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>137</td>\n",
       "      <td>40</td>\n",
       "      <td>35</td>\n",
       "      <td>168</td>\n",
       "      <td>43.1</td>\n",
       "      <td>2.288</td>\n",
       "      <td>33</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Pregnancies  Glucose  BloodPressure  SkinThickness  Insulin   BMI  \\\n",
       "0            6      148             72             35        0  33.6   \n",
       "1            1       85             66             29        0  26.6   \n",
       "2            8      183             64              0        0  23.3   \n",
       "3            1       89             66             23       94  28.1   \n",
       "4            0      137             40             35      168  43.1   \n",
       "\n",
       "   DiabetesPedigreeFunction  Age  Outcome  \n",
       "0                     0.627   50        1  \n",
       "1                     0.351   31        0  \n",
       "2                     0.672   32        1  \n",
       "3                     0.167   21        0  \n",
       "4                     2.288   33        1  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Load the Pima Indians diabetes dataset\n",
    "pima_data = pd.read_csv(\"diabetes.csv\")\n",
    "print(\"Pima dataset shape:\", pima_data.shape)\n",
    "pima_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e9e1ba74",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Missing values in Pima dataset:\n",
      "Pregnancies                   0\n",
      "Glucose                       5\n",
      "BloodPressure                35\n",
      "SkinThickness               227\n",
      "Insulin                     374\n",
      "BMI                          11\n",
      "DiabetesPedigreeFunction      0\n",
      "Age                           0\n",
      "Outcome                       0\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# Prepare the Pima dataset by treating impossible zero measurements as missing\n",
    "pima_data = pima_data.copy()\n",
    "zero_missing_columns = [\"Glucose\", \"BloodPressure\", \"SkinThickness\", \"Insulin\", \"BMI\"]\n",
    "for column in zero_missing_columns:\n",
    "    if column in pima_data.columns:\n",
    "        pima_data[column] = pima_data[column].replace(0, np.nan)\n",
    "\n",
    "print(\"Missing values in Pima dataset:\")\n",
    "print(pima_data.isnull().sum())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "65037ac7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Continuous-target Diabetes Univariate Analysis\n"
     ]
    },
    {
     "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>Frequency</th>\n",
       "      <th>Missing</th>\n",
       "      <th>Unique Values</th>\n",
       "      <th>Mean</th>\n",
       "      <th>Median</th>\n",
       "      <th>Mode</th>\n",
       "      <th>Variance</th>\n",
       "      <th>Standard Deviation</th>\n",
       "      <th>Skewness</th>\n",
       "      <th>Kurtosis</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>age</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>58</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>0.005</td>\n",
       "      <td>0.016</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>-0.231</td>\n",
       "      <td>-0.671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.045</td>\n",
       "      <td>-0.045</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.127</td>\n",
       "      <td>-1.993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>bmi</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>163</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>-0.007</td>\n",
       "      <td>-0.031</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.598</td>\n",
       "      <td>0.095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>bp</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>100</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>-0.006</td>\n",
       "      <td>-0.040</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.291</td>\n",
       "      <td>-0.533</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s1</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>141</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>-0.004</td>\n",
       "      <td>-0.037</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.378</td>\n",
       "      <td>0.233</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s2</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>302</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.004</td>\n",
       "      <td>-0.001</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.437</td>\n",
       "      <td>0.601</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s3</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>63</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>-0.007</td>\n",
       "      <td>-0.014</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.799</td>\n",
       "      <td>0.982</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s4</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>66</td>\n",
       "      <td>-0.000</td>\n",
       "      <td>-0.003</td>\n",
       "      <td>-0.039</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.735</td>\n",
       "      <td>0.444</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s5</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>184</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.002</td>\n",
       "      <td>-0.018</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.292</td>\n",
       "      <td>-0.134</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>s6</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>56</td>\n",
       "      <td>0.000</td>\n",
       "      <td>-0.001</td>\n",
       "      <td>0.003</td>\n",
       "      <td>0.002</td>\n",
       "      <td>0.048</td>\n",
       "      <td>0.208</td>\n",
       "      <td>0.237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Target</th>\n",
       "      <td>442</td>\n",
       "      <td>0</td>\n",
       "      <td>214</td>\n",
       "      <td>152.133</td>\n",
       "      <td>140.500</td>\n",
       "      <td>72.000</td>\n",
       "      <td>5943.331</td>\n",
       "      <td>77.093</td>\n",
       "      <td>0.441</td>\n",
       "      <td>-0.883</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        Frequency  Missing  Unique Values     Mean   Median    Mode  Variance  \\\n",
       "age           442        0             58   -0.000    0.005   0.016     0.002   \n",
       "sex           442        0              2    0.000   -0.045  -0.045     0.002   \n",
       "bmi           442        0            163   -0.000   -0.007  -0.031     0.002   \n",
       "bp            442        0            100   -0.000   -0.006  -0.040     0.002   \n",
       "s1            442        0            141   -0.000   -0.004  -0.037     0.002   \n",
       "s2            442        0            302    0.000   -0.004  -0.001     0.002   \n",
       "s3            442        0             63   -0.000   -0.007  -0.014     0.002   \n",
       "s4            442        0             66   -0.000   -0.003  -0.039     0.002   \n",
       "s5            442        0            184    0.000   -0.002  -0.018     0.002   \n",
       "s6            442        0             56    0.000   -0.001   0.003     0.002   \n",
       "Target        442        0            214  152.133  140.500  72.000  5943.331   \n",
       "\n",
       "        Standard Deviation  Skewness  Kurtosis  \n",
       "age                  0.048    -0.231    -0.671  \n",
       "sex                  0.048     0.127    -1.993  \n",
       "bmi                  0.048     0.598     0.095  \n",
       "bp                   0.048     0.291    -0.533  \n",
       "s1                   0.048     0.378     0.233  \n",
       "s2                   0.048     0.437     0.601  \n",
       "s3                   0.048     0.799     0.982  \n",
       "s4                   0.048     0.735     0.444  \n",
       "s5                   0.048     0.292    -0.134  \n",
       "s6                   0.048     0.208     0.237  \n",
       "Target              77.093     0.441    -0.883  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pima Indians Diabetes Univariate Analysis\n"
     ]
    },
    {
     "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>Frequency</th>\n",
       "      <th>Missing</th>\n",
       "      <th>Unique Values</th>\n",
       "      <th>Mean</th>\n",
       "      <th>Median</th>\n",
       "      <th>Mode</th>\n",
       "      <th>Variance</th>\n",
       "      <th>Standard Deviation</th>\n",
       "      <th>Skewness</th>\n",
       "      <th>Kurtosis</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Pregnancies</th>\n",
       "      <td>768</td>\n",
       "      <td>0</td>\n",
       "      <td>17</td>\n",
       "      <td>3.845</td>\n",
       "      <td>3.000</td>\n",
       "      <td>1.000</td>\n",
       "      <td>11.354</td>\n",
       "      <td>3.370</td>\n",
       "      <td>0.902</td>\n",
       "      <td>0.159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Glucose</th>\n",
       "      <td>763</td>\n",
       "      <td>5</td>\n",
       "      <td>135</td>\n",
       "      <td>121.687</td>\n",
       "      <td>117.000</td>\n",
       "      <td>99.000</td>\n",
       "      <td>932.425</td>\n",
       "      <td>30.536</td>\n",
       "      <td>0.531</td>\n",
       "      <td>-0.277</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BloodPressure</th>\n",
       "      <td>733</td>\n",
       "      <td>35</td>\n",
       "      <td>46</td>\n",
       "      <td>72.405</td>\n",
       "      <td>72.000</td>\n",
       "      <td>70.000</td>\n",
       "      <td>153.318</td>\n",
       "      <td>12.382</td>\n",
       "      <td>0.134</td>\n",
       "      <td>0.911</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SkinThickness</th>\n",
       "      <td>541</td>\n",
       "      <td>227</td>\n",
       "      <td>50</td>\n",
       "      <td>29.153</td>\n",
       "      <td>29.000</td>\n",
       "      <td>32.000</td>\n",
       "      <td>109.767</td>\n",
       "      <td>10.477</td>\n",
       "      <td>0.691</td>\n",
       "      <td>2.935</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Insulin</th>\n",
       "      <td>394</td>\n",
       "      <td>374</td>\n",
       "      <td>185</td>\n",
       "      <td>155.548</td>\n",
       "      <td>125.000</td>\n",
       "      <td>105.000</td>\n",
       "      <td>14107.704</td>\n",
       "      <td>118.776</td>\n",
       "      <td>2.166</td>\n",
       "      <td>6.371</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>BMI</th>\n",
       "      <td>757</td>\n",
       "      <td>11</td>\n",
       "      <td>247</td>\n",
       "      <td>32.457</td>\n",
       "      <td>32.300</td>\n",
       "      <td>32.000</td>\n",
       "      <td>47.955</td>\n",
       "      <td>6.925</td>\n",
       "      <td>0.594</td>\n",
       "      <td>0.863</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DiabetesPedigreeFunction</th>\n",
       "      <td>768</td>\n",
       "      <td>0</td>\n",
       "      <td>517</td>\n",
       "      <td>0.472</td>\n",
       "      <td>0.372</td>\n",
       "      <td>0.254</td>\n",
       "      <td>0.110</td>\n",
       "      <td>0.331</td>\n",
       "      <td>1.920</td>\n",
       "      <td>5.595</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Age</th>\n",
       "      <td>768</td>\n",
       "      <td>0</td>\n",
       "      <td>52</td>\n",
       "      <td>33.241</td>\n",
       "      <td>29.000</td>\n",
       "      <td>22.000</td>\n",
       "      <td>138.303</td>\n",
       "      <td>11.760</td>\n",
       "      <td>1.130</td>\n",
       "      <td>0.643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Outcome</th>\n",
       "      <td>768</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.349</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.000</td>\n",
       "      <td>0.227</td>\n",
       "      <td>0.477</td>\n",
       "      <td>0.635</td>\n",
       "      <td>-1.601</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          Frequency  Missing  Unique Values     Mean   Median  \\\n",
       "Pregnancies                     768        0             17    3.845    3.000   \n",
       "Glucose                         763        5            135  121.687  117.000   \n",
       "BloodPressure                   733       35             46   72.405   72.000   \n",
       "SkinThickness                   541      227             50   29.153   29.000   \n",
       "Insulin                         394      374            185  155.548  125.000   \n",
       "BMI                             757       11            247   32.457   32.300   \n",
       "DiabetesPedigreeFunction        768        0            517    0.472    0.372   \n",
       "Age                             768        0             52   33.241   29.000   \n",
       "Outcome                         768        0              2    0.349    0.000   \n",
       "\n",
       "                             Mode   Variance  Standard Deviation  Skewness  \\\n",
       "Pregnancies                 1.000     11.354               3.370     0.902   \n",
       "Glucose                    99.000    932.425              30.536     0.531   \n",
       "BloodPressure              70.000    153.318              12.382     0.134   \n",
       "SkinThickness              32.000    109.767              10.477     0.691   \n",
       "Insulin                   105.000  14107.704             118.776     2.166   \n",
       "BMI                        32.000     47.955               6.925     0.594   \n",
       "DiabetesPedigreeFunction    0.254      0.110               0.331     1.920   \n",
       "Age                        22.000    138.303              11.760     1.130   \n",
       "Outcome                     0.000      0.227               0.477     0.635   \n",
       "\n",
       "                          Kurtosis  \n",
       "Pregnancies                  0.159  \n",
       "Glucose                     -0.277  \n",
       "BloodPressure                0.911  \n",
       "SkinThickness                2.935  \n",
       "Insulin                      6.371  \n",
       "BMI                          0.863  \n",
       "DiabetesPedigreeFunction     5.595  \n",
       "Age                          0.643  \n",
       "Outcome                     -1.601  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Calculate univariate statistics for numerical columns\n",
    "def univariate_analysis(frame):\n",
    "    numeric = frame.select_dtypes(include=np.number)\n",
    "    summary = pd.DataFrame({\n",
    "        \"Frequency\": numeric.count(),\n",
    "        \"Missing\": numeric.isnull().sum(),\n",
    "        \"Unique Values\": numeric.nunique(),\n",
    "        \"Mean\": numeric.mean(),\n",
    "        \"Median\": numeric.median(),\n",
    "        \"Mode\": numeric.mode().iloc[0],\n",
    "        \"Variance\": numeric.var(),\n",
    "        \"Standard Deviation\": numeric.std(),\n",
    "        \"Skewness\": numeric.skew(),\n",
    "        \"Kurtosis\": numeric.kurtosis()\n",
    "    })\n",
    "    return summary.round(3)\n",
    "\n",
    "print(\"Continuous-target Diabetes Univariate Analysis\")\n",
    "display(univariate_analysis(uci_data))\n",
    "\n",
    "print(\"Pima Indians Diabetes Univariate Analysis\")\n",
    "display(univariate_analysis(pima_data))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c290e876",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Continuous-target diabetes summary:\n",
      "count    442.000000\n",
      "mean     152.133484\n",
      "std       77.093005\n",
      "min       25.000000\n",
      "25%       87.000000\n",
      "50%      140.500000\n",
      "75%      211.500000\n",
      "max      346.000000\n",
      "Name: Target, dtype: float64\n",
      "\n",
      "Pima outcome frequency:\n",
      "Outcome\n",
      "0    500\n",
      "1    268\n",
      "Name: count, dtype: int64\n",
      "\n",
      "UCI high/low progression frequency:\n",
      "High_Progression\n",
      "0    221\n",
      "1    221\n",
      "Name: count, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "# Display target frequency counts for both datasets\n",
    "print(\"Continuous-target diabetes summary:\")\n",
    "print(uci_data[\"Target\"].describe())\n",
    "\n",
    "print(\"\\nPima outcome frequency:\")\n",
    "print(pima_data[\"Outcome\"].value_counts().sort_index())\n",
    "\n",
    "# Create a high/low progression label for logistic regression on the continuous UCI target\n",
    "uci_median_target = uci_data[\"Target\"].median()\n",
    "uci_data[\"High_Progression\"] = (uci_data[\"Target\"] > uci_median_target).astype(int)\n",
    "print(\"\\nUCI high/low progression frequency:\")\n",
    "print(uci_data[\"High_Progression\"].value_counts().sort_index())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "6fef0aae",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Continuous-target bivariate linear regression results\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature</th>\n",
       "      <th>R2</th>\n",
       "      <th>RMSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>s5</td>\n",
       "      <td>0.382692</td>\n",
       "      <td>57.189106</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>bmi</td>\n",
       "      <td>0.233350</td>\n",
       "      <td>63.732456</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>s4</td>\n",
       "      <td>0.196660</td>\n",
       "      <td>65.239671</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>s3</td>\n",
       "      <td>0.185122</td>\n",
       "      <td>65.706513</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>bp</td>\n",
       "      <td>0.173412</td>\n",
       "      <td>66.176956</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>s6</td>\n",
       "      <td>0.110037</td>\n",
       "      <td>68.667026</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>s1</td>\n",
       "      <td>0.055568</td>\n",
       "      <td>70.737145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>s2</td>\n",
       "      <td>0.044948</td>\n",
       "      <td>71.133753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>age</td>\n",
       "      <td>0.008290</td>\n",
       "      <td>72.486081</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>sex</td>\n",
       "      <td>-0.009028</td>\n",
       "      <td>73.116217</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Feature        R2       RMSE\n",
       "8      s5  0.382692  57.189106\n",
       "2     bmi  0.233350  63.732456\n",
       "7      s4  0.196660  65.239671\n",
       "6      s3  0.185122  65.706513\n",
       "3      bp  0.173412  66.176956\n",
       "9      s6  0.110037  68.667026\n",
       "4      s1  0.055568  70.737145\n",
       "5      s2  0.044948  71.133753\n",
       "0     age  0.008290  72.486081\n",
       "1     sex -0.009028  73.116217"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pima bivariate linear regression results\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature</th>\n",
       "      <th>R2</th>\n",
       "      <th>RMSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Glucose</td>\n",
       "      <td>0.257355</td>\n",
       "      <td>0.412923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>BMI</td>\n",
       "      <td>0.079514</td>\n",
       "      <td>0.459713</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Pregnancies</td>\n",
       "      <td>0.072507</td>\n",
       "      <td>0.461459</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Insulin</td>\n",
       "      <td>0.062147</td>\n",
       "      <td>0.464030</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>DiabetesPedigreeFunction</td>\n",
       "      <td>0.052350</td>\n",
       "      <td>0.466447</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SkinThickness</td>\n",
       "      <td>0.050374</td>\n",
       "      <td>0.466933</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BloodPressure</td>\n",
       "      <td>0.034659</td>\n",
       "      <td>0.470781</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Age</td>\n",
       "      <td>-0.041448</td>\n",
       "      <td>0.488987</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Feature        R2      RMSE\n",
       "1                   Glucose  0.257355  0.412923\n",
       "5                       BMI  0.079514  0.459713\n",
       "0               Pregnancies  0.072507  0.461459\n",
       "4                   Insulin  0.062147  0.464030\n",
       "6  DiabetesPedigreeFunction  0.052350  0.466447\n",
       "3             SkinThickness  0.050374  0.466933\n",
       "2             BloodPressure  0.034659  0.470781\n",
       "7                       Age -0.041448  0.488987"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Run bivariate linear regression for each feature\n",
    "def bivariate_linear_results(frame, feature_columns, target_column):\n",
    "    results = []\n",
    "    for feature in feature_columns:\n",
    "        X = frame[[feature]]\n",
    "        y = frame[target_column]\n",
    "        X_train, X_test, y_train, y_test = train_test_split(\n",
    "            X, y, test_size=0.2, random_state=42\n",
    "        )\n",
    "        model = make_pipeline(SimpleImputer(strategy=\"median\"), StandardScaler(), LinearRegression())\n",
    "        model.fit(X_train, y_train)\n",
    "        predictions = model.predict(X_test)\n",
    "        results.append({\n",
    "            \"Feature\": feature,\n",
    "            \"R2\": r2_score(y_test, predictions),\n",
    "            \"RMSE\": np.sqrt(mean_squared_error(y_test, predictions))\n",
    "        })\n",
    "    return pd.DataFrame(results).sort_values(\"R2\", ascending=False)\n",
    "\n",
    "uci_features = list(uci.data.columns)\n",
    "pima_features = [column for column in pima_data.columns if column != \"Outcome\"]\n",
    "\n",
    "print(\"Continuous-target bivariate linear regression results\")\n",
    "uci_bivariate_linear = bivariate_linear_results(uci_data, uci_features, \"Target\")\n",
    "display(uci_bivariate_linear)\n",
    "\n",
    "print(\"Pima bivariate linear regression results\")\n",
    "pima_bivariate_linear = bivariate_linear_results(pima_data, pima_features, \"Outcome\")\n",
    "display(pima_bivariate_linear)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "cea1f776",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Continuous-target logistic regression results (high vs low progression)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>ROC AUC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>s5</td>\n",
       "      <td>0.764045</td>\n",
       "      <td>0.852525</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>s4</td>\n",
       "      <td>0.719101</td>\n",
       "      <td>0.762626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>s3</td>\n",
       "      <td>0.707865</td>\n",
       "      <td>0.756061</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>bmi</td>\n",
       "      <td>0.651685</td>\n",
       "      <td>0.718687</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>s6</td>\n",
       "      <td>0.617978</td>\n",
       "      <td>0.707576</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>bp</td>\n",
       "      <td>0.584270</td>\n",
       "      <td>0.614646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>age</td>\n",
       "      <td>0.550562</td>\n",
       "      <td>0.587626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>s1</td>\n",
       "      <td>0.528090</td>\n",
       "      <td>0.568939</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>s2</td>\n",
       "      <td>0.494382</td>\n",
       "      <td>0.540657</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>sex</td>\n",
       "      <td>0.494382</td>\n",
       "      <td>0.494444</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  Feature  Accuracy   ROC AUC\n",
       "8      s5  0.764045  0.852525\n",
       "7      s4  0.719101  0.762626\n",
       "6      s3  0.707865  0.756061\n",
       "2     bmi  0.651685  0.718687\n",
       "9      s6  0.617978  0.707576\n",
       "3      bp  0.584270  0.614646\n",
       "0     age  0.550562  0.587626\n",
       "4      s1  0.528090  0.568939\n",
       "5      s2  0.494382  0.540657\n",
       "1     sex  0.494382  0.494444"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Pima bivariate logistic regression results (diabetes outcome)\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>ROC AUC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Glucose</td>\n",
       "      <td>0.707792</td>\n",
       "      <td>0.765000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Age</td>\n",
       "      <td>0.636364</td>\n",
       "      <td>0.710185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>BMI</td>\n",
       "      <td>0.623377</td>\n",
       "      <td>0.661481</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Pregnancies</td>\n",
       "      <td>0.681818</td>\n",
       "      <td>0.657407</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>DiabetesPedigreeFunction</td>\n",
       "      <td>0.675325</td>\n",
       "      <td>0.614722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Insulin</td>\n",
       "      <td>0.616883</td>\n",
       "      <td>0.579722</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SkinThickness</td>\n",
       "      <td>0.616883</td>\n",
       "      <td>0.579352</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>BloodPressure</td>\n",
       "      <td>0.662338</td>\n",
       "      <td>0.550185</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    Feature  Accuracy   ROC AUC\n",
       "1                   Glucose  0.707792  0.765000\n",
       "7                       Age  0.636364  0.710185\n",
       "5                       BMI  0.623377  0.661481\n",
       "0               Pregnancies  0.681818  0.657407\n",
       "6  DiabetesPedigreeFunction  0.675325  0.614722\n",
       "4                   Insulin  0.616883  0.579722\n",
       "3             SkinThickness  0.616883  0.579352\n",
       "2             BloodPressure  0.662338  0.550185"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Run bivariate logistic regression for each feature\n",
    "def bivariate_logistic_results(frame, feature_columns, target_column):\n",
    "    results = []\n",
    "    for feature in feature_columns:\n",
    "        X = frame[[feature]]\n",
    "        y = frame[target_column].astype(int)\n",
    "        X_train, X_test, y_train, y_test = train_test_split(\n",
    "            X, y, test_size=0.2, random_state=42, stratify=y\n",
    "        )\n",
    "        model = make_pipeline(\n",
    "            SimpleImputer(strategy=\"median\"),\n",
    "            StandardScaler(),\n",
    "            LogisticRegression(max_iter=2000)\n",
    "        )\n",
    "        model.fit(X_train, y_train)\n",
    "        predictions = model.predict(X_test)\n",
    "        probabilities = model.predict_proba(X_test)[:, 1]\n",
    "        results.append({\n",
    "            \"Feature\": feature,\n",
    "            \"Accuracy\": accuracy_score(y_test, predictions),\n",
    "            \"ROC AUC\": roc_auc_score(y_test, probabilities)\n",
    "        })\n",
    "    return pd.DataFrame(results).sort_values(\"ROC AUC\", ascending=False)\n",
    "\n",
    "print(\"Continuous-target logistic regression results (high vs low progression)\")\n",
    "uci_bivariate_logistic = bivariate_logistic_results(\n",
    "    uci_data, uci_features, \"High_Progression\"\n",
    ")\n",
    "display(uci_bivariate_logistic)\n",
    "\n",
    "print(\"Pima bivariate logistic regression results (diabetes outcome)\")\n",
    "pima_bivariate_logistic = bivariate_logistic_results(\n",
    "    pima_data, pima_features, \"Outcome\"\n",
    ")\n",
    "display(pima_bivariate_logistic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d0b8d755",
   "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>Dataset</th>\n",
       "      <th>R2</th>\n",
       "      <th>RMSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Continuous-target Diabetes</td>\n",
       "      <td>0.452603</td>\n",
       "      <td>53.853446</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Pima Indians</td>\n",
       "      <td>0.282100</td>\n",
       "      <td>0.405985</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      Dataset        R2       RMSE\n",
       "0  Continuous-target Diabetes  0.452603  53.853446\n",
       "1                Pima Indians  0.282100   0.405985"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Perform multiple linear regression using all features\n",
    "def multiple_linear_analysis(frame, feature_columns, target_column, dataset_name):\n",
    "    X = frame[feature_columns]\n",
    "    y = frame[target_column]\n",
    "    X_train, X_test, y_train, y_test = train_test_split(\n",
    "        X, y, test_size=0.2, random_state=42\n",
    "    )\n",
    "    model = make_pipeline(\n",
    "        SimpleImputer(strategy=\"median\"),\n",
    "        StandardScaler(),\n",
    "        LinearRegression()\n",
    "    )\n",
    "    model.fit(X_train, y_train)\n",
    "    predictions = model.predict(X_test)\n",
    "    return {\n",
    "        \"Dataset\": dataset_name,\n",
    "        \"R2\": r2_score(y_test, predictions),\n",
    "        \"RMSE\": np.sqrt(mean_squared_error(y_test, predictions))\n",
    "    }, model\n",
    "\n",
    "uci_multiple_linear, uci_linear_model = multiple_linear_analysis(\n",
    "    uci_data, uci_features, \"Target\", \"Continuous-target Diabetes\"\n",
    ")\n",
    "pima_multiple_linear, pima_linear_model = multiple_linear_analysis(\n",
    "    pima_data, pima_features, \"Outcome\", \"Pima Indians\"\n",
    ")\n",
    "\n",
    "multiple_linear_comparison = pd.DataFrame([uci_multiple_linear, pima_multiple_linear])\n",
    "display(multiple_linear_comparison)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "d1dc955d",
   "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>Dataset</th>\n",
       "      <th>Accuracy</th>\n",
       "      <th>ROC AUC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Continuous-target Diabetes (high/low progression)</td>\n",
       "      <td>0.741573</td>\n",
       "      <td>0.826263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Pima Indians (diabetes outcome)</td>\n",
       "      <td>0.707792</td>\n",
       "      <td>0.812963</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             Dataset  Accuracy   ROC AUC\n",
       "0  Continuous-target Diabetes (high/low progression)  0.741573  0.826263\n",
       "1                    Pima Indians (diabetes outcome)  0.707792  0.812963"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Perform multiple logistic regression using all features\n",
    "def multiple_logistic_analysis(frame, feature_columns, target_column, dataset_name):\n",
    "    X = frame[feature_columns]\n",
    "    y = frame[target_column].astype(int)\n",
    "    X_train, X_test, y_train, y_test = train_test_split(\n",
    "        X, y, test_size=0.2, random_state=42, stratify=y\n",
    "    )\n",
    "    model = make_pipeline(\n",
    "        SimpleImputer(strategy=\"median\"),\n",
    "        StandardScaler(),\n",
    "        LogisticRegression(max_iter=2000)\n",
    "    )\n",
    "    model.fit(X_train, y_train)\n",
    "    predictions = model.predict(X_test)\n",
    "    probabilities = model.predict_proba(X_test)[:, 1]\n",
    "    return {\n",
    "        \"Dataset\": dataset_name,\n",
    "        \"Accuracy\": accuracy_score(y_test, predictions),\n",
    "        \"ROC AUC\": roc_auc_score(y_test, probabilities)\n",
    "    }, model\n",
    "\n",
    "uci_multiple_logistic, uci_logistic_model = multiple_logistic_analysis(\n",
    "    uci_data, uci_features, \"High_Progression\", \"Continuous-target Diabetes (high/low progression)\"\n",
    ")\n",
    "pima_multiple_logistic, pima_logistic_model = multiple_logistic_analysis(\n",
    "    pima_data, pima_features, \"Outcome\", \"Pima Indians (diabetes outcome)\"\n",
    ")\n",
    "\n",
    "multiple_logistic_comparison = pd.DataFrame([uci_multiple_logistic, pima_multiple_logistic])\n",
    "display(multiple_logistic_comparison)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "5daa7002",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Linear regression comparison\n"
     ]
    },
    {
     "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>Dataset</th>\n",
       "      <th>Best Bivariate R2</th>\n",
       "      <th>Multiple R2</th>\n",
       "      <th>Multiple RMSE</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Continuous-target Diabetes</td>\n",
       "      <td>0.383</td>\n",
       "      <td>0.453</td>\n",
       "      <td>53.853</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Pima Indians</td>\n",
       "      <td>0.257</td>\n",
       "      <td>0.282</td>\n",
       "      <td>0.406</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                      Dataset  Best Bivariate R2  Multiple R2  Multiple RMSE\n",
       "0  Continuous-target Diabetes              0.383        0.453         53.853\n",
       "1                Pima Indians              0.257        0.282          0.406"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Logistic regression comparison\n"
     ]
    },
    {
     "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>Dataset</th>\n",
       "      <th>Best Bivariate Accuracy</th>\n",
       "      <th>Best Bivariate ROC AUC</th>\n",
       "      <th>Multiple Accuracy</th>\n",
       "      <th>Multiple ROC AUC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Continuous-target Diabetes (high/low progression)</td>\n",
       "      <td>0.764</td>\n",
       "      <td>0.853</td>\n",
       "      <td>0.742</td>\n",
       "      <td>0.826</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Pima Indians (diabetes outcome)</td>\n",
       "      <td>0.708</td>\n",
       "      <td>0.765</td>\n",
       "      <td>0.708</td>\n",
       "      <td>0.813</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                             Dataset  Best Bivariate Accuracy  \\\n",
       "0  Continuous-target Diabetes (high/low progression)                    0.764   \n",
       "1                    Pima Indians (diabetes outcome)                    0.708   \n",
       "\n",
       "   Best Bivariate ROC AUC  Multiple Accuracy  Multiple ROC AUC  \n",
       "0                   0.853              0.742             0.826  \n",
       "1                   0.765              0.708             0.813  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Compare the bivariate and multiple regression results\n",
    "linear_comparison = pd.DataFrame([\n",
    "    {\"Dataset\": \"Continuous-target Diabetes\", \"Best Bivariate R2\": uci_bivariate_linear[\"R2\"].max(),\n",
    "     \"Multiple R2\": uci_multiple_linear[\"R2\"], \"Multiple RMSE\": uci_multiple_linear[\"RMSE\"]},\n",
    "    {\"Dataset\": \"Pima Indians\", \"Best Bivariate R2\": pima_bivariate_linear[\"R2\"].max(),\n",
    "     \"Multiple R2\": pima_multiple_linear[\"R2\"], \"Multiple RMSE\": pima_multiple_linear[\"RMSE\"]}\n",
    "])\n",
    "\n",
    "logistic_comparison = pd.DataFrame([\n",
    "    {\"Dataset\": \"Continuous-target Diabetes (high/low progression)\",\n",
    "     \"Best Bivariate Accuracy\": uci_bivariate_logistic[\"Accuracy\"].max(),\n",
    "     \"Best Bivariate ROC AUC\": uci_bivariate_logistic[\"ROC AUC\"].max(),\n",
    "     \"Multiple Accuracy\": uci_multiple_logistic[\"Accuracy\"],\n",
    "     \"Multiple ROC AUC\": uci_multiple_logistic[\"ROC AUC\"]},\n",
    "    {\"Dataset\": \"Pima Indians (diabetes outcome)\",\n",
    "     \"Best Bivariate Accuracy\": pima_bivariate_logistic[\"Accuracy\"].max(),\n",
    "     \"Best Bivariate ROC AUC\": pima_bivariate_logistic[\"ROC AUC\"].max(),\n",
    "     \"Multiple Accuracy\": pima_multiple_logistic[\"Accuracy\"],\n",
    "     \"Multiple ROC AUC\": pima_multiple_logistic[\"ROC AUC\"]}\n",
    "])\n",
    "\n",
    "print(\"Linear regression comparison\")\n",
    "display(linear_comparison.round(3))\n",
    "\n",
    "print(\"Logistic regression comparison\")\n",
    "display(logistic_comparison.round(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "56263b8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAxYAAAHqCAYAAACZcdjsAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjIsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvgI3uAAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQtVJREFUeJzt3QeYVOXZP+AXEEEUsMeGGntHjViDvWPvvWGNGlssaGzRqElsscZ8KlHsXbH32HvFEixgAXsBYgGF/V/P+31n/rPLLiyeXRZ27/u65tKdOTNzdmaZOb/zPs/7tqupqalJAAAAJbQvc2cAAADBAgAAaBJGLAAAgNIECwAAoDTBAgAAKE2wAAAAShMsAACA0gQLAACgNMECAAAoTbAAmt2jjz6a2rVrlx588MFm2b6p7z+1PCfN46qrrsrv5dtvv+0lbkHeB5j6CBbQhr3yyiv5ACouJ598cr3bHH300ZVt3n333SZ77nvvvTc/ZhyQTy2v06mnnprawt9CXNq3b59mnnnmtO6666b777+/pXevzfnwww/TYYcdlpZYYok0/fTTp+7du6ell1467bfffumll15q6d0DqJdgAeQDlyuuuCLV1NTUejXGjh2bzxrG7ZPTmmuumfclDmqnFlPjPtfnlFNOyb/HTz/9lJ588sk0bty4tNFGG6WHH344tRW77LJLfg0WW2yxFnn+e+65Jy211FLpxRdfTOedd1769NNP0/Dhw9P555+fPvjgg7TiiiumtqCl3wdg0gkWQNpqq63SkCFD0mOPPVbr1bjvvvvyAc3WW2/tVWpjOnTokBZffPF06aWX5nBx4YUXtvQutQnx73C77bbL4SHCXATVrl275nAf4TVG+v74xz+29G4C1EuwANLyyy+flllmmfSvf/2r1qvRv3//9Nvf/jYtvPDC471KF1xwQS6Z+fjjj2tdH3XpcX3dx6r2j3/8I58FD2uttVal/Caub6hf4bbbbsvXPf3007kkae65507TTTddvn9jS0O+/fbbdPjhh6df//rXadppp01zzTVXOvDAA9OIESNK/xVMaJ+feeaZdM4556R55503de7cOa2++urptdde+0X7V7y+xSUeL85un3nmmTkA1Pd6/fWvf03zzz9/Lm8aOnToJP1esS8RMuq+z/FccTa9Z8+e+X2YccYZ0+abb57eeuutWtt98803qW/fvmmWWWZJ3bp1yyH1888/T/PMM08+I139u8f+nnHGGenOO+9Myy23XH4Nir+jTz75JO277775fnH9fPPNl4455pg0evToWs918MEH59819in+bn//+9+nL774YpK2aai2f9CgQWnLLbfMJWLF6x6vQfVIX/HvIkqZIgDMMcccqUuXLvnvvTGv/VlnnZX++9//prPPPjtNM8009W5z0kkn/eL9in34wx/+kGafffa8ffzuP//8cx6hOuKII9KvfvWrNMMMM+T35rvvvqv1PMVjRPiJv9PZZpstb7vpppuOVyYZ/w6q/07jNfjNb36Tg2p9jxn7Fe9n/M3Hz7FP9b0PjXn/Jtd7BYxPsACyPfbYI910002Vg4mvv/463XHHHfn6prb//vvnco/wyCOP5C/7uMT1ExMH0J06dcoH5q+++mo++IozuYMHD57g/UaOHJlWW221dNddd6XLLrss/34DBw5MTzzxRFpvvfXygVVziQOYOBCPABT7PWrUqHzQEwdPk7p/URZSvF5xiRGlOFA84YQT8sFofQeqsd3zzz+fH6+hg9WGvPfee7kkLkJRtd133z0fjB166KFp2LBh+feKA71VV101H3iG+P023njjfJb9+uuvz9tFUDrggANqhaBqEYRi25tvvjkfHMbzxu/Yq1ev9PLLL+fr47UZMGBA3q56NG2vvfbKzxV/x3EA+sADD+TXq/pgtjHb1OfNN99Mq6yySr5PlIjFPsXvEa/9IYccUu/B/wILLJAPimP7+O/OO+880dc79i0OriPoN8ak7tfxxx+fQ9s777yTX7/LL788B/Xo54iQGP+O4t/97bff3uDISL9+/dKSSy6ZH6N4zt69e+fAWIiRluJvNN7rOFCPsBL/xq+77rrxHvPYY49NCy20UH7P4+8/Dvjr05j3b3K9V0A9aoA26+WXX47TdzXnnHNOzeeff17TsWPHmn/961/5tvPOO6+mS5cuNSNHjqw55ZRT8nbvvPNO5b7nn39+vu6jjz6q9ZhvvfVWvr5///6V6x555JF83QMPPFC57p577snXxW111bf9rbfemq/beeeda2379ddf13Tt2rVmp512muD9jz/++Jr27dvXDBo0qNb94+fYdsCAARN9neJ1aMiE9nmvvfaqte1dd92Vr7/vvvuaZP/C/vvvX7PQQguN99w77rjjBO/X0O/4888/17z55ps1a6yxRs20005b88QTT1S2feihh/K2F198ca3H+PHHH2vmmWeemr59++afb7zxxrzdzTffXGu72267bbz38ptvvsnX9ejRo+ann36qtf2ee+5ZM8MMM9QMHz681vX33ntvrb+hGWecseawww6b4O/ZmG3itY7Hjb/lwlZbbZX34auvvqq17SGHHFLTrl27msGDB9f6d3HCCSfU2u6SSy7J17/xxhsTfO74N7jyyivXNNak7tdJJ51Ua7v425x++unz31+1ffbZJ/+7qlY8xtFHH13r+nfffbemQ4cONUcdddRE93eTTTapWXPNNcd7zCOPPLJR70Nj3r/J9V4B4zNiAWRR1hAlAEXpSZRBbbPNNrm+e0qy2Wab1fp5pplmSmusscZEm4vjbH3MsBNnWqvFz1EC8e9//zs1lz59+tT6Ocoywvvvv/+L9i/eoxgZiNKi6jKyeLy6IwF1X6+JiTPa8XgxshH788ILL+QzxDGaUr2vIf4+qsVIUpTOFfsao1HxWHV///g5yrLqEyMcdUdV4vniceecc85a10cZXJRpFc8XZ9zjtYmSl4ZKWRqzTX0eeuihPDIWpTXV4jWIs/J1//4a8543hUndr6IEsRBn+2OUcsMNN6x1ffTXxMjal19+Od5z1v2bWnDBBfOMVdXPFX+H5557bi5/inKp4u80ytzqm12usX+njXn/ptT3CtoCwQKoiLKnOEiLMogoO/klZVB1Z5ZqalEDXt919R0AVYuZdd5444180BqXOCCNg9s42Inbvvrqq2bb57oHxBEIir6CSd2/CBB77rln2mSTTfL2USIVr3mUecTBXN1gEb0ov2RWqOhdiDKsWWedNdewR6lW9b6GCDzV+xqXKHMp9jX+G9OkRuCoFvepe9DX0P5GGVa8tzGRQPFcxfPF48btxfNdc801ud4/ysKiNyTq8KNUq7r+vjHb1BXPEX0u8fvWVVxX9++vMe95faL0K2r+G6Mp9qs4cdDQ9fXtb2P+Dcbre+SRR+a+mCiZirK4+LvaYYcd6i07bOzf6cTev8n5XgHjEyyAijhYjSbbOHCNL+w469eQOGAMcVazWtTRN6fPPvus3utivyckDpBXWmmlfIATlzgAiYPwog78lltuabZ9bqhe/Jfs35VXXpn7DaImvUePHpWz+0VfQ10dO3b8RfscDdIxShF1+BFg4iCxel/j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G11yFZfCyJEjS+45AAAwxYxYtGvXLvdKVIvZneIS4aI+++67b9poo41Sz54982xQRUj45ptv0nfffVfvfU4//fTcHF5cevTo0Qy/DQAAtG0tFiyiBOqzzz6rdV3xc/RP1OeDDz5It956a1psscXyZc8996yUUEWAqE+/fv3yTFPF5aOPPmry3wUAANq6FiuFWn311dOpp56a3nnnnbTwwgvn6+6///7UsWPHtPLKK+efo9/iq6++Sl27dk2dOnVKL730Uq3HePDBB9N6662XXnvttTTPPPPU+zxxv7gAAACtcMRinXXWSSuttFIedXj11VfTI488ko477ri0//77V/onYoQh+jCuvfbaltpNAABgSh6xiD6KgQMHpqOOOiptttlmeVShb9++6YQTTqi1TTR0d+7cud7HmHbaafPtHTp0mIx7DgAATDHBIsRoRP/+/Ru8vVu3brlJe0LlVBO6HQAAaOWlUAAAQOshWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAApQkWAABAaYIFAABQmmABAACUJlgAAAClCRYAAEBpggUAAFCaYAEAAJQmWAAAAKUJFgAAQGmCBQAAUJpgAQAACBYAAEDLM2IBAACUJlgAAAClCRYAAEBpggUAAFCaYAEAAJQmWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAApQkWAABAaYIFAABQmmABAACUJlgAAAClCRYAAEBpggUAAFCaYAEAAJQmWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAApQkWAABAaYIFAABQmmABAACUJlgAAAClCRYAAEBpggUAAFCaYAEAAJQmWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAApQkWAABAaYIFAABQmmABAACUJlgAAAClCRYAAEBpggUAAFCaYAEAAJQmWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAApQkWAABAaYIFAABQmmABAABM/cHip59+Si+//HJ66623Gn2fH374Ib3yyitp6NChqaampln3DwAAmMKDxSOPPJJ69OiRttpqq9S7d+/Us2fP9MEHHzS4/ahRo9KBBx6Y5plnntS3b9/Uq1evtPTSS+eQAQAAtMFgMXLkyLTtttum3XffPQ0ZMiR98sknaZZZZkm77rprg/f54osv0korrZQ+++yz9OKLL6bhw4enhRZaKO2xxx6Tdd8BAIApJFjcfvvtOVz069cv/9yxY8d09NFHp8cffzy9++679d5ngQUWSLvttluaZpppKvdZbbXV0rBhwybrvgMAALX97xF6C4i+iggKM844Y+W6FVdcsXJbjEQ0ZNCgQenrr79OgwcPTn//+9/TKaec0uC2o0ePzpdChBkAAKCVBIsIBlH6VC1CRvv27fNtE3LZZZelp556Ko9sLL/88mmDDTZocNvTTz89nXzyyU223wAAwBRUChVlTD/++GOt68aMGZPGjRuXpp122gne95xzzknPPvts7rGYffbZ07rrrptnl6pPlFqNGDGicvnoo4+a9PcAAABaMFjMN9984/VGFD/PO++8jXqMTp06pd///vfp/fffT//5z38a3KZbt261LgAAQCsJFuutt16e3em5556r1dA9wwwzpFVWWSX/PHbs2PTEE0+kzz//PP/83Xffjfc4RaN33bIqAACgDfRYxLSxW265Zdp5553Tqaeemvsqjj/++HTiiSemLl26VNatiPUt+vfvn6eUveSSS/I0s3369EmzzjprXr/ijDPOSPvtt1+ac845W+pXAQCANq/FgkW49tpr07nnnpsuv/zyXLIUwSGCRiGmlY3pZH/1q1/lnw8//PB0xx13pJtvvjl9+umneaG8AQMG5KABAAC0nHY1NTU1qQ2J6Wa7d++eG7lbst9i/mPuarHnBghDz3BSBoCmO3ZusR4LAACg9RAsAACA0gQLAACgNMECAAAoTbAAAABKEywAAIDSBAsAAKA0wQIAAJi6V94GgCmZxUyBljZ0KlrM1IgFAABQmmABAAC0bLAYN25cGjNmTPm9AAAA2l6weP3119Oaa66Zpp9++nTsscfm61599dV0+OGHN/X+AQAArTFYjBgxIm244YZphRVWSLvuumvl+p49e6Ynn3wyvfzyy029jwAAQGsLFg8++GBaaqml0plnnpkWXXTRWrf17t073X333U25fwAAQGsMFsOHD08LLrhg/v927drVuq1Dhw7pxx9/bLq9AwAAWmewiFGKp556KtXU1NQKFt9//326+eabc0kUAADQtkzyAnnrrrtu6ty5c9p8881T165d8wjF+eefny688MLK9QAAQNsyySMW7du3T/fee2+ac845cz/FLbfcko4++ui07LLL5v6Ljh07Ns+eAgAArWfEYtiwYemnn35Kl1xySb589913qUuXLuP1WwAAAG3HJI9Y3HjjjemCCy6o/BxrWQgVAADQtk1ysJhvvvnSO++80zx7AwAAtI1g0adPn/TJJ5/kdSzivz///HOty7hx45pnTwEAgNYTLM4777z0/PPPpyOPPDLNNddcuVm7+nLUUUc1z54CAACtp3l7++23TyussEKDt/fo0aPsPgEAAK09WERwEB4AAIBSwaIQvRRDhw5NH3/8cV7TYoEFFkgdOnT4pQ8HAAC0pR6L8NRTT6WePXumBRdcMK2xxhppkUUWyZdYOA8AAGh7JjlYfPHFF2mjjTZKK664Ynr55ZfTl19+mQYNGpS22GKLtPnmm6d33323efYUAABoPaVQ99xzT/rNb36TLrvsssp1s8wySzrrrLPS8OHD06233ppnjAIAANqOSR6xGDFiRPr1r39d721xfdwOAAC0LZMcLJZffvl0++23p8GDB9e6ftiwYenqq69Oyy23XFPuHwAA0BpLoVZbbbW04YYbpqWWWiqtu+66ae65506fffZZevDBB1Pv3r1zrwUAANC2/KJZoa666qp000035VAR083OOuusueciZoUy5SwAALQ9v3gdi8022yxfAAAAftGIxeuvv57ee++98XosXnjhBa8oAAC0Qb9oHYvtt98+de/evdb1M800U+rbt296//33m3L/AACA1hgsoo+iV69eua+iWpcuXdIGG2yQZ4wCAADalkkOFj/88EO+NHTbyJEjm2K/AACA1hwsYkrZgQMHpmeffbbW9W+99VYaMGBAWn311Zty/wAAgNY4K9Tiiy+eDjzwwLTqqqumtddeO80333xp+PDheR2L7bbbLq211lrNs6cAAEDrmhXqzDPPTLfeemuaY4450gcffJAbua+44oo8YgEAALQ91rEAAABaLlgUHn/88XTnnXemOeecM+21116pW7du5fcKAABovaVQW265Zbr77rsrP0egWGONNdLll1+e+vXrl3suxo0b1xz7CQAAtIZgMXjw4PTOO++kjTfeuHLdaaedlrbaaqv02WefpQ8//DB9/vnn6b777muufQUAAKb2YPHMM8+klVZaqfLzqFGj0nPPPZcOPvjg1L59+zTbbLPlWaEGDRrUXPsKAABM7cFi9OjRqaampvLzCy+8kP8bq3AXunbtmr777rum3kcAAKC1BIullloq3XXXXbncKVx11VVplVVWSV26dKlsE6VSiy66aPPsKQAAMPXPChUhYumll04LLbRQmn322dN7772XbrnllsrtMVIRM0RdeOGFzbWvAABAa5huNkYsLrvssjRkyJC07rrrpg022KByWwSNU089NS+WBwAAtC2TFCw6deqUfve739V72zLLLJMvAABA2zNJ61gAAADUR7AAAABKEywAAIDSBAsAAKA0wQIAAJi8wWLQoEFpnXXWSfPOO2/aZptt0uDBg2vdfvbZZ6ejjz66/F4BAACtM1h8//33af31108dOnRIe++9d3r//ffTCiuskB599NHKNuPGjUtjx45trn0FAACm9mDxwAMPpLnnnjvdd9996YQTTkgvvPBC2nfffVOfPn3Sww8/3Lx7CQAAtI4F8oYNG5Z69eqV2rVrl39u3759OvPMM9NMM82UNtlkkzRw4MDm3E8AAKA1BIuFF1443XbbbeNdf9xxx+XyqM022yz3XyyyyCJNvY8AAEBrKYVac80105AhQ9KHH3443m3HHHNMOvHEE41aAABAG9XoEYuOHTum/v37p2+++SbPClXXUUcdleabb74066yzNvU+AgAArSVYhN/+9rcTvH377bcvuz8AAEBbXyDvscceS1dddVVTPiQAANAag0VMLXvxxRenu+++O69bEd5+++206aabpjXWWCN9/vnnzbGfAABAaymFilKnG264ofJzrL69ww47pJ133jktt9xyecSid+/ek7QDH3/8cXr88cdT586d09prr526d+8+we0jzDz//PN5gb4ePXqkVVddNU99CwAATAXB4tlnn82jFA8++GA+mH/llVfSFltske6///503nnn5cXyJtWVV16ZDjjggBxGoik8HuOee+7JK3rX54knnsjbdOvWLf36179Ozz33XJpuuunSvffem+aZZ55Jfn4AAGAyB4vXX389bb311nmtirDKKqukPfbYI48c/JJQ8emnn6b9998//fWvf00HHXRQvm7HHXfMjzlo0KB67xOL891+++15TY0wZsyYvB+HHXZYuvHGGyd5HwAAgKbR6Bqib7/9drypZGebbbY8xewvEQEh9O3bt3LdwQcfnN5444302muv1Xuf1VZbrRIqwrTTTpuDTtwHAACYSnoshg0blsuRCkOHDk1fffVVreuiJGn++eef6GPFqESUM0UpU2HJJZes3LbMMstM9DHG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WAAAAKUJFgAAQGnTpBY0duzYdNlll6WHHnoode7cOW233XapT58+TX4fAACgFY9Y7LnnnumUU05Ja621VlpsscXS1ltvnS6++OImvw8AANBKRyxefvnlNGDAgPTYY4+l3r17V64/9thjc3iI0YimuA8AANCKRyzuvffeNNtss6Xf/va3leu22Wab9O2336Znnnmmye4DAAC04hGLIUOGpLnnnju1a9eucl2PHj0qt6255ppNcp/Ro0fnS2HEiBH5vyNHjkwtadzo71v0+QFa+nNwauCzGmjrn9Uj/+/5a2pqptxgMWbMmNSlS5da13Xq1Cl16NAh39ZU9zn99NPTySefPN71RSABaKu6n9vSewDA1PJZPWrUqNS9e/cpM1jMOOOM6euvv651XZQ0xaxPcVtT3adfv37p8MMPr/w8bty4/BizzDJLrZEPmJrE2YMIxx999FHq1q1bS+8OAPXwWU1rECMVESrmmmuuiW7bYsGiZ8+eeTan2NGuXbvm61555ZXKbU11nxjRiEu1hkIITG0iVAgWAFM2n9VM7SY2UtHizdubb755nsXp3HPPrYwknHnmmalXr155Gtnw3XffpU022SSvWdHY+wAAAJNfi41YzDzzzOnqq69Ou+yyS7rlllsqTdV33313ZZuffvop3XXXXXnmp8beBwAAaGMrb8doRNSIv/DCC7lcKUYeOnbsWLl9hhlmSAMHDkzLLrtso+8DbUH87Z944onjlfkBMOXwWU1b066mMXNHAQAATIk9FgAAQOshWAAAAKUJFgAAQGmCBQAAUJpgAQAAlCZYAAAAU/c6FgBTqtGjR6ebbropPfbYY6lbt26pb9++abHFFmvp3QJoEk888US6+eab048//pg22mijtNlmm3llKc2IBUAdI0eOTCuvvHK65JJL8gKdiy66aHrooYe8TkCrcPjhh6cdd9wxzT777GnVVVdN//73v9PYsWNberdoBSyQB7RaH374YXrxxRfTlltuWe/tr732Who4cGCKdUK32WabyojElVdemU466aT03nvvpXbt2k3mvQYo74cffkgDBgxIL7/8curZs2fab7/98ufZt99+m2aZZZb82RgnTqApGbEAWq1nnnkm7bbbbumnn37K4SGCRoj/33vvvdMWW2yRvvrqqzR48OC0wgorpAcffDDfHl+6X3zxRXr44YfTBx98kIYMGZK++eabFv5tgLbk559/Tg888ED6/vvvJ+l+hx56aPr73/+eP9OilLN79+7pmGOOSccdd1y+fbrppktdunRJd999d3r//ffT0KFD07Bhw5rpt6CtMWIBtFpxpm755ZdP6623XnrllVfSAgsskMPGeeedl6699tocHOJLNpx88snpxhtvTIMGDUrjxo3LX8633npr/lJv3759+vrrr3NI6d+/f0v/WkAr9dJLL6W55547/epXv8qfPTPNNFP+HNp4443H2zZ6I2KbmWeeudb1e+yxRx51/cc//pH23XfffF38fNBBB6VPP/00h4rrrrsu/elPf0qfffZZ/nyL8s8FF1wwPfLII/m54ZcyYgG0WqeddloefejUqVN64YUXcqgI0ZS9yy67pOHDh+cv36233jqf4YsygU8++SR/0Ub4+Oijj/KIRoxexGjGv/71r3yGD6A57LDDDvmkR4gAsNdee+UR1kKMnp544olplVVWSV27dk2zzTZbHpmIz6pCnEiJ+2yyySaV66LUc8yYMenRRx+tPM+bb75Z+XyLy6hRo9LVV1/tjaUUwQKY4kQN8HbbbZc+/vjjiW4bX6ARFNZYY40011xzpfXXXz+9/fbb+bYYgYgzdl9++WWad955a53pO/roo9Oaa66Zw8ZWW22V3nrrrfT666+nOeecs8F65c6dO+cvc4DmEKEgyp8KJ5xwQj7oL8TIacxYd8opp+TPyfg5PvcigBTWXXfd/N8o4yxESIkwUv3Y1aJcNJq3I6hAGaabBaY4URMcQ/LxJbjnnntOcNvjjz8+1wrHsH4M5ccIRO/evXPfRJQRxBf1X//61/wlPOOMM+b7LLfccum7775Lb7zxxniPF6UCc8wxR7rvvvvSOeeck3r06JG/oKOU6qqrrvLFCzSbCAVFX1jHjh3zZ0+EhpgONkqUfvOb3+RLcVIlyj3nm2++dMEFF+Reifnnnz9vt/TSS+eZ7CJMFOKzsBgNiXCy9tprpyWWWCKNGDEij2TELFE77bSTd5dSjFgAU5woSVpnnXUqzdR33XVX2meffXKNcPRAFGLWprPPPjvdf//9edg/ZnXafffd85D/pZdemrdZbbXVcilUBJXCgQcemMsA/ud//qdyXXyR//nPf05nnHFG/jlGPiKQxEhI9FtE43eUTAE0pRiZjRHUKFd69tln03//+9/09NNP59t6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",
      "text/plain": [
       "<Figure size 800x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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AAAAAAgZAj0AAAAACBkCPQAAAAAImbyJPgD8z1G3vclbAQAHsXJEG94jAADSgBk9AAAAAAgZAj0AAAAACBkCPQAAAAAIGQI9AAAAAAiZhBdj+e6772zu3LlWsGBBO/fcc+3II4886GMWLFhgS5cutfz581vjxo2tTp06mXKsAACEBUXAACDcRcASOqM3evRoO+mkk2zevHk2YcIEq1Wrls2fPz/F/ffs2WNnn322de7c2RYvXmzvvfeeNWrUyG677bZMPW4AAAAAyMoSNqO3Zs0a69+/v40ZM8Yuu+wy33b55Zf77ccff7RcuXId8Jj333/fZs2a5bOAxx57rG8bN26cP0bBXsmSJTP95wAAAACArCZhM3ozZszw1Mvu3btHt1111VX2008/2ZIlS+I+pkCBAv61SJEi0W2FCxf258mdm+WGAAAAAJDQGT3NylWrVi0avEkwS6f7GjZseMBjTjvtNJ+5O//8861t27a2fft2e+utt3xWr3jx4nFfZ9euXX4LbNmyJUN+HgAAAADIKhI2DbZ169YDUi2LFStmefLk8fvi2b9/v3/duHGjrV271m87duywvXv3pvg6w4cPtxIlSkRvVapUSeefBAAAAACyloTN6CnlMvns2rZt22zfvn1JUjNjvfjii/bII4/Y999/77OB8tprr1nHjh29+mbt2rUPeMzAgQN9LWBAr0mwBwAAACDMEjajp6Bs1apVSWbjli9f7l+POeaYuI/5/PPP/b4gyJPWrVt7cKgqnPEoNVRpnbE3AAAAAAizhAV65513ns/gqShL4LnnnrNKlSp5ywTR2roHHnjAvv32W/++Zs2atmLFCtuwYUP0MYsWLfKvRx99dKb/DAAAAACQFSUsdVNB2+DBg61Xr172wQcf+Lo79dKbPHmyr9OTnTt32s0332xly5b1puhqozB27Fhr1qyZde3a1YuxqBCLKncGwSEAAAAA5HQJC/TkrrvusjPOOMP745UrV86+/PLLaOVNKViwoA0YMMDq1q3r32vtntI3p02b5pU5y5cvb1OmTPHnAAAAAABkgUBPTj31VL/Fo0BPqZux8ubNa507d86kowMAAACA7Icu4wAAAAAQMgR6AAAAABAyBHoAAAAAEDIEegAAAAAQMgR6AAAAABAyBHoAAAAAEDIEegAAAAAQMgR6AAAAABAyBHoAAAAAEDIEegAA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EGppDvQKFSpkZcuWPWC7Ui9VFOWll16y6dOne9uDtAoqZ77//vueXqm1dqeddlr0fgV8F154YbQZupqrq2m7ir8sW7bMZ/pGjx5tlSpVSvNrAgAAAEDY5YqkUyM6NUpX4KWCLKeffrplVWqvoOqbKsyi9X1ZxVG3vZnoQwCALG/liDaJPoTQ4O8OAGS/vzuHEsscUtXN1FSrVs26devmzcwBAAAAAImTboGeFC1a1NfVAQAAAABCEOgpA1TNzI8++uj0ekoAAAAAQEYWY1HBlW+++SZuMRa1PVCBlFWrVln79u0P5zgAAAAAAJkd6KmiptogxFO4cGFvmq6qmWqqDgAAAADIBoFe37597dJLLz1gu/rmlSpVynLlypXexwYAAAAAyOg+erodzM6dO9O0HwAAAAAgCxdj2bFjh40fP95atWplQ4cOTY+nBAAAAABk9IxePJ9++qmNHTvWm6RrbV67du28lx4AAAAAIBsFehs3brSXXnrJnnnmGfvhhx+satWq1qVLF3vqqadYpwcAAAAA2Sl1c+nSpT5bV7FiRXv88cetZ8+etnbtWrviiiusRIkSBHkAAAAAkN1m9GbOnGmvvvqq3X///TZgwICMPSoAAAAAQMbP6J1zzjl2/vnn26BBg6xBgwY2evRo27x58+G/MgAAAAAgsYFe3bp1bdKkSbZmzRrr0aOHp29WqFDB1+op4ItEIhlzhAAAAACAjG2vUK5cOevfv799++239t5771mLFi1swoQJVrlyZbv66qvtiy++ONSnBAAAAABklT56zZs39/YKv/32m9111122ZMkSr8gJAAAAAMimffQCRYsWtd69e/tt+/bt6fGUAAAAAIBEzOjFo8bpAAAAAIAQBXoAAAAAgMQi0AMAAACAkCHQAwAAAICcHOg98MADNnv27Lj3LV682IYMGZJexwUAAAAAyOhAb8OGDd4kXX3z4mnQoIFNnz7dli1bdrjHAgAAAADIzEDv448/tvr161vBggXjP1Hu3NayZUubO3duehwXAAAAACCjA71ffvnFqlSpkuo+ul/7AQAAAACyQaBXokQJW7NmTar7rF271vcDAAAAAGSDQE9pme+8846tWLEixTV8r776qp1yyinpeXwAAAAAgIwK9GrUqGHnn3++tWrVysaPH2/r16/37X/88YdNnjzZi7ScfPLJ1qRJkzS/+K+//mpdunSxMmXKWKVKlax///62a9euND32zz//tOrVq/uaQc0kAgAAAAD+J68dgieffNIuu+wyu/TSS//34Lx5be/evf7vc845x15++eU0P9e+ffusTZs2HuQtWrTI/vrrL7vgggts+/bt/joH06tXLzv22GNt5cqVFolEDuXHAAAAAIBQO6RAr0iRIjZx4kQbOnSoV9fUbF7JkiU9rfOkk046pBeeNWuWffHFF7Z8+XKfLZT77rvPg8h7773XypYtm+JjH3nkEdu2bZsNHDjQ3n777UN6XQAAAAAIu0MK9AJ16tTx2z/xwQcfWLVq1aJBnrRu3dpn+hYuXGht27aN+7glS5bY/fffb59++ql9//33/+gYAAAAACBHr9ELqBhL37597fjjj7fy5ctbrVq1PJ3z22+/PaTn+e233/zxscqVK2e5cuWydevWxX2MZvEuvPBCe/TRR61y5cppeh2t+duyZUuSGwAAAACE2SEFegsWLPCm6VOnTrUTTjjBevToYY0aNbL333/fUzdfe+21Q3vx3ElfXkGepLTmrl+/fl70pXPnzml+jeHDh3vLh+B2sF6AAAAAAJBjUjf//vtv69q1q/Xu3dvX0BUqVCh63549e2zkyJEe+P38889WunTpgz7fEUccYfPmzUuyTWv+FOTpvnjmzJnjlTpfeeUV/37//v3+9eijj/YgUMeQnNbxqZpnQDN6BHsAAAAAwizNM3qatVOBlAcffDBJkCf58uWzQYMGWePGjW3GjBlper5mzZp5ULh69eokgZxm+fQ88fzwww8eqG3atMlvwWspbVQzd/EUKFDAihcvnuQGAAAAAGGW5kBP1THVQy9Ir4xHzdK1X1qce+653h7h2muv9Zm8ZcuW2R133OGzhkceeaTvs3nzZu+T98ILL0SDNn0f3BRgBtvV6gEAAAAAcAiBnmbx1OsuNbo/+WxfShSkvfnmm7Zjxw6rWLGiNWjQwJo3b25PPPFEdB+lcaqYiipxAgAAAADSJs3TYEq1HDBggK1ZsyZuxUsFeRMmTIjOvqWFWiu8++67vtYueWEWUY++nTt3RmfukjvjjDP8fs3uAQAAAAAOcUZPffP+9a9/+azbc889Z+vXr/ftSrucNGmSNW3a1GrWrOnB16GKF+QFFMTlyZMnxccR5AEAAABAUoe0sE0BXq9evfzmD86b1/bu3ev/VhD48ssvH8rTAQAAAAASHegVLVrUZ++++eYbmzt3rv3555+eXtmyZUvvowcAAAAASLzDKlVZt25dvwEAAAAAsp5060mghuqPPvqoN08fPHhwej0tAAAAACAjAz01K3/ssce8cXm1atWsX79+Vq5cOa+2ecstt3jfu7Fjxx7qMQAAAAAAEhHoqZddixYtbMWKFV5dc/r06TZjxgzr0KGD3Xfffda3b18bMmSIlS1bNj2PDwAAAACQUYHe7NmzbdOmTfbzzz9b+fLl/d8qwjJq1ChbtGiRNWzY8FBfGwAAAACQyEBv+fLl1rZtWw/yRNU2O3XqZKtXrybIAwAAAIDs2DB9+/btVqRIkQPaLZQqVSojjgsAAAAAkBnFWD777DN74IEHot/PmzfPtm7dmmRbo0aN7NRTTz3c4wEAAAAAZFagV7hwYW+UrltysdtUlIVADwAAAACyQaB3zTXX+A0AAAAAkLWleY0eAAAAACB7INADAAAAgJAh0AMAAACAkCHQAwAAAICQIdADAAAAgJAh0AMAAACAkCHQAwAAAICQIdADAAAAgJAh0AMAAACAkCHQAwAAAICQIdADAAAAgJAh0AMAAACAkCHQAwAAAICQIdADAAAAgJDJm+gDmDlzps2ePdsKFixonTp1shNPPDHV/Xfs2GGTJk2yr7/+2kqWLGlt2rQ56GMAAAAAICdJ6IzezTffbBdffLEVKlTINm3aZE2aNPEgLiWrVq2yhg0b2gcffGCVKlWy3377zZo1a2YPPfRQph43AAAAAGRlCZvR++GHH+zBBx+01157zdq2bevbihUrZv369bPzzz/f8uY98NCKFy9uH330kZUuXTq6rUyZMjZy5Ejr379/ph4/AAAAAGRVCZvRe+ONNzz18txzz41u0+ze+vXr7ZNPPon7GO0fG+TJxo0brXz58hl+vAAAAACQXSRsRm/ZsmVWpUoVy5MnT3Rb9erV/etPP/1kzZs3T/Gxo0aNsm+//dZ+/PFH279/v02YMCHFfXft2uW3wJYtW9LtZwAAAACArChhM3o7d+70VM1YRYoU8cBPBVdSU7NmTatXr57Vrl3bA76PP/44xX2HDx9uJUqUiN4UXAIAAABAmCVsRk/r7VSAJZZm2/bt2+f3pSZY0yequHnNNddYhw4dDkjrlIEDByZZv6fXINgDAAAAEGYJm9GrU6eOrVixwv7+++/otqVLl0bvS6uTTjrJUzNXr14d9/4CBQp44Bh7AwAAAIAwS1ig1759e19fN27cuOi2xx57zI477jirX79+NL3zqquuiqZmLly40IuvxHrllVc8JfOYY47J5J8AAAAAALKmhKVuVqhQwUaPHm3XXnutN01XAPf999/7vwOaqXvyySetadOm3i9v69at1rJlSzvqqKOsbNmy9uWXX9qGDRvsxRdftMKFCyfqRwEAAACALCVhgZ5cdtlldsYZZ9iCBQs8xfJf//qXlSpVKnq/grcxY8Z4kCe6/7PPPrMPP/zQ1q1bZ7169fLqnHosAAAAACALBHqi2Tnd4smfP7+nbsZS8KeADwAAAACQxdboAQAAAAAyBoEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIRMwgO9vXv32tdff23Lli1L82O2bt3qj/nrr78y9NgAAAAAIDtKaKA3f/58q1q1qv373/+2xo0bW8OGDW316tUp7v/DDz9Yhw4drEqVKtatWzerXLmyde7c2bZt25apxw0AAAAAWVnCAj3NynXq1MkDNgV369evt2LFitkll1yS4mO+++4769Wrl8/kBbOAn3/+ud10002ZeuwAAAAAkJXlTdQLz5gxwwO2wYMH+/f58+e3gQMH2rnnnmvLly+3mjVrHvAYzebFqlixonXs2NHeeuutTDtuAAAAAMjqEjajt3jxYg/mSpUqFd3WpEkT/7pkyZJDep7q1atnyDECAAAAQHaUsBm9jRs3WunSpZNsK1mypOXOndv+/PPPND3H008/7ev85s2bl+I+u3bt8ltgy5Yt/+CoAQAAACDrS9iMXr58+ZIEYLJnzx7bv3+/33cw06dPt759+9qYMWOsRYsWKe43fPhwK1GiRPSmQi4AAAAAEGYJC/SqVatmv/76a5Jta9eujd6Xmtdee80uuugiGzVqlPXp0yfVfbXub/PmzdFbalU9AQAAACAMEhbotW7d2tatW2efffZZkgItRYoUsaZNm/r3+/bts4ULF9qGDRui+7zxxhvWpUsXe+ihh+zqq68+6OsUKFDAihcvnuQGAAAAAGGWsECvWbNm1q5dO+vevbtNmTLF19vdfvvtXoVTwV7QgkH7vfnmm/79+++/7y0Zunbt6j33FATqFhssAgAAAEBOl7BiLDJx4kR78MEH7fHHH/eZt8cee8x69uz5/w8ub16vxFmuXDn//vvvv7cGDRp4P70bbrghup/677377rsJ+RkAAAAAIKvJFYlEIpaDqOqmirJovV5WSuM86rb/zVoCAFK2ckQb3h7+7gBAjv27s+UQYpmEpW4CAAAAADIGgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACEDIEeAAAAAIQMgR4AAAAAhAyBHgAAAACETEIDva1bt9ott9xiJ510krVo0cIeffRR279/f6qP+f33323EiBF24oknWqdOnTLtWAEAAAAgu8ibyBfv2LGjbdiwwR544AH766+/7Morr/Tvhw0bFnf/3bt3W8OGDa1bt2529NFH24oVKzL9mAEAAAAgq0tYoDd//nx777337KuvvrJ69er5tj/++MP69+9vN998sxUvXvyAx+TLl89+/vlny58/v91www0EegAAAACQlVI358yZYxUrVowGedKmTRv7+++/beHChXEfkytXLg/yAAAAAABZcEZv9erVVqFChSTbjjzySP+6Zs2adHudXbt2+S2wZcuWdHtuAAAAAMiKEjajt2/fvgNm55SamTt3btu7d2+6vc7w4cOtRIkS0VuVKlXS7bkBAAAAICtKWKBXpkwZX5MXa+PGjV51U/ell4EDB9rmzZujN80kAgAAAECYJSzQa9SokRdWUZXNwEcffeRfTz755HR7nQIFCnhhl9gbAAAAAIRZwgK98847z4444ggbMmSIp3Gqp94999xj55xzjlWrVs330bZjjz3Wpk2blqjDBAAA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",
      "text/plain": [
       "<Figure size 900x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot multiple linear regression R2 scores and logistic regression ROC AUC scores\n",
    "plt.figure(figsize=(8, 5))\n",
    "plt.bar(multiple_linear_comparison[\"Dataset\"], multiple_linear_comparison[\"R2\"])\n",
    "plt.ylabel(\"R2 Score\")\n",
    "plt.title(\"Multiple Linear Regression Comparison\")\n",
    "plt.xticks(rotation=15)\n",
    "plt.tight_layout()\n",
    "plt.show()\n",
    "\n",
    "plt.figure(figsize=(9, 5))\n",
    "plt.bar(multiple_logistic_comparison[\"Dataset\"], multiple_logistic_comparison[\"ROC AUC\"])\n",
    "plt.ylabel(\"ROC AUC\")\n",
    "plt.title(\"Multiple Logistic Regression Comparison\")\n",
    "plt.xticks(rotation=15)\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
