{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "589f1014-1bac-43a7-a1e6-41681aba8aae",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns \n",
    "import matplotlib.pyplot as plt \n",
    "import numpy as np\n",
    "import pandas as pd \n",
    "%matplotlib inline "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d6137e00-0b8f-4d2b-995b-c94b3a0dc872",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data = pd.read_csv('datasets/titanic_train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "72cdd4d2-4e02-4055-9cf1-9bdb44c2bf90",
   "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>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  \n",
       "4      0            373450   8.0500   NaN        S  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "42295f1a-c95e-44f6-91a5-a4643f95fbad",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "titanic_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "ab7154e1-580c-4fd5-8123-0300be4b7869",
   "metadata": {},
   "outputs": [],
   "source": [
    "#titanic_data['Age'].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "8c1eb0ef-0659-4e9b-8eee-cc896eafca74",
   "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>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "cf93b9fe-91ce-4676-bc33-fea3fa3ee0d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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cXFBv379pAzxRPv373/i888//7xMIyEiUraqVauabHVXqlTJIrPTyZiklbWlmdqftWQ7nvuzEhEVWbFiBb755ht88cUX8PDwAABkZmZiyJAhePHFFzFy5EgLj1DbJK2sgaLbl/bu3YvU1FQMGDAATk5O+PPPP+Hs7AxHR0dJY//1119GPz948AAnT57E+++/jzlz5kgam4hI6Zo3b25UwFy4cAHe3t7w9vYGAGRkZECv1yM7O5vJ2sIkTda///47unXrhoyMDOTl5SEkJAROTk6YN28e8vLyEB8fL2V4ky2dkJAQ2NraIjIyEsePH5c0PhGRkvXt29fSQ6AykrQN3rdvXzg5OWHlypWoWrUqkpOT4evri7179+LNN9/EhQsXpAr9RCkpKQgICJBtW04iIqL/haSV9YEDB3D48GGjzQoAwMfHB1euXJEyNICiLeZKEkLg6tWriImJgb+/v+TxiYjU6O7du6WWh5Z6ESl6MkmTdWFhoclJXH/88QecnJykDA0A8Pf3h06nK7XEYZs2bWTf+YqISMnS0tIwbtw47N27F/fv3zccl2sRKXoySZN1ly5dEBsbixUrVgAomol99+5dREVFybIEaVpamtHPVlZWqFatWqn1uomItG7QoEEQQmDVqlVwd3fnngIKI+k16z/++ANdu3aFEAIXLlxAQEAALly4AFdXV+zfv1+ynXeSkpJw48YN9OrVy3Bs7dq1iIqKQk5ODvr27YulS5cardlNRKRljo6OOH78uGFfbVKW0jcim1HNmjWRnJyM9957DxMnTkTz5s0RExODkydPSrpF3gcffIBff/3V8POZM2cwbNgwBAcHY+rUqdiyZQuio6Mli09EpDatWrXC5cuXLT0MeoxnclGU6tWrY8uWLYYt39577z3s27cPBw8eBAB88803iIqKwtmzZy05TCIixUhNTcWoUaMwaNAgNG7cuNTy0E2bNrXQyAiQ+Jr1mjVr4Orqip49ewIAJk+ejBUrVqBRo0ZYt24datWqJUncv/76C+7u7oaf9+3bh+7duxt+5jdIIiJj2dnZSE1NNdotsHiCLieYWZ6kbfC5c+fC3t4eQNF15GXLluGjjz6Cq6srJk6cKFlcd3d3w+Sy/Px8nDhxAm3atDE8f+fOnVLfGomItGzo0KFo3rw5kpKScOnSJaSlpRn9kyxL0sr68uXL8PPzAwBs2rQJL7/8MkaMGIG2bduiY8eOksXt0aMHpk6dinnz5mHTpk1wcHBA+/btDc+fPn0aderUkSw+EZHa/P7779i8ebPhnE3KImll7ejoiBs3bgAAdu7ciZCQEACAnZ0d7t27J1nc2bNno0KFCujQoQM+/fRTfPrpp0YLs6xatQpdunSRLD4Rkdp06tQJycnJlh4GPYaklXVISAiGDx+O5s2b4/z584Z7q3/99Vf4+PhIFrf41rDbt2/D0dER1tbWRs9/8803km8iQkSkJqGhoZg4cSLOnDmDJk2alLpU2Lt3bwuNjACJZ4PfunUL06dPx+XLlzF69Gh069YNABAVFQVbW1u89957UoUmIqKnYGpL4WKcYGZ5z+StW0RERM8SSa9Zb9++3XBvMwDExcXB398fAwYMKLXXNBERya9Hjx64ffu24eeYmBjcunXL8PONGzfQqFEjC4yMSpI0WU+aNAl///03gKJVxN5++2306NEDaWlpiIyMlDI0ERGVwY4dO5CXl2f4ee7cubh586bh54cPH+LcuXOWGBqVIOkEs7S0NMM3su+++w69evXC3LlzceLECVk28iAioid79Eoor4wqk6SVta2tLXJzcwEAP/74o+F2qSpVqhgqbiIiInoySSvrdu3aITIyEm3btsXRo0exfv16AMD58+dRs2ZNKUMTEVEZ6HS6UtthcntM5ZE0WS9btgxjxozBt99+i+XLl8PT0xMA8J///MdwGxcREVmOEAJvvPGGYcvg+/fvY9SoUahYsSIAGF3PJsvhrVtERBpWcuOOJ/n8888lHgk9iWzJ+v79+8jPzzc65uzsLEdoIiIiVZN0gllOTg7GjRsHNzc3VKxYEZUrVzZ6EBER0T+TNFlPnjwZu3fvxvLly6HX6/HZZ59h1qxZqFGjBtauXStlaCIiomeGpG1wb29vrF27Fh07doSzszNOnDgBPz8/fPHFF1i3bh22bdsmVWgiIqJnhqSV9c2bN+Hr6wug6Pp08ao47dq1w/79+6UMTURE9MyQNFn7+voiLS0NANCgQQNs2LABALBlyxa4uLhIGZqIiOiZIWkb/OOPP4a1tTUmTJiAH3/8EaGhoRBC4MGDB1i0aBEiIiKkCk1ERPTMkGRRlMLCQsyfPx+bN29Gfn4+/vzzT0RFRSElJQXHjx+Hn58fmjZtKkVoIiKiZ44klfXs2bMxc+ZMBAcHw97eHjt27MDrr7+OVatWmTsUERHRM0+SZF23bl288847GDlyJICiTTx69uyJe/fuwcpK0svkREREzxxJkrVer8fFixfh5eVlOGZnZ4eLFy9yAw8iIqKnJEmZ+/DhQ9jZ2Rkds7GxwYMHD6QIR0RE9EyTZILZo7u4AKV3cgGAjRs3ShGeiIjomSJJsh4yZEipY4MGDZIiFBER0TOPW2QSEREpHKdmExERKRyTNRERkcIxWRMRESkckzUREZHCMVkTEREpHJM1ERGRwjFZExERKdz/A18AXiAQ7cNaAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(titanic_data.isnull(), yticklabels=False, cbar=True, cmap='summer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "be284253-d117-424d-bbaa-fb2a7f4562ab",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_81595/751345813.py:2: FutureWarning: \n",
      "\n",
      "Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.\n",
      "\n",
      "  sns.countplot(x='Survived', data=titanic_data, palette='RdBu_r');\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style('whitegrid')\n",
    "sns.countplot(x='Survived', data=titanic_data, palette='RdBu_r');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "d9f6f08a-f5e1-41a5-bfc5-a6bdf12c0223",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_81595/751345813.py:2: FutureWarning: \n",
      "\n",
      "Passing `palette` without assigning `hue` is deprecated and will be removed in v0.14.0. Assign the `x` variable to `hue` and set `legend=False` for the same effect.\n",
      "\n",
      "  sns.countplot(x='Survived', data=titanic_data, palette='RdBu_r');\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style('whitegrid')\n",
    "sns.countplot(x='Survived', data=titanic_data, palette='RdBu_r');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "2f206b3d-4d40-40c5-b872-690162ae0ff6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.set_style('whitegrid')\n",
    "sns.countplot(x='Survived', data=titanic_data, hue='Pclass');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "31747576-c6e8-42c0-8e46-0b5c6cf7e514",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='Age', ylabel='Count'>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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fd8cPHiQlStXMmbMmPJtvvAeAjz//PPcc889XHnllcTFxXH11Vdz22238c477wDmvo8qZCopICCA9u3bk5SUVL7N4XCQlJREYmKiiclcr1GjRsTExFToa15eHhs3bvSqvhqGweTJk1m0aBEzZsygcePGFe6Pj4/H39+/Qj/T0tI4dOgQnTp1qua0ruFwOCguLvaZvvXo0YP58+fz1Vdfld/i4+MZMWJE+f/7Qj/PlJ+fz/79+4mJifGJ/nXu3Ll8XEWZPXv20LBhQ8B3vm8AvvjiC6KiohgwYED5Nl94DwEKCwuxWCwVttlstvLp12a+jzq15IQ77riDCRMmEB8fT4cOHZgxYwYFBQVcc801ZkdzWn5+Pvv27Sv/+cCBA2zdupXIyEgaNGjArbfeyltvvUXTpk1p1KgRr776KnXr1mXIkCEmpnbOpEmT+Oabb3jzzTcJDQ0tP4cbHh5OUFAQ4eHhjB49mqlTpxIZGUlYWBhTpkwhMTHRK75gXnrpJfr160dsbCz5+fl88803rFmzhunTp3t938qEhYWVj2kqExISQq1atcq3e3s/n3vuOQYOHEiDBg3IyMjg9ddfx2q1ctVVV/nE+3jbbbdx44038vbbb3P55ZezadMmPvvsMyZPngyAxWLxie8bh8PBF198wdVXX42f3//+tPrCewgwcOBA3n77bRo0aFB+aumDDz5g9OjRgMnvo1vnRPmgmTNnGgMGDDDat29vjBkzxkhOTjY7UpWsWrXKaN269R9uEyZMMAzj1FS6V155xejVq5cRHx9v3HbbbUZaWprJqZ1ztv61bt3amDt3bnmbwsJC46mnnjK6detmdOzY0bj//vuNjIwME1NX3uOPP24MHDjQaN++vdGjRw/jtttuM37++efy+725b+dz5vRrw/D+fv7tb38zevfubbRv397o27ev8be//a3CNVa8vX+GYRg//vijcdVVVxnx8fHG8OHDjU8//bTC/b7wfbNixQqjdevWZ83tC+9hbm6uMWXKFGPAgAFGQkKCMXjwYOPll182ioqKytuY9T5aDOOMy/KJiIiIeBGNkRERERGvpUJGREREvJYKGREREfFaKmRERETEa6mQEREREa+lQkZERES8lgoZERER8VoqZERERMRrqZARERERr6VCRkQ80oYNG2jbti333HOP2VFExIOpkBERjzRnzhxuvvlm1q5dS3p6utlxRMRDqZAREY+Tn5/Pd999x4033siAAQP48ssvK9y/ZMkShg4dSkJCArfccgtffvklcXFx5OTklLdZt24dN910Ex06dKB///5MmTKFkydPVndXRMTNVMiIiMdZsGABLVq0oEWLFowcOZK5c+dStr7t/v37+etf/8rgwYOZN28eN9xwA9OmTavw+H379nH33XczdOhQvv76a6ZNm8b69ev517/+ZUZ3RMSNVMiIiMeZM2cOI0eOBKBv377k5uayZs0aAD799FOaN2/OhAkTaNGiBVdeeSWjRo2q8Ph33nmHESNGcPvtt9OsWTM6d+7MP/7xD7766iuKioqqvT8i4j5+ZgcQETlTWloaKSkpvPHGGwD4+flxxRVXMGfOHLp3787u3buJj4+v8JgOHTpU+Hnbtm1s376d+fPnl28zDAOHw8GBAwdo2bKl+zsiItVChYyIeJQ5c+ZQWlpK3759y7cZhkFAQABPPvlkpfZx8uRJbrjhBm655ZY/3BcbG+uyrCJiPhUyIuIxSktLmTdvHo899hi9e/eucN/999/PN998Q/PmzVm+fHmF+1JSUir83K5dO3bu3EnTpk3dnllEzKUxMiLiMZYtW8aJEycYM2YMrVu3rnAbOnQoc+bM4frrr2f37t288MIL7N69m++++658VpPFYgHg7rvvZsOGDUyePJmtW7eyZ88eFi9ezOTJk83snoi4gQoZEfEYc+bMoVevXoSHh//hvmHDhpGamkp+fj6vvvoqixYtYuTIkXzyySfcd999AAQEBADQpk0bZs6cyZ49e7jpppsYNWoUr732GnXr1q3W/oiI+1mMsjmNIiJe6q233mL27Nl/OOUkIr5PY2RExOt8/PHHJCQkULt2bdavX8/06dMZO3as2bFExAQqZETE6+zdu5e33nqLEydO0KBBA+644w7uvfdes2OJiAl0aklERES8lgb7ioiIiNdSISMiIiJeS4WMiIiIeC0VMiIiIuK1VMiIiIiI11IhIyIiIl5LhYyIiIh4LRUyIiIi4rX+P1G6rr7j5yNfAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.histplot(titanic_data['Age'].dropna(), kde=True, bins=40, color = 'darkred')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "14b7aaac-7e21-435e-a464-612b33d71263",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29.69911764705882"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data['Age'].dropna().mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a098465f-ebcd-410c-a5ce-232cc8ff4aa9",
   "metadata": {},
   "outputs": [],
   "source": [
    "avg_age_per_class = titanic_data.groupby('Pclass')[['Age']].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e0561910-212e-4e4f-b5f2-339a7bb593cf",
   "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>Age</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pclass</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>38.233441</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>29.877630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>25.140620</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "              Age\n",
       "Pclass           \n",
       "1       38.233441\n",
       "2       29.877630\n",
       "3       25.140620"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "avg_age_per_class"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "120d383b-680e-45e1-8415-63e188040db9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "pandas.core.frame.DataFrame"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(avg_age_per_class)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "f4b198c4-dae7-4c3f-b320-768bec94f8bf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "38.233440860215055"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "avg_age_per_class['Age'][1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "274174df-3a16-4b79-a04d-9428be1a1da9",
   "metadata": {},
   "outputs": [],
   "source": [
    "def impute_age(cols):\n",
    "\n",
    "    age = cols[0]\n",
    "    pclass = cols[1]\n",
    "\n",
    "    if pd.isnull(age):\n",
    "        if pclass == 1: \n",
    "            return int(avg_age_per_class['Age'][1])\n",
    "        elif pclass == 2:\n",
    "            return int(avg_age_per_class['Age'][2])\n",
    "        else:\n",
    "            return int(avg_age_per_class['Age'][3])\n",
    "    else:\n",
    "        return age \n",
    "            "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8e9a37de-a4fd-4c37-b75d-ca56ae42699f",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data['Age'] = titanic_data[['Age', 'Pclass']].apply(impute_age, axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "177be271-5944-4825-87e5-91ecda6d1b15",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAHoCAYAAABpZ8cPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABEZ0lEQVR4nO3dZ3hU5dr28TMJBKQKidJRQakJUgUCigiIoKBUUWmhI002CAgKRMBQpSuhg3SIRJEiRWx0EB6KFAVpEjAk9EQGknk/5M1shgQI2bNWZlj/33FwPGZlMvfy2Zhzrmvdxctut9sFAADclnd63wAAALg/whoAADdHWAMA4OYIawAA3BxhDQCAmyOsAQBwc4Q1AABujrAGAMDNEdYAALg5whoAADdHWAMAkEq7du1Sly5dVL16dRUvXlwbN2584M/s2LFDjRo1UkBAgOrUqaOvv/76occlrAEASKXY2FgVL15cQ4YMSdXrz5w5o86dO6ty5cr65ptv1KZNG3388cf65ZdfHmrcDGm5WQAArKhGjRqqUaNGql+/ZMkSFSxYUAMGDJAkFS1aVHv27NHcuXP14osvpvp9qKwBAJZms9l0/fp1pz82m80l771v3z5VrVrV6Vr16tW1b9++h3qfVFfWXiGdH+qNAQDWZR8SZsIorsmlsLAATZkyxela9+7d1aNHj//5vS9evCh/f3+na/7+/rp+/br+/fdfZc6cOVXvQxscAFzInrpHmYbyCknvOzCH3UXv07lzZwUHBztd8/X1ddG7uwZhDQAuZJWgfJT4+voaFs7+/v66ePGi07WLFy8qW7Zsqa6qJcIaAFyKyto8dheV1l5ernmflJQtW1Y///yz07WtW7eqbNmyD/U+hDUAuJBVgtIduKoN/jBu3Lih06dPO74+e/asDh8+rJw5cyp//vwaN26cLly4oNGjR0uSWrRooYULF2r06NFq0qSJtm/frrVr1yos7OGe6RPWAOBCVNaPtoMHD6p169aOr0NDQyVJjRo10siRIxUVFaXIyEjH9wsVKqSwsDCFhoZq/vz5yps3r4YPH/5Qy7YkyctuT10jgdngAPBghHUiM2aD305wTS5l8DZj5vr/hsoaAOCR0qMNnl4IawCAR3LVBDNPQFgDgAu5Qwsajx7CGgBciGfW5rFQYU1YAwA8k5Xa4BzkAQCAm6OyBgB4JAsV1oQ1AMAz0QYHAABug8oaAOCRLFRYE9YAAM9EGxwAALgNKmsAgEeyUGFNWAMAPJOV2uCENQC4kFW2+nQHFspqnlkDAODuqKwBwIU4yMM8tMEBAHBzFspqwhoAXMkdqlp3qO7hWoQ1ALiQOwSlVT4w0AYHAKSJOwSlVVgoqwlrAHAlKmsYgbAGAHgk2uAAALg5K4U1m6IAAODmqKwBAB7JQoU1YQ0A8ExWaoMT1gAAj2ShrOaZNQAA7o7KGgBciDXO5rFSZU1YA4ALsSmKeaz0zJo2OAAAbo7KGgDgkSxUWBPWAADPRBscAAC4DSprAHAhq0zucgcWKqwJawBwJWaDm4c2OAAAcBtU1gDgQlapat2BhQprwhoAXIk2uHms1AYnrAEAHslCWc0zawAA3B2VNQDAI9EGBwDAzVkoqwlrAHAlq0zugrkIawBwIWaDm4c2OAAAbs5CWc1scAAA3B2VNQDAI9EGBwCkiVWeF7sDC2U1bXAAANwdlTUAuBCzwc1DGxwAADdnoawmrAEAnonKGgCQJlZpQcNchDUAwCNZqLAmrAHAlZhgZh4rtcFZugUAgJujsgYAeCQLFdaENQDAM9EGBwAAboPKGgDgkSxUWBPWAADPZKU2OGENAC5klWVTVrdw4ULNmjVLUVFRKlGihD755BOVKVPmnq+fO3euFi9erMjISOXKlUt169ZVnz59lClTplSNR1gDgAuxzto86VVYr1mzRqGhoQoJCdHzzz+vefPmqX379lq3bp38/PySvX7VqlUaN26cPvvsM5UrV04nT57UgAED5OXlpY8++ihVYzLBDADgkex21/x5WHPmzFHz5s3VpEkTPfvsswoJCVHmzJkVHh6e4uv37t2r8uXLq0GDBipYsKCqV6+uN954Q/v370/1mFTWAOBCVqlq3YGrKmubzSabzeZ0zdfXV76+vim+9tChQ+rcubPjmre3t4KCgrR3794U379cuXL69ttvtX//fpUpU0ZnzpzRTz/9pDfffDPV90hYA4AL0Qb3PGFhYZoyZYrTte7du6tHjx7JXnvp0iXFx8cna3f7+fnpxIkTKb5/gwYNdOnSJb377ruy2+26ffu2WrRooS5duqT6HglrAIBHctVs8M6dOys4ONjpWkpVdVrt2LFDYWFhGjJkiMqUKaPTp09rxIgRmjp1qrp165aq9yCsAQAeyVVhfa+Wd0py5colHx8fRUdHO12Pjo6Wv79/ij8zceJENWzYUM2aNZMkFS9eXLGxsRo8eLC6du0qb+8HTx9jghkAAKnk6+ur0qVLa9u2bY5rCQkJ2rZtm8qVK5fiz/z777/JAtnHx0eSZE/lJw4qawCAR0qvpVvBwcHq37+/AgICVKZMGc2bN09xcXFq3LixJKlfv37KkyeP+vTpI0mqWbOm5syZo1KlSjna4BMnTlTNmjUdof0ghDUAwCOl1w5m9evXV0xMjCZNmqSoqCiVLFlSM2fOdLTBIyMjnSrprl27ysvLSxMmTNCFCxeUO3du1axZU7179071mF72VNbgXiGdH/wiAAAk2YeEGT7GjrOuyaXKBY2/1/8VlTUAuBBLt8xjoa3BCWsAgGeyUlgzGxwAADdHZQ0A8EgckQkAgJuzUFYT1gDgSlaZ3OUOqKwBAGnCbHAYgbAGAHgkCxXWhDUAwDPRBgcApAktaBiBsAYAF+KZtXksVFgT1gAAz2SlNjg7mAEA4OaorAEAHslChTVhDQCuZJXnxe7ASm1wwhoAXIgJZjACYQ0A8EgWKqwJawCAZ6INDgCAm7NQVrN0CwAAd0dlDQAuxOQu89AGBwCkCbPBzWOhrKYNDgCAu6OyBgAXskpV6w5ogwMA0oQ2uHkslNWENQC4klWCEuYirAHAhaiszUMbHACQJlYJSndgoawmrAHAlaisYQTCGgDgkWiDAwDShKrWPBbKasIaAFyJNrh5rFRZs4MZAABujsoaAOCRLFRYE9YAAM9EGxwAALgNKmsAgEeyUGFNWAMAPBNtcAAA4DaorAEAHslChTVhDQDwTLTBAQCA26CyBgAXsspWn+7ASpU1YQ0ALsTe4OaxUFYT1gDgSlYJSndgpcqaZ9YAALg5KmsAgEeyUGFNWAMAPBNhDQBIEyaYwQiENQDAI1lpghlhDQDwSBbKasIaAFyJFjSMQFgDgAvxzNo8tMEBAHBzFspqwhoAXMkqVS3MRVgDADwSbXAAANychbKasAYAV2KCmXmorAEAaWKVoIS5CGsAgEeyUGFNWAMAPBNtcABAmvDMGkYgrAEAHslChbW80/sGAABIC7vdNX/SYuHChXrllVcUGBioZs2aaf/+/fd9/dWrVxUSEqLq1asrICBAdevW1U8//ZTq8aisAcCFaEE/+tasWaPQ0FCFhITo+eef17x589S+fXutW7dOfn5+yV5vs9kUHBwsPz8/TZw4UXny5NG5c+eUI0eOVI9JWAOAC/HM2jzp1QafM2eOmjdvriZNmkiSQkJC9OOPPyo8PFydOnVK9vrw8HBduXJFS5YsUcaMGSVJBQsWfKgxCWsAcCGrBKU7cNVscJvNJpvN5nTN19dXvr6+Kb720KFD6ty5s+Oat7e3goKCtHfv3hTf/4cfflDZsmX16aefatOmTcqdO7feeOMNdezYUT4+Pqm6R8IaAFyIytrzhIWFacqUKU7Xunfvrh49eiR77aVLlxQfH5+s3e3n56cTJ06k+P5nzpzR9u3b1aBBA02fPl2nT59WSEiIbt++re7du6fqHglrAIBHclUbvHPnzgoODna6llJVnVZ2u11+fn4aNmyYfHx8FBAQoAsXLmjWrFmENQDg0eaqNvi9Wt4pyZUrl3x8fBQdHe10PTo6Wv7+/in+zBNPPKEMGTI4tbyLFCmiqKgo2Wy2VI3N0i0AgEeyu+jPw/D19VXp0qW1bds2x7WEhARt27ZN5cqVS/Fnypcvr9OnTyshIcFx7eTJk3riiSdS/SGBsAYA4CEEBwdr2bJlWrlypY4fP66hQ4cqLi5OjRs3liT169dP48aNc7z+nXfe0eXLlzVixAj99ddf+vHHHxUWFqb33nsv1WPSBgcAF2Jyl3nSa2/w+vXrKyYmRpMmTVJUVJRKliypmTNnOtrgkZGR8vb+by2cL18+zZo1S6GhoWrYsKHy5Mmj1q1bq2PHjqke08tuT92/rldI5we/CAAsjtngiexDwgwfY+ou1+RSt0rG3+v/ijY4AABujjY4ALiQO1S1VsERmQCANKENbh4LZTVtcAAA3B2VNQDAI9EGBwDAzVkoq2mDAwDg7qisAQAeiTY4ACBNrDIT2x1YKKsJawBwJZZumcdKlTXPrAEAcHNU1gAAj2ShwpqwBgB4JtrgAADAbVBZAwA8kpUqa8IaAOCRLJTVtMEBAHB3VNYAAI9EGxwAADdnoawmrAEAnslKYc0zawAA3ByVNQDAI/HMGgAAN2ehrCasAcCVrHLiFcxFWAOAC3FEpnlogwMA0sQqQekOLJTVzAYHAMDdUVkDgAvRBjcPbXAAANychbKasAYAV7JKVQtzEdYA4EK0wc1DGxwAADdnoawmrAHAlaxS1boDKmsAQJrQBocRCGsAcCGC0jwWKqwJawBwJSpr89AGBwCkiVWCEuYirAHAhaiszWOhwpqwBgB4Jiu1wTnIAwAAN0dlDQDwSBYqrAlrAIBnog0OAADcBpU1AMAjWaiwJqwBAJ7JSm1wwhoA4JEslNWENQC4klU2JIG5CGsAcCF2MDMPbXAAANychbKapVsAALg7KmsAgEeiDQ4ASBOrPC92BxbKasIaAFyJCWYwAmENAPBItMEBAGlCVWseC2U1YQ0ArkQbHEYgrAEAHok2OAAgTahqzWOhrCasAQCeicoaAJAmPLOGEQhrAIBHorIGAMDNWSirOcgDAAB3R2UNAC7E82LzpGcbfOHChZo1a5aioqJUokQJffLJJypTpswDf2716tX6z3/+o1q1aumLL75I9XiENQC4EBPMzJNeWb1mzRqFhoYqJCREzz//vObNm6f27dtr3bp18vPzu+fPnT17VqNGjVLFihUfekza4AAAPIQ5c+aoefPmatKkiZ599lmFhIQoc+bMCg8Pv+fPxMfHq2/fvurRo4cKFSr00GMS1gAAj2R30R+bzabr1687/bHZbCmOabPZdOjQIQUFBTmueXt7KygoSHv37r3nvU6dOlV+fn5q1qxZmv5daYMDgAtZpQXtDlz1zDosLExTpkxxuta9e3f16NEj2WsvXbqk+Pj4ZO1uPz8/nThxIsX33717t1asWKGIiIg03yNhDQCwtM6dOys4ONjpmq+vr0ve+/r16+rXr5+GDRum3Llzp/l9CGsAcCEmmJnHVRPMfH19Ux3OuXLlko+Pj6Kjo52uR0dHy9/fP9nrz5w5o7///ltdu3Z1XEtISJAklSpVSuvWrVPhwoUfOC5hDQAuZJWgdAfpsXTL19dXpUuX1rZt21S7dm1JieG7bds2tWzZMtnrixQpolWrVjldmzBhgm7cuKFBgwYpb968qRqXsAYAF6KyNk96Ld0KDg5W//79FRAQoDJlymjevHmKi4tT48aNJUn9+vVTnjx51KdPH2XKlEnFihVz+vkcOXJIUrLr90NYAwDwEOrXr6+YmBhNmjRJUVFRKlmypGbOnOlog0dGRsrb27WLrQhrAIBHSs8dzFq2bJli21uSvvrqq/v+7MiRIx96PMIaAOCRrHSQB2ENAC5klefFMBdhDQDwSJxnDQBIE2aDm8dCWc3e4AAAuDsqawCAR6INDgCAm7NQVtMGBwDA3VFZAwA8Em1wAADcnIWymrAGAFeyyrIpd0BlDQBIE9ZZwwiENQDAI1mosCasAcCVqGrNY6U2OEu3AABwc1TWAOBCPLM2j4UKa8IaAOCZaIMDAAC3QWUNAPBIFiqsCWsAcCWrPC92B1ZqgxPWAOBCTDCDEQhrAIBHslBhTVgDADwTbXAAQJrQgjaPhbKasAYAV+KZNYxAWAMAPBJtcAAA3JyFspqwBgBXogUNIxDWAACPRBscAJAmTDAzj4WymoM8AABwd1TWAACPRBscAJAmVmlBuwPCGgCQJjyzhhEIawCAR7JQYU1YAwA8E21wAADcnIWymqVbAAC4OyprAHAhJneZx0qVNWENAPBIPLMGAKQJS7dgBMIaAOCRLFRYE9YAAM9kpTY4s8EBAHBzVNYA4EI8LzaPhQprwhoA4Jms1AYnrAHAhZgNDiMQ1gAAj2ShwpqwBgBXoqo1D21wAADcnIWymrAGAFfimTWMQFgDADwSbXAAQJpQ1ZrHQlnNDmYAALg7KmsAcCGeWZuHNjgAAG7OQllNGxwAAHdHZQ0A8Ei0wQEAcHMWymra4AAAuDsqawBwIavMxHYHtMEBAHBzFspqwhoAXIl11uaxUmXNM2sAAB7SwoUL9corrygwMFDNmjXT/v377/naZcuW6d1331WlSpVUqVIltW3b9r6vTwlhDQDwSHYX/XlYa9asUWhoqLp166aVK1eqRIkSat++vaKjo1N8/Y4dO/T6669r/vz5WrJkifLly6d27drpwoULqR7Ty25PXSPBK6Rzqt8UAGBt9iFhho9Rcbprcmlr28my2WxO13x9feXr65vi65s1a6bAwEANHjxYkpSQkKAaNWqoVatW6tSp0wPHi4+PV6VKlTR48GC99dZbqbpHKmsAgKWFhYWpQoUKTn/CwlL+sGGz2XTo0CEFBQU5rnl7eysoKEh79+5N1XhxcXG6ffu2cubMmep7ZIIZAMAjuWp+WefOnRUcHOx07V5V9aVLlxQfHy8/Pz+n635+fjpx4kSqxhs7dqyefPJJp8B/EMIaAOCRXDUb/H4tb1ebPn261qxZo/nz5ytTpkyp/jnCGgBciKVbj7ZcuXLJx8cn2WSy6Oho+fv73/dnZ82apenTp2vOnDkqUaLEQ43LM2sAgEdKj9ngvr6+Kl26tLZt2+a4lpCQoG3btqlcuXL3/LkZM2boiy++0MyZMxUYGPiQo1JZA4BLUdWaJ702RQkODlb//v0VEBCgMmXKaN68eYqLi1Pjxo0lSf369VOePHnUp08fSYmt70mTJmncuHEqUKCAoqKiJElZsmRR1qxZUzUmYQ0ALkQb/NFXv359xcTEaNKkSYqKilLJkiU1c+ZMRxs8MjJS3t7/bVwvWbJEt27dUs+ePZ3ep3v37urRo0eqxiSsAQAeKT13G23ZsqVatmyZ4ve++uorp69/+OGH/3k8whoA4JGstDc4YQ0A8EgWympmgwMA4O6orAEAHok2OAAgTZiJbR4LZTVhDQCuxNItGIGwBgB4JNrgAAC4OcIaAJAmtKBhBMIaAFyIZ9bmsVBhTVgDADyTlcKaTVEAAHBzVNYAAI/EBDMAQJpY5XmxO7BQVhPWAADPRGUNAEgTZoPDCIQ1AMAjWaiwJqwBAJ7JSm1wlm4BAODmqKwBAB7JQoU1YQ0A8ExWaoMT1gDgQszEhhEIawBwIZZumcdChTVhDQDwTLTBAQBpYpWqFuYirAHAhWiDm8dChTVhDQDwTLTBAQBwcxbKanYwAwDA3VFZA4ALWeV5sTugDQ4ASBMmmJnHQllNWAOAK1klKGEuwhoA4JFogwMA0oQ2uHkslNXMBgcAwN1RWQMAPBJtcAAA3JyFspo2OAAA7o7KGgBcyCqTu9wBbXAAQJowG9w8FspqwhoA4JmsVFnzzBoAADdHZQ0A8EgWKqwJawBwJas8L3YHVmqDE9YA4EJMMIMRCGsAgEeyUGFNWAMAPJOV2uDMBgcAwM1RWQMAPJKFCmvCGgDgmWiDAwAAt0FlDQDwSBYqrAlrAHAl1jibx0ptcMIaAFyITVHMY6GsJqwBwJWsEpQwF2ENAC5EZW0e2uAAgDSxSlC6AwtlNWENAK5EZQ0jENYA4EIEpXlogwMA0oTK2jwWymp2MAMAwN1RWQOAC1mlqnUHtMEBAGlCG9w8Fspq2uAAADyshQsX6pVXXlFgYKCaNWum/fv33/f1a9eu1WuvvabAwEA1aNBAP/3000ONR1gDADyS3e6aPw9rzZo1Cg0NVbdu3bRy5UqVKFFC7du3V3R0dIqv/+2339SnTx81bdpUERERqlWrlrp166Zjx46lekzCGgDgkewu+mOz2XT9+nWnPzab7Z7jzpkzR82bN1eTJk307LPPKiQkRJkzZ1Z4eHiKr58/f75efPFFdejQQUWLFtUHH3ygUqVKacGCBan+d031M2v7kLBUvykAIP24w3NzM7gqlyZPnqwpU6Y4Xevevbt69OiR7LU2m02HDh1S586dHde8vb0VFBSkvXv3pvj++/btU9u2bZ2uVa9eXRs3bkz1PTLBDABgaZ07d1ZwcLDTNV9f3xRfe+nSJcXHx8vPz8/pup+fn06cOJHiz1y8eFH+/v7JXn/x4sVU3yNhDQCwNF9f33uGs7vgmTUAAKmUK1cu+fj4JJtMFh0dnax6TuLv75+sir7f61NCWAMAkEq+vr4qXbq0tm3b5riWkJCgbdu2qVy5cin+TNmyZbV9+3ana1u3blXZsmVTPS5hDQDAQwgODtayZcu0cuVKHT9+XEOHDlVcXJwaN24sSerXr5/GjRvneH3r1q31yy+/aPbs2Tp+/LgmT56sgwcPqmXLlqkek2fWAAA8hPr16ysmJkaTJk1SVFSUSpYsqZkzZzra2pGRkfL2/m8tXL58eY0dO1YTJkzQ559/rqefflpTp05VsWLFUj2ml91upd1VAQDwPLTBAQBwc4Q1AABujrAGAMDNEdYAALg5whqA6WrVqqVLly4lu3716lXVqlUrHe4IcG+ENUxz96YAd1qyZIlp92Gz2XTixAndvn3btDFTEh0drd27d2v37t33PFrvUfX3338rISEh2XWbzaYLFy6kwx0B7u2RW2fdvXv3VL/27lNWzHT16lXlyJHD9HFPnTql06dPq1KlSsqcObPsdru8vLxMGbtDhw5q1aqV/vOf/yhjxoySpJiYGA0cOFB79uxRixYtDB0/Li5Ow4YNU0REhCTp+++/V6FChTRs2DDlyZNHnTp1MnT8JNevX1dISIjWrFmj+Ph4SZKPj4/q1aunIUOGKHv27Kbch5QYjjExMcmCM3/+/IaMt2nTJsc///LLL07/rkm7QBUoUMCQse/n9OnTCg8P15kzZzRo0CD5+fnpp59+Uv78+fXcc88ZOnZ8fLy+/vprbd++XdHR0cn+t5g/f75hYx85ciTVry1RooRh94EHc3lYh4aGpvq1H330kauHd/qP3263a8OGDcqePbsCAgIkSYcOHdLVq1f16quvunzse5k+fboKFiyo+vXrS5J69eql9evXy9/fXzNmzDDlP4JLly6pd+/e2r59u7y8vLR+/XoVKlRIAwcOVM6cOTVgwADD72H+/Pnq37+/tm7dqnHjxuns2bMaNGiQnnnmGUeAGmncuHE6cuSI5s+fr44dOzquV61aVVOmTDEtrD/++GMdPnxY06ZNc2xPuHfvXo0YMUKDBw/W+PHjDb+HkydPauDAgcmO9Ev68Hb48GFDxu3WrZskycvLK9nfuQwZMqhAgQKm/F28086dO9WxY0eVL19eu3btUu/eveXn56ejR48qPDxckyZNMnT8ESNGaOXKlapRo4aee+450z48S9Jbb70lLy+vVH1oN+rvBFLH5WH9+++/J/s6Pj5ezzzzjKTEXxLe3t4qXbq0q4eW5PxhYcyYMapXr55CQkLk4+MjKfFTbEhIiLJmzWrI+ClZsmSJxo4dK0nasmWLtm7dqhkzZmjt2rUaPXq0Zs+ebfg9hIaGysfHRz/++KPq1avnuF6/fn2NHDnSlF+Q5cuXV0REhIYMGaJGjRrJbrerZ8+e6tixoym/oDZt2qTx48cn24/3ueee0+nTpw0fP8mPP/6omTNnqmLFio5rL774ooYPH64OHTqYcg8DBgxQhgwZNG3aND355JOmBURSJffKK69oxYoVyp07tynj3s+4ceP0wQcfKDg42Glv5ypVqmjBggWGj7969WpNmDBBNWrUMHysu93Z6Th8+LBGjRql9u3bO/4b2bdvn+bMmaMPP/zQ9HuDM5eH9VdffeX45zlz5ihr1qwaNWqUcubMKUm6cuWKPvroI6dfVEYJDw/XokWLHEEtJbYb27Ztq3feeUf9+/c3/B6kxLNM8+XLJ0navHmz6tWrp+rVq6tAgQJq3ry5KfewZcsWzZo1S3nz5nW6/vTTT+vcuXOm3IOU+GHt4MGDyps3r/755x/99ddfiouLU5YsWQwfOyYmJtkZtFJie9zMaubxxx9PsdWdLVs20x6NHDlyROHh4SpatKgp493thx9+cPzzzZs3lSlTpnS5D0k6duyY48P0nXLnzp3iJDhXy5gxowoXLmz4OCm585FDr1699PHHHzt9aChRooTy5cuniRMnqnbt2ulxi/j/DJ1gNnv2bPXp08cR1JKUM2dOffDBB6ZUk/Hx8SkeBn7ixIkUJ7cYJUeOHIqMjJSU+JyuatWqkhJbjknPLI0WGxurzJkzJ7t++fJl085xnT59ut5++21Vq1ZN3333nZYvX67Dhw+rYcOGydqxRggICNCPP/6Y7Pry5csf6vSb/1XXrl01cuRIRUVFOa5FRUVpzJgxev/99025h6JFi5oSRPeSkJCgqVOn6sUXX1S5cuV05swZSdKECRO0fPlyU+8le/bsTv9bJDl8+LDy5Mlj+Pjt2rXT/Pnzld47Px87dkwFCxZMdr1gwYL6888/0+GOcCdDJ5hdv35dMTExya7HxMToxo0bRg4tSWrcuLEGDRqkM2fOKDAwUJK0f/9+TZ8+3XE6ihleffVV9e3bV0899ZQuX76sl156SVLiL4OnnnrKlHuoWLGiIiIi9MEHHziuJSQkaObMmapcubIp9zB//nxNnTrV8cm9WLFiWr58uT7//HO1atVKBw8eNHT83r17q2PHjvrzzz8VHx+v+fPn6/jx49q7d69TR8hoixcv1qlTp1SzZk1HxyUyMlIZM2ZUTEyMli5d6njtypUrXTbu9evXHf/ct29fjR07Vr1791axYsUcE/6SZMuWzWXjpuSLL75QRESEPvzwQ33yySeO68WKFdO8efPUrFkzQ8e/0+uvv66xY8dq4sSJ8vLyUkJCgvbs2aNRo0bprbfeMnz8PXv2aMeOHfr555/13HPPKUMG51/LZk2ELVq0qMLCwjR8+HDHB3ibzaawsLB068Dgvww9yKNfv37avXu3BgwYoDJlykiS/u///k+jR49WxYoVNWrUKKOGlpQYRrNmzdL8+fMdn5yfeOIJtW7dWu3atXNqjxvp1q1bmj9/viIjI9W4cWOVKlVKkjR37lxlzZrVlF9Mx44dU9u2bVWqVClt375dr7zyiv78809duXJFixcvNqUNFxMTc89nlDt37tQLL7xg+D2cPn1a06dP15EjRxQbG6tSpUqpY8eOKl68uOFjJ3mYX74Ps7rhQUqUKOHU7k9pUpHRE8yS1KlTR59++qmqVq2qcuXK6dtvv1WhQoV0/PhxtWjRQrt27TJ0/DvZbDZ9+umnWrlypeLj45UhQwbFx8frjTfe0MiRIw3/PfGgibYPM2n3f7F//3516dJFdrvd8d/D0aNH5eXlpWnTpjl+hyN9GBrWcXFxGjVqlMLDwx1rWn18fNS0aVP169fPlOeUSZKqCqMrBnd27do1LViwwCmo3nvvPT355JOm3cPVq1f1/fff6/Tp02rfvr0ef/xxHTp0SP7+/qa0HK1s586dqX6t0R+cypQpo7Vr16pAgQJOYf3nn3+qWbNmpjwWkRI/nERGRjqeTx87dkw3btxQqVKl9PTTT5tyD+4kNjZWq1atcjw+LFq0qN544w1Tf1cjZaYckRkbG+uYbVu4cGFT/4e/ffu2du7cqdOnT+uNN95QtmzZdOHCBWXLls20GeErV65Urly59PLLL0uSRo8erWXLlunZZ5/VuHHj0mVdaXo4cuSIgoODlT17dv39999at26dChUqpPHjxysyMlKjR482dPw728B38/X1Ne3Z/Z1u3rypNWvWKDY2VtWqVbNMQDRu3Fht2rTRm2++6RTWU6ZM0datW7Vo0SJT7iMhIUFlypTRd999Z5n/38MzmbIpSpYsWdJlQf3ff/+tDh06KDIyUjabTdWqVVO2bNk0Y8YMR+vLDNOmTdPQoUMlJa6nXbRokT766CNt3rxZoaGhpj2Tunnzpo4ePZrixgtmbPEYGhqqRo0aqV+/fk5LZGrUqKG+ffsaPn7FihXvO+s7b968atSokbp37+50cLyrhIaG6vbt245ntDabTc2bN9fx48eVOXNmjR07VrNmzVL58uVdPvbdwsPDlSVLFqdlfJK0du1a/fvvv2rUqJGh47///vsaMGCALly4ILvdrvXr1+uvv/5SRESEwsLCDB37Tt7e3o65JGZq1KiR5s6dq5w5czrWOt+LK+ctPEhERISWLl2qM2fOaOnSpSpQoIDmzp2rggULMhs8nRkS1ql9zmZ0SI0YMUIBAQH65ptvnCZR1alTx2lSi9HOnz/vmEi2ceNGvfrqq3r77bdVvnx5tWrVypR7+Pnnn9W/f/8UZwCb8YxSkg4ePKhhw4Ylu54nT54UZ+O62siRIzV+/Hg1atTI8fxt//79ioiIUNeuXRUTE6PZs2fL19dXXbp0cfn4W7ZsUe/evR1fr1q1SpGRkfr++++VP39+DRw4UNOmTdP06dNdPvbdpk+frpCQkGTX/fz89Mknnxge1rVr19a0adM0depUPfbYY5o0aZJKlSqladOmqVq1aoaOfbc+ffpo9OjRGjp0qIoVK2bKmLVq1XJ0ctwlBBctWqRJkyapTZs2+vLLLx0f6HPkyKF58+a5zX1alSFhbeZ2ifezZ88eLV68OFl7s0CBAqbuP5wlSxZdvnxZ+fPn15YtW9S2bVtJUqZMmXTz5k1T7mH48OF67bXX1K1bN/n7+5sy5t18fX1TbEWfPHnSlM0xVq5cqf79+zt2kpMSN+coVqyYli5dqnnz5ilfvnyaNm2aIWF97tw5Pfvss46vt2zZorp16zoeg7Ru3dppZzUjnTt3LsVlOvnz53csMzTS+fPnVbFiRc2ZMyfZ9/bt22fqUrr+/fsrLi5Ob775pjJmzJhsiePDPOtPrTsLGldOIvxfLFiwQMOHD1ft2rWdPjAGBAQYPhkYD2ZIWJs1e/FBEhISUlxPff78eVN3MAsKCtLHH3+skiVL6uTJk46lS3/88Ydpz6svXryo4ODgdAtqKTEYp06dqgkTJjiunTt3TmPHjjVl+9e9e/emWE2WKlVK+/btkyRVqFDBsLDy9vZ2Wku7b98+p3XV2bNn19WrVw0Z+25J22neHdhHjhzR448/bvj47dq106JFi5KNtWfPHnXu3Fm7d+82/B6SDBw40LSx7ufAgQM6fvy4JOnZZ591bJFslrNnz6pkyZLJrvv6+iouLs7Ue0Fyhj2zvnXrlp5//nlFRESY1lq6W7Vq1TRv3jyn1uuNGzc0efJkU7f2GzJkiCZMmKDIyEhNmjRJuXLlkpS4T/nrr79uyj3UrVtXO3bsSLedkqTELS579uypoKAg3bx5U61atVJUVJTKli3r1B42Sr58+bRixYpkz8dXrFjh2Nnt8uXLhu0iVrRoUW3evFnBwcH6448/FBkZ6fR45ty5c6Z9mHr99dc1YsQIZc2aVZUqVZKUWEF+9tlnpvydfP755x2bgSSt0Ni1a5e6dOmiHj16GD7+nYxu+T/I+fPn9Z///Ee//fab4+/e1atXVa5cOY0fPz7ZroNGKViwoA4fPpysgPjll19YZ+0GDJ0NXqtWLU2dOjXdTms5f/682rdvL7vdrlOnTikgIEAnT55Urly5tHDhwhS3nnxUxcXFqVevXsqdO7eKFSuWbOOF1q1bm3Yvu3fv1tGjRxUbG6uAgADHjm5G27Rpk3r16qUiRYo4Nsk5ePCgjh8/rsmTJ6tmzZpatGiRTp06ZcghMxs2bFDv3r1VoUIF/fnnnwoMDNS0adMc3x8zZozOnj2riRMnunzsu9lsNvXr10/r1q1z/F1ISEjQm2++qZCQEMNnxickJKhnz566cuWKZs2apd9++01du3bVBx98oDZt2hg69v3cvHlTt27dcrpm9HLP9u3b69q1axo5cqSKFCkiKXGXxYEDBypr1qyaNWuWoeMnWb58uSZPnqwBAwZo0KBBGj58uGNfguHDh5tWWCBlhob18uXLtWHDBo0ePdqU1lpKbt++rdWrVzvCoXTp0mrQoEGKW28aLS4uTufOnUv2y8CMDzPLly/X0KFD5evr66jsk3h5eTlt6O9qe/fu1eXLl1WzZk3HtZUrV2ry5MmKi4tT7dq19cknn5iydOrs2bNasmSJTp48KUl65pln9Pbbbys2NtaUDtC2bdu0efNm+fv7q1WrVnrssccc35syZYoqVapk+I5yd64tPn/+vA4fPqzMmTOrWLFipi4jtNls6ty5s+Li4nT06FH16dNHLVu2NG38JLGxsRo7dqzWrl2b4qxwoydflilTRkuWLHFslpTk4MGDeu+99/R///d/ho5/p2+//VZTpkxxLLV98skn1aNHD1N3lEPKDA3rt956S6dOndLt27eVP3/+ZOurjV6SkN4HBCSJiYnRgAED9Msvv6T4fTNmYlerVk2tWrVSp06dDFmWdD8dOnTQCy+84DiC8ujRo2rSpIneeustFS1aVLNmzdLbb79tevvz+vXr+u677xQeHq6DBw9a5gjA9FpbnNLZyTdu3FCfPn1Uo0YNvfPOO47rZnbjQkJCtGPHDvXq1Uv9+vXT4MGDdeHCBS1dulR9+vRRw4YNDR2/bt26GjNmTLIdwvbv368+ffpow4YNho6f5Pr1644uQlxcnGJjYx3dx1OnTpm2NTJSZug66/Se6l+1alXVqVNHDRs2VNWqVU0PqSQjRozQtWvXtGzZMrVu3VpTpkzRxYsX9eWXX5p2du+tW7dUv379dPn/wZEjR9SrVy/H12vWrFFgYKCGDx8uKXF98+TJk00L6127dmnFihVav369nnzySdOX8kmJp8+tWLHCMaGoaNGiatKkiSkdqPRaW3zn2clJkr5eunSpli1bZtp2p3favHmzRo0apcqVKztOBHzqqaeUP39+rVq1yvCw/vDDDzVs2DANHjzY8XjmwIEDGjFihGknA0pSp06dNHfuXPn6+uqxxx5zdH1OnDihtm3b6ueffzbtXpCcoWGd3ksSRo0apVWrVun9999X9uzZVa9ePTVs2NDxH4RZduzYoS+++EKBgYHy8vJS/vz5HRu0hIWFOXY2M9Jbb72lNWvWGLIk6UGuXLniNHFq586djsNMJCkwMNDw5UJRUVFauXKlVqxYoevXr6tevXqy2WyaOnWq03IqMyRNpMqePbtjxu+CBQv0xRdfaNq0aY4JX0ZKj7XFRj5q+V9cuXJFhQoVkpT4fPrKlSuSElcGpLR6wBUqVarktBFKbGysmjdv7tiHPD4+Xj4+Pho4cKBpRU+WLFnUrVs3ffnll455DMePH1ebNm302muvmXIPuDfDdzBLz72g69Spozp16uj69ev6/vvvtXr1ar399tsqVKiQGjRoYNqHidjYWMc64pw5cyomJkbPPPOMihUrpt9//92Ue0g6YevXX39V8eLFk00wM2JCVRJ/f3+dPXtW+fLlk81m0++//66ePXs6vn/jxo1kpz65UpcuXbRr1y69/PLLGjhwoF588UX5+PhoyZIlho15P59++qnq16+voUOHOv1yDgkJ0aeffqpVq1YZfg/psbbYXbfVLViwoM6ePav8+fOrSJEiWrt2rcqUKaPNmzcbtmeEuywXu9OUKVPUtm1b9e3bV+PHj9cff/yhtm3bqkGDBob+fkDqGBrWd+8F3bx5cz3++ONav369KXtBJ8mWLZuaNGmiJk2a6M8//1Tfvn01depU08L6mWee0V9//aWCBQuqePHiWrp0qQoWLKglS5boiSeeMOUejh496lhDeezYMafv3W+rQ1d46aWXNG7cOPXt21cbN25U5syZVaFCBad7S6psjPDzzz+rVatWeuedd9xi/+dTp05p4sSJTqc5+fj4qG3btoqIiDDlHtI7LMLCwuTn56emTZs6XV+xYoViYmIc8xuMdObMGRUoUEBNmjTRkSNHHPMqunTpogULFuj27duGPaZK7+ViKcmcObOmT5+uVq1aqVevXtq9e7fefPNNU1vxuA+7gdq0aWMfNWqU3W6328uWLWs/ffq03W632/fs2WOvWbOmkUM7+ffff+2rV6+2d+3a1R4QEGB/+eWX7WPGjDFt/IiICHt4eLjdbrfbDxw4YK9cubK9RIkS9sDAQPvq1atNu4/0Eh0dbX/33XftxYsXt5crV86+fv16p++3bt3a/vnnnxs2/t69e+2DBg2ylytXzt60aVP7V199ZY+OjraXKlXK/scffxg27r28/fbb9g0bNiS7vmHDBnuzZs1Mv5/0ULNmTfuePXuSXd+3b59pvxtKlChhv3jxouPrXr162aOiouxnz561f//99/bDhw+bch93+vfff+3Xrl1z+mOku8e6du2a/fjx4/YaNWrYhwwZYtp94MEMnQ1eoUIFrVy5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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(titanic_data.isnull(), yticklabels=False, cbar=True, cmap='summer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "db17729a-eb13-44e9-a184-0e77dfb0c33f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "titanic_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "112d5d9a-30b8-4503-9943-37adef8e1ffd",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data.drop('Cabin', axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c9494e42-9dbb-4411-b111-0f3161728faa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAesAAAHoCAYAAABpZ8cPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABAI0lEQVR4nO3deVjU5f7/8RegSISaQu5aaSkqmGsqWmZppqXlmi0uqLkkah4NLSslNVwztwR3LcuNAx0TWyzb1NzSn2kupbmQaApuCDkK8/uDi/k6gQbnMJ/5fJrn47rmOs7NMPftCXnP+31vXna73S4AAGBa3u4eAAAAuDWCNQAAJkewBgDA5AjWAACYHMEaAACTI1gDAGByBGsAAEyOYA0AgMkRrAEAMDmCNQAAJkewBgAgn3bs2KGBAweqefPmqlGjhjZu3Pi337Nt2zZ17NhRISEhat26tf79738XuF+CNQAA+ZSenq4aNWpo7Nix+Xr9yZMnNWDAADVu3Fgff/yxevXqpddff13fffddgfot8t8MFgAAT9SiRQu1aNEi369fuXKlKlWqpNGjR0uSqlWrpl27dmnp0qV68MEH8/0+ZNYAAI9ms9mUlpbm9LDZbIXy3nv27FHTpk2d2po3b649e/YU6H3ynVl7RQ0o0BsDADyXfWysAb0UTlyKjQ3RnDlznNoiIiI0ZMiQ//m9z507p6CgIKe2oKAgpaWl6c8//5Sfn1++3ocyOADAkuyF9D4DBgxQeHi4U5uvr28hvXvhIFgDADyar6+vy4JzUFCQzp0759R27tw5BQQE5DurlgjWAACLshdSau3lVTjvk5e6devq22+/dWrbsmWL6tatW6D3YYEZAMCS7IX0KIgrV67owIEDOnDggCQpKSlJBw4c0KlTpyRJ06dPV2RkpOP13bt318mTJzVlyhQdOXJEK1as0IYNG9S7d+8C9UtmDQBAPu3bt089e/Z0PI+OjpYkdezYUZMmTdLZs2eVnJzs+HrlypUVGxur6OhoLV++XOXKldOECRMKtG1Lkrzs9vwVElgNDgDILyNWg1/PKpy4VMTbiJXr/xsyawCAJRXWanArIFgDACypsBaYWQELzAAAMDkyawCAJXlQYk2wBgBYE2VwAABgGmTWAABL8qDEmmANALAmyuAAAMA0yKwBAJbkQYk1wRoAYE2UwQEAgGmQWQMALMmDEmuCNQDAmjypDE6wBgBYkgfFauasAQAwOzJrAIAlUQYHAMDkPChWE6wB4J/APtbdI4ArEawB4B/AK8rdI3BmxIcHyuAAAJicB8VqVoMDAGB2ZNYAAEuiDA4AgMl5UrCmDA4AgMmRWQMALMmDEmuCNQDAmjypDE6wBgBYkgfFauasAQAwOzJrAIAleVJmTbAGAFiSJ81ZUwYHAMDkyKwBAJbkQYk1wRoAYE2UwQEAgGmQWQMALMmDEmuCNQDAmiiDAwAA0yCzBgBYkgcl1gRrAIA1eVIZnGANALAkD4rVzFkDAGB2ZNYAAEuiDA4AgMl5UKymDA4AgNmRWQMALIkyOAAAJudBsZoyOAAAZkdmDQCwJMrgAACYnAfFasrgAACYHZk1AMCSKIMDAGByHhSrCdYAAGvypMyaOWsAAEyOzBoAYEkelFgTrAEA1kQZHAAAmAaZNQDAkjwosSZYAwCsiTI4AAAwDTJrAIAleVBiTbAGAFgTZXAAAHBTK1as0COPPKLQ0FB17dpVe/fuveXrly5dqjZt2qhOnTpq0aKF3n77bV29ejXf/RGsAQCWZC+kR0ElJiYqOjpagwcPVnx8vIKDg9W3b1+lpKTk+fp169Zp+vTpioiIUGJioiZOnKjExES98847+e6TYA0AsCS7vXAeBbVkyRJ169ZNnTt31r333quoqCj5+fkpLi4uz9fv3r1b9evXV/v27VWpUiU1b95cTz755N9m4zciWAMALKmwMmubzaa0tDSnh81my7NPm82m/fv3KywszNHm7e2tsLAw7d69O8/vqVevnvbv3+8IzidPntQ333yjFi1a5PvvygIzAIBHi42N1Zw5c5zaIiIiNGTIkFyvPX/+vDIzMxUYGOjUHhgYqKNHj+b5/u3bt9f58+f13HPPyW636/r16+revbsGDhyY7zESrAEAllRYq8EHDBig8PBwpzZfX9/CeXNJ27ZtU2xsrMaOHas6deroxIkTmjhxoubOnavBgwfn6z0I1gAASyqsYO3r65vv4FyqVCn5+PjkWkyWkpKioKCgPL9n5syZ6tChg7p27SpJqlGjhtLT0/Xmm29q0KBB8vb++xlp5qwBAMgnX19f1a5dW1u3bnW0ZWVlaevWrapXr16e3/Pnn3/mCsg+Pj6SJHs+P3GQWQMALMldZ6KEh4dr1KhRCgkJUZ06dbRs2TJlZGSoU6dOkqTIyEiVLVtWI0aMkCS1bNlSS5YsUa1atRxl8JkzZ6ply5aOoP13CNYAAEty1wlm7dq1U2pqqmbNmqWzZ8+qZs2aWrhwoaMMnpyc7JRJDxo0SF5eXnr33Xd15swZlS5dWi1bttTw4cPz3aeXPZ85uFfUgAL+dQAAnso+NtblfWxLKpy41LiS68f6vyKzBgBYkgcdDU6wBgBYkycFa1aDAwBgcmTWAABL8qQrMgnWAABL8qBYTbAGAFiTJ2XWzFkDAGByZNYAAEvyoMSaYA0AsCbK4AAAwDTIrAEAluRBiTXBGgBgTZTBAQCAaZBZAwAsyYMSa4I1AMCaKIMDAADTILMGAFiSByXWBGsAgDV5UhmcYA0AsCQPitXMWQMAYHZk1gAAS6IMDgCAyXlQrKYMDgCA2ZFZAwAsiTI4AAAm50GxmjI4AABmR2YNALAkyuAAAJicB8VqyuAAAJgdmTUAwJIogwMAYHIeFKsJ1gAAa/KkzJo5awAATI7MGgBgSR6UWBOsAQDWRBkcAACYBpk1AMCSPCixJlgDAKyJMjgAADANMmsAgCV5UGJNsAYAWBNlcAAAYBpk1gAAS/KkzJpgDQCwJA+K1QRrAIA1eVJmzZw1AAAmR2YNALAkD0qsCdYAAGvypGBNGRwAAJMjswYAWJInLTAjWAMALMmDYjVlcAAAzI7MGgBgSZTBAQAwOQ+K1ZTBAQAwOzJrAIAlUQYHAMDkPChWE6wBANbkSZk1c9YAAJgcmTUAwJI8KLEmWAMArIkyOAAAMA0yawCAJXlQYk1mDQCwJru9cB7/jRUrVuiRRx5RaGiounbtqr17997y9ZcuXVJUVJSaN2+ukJAQtWnTRt98802++yOzBgCgABITExUdHa2oqCjdf//9WrZsmfr27atPP/1UgYGBuV5vs9kUHh6uwMBAzZw5U2XLltWpU6dUokSJfPdJsAYAWJK7yuBLlixRt27d1LlzZ0lSVFSUvv76a8XFxal///65Xh8XF6eLFy9q5cqVKlq0qCSpUqVKBeqTMjgAwJIKqwxus9mUlpbm9LDZbHn2abPZtH//foWFhTnavL29FRYWpt27d+f5PV999ZXq1q2rt956S2FhYXryyScVExOjzMzMfP9dCdYAAI8WGxurBg0aOD1iY2PzfO358+eVmZmZq9wdGBioc+fO5fk9J0+e1GeffabMzEzNnz9fL730kpYsWaJ58+ble4yUwQEAllRYZfABAwYoPDzcqc3X17eQ3l2y2+0KDAzU+PHj5ePjo5CQEJ05c0aLFi1SREREvt6DYA0AsKTCOhTF19c338G5VKlS8vHxUUpKilN7SkqKgoKC8vyeO++8U0WKFJGPj4+jrWrVqjp79qxsNlu++qYMDgCwJHshPQrC19dXtWvX1tatWx1tWVlZ2rp1q+rVq5fn99SvX18nTpxQVlaWo+3YsWO688478/0hgWANAEABhIeHa/Xq1YqPj9eRI0c0btw4ZWRkqFOnTpKkyMhITZ8+3fH6Z599VhcuXNDEiRP122+/6euvv1ZsbKyef/75fPdJGRwAYEnuOhu8Xbt2Sk1N1axZs3T27FnVrFlTCxcudJTBk5OT5e39f7lw+fLltWjRIkVHR6tDhw4qW7asevbsqRdffDHffXrZ7fn763pFDSjgXwcA4KnsY/NeTV2Y5u4onLg0uJHrx/q/ogwOAIDJUQYHAFiSJ12RSbAGAFiSB8VqyuAAAJgdmTUAwJIogwMAYHIeFKspgwMAYHZk1gAAS6IMDgCAyXlQrCZYAwCsyZMya+asAQAwOTJrAIAleVBiTbAGAFgTZXAAAGAaZNYAAEvypMyaYA0AsCQPitWUwQEAMDsyawCAJVEGBwDA5DwoVhOsAQDW5EnBmjlrAABMjswaAGBJzFkDAGByHhSrKYMDAGB2ZNYAAEuiDA4AgMl5UKymDA4AgNmRWQMALIkyOAAAJudBsZoyOAAAZkdmDQCwJMrgAACYnAfFaoI1AMCaPCmzZs4aAACTI7MGAFiSByXWBGsAgDVRBgcAAKZBZg0AsCQPSqwJ1gAAa6IMDgAATIPMGgBgSR6UWBOsAQDWRBkcAACYBpk1AMCSPCixJlgDAKzJk8rgBGsAgCV5UKxmzhoAALMjswYAWBJlcAAATM6DYjVlcAAAzI7MGgBgSZTBAQAwOQ+K1ZTBAQAwOzJrAIAlUQYHAMDkPChWUwYHAMDsyKwBAJZEGRwAAJPzoFhNsAYAWJMnZdbMWQMAYHJk1gAAS/KkzJpgDQCwJA+K1ZTBAQAwO4I1AMCS7PbCefw3VqxYoUceeUShoaHq2rWr9u7dm6/vW79+vWrUqKGXXnqpQP0RrAEAlmQvpEdBJSYmKjo6WoMHD1Z8fLyCg4PVt29fpaSk3PL7kpKSNHnyZDVs2LDAfRKsAQAogCVLlqhbt27q3Lmz7r33XkVFRcnPz09xcXE3/Z7MzEyNHDlSQ4YMUeXKlQvcJ8EaAGBJhZVZ22w2paWlOT1sNluefdpsNu3fv19hYWGONm9vb4WFhWn37t03HevcuXMVGBiorl27/ld/V1aDAwAsqbC2bsXGxmrOnDlObRERERoyZEiu154/f16ZmZkKDAx0ag8MDNTRo0fzfP+dO3dq7dq1SkhI+K/HSLAGAHi0AQMGKDw83KnN19e3UN47LS1NkZGRGj9+vEqXLv1fvw/BGgBgSYW1z9rX1zffwblUqVLy8fHJtZgsJSVFQUFBuV5/8uRJ/f777xo0aJCjLSsrS5JUq1Ytffrpp6pSpcrf9kuwBgBYkjtOMPP19VXt2rW1detWtWrVSlJ28N26dateeOGFXK+vWrWq1q1b59T27rvv6sqVKxozZozKlSuXr34J1gAAS3LXCWbh4eEaNWqUQkJCVKdOHS1btkwZGRnq1KmTJCkyMlJly5bViBEjVKxYMVWvXt3p+0uUKCFJudpvhWANAEABtGvXTqmpqZo1a5bOnj2rmjVrauHChY4yeHJysry9C3ezlZfdnr9CglfUgELtGADwz2UfG+vyPvp8XDhxafFTrh/r/4rMGgBgSVzkAQAATIPMGgBgSdxnDQCAyXlQrKYMDgCA2ZFZAwAsiTI4AAAm50GxmjI4AABmR2YNALAkyuAAAJicB8VqgjUAwJo8KbNmzhoAAJMjswYAWJIHJdYEawCANVEGBwAApkFmDQCwJA9KrAnWAABrogwOAABMg8waAGBJHpRYE6wBANZEGRwAAJgGmTUAwJI8KLEmWAMArMmTyuAEawCAJXlQrGbOGgAAsyOzBgBYEmVwAABMzoNiNWVwAADMjswaAGBJlMEBADA5D4rVlMEBADA7MmsAgCVRBgcAwOQ8KVhTBgcAwOTIrAEAluRBiTXBGgBgTZ5UBidYAwAsyYNiNXPWAACYHZk1AMCSPCmzJlgDACzJk+asKYMDAGByZNYAAEvyoMSaYA0AsCbK4AAAwDTIrAEAluRBiTXBGgBgTZTBAQCAaZBZAwAsyYMSa4I1AMCaPKkMTrAGAFiSB8Vq5qwBADA7MmsAgCVRBgcAwOQ8KFZTBgcAwOzIrAEAlkQZHAAAk/OgWE0ZHAAAsyOzBgBYEmVwAABMzoNiNWVwAADMjswaAGBJlMEBADA5D4rVBGsAgDV5UmbNnDUAAAW0YsUKPfLIIwoNDVXXrl21d+/em7529erVeu6559SoUSM1atRIvXv3vuXr80KwBgBYkr2QHgWVmJio6OhoDR48WPHx8QoODlbfvn2VkpKS5+u3bdumJ554QsuXL9fKlStVvnx59enTR2fOnMl3nwRrAIAl2e2F87DZbEpLS3N62Gy2m/a7ZMkSdevWTZ07d9a9996rqKgo+fn5KS4uLs/XT58+Xc8//7xq1qypatWqacKECcrKytLWrVvz/XclWAMAPFpsbKwaNGjg9IiNjc3ztTabTfv371dYWJijzdvbW2FhYdq9e3e++svIyND169dVsmTJfI+RBWYAAEsqrPVlAwYMUHh4uFObr69vnq89f/68MjMzFRgY6NQeGBioo0eP5qu/adOmqUyZMk4B/+8QrAEAllRYq8F9fX1vGpwL2/z585WYmKjly5erWLFi+f4+gjUAAPlUqlQp+fj45FpMlpKSoqCgoFt+76JFizR//nwtWbJEwcHBBeqXOWsAgCW5YzW4r6+vateu7bQ4LGexWL169W76fQsWLNB7772nhQsXKjQ0tIC9klkDACzKXYeihIeHa9SoUQoJCVGdOnW0bNkyZWRkqFOnTpKkyMhIlS1bViNGjJCUXfqeNWuWpk+frooVK+rs2bOSJH9/f91+++356pNgDQBAAbRr106pqamaNWuWzp49q5o1a2rhwoWOMnhycrK8vf+vcL1y5Updu3ZNQ4cOdXqfiIgIDRkyJF99etnt+fts4hU1IL9/DwCAh7OPzXvrU2G6P6Zw4tL/G+j6sf6vyKwBAJbkSWeDE6wBAJbkQbGa1eAAAJgdmTUAwJIogwMAYHIeFKspgwMAYHZk1gAAS6IMDgCAyXlSsKYMDgCAyZFZAwAsyYMSa4I1AMCaPClYUwYHAMDkyKwBAJbkSQvMCNYAAEvyoFhNsAYAWJMnZdbMWQMAYHJk1gAAS/KgxJpgDQCwJsrgAADANMisAQCW5EGJNcEaAGBNlMEBAIBpkFkDACzJgxJrgjUAwJoogwMAANMgswYAWJIHJdYEawCANXlSGZxgDQCwJA+K1cxZAwBgdmTWAABLogwOAIDJeVCspgwOAIDZkVkDACyJMjgAACbnQbGaMjgAAGZHZg0AsCTK4AAAmJwHxWrK4AAAmB2ZNQDAkiiDAwBgch4UqwnWAABr8qTMmjlrAABMjswaAGBJHpRYE6wBANZEGRwAAJgGmTUAwJI8KLEmWAMArIkyOAAAMA0yawCAJXlQYk2wBgBYE2VwAABgGmTWAABL8qDEmmANALAmTyqDE6wBAJbkQbGaOWsAAMyOzBoAYEmUwQEAMDkPitWUwQEAMDsyawCAJVEGBwDA5DwoVlMGBwDA7MisAQCWRBkcAACT86BYTRkcAICCWrFihR555BGFhoaqa9eu2rt37y1fv2HDBj3++OMKDQ1V+/bt9c033xSoP4I1AMCS7PbCeRRUYmKioqOjNXjwYMXHxys4OFh9+/ZVSkpKnq//8ccfNWLECHXp0kUJCQl69NFHNXjwYB0+fDjffRKsAQCWZC+kh81mU1pamtPDZrPdtN8lS5aoW7du6ty5s+69915FRUXJz89PcXFxeb5++fLlevDBB9WvXz9Vq1ZNL7/8smrVqqUPPvgg33/XfM9Z28fG5vtNAQBwtcKKS7Nnz9acOXOc2iIiIjRkyJBcr7XZbNq/f78GDBjgaPP29lZYWJh2796d5/vv2bNHvXv3dmpr3ry5Nm7cmO8xssAMAODRBgwYoPDwcKc2X1/fPF97/vx5ZWZmKjAw0Kk9MDBQR48ezfN7zp07p6CgoFyvP3fuXL7HSLAGAHg0X1/fmwZns2DOGgCAfCpVqpR8fHxyLSZLSUnJlT3nCAoKypVF3+r1eSFYAwCQT76+vqpdu7a2bt3qaMvKytLWrVtVr169PL+nbt26+uGHH5zatmzZorp16+a7X4I1AAAFEB4ertWrVys+Pl5HjhzRuHHjlJGRoU6dOkmSIiMjNX36dMfre/bsqe+++06LFy/WkSNHNHv2bO3bt08vvPBCvvtkzhoAgAJo166dUlNTNWvWLJ09e1Y1a9bUwoULHWXt5ORkeXv/Xy5cv359TZs2Te+++67eeecd3X333Zo7d66qV6+e7z697HZPOl0VAADroQwOAIDJEawBADA5gjUAACZHsAYAwOQI1gD+sR599FGdP38+V/ulS5f06KOPumFEwH+HYA1T++tBAjdauXKlgSNxZrPZdPToUV2/ft1tY7hRSkqKdu7cqZ07d970mj5P9PvvvysrKytXu81m05kzZ9wwIuC/4xH7rCMiIvL92r/evOIuly5dUokSJdw6huPHj+vEiRNq1KiR/Pz8ZLfb5eXlZegY+vXrpx49euhf//qXihYtKklKTU3Va6+9pl27dql79+6GjicjI0Pjx49XQkKCJOmzzz5T5cqVNX78eJUtW1b9+/c3dDxpaWmKiopSYmKiMjMzJUk+Pj5q27atxo4dq+LFixs6nhvZbDalpqbmCpYVKlRwed9ffvml48/fffed0/8POadNVaxY0eXjuJkTJ04oLi5OJ0+e1JgxYxQYGKhvvvlGFSpU0H333efy/g8ePJjv1wYHB7twJMgvlwTr6OjofL/21VdfdcUQnNz4D9Vut+uLL75Q8eLFFRISIknav3+/Ll26pMcee8zlY8nL/PnzValSJbVr106SNGzYMH3++ecKCgrSggULDP/Hcv78eQ0fPlw//PCDvLy89Pnnn6ty5cp67bXXVLJkSY0ePdqwsSxfvlyjRo3Sli1bNH36dCUlJWnMmDG65557HAHTSNOnT9fBgwe1fPlyvfjii472pk2bas6cOYYH69dff10HDhxQTEyM46jD3bt3a+LEiXrzzTc1Y8YMQ8cjSceOHdNrr72W67rAnA97Bw4ccPkYBg8eLEny8vLK9fNapEgRVaxY0dCf4xtt375dL774ourXr68dO3Zo+PDhCgwM1KFDhxQXF6dZs2a5fAxPP/20vLy88vUB3Ij/Xvh7LgnWP//8c67nmZmZuueeeyRl/2P29vZW7dq1XdF9Ljd+eJg6daratm2rqKgo+fj4SJIyMzMVFRWl22+/3ZDx/NXKlSs1bdo0SdLmzZu1ZcsWLViwQBs2bNCUKVO0ePFiQ8cTHR0tHx8fff3112rbtq2jvV27dpo0aZKhv+Tq16+vhIQEjR07Vh07dpTdbtfQoUP14osvGp7lS9kZ24wZM3Kd6XvffffpxIkTho/n66+/1sKFC9WwYUNH24MPPqgJEyaoX79+ho9HkkaPHq0iRYooJiZGZcqUcct/p5zM8ZFHHtHatWtVunRpw8dwM9OnT9fLL7+s8PBwp7OkmzRpog8++MCQMdxYeThw4IAmT56svn37On6u9+zZoyVLluiVV14xZDz4ey4J1u+//77jz0uWLNHtt9+uyZMnq2TJkpKkixcv6tVXX3X6BWOUuLg4ffjhh45ALWWXDXv37q1nn31Wo0aNMnxM586dU/ny5SVJmzZtUtu2bdW8eXNVrFhR3bp1M3w8mzdv1qJFi1SuXDmn9rvvvlunTp0yfDzHjh3Tvn37VK5cOf3xxx/67bfflJGRIX9/f8PHkpqamuseWym7PO6OoHTHHXfkWeoOCAhw2zTKwYMHFRcXp2rVqrml/xt99dVXjj9fvXpVxYoVc+Nosh0+fNjx4fxGpUuXznMxnCvcOAUwbNgwvf7662rRooWjLTg4WOXLl9fMmTPVqlUrQ8aEW3P5ArPFixdrxIgRjkAtSSVLltTLL79seMYoZWfReV0QfvTo0TwXohihRIkSSk5OlpQ9v9a0aVNJ2WXDnHlII6Wnp8vPzy9X+4ULFwy/83X+/Pl65pln1KxZM33yySdas2aNDhw4oA4dOuQqsxohJCREX3/9da72NWvWFOgGncIyaNAgTZo0SWfPnnW0nT17VlOnTtVLL71k+HgkqVq1aoYFnb+TlZWluXPn6sEHH1S9evV08uRJSdK7776rNWvWuGVMxYsXd/rvlePAgQMqW7as4eM5fPiwKlWqlKu9UqVK+vXXXw0fD/Lm8gVmaWlpSk1NzdWempqqK1euuLr7XDp16qQxY8bo5MmTCg0NlSTt3btX8+fPd9yYYrTHHntMI0eO1F133aULFy7ooYcekpT9j/euu+4yfDwNGzZUQkKCXn75ZUdbVlaWFi5cqMaNGxs6luXLl2vu3LmOT/3Vq1fXmjVr9M4776hHjx7at2+foeMZPny4XnzxRf3666/KzMzU8uXLdeTIEe3evdupomSUjz76SMePH1fLli0d1Znk5GQVLVpUqampWrVqleO18fHxLhtHWlqa488jR47UtGnTNHz4cFWvXt2xMDBHQECAy8bxV++9954SEhL0yiuv6I033nC0V69eXcuWLVPXrl0NG0uOJ554QtOmTdPMmTPl5eWlrKws7dq1S5MnT9bTTz9t+HiqVaum2NhYTZgwwfFh3GazKTY21hTVEWRz+UUekZGR2rlzp0aPHq06depIkv7f//t/mjJliho2bKjJkye7svtcsrKytGjRIi1fvtzx6fbOO+9Uz5491adPH6fyuFGuXbum5cuXKzk5WZ06dVKtWrUkSUuXLtXtt99u+C+Uw4cPq3fv3qpVq5Z++OEHPfLII/r111918eJFffTRR6pSpYphY0lNTb3pfOP27dv1wAMPGDaWHCdOnND8+fN18OBBpaenq1atWnrxxRdVo0YNw8dSkN0LBdkVUVDBwcFO0wB5LVwycoFZjtatW+utt95S06ZNVa9ePf3nP/9R5cqVdeTIEXXv3l07duwwbCw5bDab3nrrLcXHxyszM1NFihRRZmamnnzySU2aNMnw30F79+7VwIEDZbfbHT/Dhw4dkpeXl2JiYhy/t+FeLg/WGRkZmjx5suLi4hx7Un18fNSlSxdFRka6Zd4xR042YOQnfau4fPmyPvjgA6eA9Pzzz6tMmTKGj+XSpUv67LPPdOLECfXt21d33HGH9u/fr6CgILeUDZHb9u3b8/1aIz9g1alTRxs2bFDFihWdgvWvv/6qrl27Gj6VYrfblZyc7JifPnz4sK5cuaJatWrp7rvvNnQsN0pPT9e6descU4TVqlXTk08+6dbfz3Bm2BWZ6enpjtWyVapUcesPwfXr17V9+3adOHFCTz75pAICAnTmzBkFBAS4ZUV4fHy8SpUqpYcffliSNGXKFK1evVr33nuvpk+f7tb9oO528OBBhYeHq3jx4vr999/16aefqnLlypoxY4aSk5M1ZcoUQ8dzY7n3r3x9fQ2f07/R1atXlZiYqPT0dDVr1sytv/zNolOnTurVq5eeeuopp2A9Z84cbdmyRR9++KGh48nKylKdOnX0ySef8N8HBWLYoSj+/v6m2Fz/+++/q1+/fkpOTpbNZlOzZs0UEBCgBQsWOMpTRouJidG4ceMkZe+R/fDDD/Xqq69q06ZNio6OdstBLVevXtWhQ4eUkpKSa+Gdkcc0RkdHq2PHjoqMjHTa5tKiRQuNHDnSsHHkaNiw4S1XfZcrV04dO3ZURESE0+XzhS06OlrXr193zMPabDZ169ZNR44ckZ+fn6ZNm6ZFixapfv36LhvDzcTFxcnf399p258kbdiwQX/++ac6duxo2FheeukljR49WmfOnJHdbtfnn3+u3377TQkJCYqNjTVsHDm8vb0da1PMJCEhQatWrdLJkye1atUqVaxYUUuXLlWlSpVYDW4SLgvW+Z0fMzoQTZw4USEhIfr444+dFku1bt3aaQGKkU6fPu1YSLZx40Y99thjeuaZZ1S/fn316NHD8PF8++23GjVqVJ4reo2ec9y3b5/Gjx+fq71s2bJ5rqh1tUmTJmnGjBnq2LGjYy5v7969SkhI0KBBg5SamqrFixfL19dXAwcOdNk4Nm/erOHDhzuer1u3TsnJyfrss89UoUIFvfbaa4qJidH8+fNdNoabmT9/vqKionK1BwYG6o033jA0WLdq1UoxMTGaO3eubrvtNs2aNUu1atVSTEyMmjVrZtg4bjRixAhNmTJF48aNU/Xq1d0yhht9+OGHmjVrlnr16qV58+Y5PpyXKFFCy5YtI1ibhMuCtTuPObyVXbt26aOPPspVrqxYsaLbzgr29/fXhQsXVKFCBW3evFm9e/eWJBUrVkxXr141fDwTJkzQ448/rsGDBysoKMjw/m/k6+ubZ+n52LFjbjnoIj4+XqNGjXKcNidlH7xRvXp1rVq1SsuWLVP58uUVExPj0mB96tQp3XvvvY7nmzdvVps2bRxTJj179nQ6Yc1Ip06dynMrUIUKFRxbFI1y+vRpNWzYUEuWLMn1tT179rhlu92oUaOUkZGhp556SkWLFs21TbIg8/+F4YMPPtCECRPUqlUrpw93ISEhhi8Axs25LFgX5MhRI2VlZeW5n/r06dNuO8EsLCxMr7/+umrWrKljx445tin98ssvbpmvPnfunMLDw90eqKXsQDh37ly9++67jrZTp05p2rRpbjkedvfu3XlmjbVq1dKePXskSQ0aNHB5UPL29taNy0327NnjtK+6ePHiunTpkkvHcDM5R2f+NWAfPHhQd9xxh6Fj6dOnjz788MNc/e7atUsDBgzQzp07DR2PJL322muG93krSUlJqlmzZq52X19fZWRkuGFEyItLD0W5du2aatWqpcOHD7uymwJp1qyZli1b5tR25coVzZ492+kEHyONHTtWdevWVWpqqmbNmqVSpUpJyj6z/IknnjB8PG3atNG2bdsM7zcvo0ePVnp6usLCwnT16lX16NFDrVu3lr+/v1MZ2Cjly5fX2rVrc7WvXbvWceLbhQsXXH56WLVq1bRp0yZJ2R/qkpOTnaZ1Tp065bYPW0888YQmTpyoH374QZmZmcrMzNTWrVv19ttvG/7zfP/996tPnz5O1ZkdO3aof//+Lt3KdisdO3a85cNolSpVynNq67vvvmOftYm4fDX4o48+qrlz55picZmUnUH37dtXdrtdx48fV0hIiI4dO6ZSpUppxYoVeR4l6WkyMjI0bNgwlS5dWtWrV1eRIs4FmJ49exo+pp07d+rQoUNKT09XSEiI45Q3o3355ZcaNmyYqlat6jhUZ9++fTpy5Ihmz56tli1b6sMPP9Tx48ddeknNF198oeHDh6tBgwb69ddfFRoaqpiYGMfXp06dqqSkJM2cOdNlY7gZm82myMhIffrpp46fnaysLD311FOKiooydMV8VlaWhg4dqosXL2rRokX68ccfNWjQIL388svq1auXYeO4matXr+ratWtObUZvJV2zZo1mz56t0aNHa8yYMZowYYLjLIEJEya4JWFAbi4P1mvWrNEXX3yhKVOmGF4Cu5nr169r/fr1jl/+tWvXVvv27fM8YtNIGRkZOnXqVK5/vEZ/0FmzZo3GjRsnX19fR5afw8vLy+kSAFfZvXu3Lly4oJYtWzra4uPjNXv2bGVkZKhVq1Z644033LJVKikpSStXrtSxY8ckSffcc4+eeeYZpaenG7pgaOvWrdq0aZOCgoLUo0cP3XbbbY6vzZkzR40aNTL8xLkb9xGfPn1aBw4ckJ+fn6pXr+62LYg2m00DBgxQRkaGDh06pBEjRuiFF15wy1ik7G2s06ZN04YNG/JcFe6OW67+85//aM6cOY7ttWXKlNGQIUPccsIb8ubyYP3000/r+PHjun79uipUqJBrf7Urj0DMi1kO879RamqqRo8ere+++y7Prxv9j7dZs2bq0aOH+vfv79LtR7fSr18/PfDAA44rJw8dOqTOnTvr6aefVrVq1bRo0SI988wzGjJkiFvGlyMtLU2ffPKJ4uLitG/fPo+/TtAM+4jzuqv5ypUrGjFihFq0aKFnn33W0e6Oil9UVJS2bdumYcOGKTIyUm+++abOnDmjVatWacSIEerQoYOh40lLS3Nk8xkZGUpPT3dUGI8fP+6WI4+Rm8v3WZtt2X/Tpk3VunVrdejQQU2bNnVbMLrRxIkTdfnyZa1evVo9e/bUnDlzdO7cOc2bN88td+5eu3ZN7dq1c+v/NwcPHtSwYcMczxMTExUaGqoJEyZIyt7PPHv2bLcF6x07dmjt2rX6/PPPVaZMGbdu/bt48aLWrl2rI0eOSMqez+7cubNbKllm2Ed8413NOXKer1q1SqtXr3bL0ac5Nm3apMmTJ6tx48aO2wfvuusuVahQQevWrTM8WPfv319Lly6Vr6+vbrvtNkeF5ujRo+rdu7e+/fZbQ8eDvLk8WLtrEcfNTJ48WevWrdNLL72k4sWLq23bturQoYNj/tEdtm3bpvfee0+hoaHy8vJShQoVHIe1xMbGOk42M8rTTz+txMREl249+jsXL150WiC1fft2xwUnkhQaGmr4NqCzZ88qPj5ea9euVVpamtq2bSubzaa5c+c6baMy0o4dOzRw4EAVL15cISEhkrK34rz33nuKiYlRo0aNDB+Tu/cRGzFN87+4ePGiKleuLCl7fvrixYuSsncR5LXTwNX8/f01ePBgzZs3z7HG4MiRI+rVq5cef/xxw8eDvBlygpmZznZu3bq1WrdurbS0NH322Wdav369nnnmGVWuXFnt27d3y4eL9PR0x57hkiVLKjU1Vffcc4+qV6+un3/+2fDx5Nyw9f3336tGjRq5Fpi5cuFUjqCgICUlJal8+fKy2Wz6+eefNXToUMfXr1y5kus2J1caOHCgduzYoYcfflivvfaaHnzwQfn4+GjlypWGjSEvb731ltq1a6dx48Y5LoDIzMxUVFSU3nrrLa1bt87wMbl7H7HZj+etVKmSkpKSVKFCBVWtWlUbNmxQnTp1tGnTJrecTzFnzhz17t1bI0eO1IwZM/TLL7+od+/eat++vSH/1pE/Lg/Wfz3buVu3brrjjjv0+eefu+Vs5xwBAQHq3LmzOnfurF9//VUjR47U3Llz3RKs77nnHv3222+qVKmSatSooVWrVqlSpUpauXKl7rzzTsPHc+jQIce+y79uu7vVUZuF6aGHHtL06dM1cuRIbdy4UX5+fmrQoIHTGHOyEyN8++236tGjh5599llTnel8/PhxzZw50+mmJh8fH/Xu3VsJCQluGZOZ9hHHxsYqMDBQXbp0cWpfu3atUlNTHWsijHDy5ElVrFhRnTt31sGDBx1rMgYOHKgPPvhA169fd8u0l5+fn+bPn68ePXpo2LBh2rlzp5566imNGjXK8LHgFuwu1qtXL/vkyZPtdrvdXrduXfuJEyfsdrvdvmvXLnvLli1d3f1N/fnnn/b169fbBw0aZA8JCbE//PDD9qlTp7plLAkJCfa4uDi73W63//TTT/bGjRvbg4OD7aGhofb169e7ZUzulpKSYn/uuefsNWrUsNerV8/++eefO329Z8+e9nfeecew8ezevds+ZswYe7169exdunSxv//++/aUlBR7rVq17L/88oth4/irZ555xv7FF1/kav/iiy/sXbt2dcOIzKVly5b2Xbt25Wrfs2eP4b9/goOD7efOnXM8HzZsmP3s2bP2pKQk+2effWY/cOCAYWO5fPlyrseRI0fsLVq0sI8dO9apHebg8tXgDRo0UHx8vKpUqeJ0683vv/+uxx9/XD/99JMru8/lu+++0yeffKKNGzeqSJEiatOmjdq3b++Wub2bycjI0NGjR1W+fHm3HKlpJpcvX5a/v3+uO34vXLggf39/w7dupaenKzExUXFxcfrpp5+UmZmp0aNHq3Pnzobtj71xtfPRo0c1depUvfDCC7r//vslZd8Xv2LFCo0cOdLpWFR3cPc+4tDQUCUmJuaqwpw8eVLt2rUz9PdPcHCwNm/e7FhpfePvQ6P99f7xHDnhIGdBnrsW4SE3l5fBzXa2c0REhB5++GFNnjxZLVq0MHTeM79uu+021a5d261j+Omnn7RhwwYlJyfn+mVr5OUrN5vDc9eefX9/f3Xp0kVdunTR0aNHtXbtWi1YsEDTp09XWFiY08EkrpLXauepU6fmet2IESPcEqzNtI+4fPny+vHHH3MFxF27drnlbnazWL58ubuHgAJyebA229nOmzdvNvyEoLwU5Ox0oxd5rF+/XqNGjVLz5s31/fffq3nz5vrtt9+UkpKi1q1bGzoWM6tataoiIyM1YsQIbdq0Kc9jSF3B7Kudp06dqm3btmncuHF57iM2UteuXfX222/r+vXratKkiaTsw2SmTp2qPn36GDoWLy8vw9Z8/J0HHnhAUvYBUTExMerSpYvjuFyYk8vL4JcvX9bQoUO1b98+XblyRWXKlNG5c+dUt25dzZ8/P9chKa5w46b/vLL8GxkVyPN79aWXl5fhn4Lbt2+v7t276/nnn3eU6ipVqqQ333xTd955p9OqbOCvcipXjRs3Vv369RUfH6+77rpLCQkJWr9+vRYsWGDYWOx2u6ZNm6b333/fUSEqVqyY+vXrZ/hi0uDgYD300EOOqZtNmzapSZMmTifPScZfG1yvXj2tW7cuz5vSYB4uz6yLFy+uJUuWOJ3tXLt2bYWFhbm6a4dGjRrp+++/V2BgoBo2bHjTuRoj52fef/99Q/r5b5w8edJxqYmvr6/S09Pl5eWl3r17q1evXgRrN/vyyy/10EMPqWjRon+bZT/66KMGjer/mGkfsZeXl1555RW99NJLOnLkiPz8/HT33Xe75Zjav17SYfThJzfTpEkT7dixg2Btcobss5akhg0bqmHDhkZ152TZsmUqWbKk489mKUXluHz5sjIzM3PNw164cEFFihQxvGxfokQJXblyRVL2GcG//PKLatSooUuXLnFlngkMHjzYsVBp8ODBN32duxYHmW0fsSTdfvvtqlOnjlv6zmHWa4NztkkePnxYtWvXzpXpu+MDH3JzeRn8ZiVcLy8vFStWTFWqVFGjRo1yrfb1JP369VPLli31/PPPO7V/9NFH+uqrrwwtG0rZC5NCQkIUHh6uuXPn6oMPPtCjjz6qLVu2qFatWoaX6WAtS5culbe3t3r27KktW7Zo4MCBstvtjn3Err7tKiIiQpMmTVJAQMDflrr5Wb71+eisBjcPl2fWS5cu1fnz55WRkeHIbi9evKjbbrtN/v7+SklJUeXKlbV8+XKVL1/e1cPRY489pvbt26t9+/amOdxi7969eS4ie+CBB5wW5hnljTfe0NWrVyVJgwYNUtGiRfXjjz/qscce06BBgwwfD3LL61ayhIQEzZo1y223kuWcfPfVV1/p2rVr+uOPPxQREaENGzZo//79qlKliiEXZ9yYvbsrk7eSvC4+gQm5eiP3unXr7C+88IL9+PHjjrZjx47Ze/bsaV+/fr09OTnZ3r17d/uQIUNcPRS73W63L1myxN6pUyd7cHCwvVOnTvalS5fa//jjD0P6vpn777/ffvDgwVztBw8etNepU8cNI4LZ9e3b1x4bG+t4fvDgQXutWrXsY8aMsS9evNjerFkz+6xZswwd05w5c+zBwcH2Pn362AcNGmQPDQ21jx492tAx5Jg9e7Y9PT3dLX0DruDyMnirVq00e/Zsx/GVOX7++WcNGTJEX375pX788UcNHTpU33//vSuH4uS3337TunXrtH79eiUlJalx48bq0KGDnn76acPGkKNHjx6qXr16rluboqKidOjQIX344YeGjONmByXcyMvLyy3nlcNZ8+bNNW/ePMcFNDNmzND27dv10UcfSZI2bNig2bNnKzEx0bAxPfbYY+rTp4+6d+8uSdqyZYv69++vvXv3Gn6DW82aNR2LSvH30tPTtWPHDp06dSrXuQo9e/Z006hwI5eXwc+ePavr16/nar9+/brOnTsnKXsRU86CJqPcc889Gjp0qIYOHao9e/Zo3LhxevXVV90SrF9++WWFh4fr4MGDatq0qaTsvaA//fSTFi9ebNg4bjV/t2fPHr3//vvKysoybDy4OTPeSnbq1CnHLgJJCgsLk5eXl/744w/D9/C6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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(titanic_data.isnull(), yticklabels=False, cbar=True, cmap='summer')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e4ecf2d5-800f-4bc7-a51b-3bc6bd6e3720",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 11 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(4)\n",
      "memory usage: 76.7+ KB\n"
     ]
    }
   ],
   "source": [
    "titanic_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "607998d8-c155-4bea-882d-8f2ceb3c5427",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data = titanic_data.dropna()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "0f6c38d6-b9ac-4827-85be-8c7440f04f57",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 889 entries, 0 to 890\n",
      "Data columns (total 11 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  889 non-null    int64  \n",
      " 1   Survived     889 non-null    int64  \n",
      " 2   Pclass       889 non-null    int64  \n",
      " 3   Name         889 non-null    object \n",
      " 4   Sex          889 non-null    object \n",
      " 5   Age          889 non-null    float64\n",
      " 6   SibSp        889 non-null    int64  \n",
      " 7   Parch        889 non-null    int64  \n",
      " 8   Ticket       889 non-null    object \n",
      " 9   Fare         889 non-null    float64\n",
      " 10  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(4)\n",
      "memory usage: 83.3+ KB\n"
     ]
    }
   ],
   "source": [
    "titanic_data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "55d775cb-d975-4558-bf1c-c3721fb60407",
   "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>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Embarked  \n",
       "0      0         A/5 21171   7.2500        S  \n",
       "1      0          PC 17599  71.2833        C  \n",
       "2      0  STON/O2. 3101282   7.9250        S  \n",
       "3      0            113803  53.1000        S  \n",
       "4      0            373450   8.0500        S  "
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "28c58be6-4e7f-40fc-af1e-93c4dda35942",
   "metadata": {},
   "outputs": [],
   "source": [
    "sex = pd.get_dummies(titanic_data['Sex'], drop_first=True).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "fee1e475-446b-42c0-b3b8-8c142203182b",
   "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>male</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   male\n",
       "0     1\n",
       "1     0\n",
       "2     0\n",
       "3     0\n",
       "4     1"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sex.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "3c05d64a-acba-4d78-813a-9e025f92ec8a",
   "metadata": {},
   "outputs": [],
   "source": [
    "embark = pd.get_dummies(titanic_data['Embarked'], drop_first=True).astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "e994bfb8-6399-4e30-ac09-111c11db4aab",
   "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>Q</th>\n",
       "      <th>S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Q  S\n",
       "0  0  1\n",
       "1  0  0\n",
       "2  0  1\n",
       "3  0  1\n",
       "4  0  1"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "embark.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "6e1da2da-adc6-4b18-9508-f7e7d5d8aef3",
   "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>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Allen, Mr. William Henry</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>373450</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "4            5         0       3   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "4                           Allen, Mr. William Henry    male  35.0      0   \n",
       "\n",
       "   Parch            Ticket     Fare Embarked  \n",
       "0      0         A/5 21171   7.2500        S  \n",
       "1      0          PC 17599  71.2833        C  \n",
       "2      0  STON/O2. 3101282   7.9250        S  \n",
       "3      0            113803  53.1000        S  \n",
       "4      0            373450   8.0500        S  "
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "4391e4be-5b2f-4bd1-8ffa-6f47ab9d764c",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data.drop(['Sex', 'Embarked', 'Name', 'Ticket'], axis=1, inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "87609085-4f46-4807-90f4-2e1e97c4f581",
   "metadata": {},
   "outputs": [],
   "source": [
    "titanic_data = pd.concat([titanic_data, sex, embark], axis =1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "96ea17e2-5b51-4ca1-a0a3-7fc46ee178e6",
   "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>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>male</th>\n",
       "      <th>Q</th>\n",
       "      <th>S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass   Age  SibSp  Parch     Fare  male  Q  S\n",
       "0            1         0       3  22.0      1      0   7.2500     1  0  1\n",
       "1            2         1       1  38.0      1      0  71.2833     0  0  0\n",
       "2            3         1       3  26.0      0      0   7.9250     0  0  1\n",
       "3            4         1       1  35.0      1      0  53.1000     0  0  1\n",
       "4            5         0       3  35.0      0      0   8.0500     1  0  1"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "titanic_data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "b56e90be-94ea-4412-9632-15b7edde0f93",
   "metadata": {},
   "outputs": [],
   "source": [
    "y = titanic_data['Survived']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "3f0c56b5-17d2-4030-bdf9-a108e98f35de",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = titanic_data.drop('Survived', axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "b2974dd5-9166-43f9-b6be-b7c729468af7",
   "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>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>male</th>\n",
       "      <th>Q</th>\n",
       "      <th>S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>3</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Pclass   Age  SibSp  Parch     Fare  male  Q  S\n",
       "0            1       3  22.0      1      0   7.2500     1  0  1\n",
       "1            2       1  38.0      1      0  71.2833     0  0  0\n",
       "2            3       3  26.0      0      0   7.9250     0  0  1\n",
       "3            4       1  35.0      1      0  53.1000     0  0  1\n",
       "4            5       3  35.0      0      0   8.0500     1  0  1"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "f0da354b-bc5f-4768-a863-7804ba0eb134",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0\n",
       "1    1\n",
       "2    1\n",
       "3    1\n",
       "4    0\n",
       "Name: Survived, dtype: int64"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "e30eb549-3720-4520-bd90-8c688b1a84c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "6dd56cfb-8c4b-4918-bb07-5d5b7a3de6a3",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(\n",
    "    X, y, test_size=0.3, random_state=101)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "88bd0b24-6702-410d-8168-f5cb2bc42cc4",
   "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>PassengerId</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>male</th>\n",
       "      <th>Q</th>\n",
       "      <th>S</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>807</th>\n",
       "      <td>808</td>\n",
       "      <td>3</td>\n",
       "      <td>18.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.775</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>651</th>\n",
       "      <td>652</td>\n",
       "      <td>2</td>\n",
       "      <td>18.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>23.000</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.925</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>690</th>\n",
       "      <td>691</td>\n",
       "      <td>1</td>\n",
       "      <td>31.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>57.000</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196</th>\n",
       "      <td>197</td>\n",
       "      <td>3</td>\n",
       "      <td>25.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.750</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Pclass   Age  SibSp  Parch    Fare  male  Q  S\n",
       "807          808       3  18.0      0      0   7.775     0  0  1\n",
       "651          652       2  18.0      0      1  23.000     0  0  1\n",
       "2              3       3  26.0      0      0   7.925     0  0  1\n",
       "690          691       1  31.0      1      0  57.000     1  0  1\n",
       "196          197       3  25.0      0      0   7.750     1  1  0"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "5e06cbd3-6f83-41a4-bb21-7628db191d42",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 622 entries, 807 to 865\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  622 non-null    int64  \n",
      " 1   Pclass       622 non-null    int64  \n",
      " 2   Age          622 non-null    float64\n",
      " 3   SibSp        622 non-null    int64  \n",
      " 4   Parch        622 non-null    int64  \n",
      " 5   Fare         622 non-null    float64\n",
      " 6   male         622 non-null    int64  \n",
      " 7   Q            622 non-null    int64  \n",
      " 8   S            622 non-null    int64  \n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 48.6 KB\n"
     ]
    }
   ],
   "source": [
    "X_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "c1db3429-5d1e-40c1-963e-ead617f34808",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "dd19da9c-9bb2-41b1-9d17-803165bbf25b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Instantiate the model\n",
    "model = LogisticRegression(max_iter=1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "f7eca3ea-9082-4661-b288-73dd6ebd46ca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-3 {color: black;}#sk-container-id-3 pre{padding: 0;}#sk-container-id-3 div.sk-toggleable {background-color: white;}#sk-container-id-3 label.sk-toggleable__label {cursor: pointer;display: block;width: 100%;margin-bottom: 0;padding: 0.3em;box-sizing: border-box;text-align: center;}#sk-container-id-3 label.sk-toggleable__label-arrow:before {content: \"▸\";float: left;margin-right: 0.25em;color: #696969;}#sk-container-id-3 label.sk-toggleable__label-arrow:hover:before {color: black;}#sk-container-id-3 div.sk-estimator:hover label.sk-toggleable__label-arrow:before {color: black;}#sk-container-id-3 div.sk-toggleable__content {max-height: 0;max-width: 0;overflow: hidden;text-align: left;background-color: #f0f8ff;}#sk-container-id-3 div.sk-toggleable__content pre {margin: 0.2em;color: black;border-radius: 0.25em;background-color: #f0f8ff;}#sk-container-id-3 input.sk-toggleable__control:checked~div.sk-toggleable__content {max-height: 200px;max-width: 100%;overflow: auto;}#sk-container-id-3 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {content: \"▾\";}#sk-container-id-3 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 input.sk-hidden--visually {border: 0;clip: rect(1px 1px 1px 1px);clip: rect(1px, 1px, 1px, 1px);height: 1px;margin: -1px;overflow: hidden;padding: 0;position: absolute;width: 1px;}#sk-container-id-3 div.sk-estimator {font-family: monospace;background-color: #f0f8ff;border: 1px dotted black;border-radius: 0.25em;box-sizing: border-box;margin-bottom: 0.5em;}#sk-container-id-3 div.sk-estimator:hover {background-color: #d4ebff;}#sk-container-id-3 div.sk-parallel-item::after {content: \"\";width: 100%;border-bottom: 1px solid gray;flex-grow: 1;}#sk-container-id-3 div.sk-label:hover label.sk-toggleable__label {background-color: #d4ebff;}#sk-container-id-3 div.sk-serial::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: 0;}#sk-container-id-3 div.sk-serial {display: flex;flex-direction: column;align-items: center;background-color: white;padding-right: 0.2em;padding-left: 0.2em;position: relative;}#sk-container-id-3 div.sk-item {position: relative;z-index: 1;}#sk-container-id-3 div.sk-parallel {display: flex;align-items: stretch;justify-content: center;background-color: white;position: relative;}#sk-container-id-3 div.sk-item::before, #sk-container-id-3 div.sk-parallel-item::before {content: \"\";position: absolute;border-left: 1px solid gray;box-sizing: border-box;top: 0;bottom: 0;left: 50%;z-index: -1;}#sk-container-id-3 div.sk-parallel-item {display: flex;flex-direction: column;z-index: 1;position: relative;background-color: white;}#sk-container-id-3 div.sk-parallel-item:first-child::after {align-self: flex-end;width: 50%;}#sk-container-id-3 div.sk-parallel-item:last-child::after {align-self: flex-start;width: 50%;}#sk-container-id-3 div.sk-parallel-item:only-child::after {width: 0;}#sk-container-id-3 div.sk-dashed-wrapped {border: 1px dashed gray;margin: 0 0.4em 0.5em 0.4em;box-sizing: border-box;padding-bottom: 0.4em;background-color: white;}#sk-container-id-3 div.sk-label label {font-family: monospace;font-weight: bold;display: inline-block;line-height: 1.2em;}#sk-container-id-3 div.sk-label-container {text-align: center;}#sk-container-id-3 div.sk-container {/* jupyter's `normalize.less` sets `[hidden] { display: none; }` but bootstrap.min.css set `[hidden] { display: none !important; }` so we also need the `!important` here to be able to override the default hidden behavior on the sphinx rendered scikit-learn.org. See: https://github.com/scikit-learn/scikit-learn/issues/21755 */display: inline-block !important;position: relative;}#sk-container-id-3 div.sk-text-repr-fallback {display: none;}</style><div id=\"sk-container-id-3\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(max_iter=1000)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-3\" type=\"checkbox\" checked><label for=\"sk-estimator-id-3\" class=\"sk-toggleable__label sk-toggleable__label-arrow\">LogisticRegression</label><div class=\"sk-toggleable__content\"><pre>LogisticRegression(max_iter=1000)</pre></div></div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression(max_iter=1000)"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Train the model\n",
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "8e69c9fa-2152-485a-8b2e-04252d88cc59",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 267 entries, 511 to 634\n",
      "Data columns (total 9 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  267 non-null    int64  \n",
      " 1   Pclass       267 non-null    int64  \n",
      " 2   Age          267 non-null    float64\n",
      " 3   SibSp        267 non-null    int64  \n",
      " 4   Parch        267 non-null    int64  \n",
      " 5   Fare         267 non-null    float64\n",
      " 6   male         267 non-null    int64  \n",
      " 7   Q            267 non-null    int64  \n",
      " 8   S            267 non-null    int64  \n",
      "dtypes: float64(2), int64(7)\n",
      "memory usage: 20.9 KB\n"
     ]
    }
   ],
   "source": [
    "X_test.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "ac8d6409-eb7d-4b04-b5fd-b8757ee235a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "predictions = model.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "a2e9e850-0f04-4aab-b1c5-9212a2abcd97",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0,\n",
       "       0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1,\n",
       "       1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,\n",
       "       0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1,\n",
       "       0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0,\n",
       "       0, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0,\n",
       "       1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 1,\n",
       "       0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n",
       "       0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,\n",
       "       0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0,\n",
       "       1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0,\n",
       "       0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,\n",
       "       0, 1, 1])"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "e1baf72b-70fd-4794-bc54-0dc436ef048d",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import confusion_matrix, classification_report"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "3dc97d39-94e1-4fd2-9906-9ba1aa2a2314",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[149  33]\n",
      " [ 14  71]]\n"
     ]
    }
   ],
   "source": [
    "print(confusion_matrix(predictions, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "b0ff44a3-e77f-404c-8603-794232ec6431",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "              precision    recall  f1-score   support\n",
      "\n",
      "           0       0.91      0.82      0.86       182\n",
      "           1       0.68      0.84      0.75        85\n",
      "\n",
      "    accuracy                           0.82       267\n",
      "   macro avg       0.80      0.83      0.81       267\n",
      "weighted avg       0.84      0.82      0.83       267\n",
      "\n"
     ]
    }
   ],
   "source": [
    "print(classification_report(predictions, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "32a3e070-4a0e-4999-a523-a5a0652be523",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python (ai-env4)",
   "language": "python",
   "name": "ai-env4"
  },
  "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.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
