{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "ca8dc1ad-b903-4027-a983-caacfba0e0c4",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.feature_selection import SelectKBest, chi2, RFE\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.model_selection import train_test_split, GridSearchCV\n",
    "from sklearn.preprocessing import StandardScaler, LabelEncoder\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.metrics import (\n",
    " confusion_matrix,\n",
    " accuracy_score,\n",
    " precision_score,\n",
    " recall_score,\n",
    " f1_score,\n",
    " classification_report\n",
    ")\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "4eaf607a-97ba-476e-a4de-710dd6c4981c",
   "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": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df=pd.read_csv('titanic.csv')\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "7a385ec2-c774-452f-a190-890a3d03a4ee",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      int64\n",
       "Survived         int64\n",
       "Pclass           int64\n",
       "Name            object\n",
       "Sex             object\n",
       "Age            float64\n",
       "SibSp            int64\n",
       "Parch            int64\n",
       "Ticket          object\n",
       "Fare           float64\n",
       "Cabin           object\n",
       "Embarked        object\n",
       "dtype: object"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.dtypes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "311d62de-88fc-4763-8aea-cc39e43812fa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(116)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.duplicated().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "6582f0d5-da06-4b05-9cd5-a50daebe93eb",
   "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": [
    "df.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "36d41a34-df83-4113-8e63-e00c778c4181",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Age         19.865320\n",
       "Cabin       77.104377\n",
       "Embarked     0.224467\n",
       "dtype: float64"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "missing_values=df.isnull().sum()\n",
    "missing_values[missing_values>0]/len(df)*100"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "3a1f36d8-783d-4b7c-98b6-1763574d13a5",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "from sklearn.linear_model import LinearRegression\n",
    "from sklearn.tree import DecisionTreeRegressor\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.svm import SVR\n",
    "from sklearn.ensemble import GradientBoostingRegressor\n",
    "from sklearn.neighbors import KNeighborsRegressor\n",
    "import seaborn as sns\n",
    "from sklearn.ensemble import RandomForestRegressor\n",
    "from sklearn.model_selection import GridSearchCV, train_test_split\n",
    "from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "7923b727-28dc-4ae2-80a0-7038b51e9f81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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9u3bSx1nvH//fnTp0gXZ2dkG6hkBEk8wc3BwQJ8+faQM8Vz79u177vOvv/66TD0hIlK2atWqlVnqrly5skFmp5MuSUfWhlbW+awly/E8n5WIqMjy5cvx008/4bvvvoOLiwsAID09HYMGDcKbb76J4cOHG7iH6ibpyBooWr60Z88epKSkoF+/frCzs8M///wDe3t72NraShr77t27Oj8/efIEJ0+exKefforZs2dLGpuISOl8fX11BjCXLl2Cu7s73N3dAQBpaWnQaDTIzMxksjYwSZP1X3/9hS5duiAtLQ25ubkICgqCnZ0d5s6di9zcXMTFxUkZvsySTlBQECwsLBAREYHjx49LGp+ISMl69+5t6C5QOUlaBu/duzfs7OywYsUKVKtWDUlJSfD09MSePXvwwQcf4NKlS1KFfq7k5GT4+fnJdiwnERHR/w9JR9b79+/HoUOHdA4rAAAPDw9cv35dytAAio6YK0kIgRs3biA6Oho+Pj6SxyciMkYPHz4stT201JtI0fNJmqwLCwvLnMT1999/w87OTsrQAAAfHx+YmJiU2uKwdevWsp98RUSkZKmpqRgzZgz27NmDx48fa9vl2kSKnk/SZN25c2fExMRg+fLlAIpmYj98+BCRkZGybEGampqq87OpqSmqV69ear9uIiK1GzBgAIQQWLlyJZydnXmmgMJIes/677//RnBwMIQQuHTpEvz8/HDp0iU4Ojpi3759kp28k5iYiNu3b6NHjx7atjVr1iAyMhLZ2dno3bs3lixZorNnNxGRmtna2uL48ePac7VJWUovRNajWrVqISkpCVOnTsX48ePh6+uL6OhonDx5UtIj8j777DOcO3dO+/OZM2cwZMgQBAYGYvLkydi8eTOioqIki09EZGxatmyJa9euGbob9Ayv5KYoNWrUwObNm7VHvk2dOhV79+7FgQMHAAA//fQTIiMjcf78eUN2k4hIMVJSUjBixAgMGDAAjRs3LrU9dNOmTQ3UMwIkvme9evVqODo6onv37gCAiRMnYvny5WjUqBHWrl2L2rVrSxL37t27cHZ21v68d+9edO3aVfszv0ESEenKzMxESkqKzmmBxRN0OcHM8CQtg8+ZMwdWVlYAiu4jx8bG4osvvoCjoyPGjx8vWVxnZ2ft5LK8vDycOHECrVu31j7/4MGDUt8aiYjUbPDgwfD19UViYiKuXLmC1NRUnX+SYUk6sr527Rq8vLwAABs3bsTbb7+NYcOGoU2bNujQoYNkcbt164bJkydj7ty52LhxI6ytrdGuXTvt86dPn0bdunUli09EZGz++usvbNq0SXvNJmWRdGRta2uL27dvAwB27NiBoKAgAIClpSUePXokWdxZs2ahUqVKaN++Pb7++mt8/fXXOhuzrFy5Ep07d5YsPhGRsenYsSOSkpIM3Q16BklH1kFBQRg6dCh8fX1x8eJF7drqc+fOwcPDQ7K4xUvDsrKyYGtrCzMzM53nf/rpJ8kPESEiMiYhISEYP348zpw5gyZNmpS6VdizZ08D9YwAiWeD37t3D9OmTcO1a9cwcuRIdOnSBQAQGRkJCwsLTJ06VarQRET0Eso6UrgYJ5gZ3iu5dIuIiOhVIuk9623btmnXNgPA0qVL4ePjg379+pU6a5qIiOTXrVs3ZGVlaX+Ojo7GvXv3tD/fvn0bjRo1MkDPqCRJk/WECRNw//59AEW7iH300Ufo1q0bUlNTERERIWVoIiIqh+3btyM3N1f785w5c3Dnzh3tz/n5+bhw4YIhukYlSDrBLDU1VfuN7JdffkGPHj0wZ84cnDhxQpaDPIiI6PmevhPKO6PKJOnI2sLCAjk5OQCA33//XbtcqmrVqtoRNxERET2fpCPrtm3bIiIiAm3atMHRo0exbt06AMDFixdRq1YtKUMTEVE5mJiYlDoOk8djKo+kyTo2NhajRo3Czz//jGXLlsHV1RUA8N///le7jIuIiAxHCIH3339fe2Tw48ePMWLECNjY2ACAzv1sMhwu3SIiUrGSB3c8z7fffitxT+h5ZEvWjx8/Rl5enk6bvb29HKGJiIiMmqQTzLKzszFmzBg4OTnBxsYGVapU0XkQERHRi0marCdOnIhdu3Zh2bJl0Gg0+OabbzBz5kzUrFkTa9askTI0ERHRK0PSMri7uzvWrFmDDh06wN7eHidOnICXlxe+++47rF27Flu3bpUqNBER0StD0pH1nTt34OnpCaDo/nTxrjht27bFvn37pAxNRET0ypA0WXt6eiI1NRUA0KBBA6xfvx4AsHnzZjg4OEgZmoiI6JUhaRn8yy+/hJmZGcaNG4fff/8dISEhEELgyZMnWLhwIcLDw6UKTURE9MqQZFOUwsJCzJs3D5s2bUJeXh7++ecfREZGIjk5GcePH4eXlxeaNm0qRWgiIqJXjiQj61mzZmHGjBkIDAyElZUVtm/fjvfeew8rV67UdygiIqJXniTJ2tvbGx9//DGGDx8OoOgQj+7du+PRo0cwNZX0NjkREdErR5JkrdFocPnyZbi5uWnbLC0tcfnyZR7gQURE9JIkGebm5+fD0tJSp83c3BxPnjyRIhwREdErTZIJZk+f4gKUPskFADZs2CBFeCIioleKJMl60KBBpdoGDBggRSgiIqJXHo/IJCIiUjhOzSYiIlI4JmsiIiKFY7ImIiJSOCZrIiIihWOyJiIiUjgmayIiIoVjsiYiIlK4/wcD/JlKbje/rQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.heatmap(df.isnull(), yticklabels=False, cbar='False')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "746c2fdb-a833-43cf-a009-76d58b6a67d3",
   "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": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"titanic.csv\")\n",
    "data.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "bea8b8c1-9b54-4177-8232-01fba864110c",
   "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>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>male</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       "0         0       3    male  22.0      1      0   7.2500        S\n",
       "1         1       1  female  38.0      1      0  71.2833        C\n",
       "2         1       3  female  26.0      0      0   7.9250        S\n",
       "3         1       1  female  35.0      1      0  53.1000        S\n",
       "4         0       3    male  35.0      0      0   8.0500        S"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.drop(['PassengerId','Name','Ticket','Cabin'],axis=1,inplace=True)\n",
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "2e8262a1-b5d5-4e4f-b954-838ff5d70ddb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['Age']=df['Age'].fillna(df['Age'].mode()[0])\n",
    "df['Embarked']=df['Embarked'].fillna(df['Embarked'].mode()[0])\n",
    "df['Fare'].hist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7763abac-162e-417e-98b7-f3eef02cddda",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "skewness value of Age:  0.6577529069911331\n",
      "skewness value of Fare:  4.787316519674893\n"
     ]
    }
   ],
   "source": [
    "print('skewness value of Age: ',df['Age'].skew())\n",
    "print('skewness value of Fare: ',df['Fare'].skew())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e94e9dfe-4b17-44c1-b331-d10551d9de95",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{4:    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  ,\n",
       " 5: PassengerId      int64\n",
       " Survived         int64\n",
       " Pclass           int64\n",
       " Name            object\n",
       " Sex             object\n",
       " Age            float64\n",
       " SibSp            int64\n",
       " Parch            int64\n",
       " Ticket          object\n",
       " Fare           float64\n",
       " Cabin           object\n",
       " Embarked        object\n",
       " dtype: object,\n",
       " 6:        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  ,\n",
       " 7: Age         19.865320\n",
       " Cabin       77.104377\n",
       " Embarked     0.224467\n",
       " dtype: float64,\n",
       " 8: <Axes: >,\n",
       " 9:    Survived  Pclass     Sex   Age  SibSp  Parch     Fare Embarked\n",
       " 0         0       3    male  22.0      1      0   7.2500        S\n",
       " 1         1       1  female  38.0      1      0  71.2833        C\n",
       " 2         1       3  female  26.0      0      0   7.9250        S\n",
       " 3         1       1  female  35.0      1      0  53.1000        S\n",
       " 4         0       3    male  35.0      0      0   8.0500        S,\n",
       " 12: <Axes: >}"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Q1=df['Fare'].quantile(0.25)\n",
    "Q3=df['Fare'].quantile(0.75)\n",
    "IQR=Q3-Q1\n",
    "Out"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "36e97de0-a12a-44f2-bf2e-035fc230d910",
   "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>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>19.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>263.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>24.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>146.5208</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>34</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>28.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>82.1708</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>52</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>49.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>76.7292</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Survived  Pclass     Sex   Age  SibSp  Parch      Fare Embarked\n",
       "1          1       1  female  38.0      1      0   71.2833        C\n",
       "27         0       1    male  19.0      3      2  263.0000        S\n",
       "31         1       1  female  24.0      1      0  146.5208        C\n",
       "34         0       1    male  28.0      1      0   82.1708        C\n",
       "52         1       1  female  49.0      1      0   76.7292        C"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Q1 = df['Fare'].quantile(0.25)\n",
    "Q3 = df['Fare'].quantile(0.75)\n",
    "IQR = Q3 - Q1\n",
    "whisker_width = 1.5\n",
    "Fare_outliers = df[(df['Fare'] < Q1 - whisker_width*IQR) | (df['Fare'] > Q3 + whisker_width*IQR)]\n",
    "Fare_outliers.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "510b5116-c6a2-4dab-88c7-236d7cac3192",
   "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>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>19.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>263.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>88</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>23.0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "      <td>263.0000</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>118</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>male</td>\n",
       "      <td>24.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>247.5208</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>258</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>512.3292</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>299</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>female</td>\n",
       "      <td>50.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>247.5208</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     Survived  Pclass     Sex   Age  SibSp  Parch      Fare Embarked\n",
       "27          0       1    male  19.0      3      2  263.0000        S\n",
       "88          1       1  female  23.0      3      2  263.0000        S\n",
       "118         0       1    male  24.0      0      1  247.5208        C\n",
       "258         1       1  female  35.0      0      0  512.3292        C\n",
       "299         1       1  female  50.0      0      1  247.5208        C"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fare_mean = df['Fare'].mean()\n",
    "fare_std = df['Fare'].std()\n",
    "low= fare_mean -(3 * fare_std)\n",
    "high= fare_mean + (3 * fare_std)\n",
    "fare_outliers = df[(df['Fare'] < low) | (df['Fare'] > high)]\n",
    "fare_outliers.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "0e3b7899-7557-4514-a139-1a5a7669c6ff",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "dataplot = sns.heatmap(df.corr(numeric_only=True), cmap=\"YlGnBu\", annot=True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "3c8d9159-0c68-4194-9e3a-67a9f4b503e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(0)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['age'] = df['Age'].fillna(df['Age'].mean())\n",
    "df['age'].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2b4f055c-e298-4eb7-b5cd-fc78348017a9",
   "metadata": {},
   "outputs": [],
   "source": [
    "le = LabelEncoder()\n",
    "df['Sex']= le.fit_transform(df['Sex'])\n",
    "df['Embarked'] = le.fit_transform(df['Embarked'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "2506f39a-efb2-474d-ae04-1218ed54eeb9",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.iloc[:,1:]\n",
    "y = df.iloc[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "8f3f6f77-5491-443b-812e-e5ed8621cc28",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split (X,y,test_size=0.2, random_state=32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "f1fe23c7-0fd1-4a8f-a6df-1ba190ec15d4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Feature</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Pclass</td>\n",
       "      <td>24.293831</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Sex</td>\n",
       "      <td>73.180660</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Age</td>\n",
       "      <td>11.564192</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>SibSp</td>\n",
       "      <td>4.054055</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Parch</td>\n",
       "      <td>12.617159</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Fare</td>\n",
       "      <td>3614.580692</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Embarked</td>\n",
       "      <td>10.044610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>age</td>\n",
       "      <td>11.564192</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Feature        Score\n",
       "0    Pclass    24.293831\n",
       "1       Sex    73.180660\n",
       "2       Age    11.564192\n",
       "3     SibSp     4.054055\n",
       "4     Parch    12.617159\n",
       "5      Fare  3614.580692\n",
       "6  Embarked    10.044610\n",
       "7       age    11.564192"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "select_feature = SelectKBest(chi2,k=8).fit(X_train, y_train)\n",
    "data = pd.DataFrame([])\n",
    "data._append(pd.DataFrame({'Feature': X.columns, 'Score': select_feature .scores_}))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "6d251dca-14cf-4da9-b8dc-b235b704c809",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_selected = select_feature.transform(X_train)\n",
    "X_test_selected = select_feature.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "b3edbbe3-843a-459a-a983-4e7fea9fffa4",
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate_model(model_name, y_true, y_pred):\n",
    "    accuracy = accuracy_score(y_true, y_pred)\n",
    "    precision = precision_score(y_true, y_pred, average='weighted')\n",
    "    recall = recall_score(y_true, y_pred, average='weighted')\n",
    "    f1 = f1_score(y_true, y_pred, average='weighted')\n",
    "    metrics = { 'Model Name': model_name,\n",
    "               'Accuracy': accuracy,\n",
    "               'Precision': precision,\n",
    "               'Recall': recall,\n",
    "               'F1 Score': f1,\n",
    "              }\n",
    "    return metrics\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "69235776-0cb9-4e24-97cf-09893fddf0e9",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_classifier = RandomForestClassifier(random_state=42)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "6e2c4b2e-4f59-4cdb-ba4c-c332d7da46cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.svm import SVC, LinearSVC\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.linear_model import Perceptron\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "from sklearn.tree import DecisionTreeClassifier"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "478bba26-5ce4-4d63-8a97-bb2f0a07a62c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAxq0lEQVR4nO3de1hU9d7//9dwVnAG8QBaeNxbEfNQaEpZdxpJpmWJqWVGZe62oR24OrG3qR01K+1kueuu7C5Js63ustQMT30TyzCPqWVhWApoCoOagPD5/dHP2U14ApGhD8/Hdc11NWutWfNe7F08r7XWMA5jjBEAAICl/Hw9AAAAwNlE7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAqDVuueUWtWrV6qy+h8Ph0MSJE8/qewCoXYgdoI7atGmTBg8erJYtWyokJETnnHOOrrjiCr344ou+Hq3WcLvdeuSRR9SlSxeFhYWpXr16Ou+88/Tggw9q9+7dvh5PkvTxxx8Tb8ApOPhuLKDuWb16tXr37q0WLVooOTlZUVFR2rVrl9asWaPvv/9eO3bs8MlcpaWlKi8vV3Bw8Fl7D4fDoQkTJpwyEH744QclJCQoJydH119/vXr16qWgoCBt3LhR7777riIiIvTtt9+etTlP15gxYzR9+nTxn3LgxAJ8PQCAmvfEE0/I5XJp7dq1Cg8P91qXn59fbe9z6NAhhYaGnvb2gYGB1fbeZ+Lo0aMaNGiQ8vLytGLFCvXq1ctr/RNPPKGnnnrKR9MBqCwuYwF10Pfff6+OHTtWCB1Jatq0qeefd+7cKYfDoZkzZ1bY7o/3vkycOFEOh0PffPONbrzxRjVs2FC9evXSM888I4fDoR9//LHCPtLS0hQUFKQDBw5I8r5np7S0VBEREbr11lsrvM7tdiskJET33XefJKmkpETjx49XXFycXC6XQkNDdckll2j58uWV+Kn817///W9t2LBB//znPyuEjiQ5nU498cQTXsvmzp2ruLg41atXT40bN9ZNN92kn3/+2Wubyy67TJdddlmF/f3xXqVjP/dnnnlGr776qtq2bavg4GB1795da9eu9Xrd9OnTJf32v8exBwBvxA5QB7Vs2VJZWVnavHlzte/7+uuv1+HDh/Xkk09q1KhRGjJkiBwOh957770K27733nvq27evGjZsWGFdYGCgrrvuOi1YsEAlJSVe6xYsWKDi4mINGzZM0m/x87//+7+67LLL9NRTT2nixInau3evEhMTtX79+kofwwcffCBJGjFixGltP3PmTA0ZMkT+/v6aNGmSRo0apXnz5qlXr14qKCio9Psfk56erqefflp33HGHHn/8ce3cuVODBg1SaWmpJOmOO+7QFVdcIUl6++23PQ8A3riMBdRB9913n/r166euXbvqwgsv1CWXXKLLL79cvXv3PuNLSV26dFF6errXsp49e2rOnDm6//77PcvWrl2rH3744aT3zgwdOlRvvPGGPvnkEw0YMMCzfM6cOWrTpo26desmSWrYsKF27typoKAgzzajRo1STEyMXnzxRb3++uuVOoatW7fK5XIpOjr6lNuWlpbqwQcf1HnnnadVq1YpJCREktSrVy8NGDBA06ZN0yOPPFKp9z8mJydH3333nScG27dvr4EDB2rJkiUaMGCA4uPj1a5dOy1dulQ33XRTld4DqAs4swPUQVdccYUyMzN1zTXXaMOGDZoyZYoSExN1zjnneM5qVNXf//73CsuGDh2qrKwsff/9955lc+bMUXBwsAYOHHjCffXp00eNGzfWnDlzPMsOHDigpUuXaujQoZ5l/v7+ntApLy/X/v37dfToUXXr1k3r1q2r9DG43W41aNDgtLb96quvlJ+frzvvvNMTOpLUv39/xcTE6KOPPqr0+x8zdOhQr7Nel1xyiaTfbp4GcPqIHaCO6t69u+bNm6cDBw7oyy+/VFpamoqKijR48GB98803Vd5v69atKyy7/vrr5efn54kWY4zmzp2rfv36yel0nnBfAQEBSkpK0n/+8x8VFxdLkubNm6fS0lKv2JGkt956S507d1ZISIgaNWqkJk2a6KOPPlJhYWGlj8HpdKqoqOi0tj12L1L79u0rrIuJiTnuvUqnq0WLFl7Pj4XPsXucAJweYgeo44KCgtS9e3c9+eSTeuWVV1RaWqq5c+dK0glvdi0rKzvh/urVq1dhWfPmzXXJJZd47ttZs2aNcnJyKgTL8QwbNkxFRUVatGiRpN/u84mJiVGXLl0827zzzju65ZZb1LZtW73++utavHixli5dqj59+qi8vPyU7/FHMTExKiws1K5duyr92pOp7M/T39//uMv5mDlQOcQOAI9j98Ds2bNH0n/PJPzxJtuqnK0YOnSoNmzYoO3bt2vOnDmqX7++rr766lO+7tJLL1WzZs00Z84c7du3T8uWLasQSe+//77atGmjefPmacSIEUpMTFRCQoKOHDlS6TkleeZ65513Trlty5YtJUnbt2+vsG779u2e9dJvP8/j3bB8Jmd/+PQVcGrEDlAHLV++/LhnBz7++GNJ/70k43Q61bhxY61atcpru5dffrnS75mUlCR/f3+9++67mjt3rgYMGHBaf4PHz89PgwcP1ocffqi3335bR48erRA7x86A/P6YvvjiC2VmZlZ6TkkaPHiwOnXqpCeeeOK4+ygqKtI///lPSb8FYtOmTTVjxgzPpTZJWrRokbZu3ar+/ft7lrVt21bbtm3T3r17Pcs2bNigzz//vEpzSvL8DM/kU1+A7fg0FlAHjR07VocPH9Z1112nmJgYlZSUaPXq1ZozZ45atWrl9bdtbr/9dk2ePFm33367unXrplWrVlXpLwc3bdpUvXv31tSpU1VUVHRal7COGTp0qF588UVNmDBBnTp1UocOHbzWDxgwQPPmzdN1112n/v37Kzs7WzNmzFBsbKwOHjxY6VkDAwM1b948JSQk6NJLL9WQIUN08cUXKzAwUFu2bFF6eroaNmyoJ554QoGBgXrqqad066236n/+5390ww03KC8vT88//7xatWqle++917Pf2267TVOnTlViYqJGjhyp/Px8zZgxQx07dpTb7a70nJIUFxcnSbrrrruUmJgof39/z0fyAfz/DIA6Z9GiRea2224zMTExJiwszAQFBZm//OUvZuzYsSYvL89r28OHD5uRI0cal8tlGjRoYIYMGWLy8/ONJDNhwgTPdhMmTDCSzN69e0/4vq+99pqRZBo0aGB+/fXXCuuTk5NNy5YtKywvLy830dHRRpJ5/PHHj7v+ySefNC1btjTBwcHm/PPPNwsXLjzu/v4498kcOHDAjB8/3nTq1MnUr1/fhISEmPPOO8+kpaWZPXv2eG07Z84cc/7555vg4GATERFhhg8fbn766acK+3znnXdMmzZtTFBQkOnatatZsmRJhTmzs7ONJPP0009XeP0f5z969KgZO3asadKkiXE4HIb/rAMV8d1YAADAatyzAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACr8UcF9du3JO/evVsNGjTgT68DAPAnYYxRUVGRmjdv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0Pfff+9ZX1JSojFjxqhZs2YKCQlRy5YtNWnSJEm/BeHEiRM9Z9SaN2+uu+66y/Pa4uJi3XfffTrnnHMUGhqqHj16eH7ekvTjjz/q6quvVsOGDRUaGqqOHTvq448/PulxAnUZsQPUUWFhYQoLC9OCBQtUXFx8xvt76KGHNHnyZG3dulWDBw9Wt27dNGvWLK9tZs2apRtvvLHCa51OpwYMGKD09PQK21977bWqX7++SktLlZiYqAYNGuizzz7T559/rrCwMF155ZUqKSmRJD377LOaOXOm3njjDf2///f/tH//fs2fP/+kc8+aNUvt27fXwIEDK6xzOBwnvMx26NAhpaam6quvvlJGRob8/Px03XXXqby8XJL0wgsv6IMPPtB7772n7du3a9asWWrVqpUk6d///remTZumf/3rX/ruu++0YMECderUybPvMWPGKDMzU7Nnz9bGjRt1/fXX68orr9R3330nSUpJSVFxcbFWrVqlTZs26amnnlJYWNhJjxOo0wyAOuv99983DRs2NCEhIeaiiy4yaWlpZsOGDZ712dnZRpL5+uuvPcsOHDhgJJnly5cbY4xZvny5kWQWLFjgte9p06aZtm3bep5v377dSDJbt271et2BAweMMcbMnz/fhIWFmUOHDhljjCksLDQhISFm0aJFxhhj3n77bdO+fXtTXl7u2WdxcbGpV6+eWbJkiTHGmGbNmpkpU6Z41peWlppzzz3XDBw48IQ/gw4dOphrrrnmlD+r5OTkk+5n7969RpLZtGmTMcaYsWPHmj59+njNe8yzzz5r2rVrZ0pKSiqs+/HHH42/v7/5+eefvZZffvnlJi0tzRhjTKdOnczEiRNPOTOA33BmB6jDkpKStHv3bn3wwQe68sortWLFCl1wwQWaOXNmpffVrVs3r+fDhg3Tzp07tWbNGkm/nUG54IILFBMTc9zXX3XVVQoMDNQHH3wg6bezH06nUwkJCZKkDRs2aMeOHWrQoIHnrFRERISOHDmi77//XoWFhdqzZ4969Ojh2WdAQECFuf7InOIy14l89913uuGGG9SmTRs5nU7PWZucnBxJv316a/369Wrfvr3uuusuffLJJ57XXn/99fr111/Vpk0bjRo1SvPnz9fRo0clSZs2bVJZWZnatWvnOc6wsDCtXLnSc5nsrrvu0uOPP66LL75YEyZM0MaNG6t0DEBdQewAdVxISIiuuOIKPfzww1q9erVuueUWTZgwQZLk5/fbfyJ+HwSlpaXH3U9oaKjX86ioKPXp08dzaSo9PV3Dhw8/4RxBQUEaPHiw1/ZDhw713Oh88OBBxcXFaf369V6Pb7/99riXxk5Xu3btKtxbdDquvvpq7d+/X6+99pq++OILffHFF5LkuaR2wQUXKDs7W4899ph+/fVXDRkyRIMHD5YkRUdHa/v27Xr55ZdVr1493Xnnnbr00ktVWlqqgwcPyt/fX1lZWV7HuXXrVj3//POSpNtvv10//PCDRowYoU2bNqlbt2568cUXq/wzAKzn61NLAGqXZ5991jRq1MgYY8zhw4eNJPPRRx951n/yySfHvYx17HLU782cOdM0bdrUrF692vj5+Xldmjne61asWGECAwPN5s2bjZ+fn1mzZo1n3auvvmoaNmxoCgsLTzj78S5jRUdHn/Ty0+zZs497Gc4YY8rLy01BQYExxvsy1r59+4wks2rVKs+2n332mZFk5s+ff9z3Wbx4sZFkfvnllwrrtm3bZiSZrKwsz+W+3+/7VB566CHTqVOn094eqGs4swPUUb/88ov69Omjd955Rxs3blR2drbmzp2rKVOmeG7WrVevnnr27Om58XjlypUaN27cab/HoEGDVFRUpNGjR6t3795q3rz5Sbe/9NJLFRUVpeHDh6t169Zel6SGDx+uxo0ba+DAgfrss8+UnZ2tFStW6K677tJPP/0kSbr77rs1efJkLViwQNu2bdOdd955yj9aOGTIEA0dOlQ33HCDnnzySX311Vf68ccftXDhQiUkJGj58uUVXtOwYUM1atRIr776qnbs2KFly5YpNTXVa5upU6fq3Xff1bZt2/Ttt99q7ty5ioqKUnh4uGbOnKnXX39dmzdv1g8//KB33nlH9erVU8uWLdWuXTsNHz5cN998s+bNm6fs7Gx9+eWXmjRpkj766CNJ0j333KMlS5YoOztb69at0/Lly9WhQ4fT+Z8EqJt8XVsAfOPIkSPmoYceMhdccIFxuVymfv36pn379mbcuHHm8OHDnu2++eYbEx8fb+rVq2e6du1aqTM7xhgzZMgQI8m88cYbXstP9LoHHnjASDLjx4+vsK89e/aYm2++2TRu3NgEBwebNm3amFGjRnnO9pSWlpq7777bOJ1OEx4eblJTU83NN9980jM7xhhTVlZmXnnlFdO9e3dTv35943Q6TVxcnHn++ec9P4s/3qC8dOlS06FDBxMcHGw6d+5sVqxY4XVm59VXXzVdu3Y1oaGhxul0mssvv9ysW7fOGPPbzdg9evQwTqfThIaGmp49e5pPP/3Us++SkhIzfvx406pVKxMYGGiaNWtmrrvuOrNx40ZjjDFjxowxbdu2NcHBwaZJkyZmxIgRZt++fSc9RqAucxhTxbvzAAAA/gS4jAUAAKxG7AAAAKsROwAAwGrEDgAAsBqxAwAArEbsAAAAqxE7AADAasQOAACwGrEDAACsRuwAAACrETsAAMBqxA4AALDa/wfDB4QEV4+kFQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['Survived'].value_counts().plot(kind='bar', color=['skyblue', 'orange'])\n",
    "plt.xlabel('Survived Classes')\n",
    "plt.ylabel('Count')\n",
    "plt.title('Survival Count')\n",
    "plt.xticks(rotation=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "30c87a30-b72e-4c0c-9446-155a7de9d7c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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WrWqbrjhBoe2ypUrq1q1alb7kCFDNHr0aAUGBsrX11cjRoxQVFSU2rVrJ0nq2rWrIiIiNHDgQE2dOlWpqal6+umnFRcXJy8vr6t+TAAAoOJx6gDli5k+fbpcXV3Vp08f5eTkKCYmRnPmzLGWu7m5KTExUcOGDVNUVJQqV66s2NhYTZgwwYlVAwCAisTFGGOcXYSzZWVlyc/PT5mZmZc1fmfmyZnlWNXlGxkw0tklAABwxZT289vp79kBAAC4kgg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1gg7AADA1soUdurVq6fffvutSHtGRobq1at32UUBAACUlzKFnR9++EH5+flF2nNycvTzzz9fdlEAAADlxf1SOi9btsz6788//1x+fn7WfH5+vtasWaPw8PByKw4AAOByXVLY6d27tyTJxcVFsbGxDss8PDwUHh6ul19+udyKAwAAuFyXFHYKCgokSXXr1tXWrVt13XXXXZGiAAAAysslhZ1Chw8fLu86AAAArogyhR1JWrNmjdasWaP09HTrik+ht95667ILAwAAKA9lCjvPPvusJkyYoNatW6tGjRpycXEp77oAAADKRZnCzrx585SQkKCBAweWdz0AAADlqkzv2Tl79qxuvvnm8q4FAACg3JUp7Dz00ENatGhRedcCAABQ7sp0Gys7O1uvv/66Vq9erebNm8vDw8Nh+bRp08qlOAAAgMtVprDz3XffKTIyUpK0c+dOh2UMVgYAABVJmcLOF198Ud51AAAAXBFlGrMDAABwrSjTlZ1bb731grer1q5dW+aCAAAAylOZwk7heJ1Cubm5SklJ0c6dO4t8QSgAAIAzlSnsTJ8+vdj28ePH6/Tp05dVEAAAQHkq1zE7999/P9+LBQAAKpRyDTtJSUny9vYuz00CAABcljLdxrr77rsd5o0xOn78uLZt26axY8eWS2EAAADloUxhx8/Pz2He1dVVjRo10oQJE9S1a9dyKQwAAKA8lCnszJ8/v7zrAAAAuCLKFHYKJScna8+ePZKkpk2bqmXLluVSFAAAQHkpU9hJT09Xv379tG7dOvn7+0uSMjIydOutt+r9999X9erVy7NGAACAMivT01gjRozQqVOntGvXLp04cUInTpzQzp07lZWVpUceeaTU25k7d66aN28uX19f+fr6KioqSsuXL7eWZ2dnKy4uTtWqVVOVKlXUp08fpaWlOWzjyJEj6tGjhypVqqSgoCCNGTNGeXl5ZTksAABgQ2UKOytWrNCcOXPUpEkTqy0iIkKzZ892CCsXU6tWLU2ZMkXJycnatm2bunTporvuuku7du2SJD366KP69NNP9dFHH2n9+vU6duyYw5Ng+fn56tGjh86ePatNmzZpwYIFSkhI0DPPPFOWwwIAADZUpttYBQUF8vDwKNLu4eGhgoKCUm+nZ8+eDvOTJk3S3LlztXnzZtWqVUtvvvmmFi1apC5dukj6Y2B0kyZNtHnzZrVr104rV67U7t27tXr1agUHBysyMlITJ07Uk08+qfHjx8vT07MshwcAAGykTFd2unTpopEjR+rYsWNW288//6xHH31Ut912W5kKyc/P1/vvv68zZ84oKipKycnJys3NVXR0tNWncePGqlOnjpKSkiT98RLDZs2aKTg42OoTExOjrKws6+pQcXJycpSVleUwAQAAeypT2Hn11VeVlZWl8PBw1a9fX/Xr11fdunWVlZWlWbNmXdK2duzYoSpVqsjLy0t///vftWTJEkVERCg1NVWenp7WAOhCwcHBSk1NlSSlpqY6BJ3C5YXLSjJ58mT5+flZU+3atS+pZgAAcO0o022s2rVra/v27Vq9erX27t0rSWrSpInDVZjSatSokVJSUpSZmanFixcrNjZW69evL0tZpRYfH6/Ro0db81lZWQQeAABs6pLCztq1azV8+HBt3rxZvr6+uv3223X77bdLkjIzM9W0aVPNmzdPt9xyS6m36enpqQYNGkiSWrVqpa1bt2rmzJnq27evzp49q4yMDIerO2lpaQoJCZEkhYSE6Ouvv3bYXuHTWoV9iuPl5SUvL69S1wgAAK5dl3Qba8aMGXr44Yfl6+tbZJmfn5/+9re/adq0aZdVUEFBgXJyctSqVSt5eHhozZo11rJ9+/bpyJEjioqKkiRFRUVpx44dSk9Pt/qsWrVKvr6+ioiIuKw6AACAPVzSlZ1vv/1WL7zwQonLu3btqpdeeqnU24uPj1f37t1Vp04dnTp1SosWLdK6dev0+eefy8/PT0OGDNHo0aMV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JUWBgYGqU6eOEytzrri4OC1atEiffPKJqlatqtTUVEmSn5+ffHx8nFydc1WtWrXI2KXKlSurWrVqf/oxTfHx8erevbvq1KmjU6dOadGiRVq3bp0+//xzZ5fmdD179tSkSZNUp04dNW3aVN98842mTZumBx980NmlOd3jjz+unj17KiwsTMeOHdO4cePk5uam/v37O7u00jGoUGbNmmXq1KljPD09zU033WQ2b97s7JKc7osvvjCSikyxsbHOLs2pijsnksz8+fOdXVqF1KlTJzNy5Ehnl+F0Dz74oAkLCzOenp6mevXq5rbbbjMrV650dlkVQlZWlhk5cqSpU6eO8fb2NvXq1TP//Oc/TU5OjrNLc7q+ffuaGjVqGE9PT1OzZk3Tt29fc/DgQWeXVWq8ZwcAANgaY3YAAICtEXYAAICtEXYAAICtEXYAAICtEXYAAICtEXYAAICtEXYAAICtEXYAJ/jhhx/k4uKilJQUZ5di2bt3r9q1aydvb29FRkaWeTsuLi5aunSppNId57p16+Ti4qKMjAxJUkJCgvz9/cu8f1y+N998U127dr2kdcLDwzVjxgxr/tzfgytp3rx56tmz5xXfD65thB38KQ0aNEguLi6aMmWKQ/vSpUvl4uLipKqca9y4capcubL27dvn8B1t5/rll180bNgw1alTR15eXgoJCVFMTIw2btxo9Tl+/LjDNyRfqr59+2r//v1lXv9yDB48WE8//bQkaf369erSpYsCAwNVqVIlNWzYULGxsTp79qxTartasrOzNXbsWI0bN85q+/333xUfH6/69evL29tb1atXV6dOnfTJJ59YfbZu3aqhQ4de0r7K4xw/+OCD2r59u7788stL2jf+XAg7+NPy9vbWCy+8oJMnTzq7lHJzOR/Ehw4dUocOHRQWFqZq1aoV26dPnz765ptvtGDBAu3fv1/Lli1T586d9dtvv1l9QkJC5OXlVeY6fHx8FBQUVOb1yyo/P1+JiYnq1auXdu/erW7duql169basGGDduzYoVmzZsnT01P5+flXvbarafHixfL19VX79u2ttr///e/6+OOPNWvWLO3du1crVqzQPffc4/Bzr169uipVqlTq/ZTXOfb09NR9992nV155pdTr4E/I2d9XAThDbGysufPOO03jxo3NmDFjrPYlS5aYc/8sxo0bZ1q0aOGw7vTp001YWJjDtu666y4zadIkExQUZPz8/Myzzz5rcnNzzeOPP24CAgJMzZo1zVtvvWWtc/jwYSPJvPfeeyYqKsp4eXmZpk2bmnXr1jnsa8eOHaZbt26mcuXKJigoyNx///3ml19+sZZ36tTJxMXFmZEjR5pq1aqZzp07F3u8+fn55tlnnzU1a9Y0np6epkWLFmb58uXWcp33/Vrjxo0rso2TJ08aSUVqPJ8ks2TJklIfZ+F3n508edIYY8z8+fONn5+ftbzwZ7Bw4UITFhZmfH19Td++fU1WVpbVJysry9x3332mUqVKJiQkxEybNq3Id2HNnj3bNGjQwHh5eZmgoCDTp08fh7o3bNhgatSoYQoKCsz06dNNeHj4BY+zsM4lS5ZY2+3atas5cuSIQ785c+aYevXqGQ8PD3P99debhQsXWssKz88333xjtRWe5y+++MIYY8yJEyfMfffdZ6677jrj7e1tGjRo4PC7dOTIEXPvvfcaPz8/ExAQYHr16mUOHz7scH7btGljKlWqZPz8/MzNN99sfvjhhxKPq0ePHubxxx93aPPz8zMJCQkXPB9hYWFm+vTp1rwkM2fOHNOtWzfj7e1t6tataz766CNreXme4/Xr1xtPT0/z+++/X3B7+PPiyg7+tNzc3PT8889r1qxZ+umnny5rW2vXrtWxY8e0YcMGTZs2TePGjdOdd96pgIAAbdmyRX//+9/1t7/9rch+xowZo8cee0zffPONoqKi1LNnT+tfyxkZGerSpYtatmypbdu2acWKFUpLS9Nf//pXh20sWLBAnp6e2rhxo+bNm1dsfTNnztTLL7+sl156Sd99951iYmLUq1cvHThwQNIft56aNm2qxx57TMePH9fjjz9eZBtVqlRRlSpVtHTpUuXk5FzS+bnQcZbGoUOHtHTpUiUmJioxMVHr1693uAU5evRobdy4UcuWLdOqVav05Zdfavv27dbybdu26ZFHHtGECRO0b98+rVixQh07dnTYx7Jly9SzZ0+5uLgoJCREx48f14YNGy5Y1++//65JkyZp4cKF2rhxozIyMtSvXz9r+ZIlSzRy5Eg99thj2rlzp/72t79p8ODB+uKLL0p97GPHjtXu3bu1fPly7dmzR3PnztV1110nScrNzVVMTIyqVq2qL7/8Uhs3blSVKlXUrVs3nT17Vnl5eerdu7c6deqk7777TklJSRo6dOgFb9V+9dVXat26tUNbSEiIPvvsM506darUdRfW3qdPH3377bcaMGCA+vXrpz179ljbLI9zLEmtW7dWXl6etmzZckn14U/E2WkLcIbCqzHGGNOuXTvz4IMPGmPKfmUnLCzM5OfnW22NGjUyt9xyizWfl5dnKleubN577z1jzP/+RT9lyhSrT25urqlVq5Z54YUXjDHGTJw40XTt2tVh30ePHjWSzL59+4wxf1zZadmy5UWPNzQ01EyaNMmhrU2bNub//u//rPkWLVoUe0XnXIsXLzYBAQHG29vb3HzzzSY+Pt58++23Dn1UzJWdCx1naa7sVKpUyeFKzpgxY0zbtm2NMX9c1fHw8HC4apCRkWEqVapkXdn597//bXx9fR22cb6GDRuaxMREY8wfP69BgwYZSSYkJMT07t3bzJo1y2RmZlr958+fbySZzZs3W2179uwxksyWLVuMMcbcfPPN5uGHH3bYz7333mvuuOMOh/NzoSs7PXv2NIMHDy625rfffts0atTIFBQUWG05OTnGx8fHfP755+a3334r1dW48/e9YcMGh/b169ebWrVqGQ8PD9O6dWszatQo89VXXzn0Ke7Kzt///neHPm3btjXDhg0zxpTfOS4UEBBw0atP+PPiyg7+9F544QUtWLDA+hdnWTRt2lSurv/7cwoODlazZs2seTc3N1WrVk3p6ekO60VFRVn/7e7urtatW1t1fPvtt/riiy+sKypVqlRR48aNJf1xpaNQq1atLlhbVlaWjh075jAGQ5Lat29/ycfcp08fHTt2TMuWLVO3bt20bt063XjjjUpISLjgehc6ztIIDw9X1apVrfkaNWpY5/L7779Xbm6ubrrpJmu5n5+fGjVqZM3ffvvtCgsLU7169TRw4EC9++67+v33363le/bs0bFjx3TbbbdJ+uPnNX/+fP3000+aOnWqatasqeeff15NmzbV8ePHHY6lTZs21nzjxo3l7+9vHduePXsu+7wPGzZM77//viIjI/XEE09o06ZN1rJvv/1WBw8eVNWqVa3fkcDAQGVnZ+vQoUMKDAzUoEGDFBMTo549e2rmzJkO9Z/vv//9r6Q/xrOdq2PHjvr++++1Zs0a3XPPPdq1a5duueUWTZw48YK1n/tzL5wvPPbyOseFfHx8HH6mwLkIO/jT69ixo2JiYhQfH19kmaurq4wxDm25ublF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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['SibSp'].value_counts().plot(kind='bar', color='lightgreen')\n",
    "plt.xlabel('Number of Siblings/Spouses (SibSp)')\n",
    "plt.ylabel('Count')\n",
    "plt.title('Distribution of SibSp')\n",
    "plt.xticks(rotation=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "8eb23716-5bf0-4f03-ac93-aab5de749048",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDkElEQVR4nO3de1gV5f7//9fijCIgiiApYHkCz4kpaScl0dTyk5WaGZa7PrnR8riLXYrSTtTykG7TarfVTLPsuz2kaeJ5l5hK2zRNt5qGhYClstQSEOb3Rz/m4wpIRHQtp+fjuua6nPu+Z+Y9g8arWffMshmGYQgAAMCi3JxdAAAAwLVE2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEAAJZG2AEsYvz48bLZbNflWHfffbfuvvtuc33z5s2y2Wz66KOPrsvxBw0apMjIyOtyrMo6d+6c/vSnPyk0NFQ2m03Dhw93dkkVEhkZqZ49ezq7DKBKEXYAFzR//nzZbDZz8fHxUVhYmOLj4zVz5kydPXu2So6TlZWl8ePHa/fu3VWyv6rkyrVVxMSJEzV//nwNGTJECxcu1MCBA8sdGxkZ6fDzrlOnju644w4tW7bsOlYMWJeHswsAUL6UlBQ1aNBAhYWFys7O1ubNmzV8+HBNmzZNK1euVMuWLc2xL730kl544YUr2n9WVpYmTJigyMhItW7dusLbrVu37oqOUxm/V9vbb7+t4uLia17D1di4caM6dOig5OTkCo1v3bq1Ro0aJenXc3/zzTf14IMPas6cOXrmmWeuZamA5RF2ABfWvXt3xcTEmOtJSUnauHGjevbsqfvvv1/ffPONfH19JUkeHh7y8Li2/6R//vlnVatWTV5eXtf0OJfj6enp1ONXRG5urqKjoys8/qabbtJjjz1mrj/++ONq2LChpk+fftVh5/z586pevfpV7QO4kfExFnCD6dy5s8aOHavvvvtO7733ntle1pydtLQ0derUSYGBgfLz81OTJk3017/+VdKv82zatWsnSXriiSfMj1Dmz58v6dd5Oc2bN1dGRobuvPNOVatWzdz2t3N2ShQVFemvf/2rQkNDVb16dd1///06fvy4w5jIyEgNGjSo1LaX7vNytZU1Z+f8+fMaNWqU6tevL29vbzVp0kSvvfaaDMNwGGez2TR06FAtX75czZs3l7e3t5o1a6a1a9eWfcF/Izc3V4MHD1ZISIh8fHzUqlUrLViwwOwvmb909OhRrV692qz92LFjFdp/idDQUEVFReno0aOSpD179mjQoEG6+eab5ePjo9DQUD355JP66aefHLYr+Xuwf/9+Pfroo6pZs6Y6depk9r/33nu67bbbVK1aNdWsWVN33nlnmXfqPvvsM912223y8fHRzTffrHffffeK6gdcCWEHuAGVzP/4vY+T9u3bp549eyo/P18pKSmaOnWq7r//fn3++eeSpKioKKWkpEiSnn76aS1cuFALFy7UnXfeae7jp59+Uvfu3dW6dWvNmDFD99xzz+/W9corr2j16tV6/vnn9eyzzyotLU1xcXH65Zdfruj8KlLbpQzD0P3336/p06erW7dumjZtmpo0aaIxY8Zo5MiRpcZ/9tln+vOf/6x+/fppypQpunDhgvr06VMqOPzWL7/8orvvvlsLFy7UgAED9OqrryogIECDBg3S66+/bta+cOFC1a5dW61btzZrDw4OvqJrUFhYqOPHj6tWrVqSfg2u3377rZ544gnNmjVL/fr105IlS3TfffeVCnSS9PDDD+vnn3/WxIkT9dRTT0mSJkyYoIEDB8rT01MpKSmaMGGC6tevr40bNzpse/jwYT300EO69957NXXqVNWsWVODBg3Svn37rugcAJdhAHA58+bNMyQZO3fuLHdMQECA0aZNG3M9OTnZuPSf9PTp0w1JxsmTJ8vdx86dOw1Jxrx580r13XXXXYYkY+7cuWX23XXXXeb6pk2bDEnGTTfdZNjtdrP9ww8/NCQZr7/+utkWERFhJCQkXHafv1dbQkKCERERYa4vX77ckGT87W9/cxj30EMPGTabzTh8+LDZJsnw8vJyaPvqq68MScasWbNKHetSM2bMMCQZ7733ntlWUFBgxMbGGn5+fg7nHhERYfTo0eN393fp2K5duxonT540Tp48aXz11VdGv379DEnGsGHDDMMwjJ9//rnUdu+//74hydi6davZVvL3oH///g5jDx06ZLi5uRn/8z//YxQVFTn0FRcXO9Ty233m5uYa3t7exqhRoyp0PoCr4c4OcIPy8/P73aeyAgMDJUkrVqyo9GReb29vPfHEExUe//jjj6tGjRrm+kMPPaS6devqk08+qdTxK+qTTz6Ru7u7nn32WYf2UaNGyTAM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f0VHR1+fEwEAAC7LqXd2EhMTtXjxYq1YsUI1atQw59gEBATI19dXAQEBGjx4sEaOHKmgoCD5+/tr2LBhio2NVYcOHSRJXbt2VXR0tAYOHKgpU6YoOztbL730khITE7l7AwAAnBt25syZI0m6++67HdrnzZunQYMGSZKmT58uNzc39enTR/n5+YqPj9cbb7xhjnV3d9eqVas0ZMgQxcbGqnr16kpISFBKSsr1Og0AAODCXOo9O87Ce3YAALjx3JDv2QEAAKhqhB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBphB0AAGBpHs4uAH8ME2wTnF2Cg2Qj2dklAACuE+7sAAAASyPsAAAASyPsAAAASyPsAAAASyPsAAAAS3Nq2Nm6dat69eqlsLAw2Ww2LV++3KHfMAyNGzdOdevWla+vr+Li4nTo0CGHMadOndKAAQPk7++vwMBADR48WOfOnbuOZwEAAFyZU8PO+fPn1apVK82ePbvM/ilTpmjmzJmaO3euvvjiC1WvXl3x8fG6cOGCOWbAgAHat2+f0tLStGrVKm3dulVPP/309ToFAADg4pz6np3u3bure/fuZfYZhqEZM2bopZde0gMPPCBJevfddxUSEqLly5erX79++uabb7R27Vrt3LlTMTExkqRZs2bpvvvu02uvvaawsLDrdi4AAMA1ueycnaNHjyo7O1txcXFmW0BAgNq3b6/09HRJUnp6ugIDA82gI0lxcXFyc3PTF198Ue6+8/PzZbfbHRYAAGBNLht2srOzJUkhISEO7SEhIWZfdna26tSp49Dv4eGhoKAgc0xZUlNTFRAQYC7169ev4uoBAICrcNmwcy0lJSUpLy/PXI4fP+7skgAAwDXismEnNDRUkpSTk+PQnpOTY/aFhoYqNzfXof/ixYs6deqUOaYs3t7e8vf3d1gAAIA1uWzYadCggUJDQ7VhwwazzW6364svvlBsbKwk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WrVSenq6Q3+vXr20a9cuHTly5HfPC39shB384bm7u2vixImaNWuWvv/++6va18aNG5WVlaWtW7dq2rRpSk5OVs+ePVWzZk198cUXeuaZZ/S///u/pY4zZswYjRo1Sv/5z38UGxurXr166aeffpIknTlzRp07d1abNm20a9curV27Vjk5OXrkkUcc9rFgwQJ5eXnp888/19y5c8us7/XXX9fUqVP12muvac+ePYqPj9f999+vQ4cOSZJOnDihZs2aadSoUTpx4oRGjx5d4XP39fU17yi5ublp5syZ2rdvnxYsWKCNGzfqL3/5i8P4n3/+WZMnT9Y//vEP7du3T3Xq1NHQoUOVnp6uJUuWaM+ePXr44YfVrVs3s76S7V577TUtXLhQW7duVWZmplnn6NGj9cgjj5gB6MSJE7r99ts1c+ZMrVy5Uh9++KEOHjyoRYsWOQRVSVq5cqUeeOABSdKiRYvUpEkTc/1SNptNAQEB5vqmTZt05MgRbdq0SQsWLND8+fM1f/78Cl2zc+fOqWfPnoqOjlZGRobGjx9f7jV/4YUXNGnSJH3zzTdq2bKlUlNT9e6772ru3Lnat2+fRowYoccee6xUUH7xxRc1depU7dq1Sx4eHnryySd/t6bPPvtMMTExl6390p93YWGhXn75ZX311Vdavny5jh07pkGDBl32HJKSkjRp0iSNHTtW+/fv1+LFixUSElKq/tGjR2v37t1q3Lix+vfv73BXKDw8XCEhIfr3v/992ZrxB+bU71wHnCwhIcF44IEHDMMwjA4dOhhPPvmkYRiGsWzZMuPSfx7JyclGq1atHLadPn26ERER4bCviIgIo6ioyGxr0qSJcccdd5jrFy9eNKpXr268//77hmEYxtGjRw1JxqRJk8wxhYWFRr169YzJkycbhmEYL7/8stG1a1eHYx8/ftyQZBw8eNAwDMO46667jDZt2lz2fMPCwoxXXnnFoa1du3bGn//8Z3O9VatWRnJy8u/u59LrVlxcbKSlpRne3t7G6NGjyxy/dOlSo1atWub6vHnzDEnG7t27zbbvvvvOcHd3N3744QeHbbt06WIkJSU5bHf48GGzf/bs2UZISEiZtZUYNmyY0blzZ6O4uLjM+r7//nvDy8vLOH36tGEYhhEVFWXcf//9v3sNSo4VERFhXLx40Wx7+OGHjb59+5rrERERxvTp0811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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df['Parch'].value_counts().plot(kind='bar', color='purple')\n",
    "plt.xlabel('Number of Parents/Children (Parch)')\n",
    "plt.ylabel('Count')\n",
    "plt.title('Distribution of Parch')\n",
    "plt.xticks(rotation=0)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "c13dfb1f-b11a-4b96-a702-2cf2d3266a0f",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['age'] = df['Age'].fillna(df['Age'].mean())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "4a5c8fa9-e8b6-4e64-bd26-008842222be7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(0)"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['age'].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "f703bab3-d911-4431-b7dc-0f16b64329d3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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W7p0rOnTp/PUU0+dV70iKSkptEtoR/HJ4j9e+QwC/APYtXuXAo+ISC2rE2Fn8uTJLFq0iFWrVtGkSZPfXbdPnz4A7Nu3j5YtWxITE8P69eud1snIyAAgJibmjPuYOnUqU6ZMcbzOz8+nadOm59MEqYeys7MpPlnMo6MfJb5hfLW2PZx1mOcXPk92drbCjohILXNr2DEMg7/+9a8sXLiQFStW0Lx58z/cJikpCYBGjRoBkJiYyHPPPUdmZiZRUVEALFmyhJCQENq3b3/GfdhsNmw2W800Quq9+IbxtGnUxt1liIjIWbg17EyaNIk5c+bw+eefExwc7BhjExoair+/P/v372fOnDmMGDGCiIgItm7dyn333ccll1xC586dAbjsssto3749N954Iy+88ALp6ek8/vjjTJo0SYFGRERE3Hs11ltvvUVeXh4DBw6kUaNGjmnevHkA+Pr68v3333PZZZeRkJDA/fffz5gxY/jyyy8d+7BarSxatAir1UpiYiLjxo3jpptucrovj4iIiNRfbj+N9XuaNm3KypUr/3A/8fHxfP311zVVloiIiJhInbrPjoiIiEhNU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNT2BERERFTU9gRERERU1PYEREREVNza9iZPn06vXr1Ijg4mKioKEaNGsWePXuc1ikpKWHSpElEREQQFBTEmDFjyMjIcFon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ycvLc0xHjhyp0TpFRESk7nAp7MyaNYv58+efNn/+/Pm8//77513U2Rw9epTjx487QlZiYiInTpxg48aNjnWWLVuG3W6nT58+Z92PzWYjJCTEaRIRERFzcinsTJ8+ncjIyNPmR0VF8fzzz5/zfgoLC0lKSiIpKQmAgwcPkpSUREpKCoWFhTz44IOsXbuWQ4cOsXTpUq666ipatWrF0KFDAWjXrh3Dhg3j9ttvZ/369fz4449MnjyZv/zlL8TGxrrSNBERETEZl8JOSkoKzZs3P21+fHw8KSkp57yfDRs20K1bN7p16wbAlClT6NatG0888QRWq5WtW7dy5ZVX0qZNGyZMmECPHj344YcfsNlsjn189NFHJCQkMHjwYEaMGEG/fv145513XGmWiIiImJBLA5SjoqLYunXraVdbbdmyhYiIiHPez8CBAzEM46zLv/322z/cR3h4OHPmzDnnY4qIiEj94lLPzvXXX8/f/vY3li9fTmVlJZWVlSxbtox77rnH6QoqEREREXdzqWfnmWee4dChQwwePBhv76pd2O12brrppmqN2RERERGpbS6FHV9fX+bNm8czzzzDli1b8Pf3p1OnTsTHx9d0fSIiIiLnxaWwc0qbNm1o06ZNTdUiIiIiUuNcCjuVlZXMnj2bpUuXkpmZid1ud1q+bNmyGilORERE5Hy5FHbuueceZs+ezciRI+nYsSMWi6Wm6xIRERGpES6Fnblz5/LJJ58wYsSImq5HREREpEa5dOm5r68vrVq1qulaRERERGqcS2Hn/vvv59VXX/3dGwKKiIiI1AUuncZavXo1y5cv55tvvqFDhw74+Pg4LV+wYEGNFCciIiJyvlwKO2FhYYwePbqmaxERERGpcS6FnVmzZtV0HSIiIiK1wqUxOwAVFRV8//33vP322xQUFACQmppKYWFhjRUnIiIicr5c6tk5fPgww4YNIyUlhdLSUv70pz8RHBzMP/7xD0pLS5kxY0ZN1ykiIiLiEpd6du655x569uxJbm4u/v7+jvmjR49m6dKlNVaciIiIyPlyqWfnhx9+4KeffsLX19dpfrNmzTh27FiNFCYiIiJSE1zq2bHb7VRWVp42/+jRowQHB593USIiIiI1xaWwc9lll/HKK684XlssFgoLC5k2bZoeISEiIiJ1ikunsV566SWGDh1K+/btKSkp4YYbbiA5OZnI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YuHee+91zPP0Nj755JNYLBanKSEhwbHc09t3yrFjxxg3bhwRERH4+/vTqVMnNmzY4Fju6Z83zZo1O+19tFgsTJo0CfD897GyspL/+7//o3nz5vj7+9OyZUueeeYZp2dWufU9PP+nU8kpc+fONXx9fY333nvP2LFjh3H77bcbYWFhRkZGhrtLc8nXX39tPPbYY8aCBQsMwFi4cKHT8r///e9GaGio8dlnnxlbtmwxrrzySqN58+bGyZMn3VNwNQ0dOtSYNWuWsX37diMpKckYMWKEERcXZxQWFjrWufPOO42mTZsaS5cuNTZs2GD07dvXuOiii9xYdfV88cUXxldffWXs3bvX2LNnj/Hoo48aPj4+xvbt2w3D8Pz2/dr69euNZs2aGZ07dzbuuecex3xPb+O0adOMDh06GGlpaY4pKyvLsdzT22cYhpGTk2PEx8cbN998s7Fu3TrjwIEDxrfffmvs27fPsY6nf95kZmY6vYdLliwxAGP58uWGYXj++/jcc88ZERERxqJFi4yDBw8a8+fPN4KCgoxXX33VsY4730OFnRrUu3dvY9KkSY7XlZWVRmxsrDF9+nQ3VlUzfht27Ha7ERMTY7z44ouOeSdOnDBsNpvx8ccfu6HC85eZmWkAxsqVKw3DqGqPj4+PMX/+fMc6u3btMgBjzZo17irzvDVo0MB49913TdW+goICo3Xr1saSJUuMAQMGOMKOGdo4bdo0o0uXLmdcZob2GYZhPPzww0a/fv3OutyMnzf33HOP0bJlS8Nut5vifRw5cqRx6623Os27+uqrjbFjxxqG4f73UKexakhZWRkbN25kyJAhjnleXl4MGTKENWvWuLGy2nHw4EHS09Od2hsaGkqfPn08tr15eXkAhIeHA7Bx40bKy8ud2piQkEBcXJxHtrGyspK5c+dSVFREYmKiqdo3adIkRo4c6dQWMM97mJycTGxsLC1atGDs2LGkpKQA5mnfF198Qc+ePfnzn/9MVFQU3bp149///rdjudk+b8rKyvjwww+59dZbsVgspngfL7roIpYuXcrevXsB2LJlC6tXr2b48OGA+99D09xB2d2ys7OprKw87REV0dHR7N69201V1Z709HSAM7b31DJPYrfbuffee7n44ovp2LEjUNVGX1/f0x4S62lt3LZtG4mJiZSUlBAUFMTChQtp3749SUlJpmjf3Llz2bRpEz///PNpy8zwHvbp04fZs2fTtm1b0tLSeOqpp+jfvz/bt283RfsADhw4wFtvvcWUKVN49NFH+fnnn/nb3/6Gr68v48ePN93nzWeffcaJEye4+eabAXP8PX3kkUfIz88nISEBq9VKZWUlzz33HGPHjgXc/ztDYUeEqp6B7du3s3r1aneXUuPatm1LUlISeXl5fPrpp4wfP56VK1e6u6waceTIEe655x6WLFmCn5+fu8upFaf+ZwzQuXNn+vTpQ3x8PJ988gn+/v5urKzm2O12evbsyfPPPw9At27d2L59OzNmzGD8+PFurq7mzZw5k+HDhxMbG+vuUmrMJ598wkcffcScOXPo0KEDSUlJ3HvvvcTGxtaJ91CnsWpIZGQkVqv1tNHzGRkZxMTEuKmq2nOqTWZo7+TJk1m0aBHLly+nSZMmjvkxMTGUlZVx4sQJp/U9rY2+vr60atWKHj16MH36dLp06cKrr75qivZt3LiRzMxMunfvjre3N97e3qxcuZJ//etfeHt7Ex0d7fFt/K2wsDDatGnDvn37TPEeAjRq1Ij27ds7zWvXrp3jdJ2ZPm8OHz7M999/z2233eaYZ4b38cEHH+SRRx7hL3/5C506deLGG2/kvvvuY/r06YD730OFnRri6+tLjx49WLp0qWOe3W5n6dKlJCYmurGy2tG8eXNiYmKc2pufn8+6des8pr2GYTB58mQWLlzIsmXLaN68udPyHj164OPj49TGPXv2kJKS4jFtPBO73U5paakp2jd48GC2bdtGUlKSY+rZsydjx451fO/pbfytwsJC9u/fT6NGjUzxHgJcfPHFp932Ye/evcTHxwPm+Lw5ZdasWURFRTFy5EjHPDO8j8XFxXh5OUcKq9WK3W4H6sB7WOtDoOuRuXPnGjabzZg9e7axc+dO44477jDCwsKM9PR0d5fmkoKCAmPz5s3G5s2bDcB4+eWXjc2bNxuHDx82DKPqMsKwsDDj888/N7Zu3WpcddVVHnUp6F133WWEhoYaK1ascLoktLi42LHOnXfeacTFxRnLli0zNmzYYCQmJhqJiYlurLp6HnnkEWPlypXGwYMHja1btxqPPPKIYbFYjO+++84wDM9v35n8+mosw/D8Nt5///3GihUrjIMHDxo//vijMWTIECMyMtLIzMw0DMPz22cYVbcN8Pb2Np577jkjOTnZ+Oijj4yAgADjww8/dKzj6Z83hlF1hW5cXJzx8MMPn7bM09/H8ePHG40bN3Zcer5gwQIjMjLSeOihhxzruPM9VNipYa+99poRFxdn+Pr6Gr179zbWrl3r7pJctnz5cgM4bRo/frxhGFWXEv7f//2fER0dbdhsNmPw4MHGnj173Ft0NZypbYAxa9YsxzonT5407r77bqNBgwZGQECAMXr0aCMtLc19RVfTrbfeasTHxxu+vr5Gw4YNjcGDBzuCjmF4fvvO5Ldhx9PbeN111xmNGjUyfH19jcaNGxvXXXed0/1nPL19p3z55ZdGx44dDZvNZiQkJBjvvPOO03JP/7wxDMP49ttvDeCMdXv6+5ifn2/cc889RlxcnOHn52e0aNHCeOyxx4zS0lLHOu58Dy2G8avbG4qIiIiYjMbsiIiIiKkp7IiIiIipKeyIiIiIqSnsiIiIiKkp7IiIiIipKeyIiIiIqSnsiIiIiKkp7IiIiIipKeyIiEdas2YNVqvV6RlDIiJnojsoi4hHuu222wgKCmLmzJns2bOH2NhYd5ckInWUenZExOMUFhYyb9487rrrLkaOHMns2bOdln/xxRe0bt0aPz8/Bg0axPvvv4/FYuHEiROOdVavXk3//v3x9/enadOm/O1vf6OoqOjCNkRELgiFHRHxOJ988gkJCQm0bduWcePG8d5773Gqk/rgwYNcc801jBo1ii1btjBx4kQee+wxp+3379/PsGHDGDNmDFu3bmXevHmsXr2ayZMnu6M5IlLLdBpLRDzOxRdfzLXXXss999xDRUUFjRo1Yv78+QwcOJBHHnmEr776im3btjnWf/zxx3nuuefIzc0lLCyM2267DavVyttvv+1YZ/Xq1QwYMICioiL8/Pzc0SwRqSXq2RERj7Jnzx7Wr1/P9ddfD4C3tzfXXXcdM2fOdCzv1auX0za9e/d2er1lyxZmz55NUFCQYxo6dCh2u52DBw9emIaIyAXj7e4CRESqY+bMmVRUVDgNSDYMA5vNxuuvv35O+ygsLGTixIn87W9/O21ZXFxcjdUqInWDwo6IeIyKigo++OADXnrpJS677DKnZaNGjeLjjz+mbdu2fP31107Lfv75Z6fX3bt3Z+fOnbRq1arWaxYR99OYHRHxGJ999hnXXXcdmZmZhIaGOi17+OGHWbZsGZ988glt27blvvvuY8KECSQlJXH//fdz9OhRTpw4QWhoKFu3bqVv377ceuut3HbbbQQGBrJz506WLFlyzr1DIuI5NGZHRDzGzJkzGTJkyGlBB2DMmDFs2LCBgoICPv30UxYsWEDnzp156623HFdj2Ww2ADp37szKlSvZu3cv/fv3p1u3bjzxxBO6V4+ISalnR0RM77nnnmPGjBkcOXLE3aWIiBtozI6ImM6bb75Jr169iIiI4Mcff+TFF1/UPXRE6jGFHRExneTkZJ599llycnKIi4vj/vvvZ+rUqe4uS0TcRKexRERExNQ0QFlERERMTWFHRERETE1hR0RERExNYUdERERMTWFHRERETE1hR0RERExNYUdERERMTWFHRERETE1hR0REREzt/wM7a28T0siNxgAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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WIPQ0IauLkNERK7BpWFn0KBBzJo1i++++47ixYvb29j4+fnh4+PDoUOHmDVrFp07d6Z06dJs376doUOHctttt1G3bl0A2rdvT82aNXnooYd4++23iYmJ4ZVXXmHQoEEKNCIiIuLap7EmTZpEfHw8rVu3JjQ01D599dVXAHh6evLLL7/Qvn17qlevznPPPUfPnj35/vvv7cdwd3dn0aJFuLu7ExkZSZ8+fejbt2+mfnlERESk8HL5bazrKVeuHKtWrfrX44SHh7N48WJnlSUiIiIWkq/62RERERFxNoUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0hR0RERGxNIUdERERsTSFHREREbE0l4adcePG0aRJE4oXL05QUBDdunVj3759mbZJSkpi0KBBlC5dmmLFitGzZ09iY2MzbRMVFUWXLl0oWrQoQUFBPP/881y+fDkvT0VERETyKZeGnVWrVjFo0CDWr1/P0qVLSU1NpX379ly4cMG+zdChQ/n++++ZN28eq1at4sSJE/To0cO+Pi0tjS5dupCSksLatWv54osvmD59OqNGjXLFKYmIiEg+U8SVH75kyZJM76dPn05QUBCbN2/mtttuIz4+nqlTpzJr1ixuv/12AKZNm0aNGjVYv349zZo14+eff2b37t388ssvBAcHU79+fV5//XVefPFFXnvtNTw9PV1xaiIiIpJP5Ks2O/Hx8QCUKlUKgM2bN5Oamkq7du3s21SvXp2wsDDWrVsHwLp166hTpw7BwcH2bTp06EBCQgK7du3K9nOSk5NJSEjINImIiIg15Zuwk56ezrPPPkvz5s2pXbs2ADExMXh6euLv759p2+DgYGJiYuzbXBl0MtZnrMvOuHHj8PPzs0/lypVz8tmIiIhIfpFvws6gQYPYuXMnc+bMyfXPGjlyJPHx8fbp2LFjuf6ZIiIi4houbbOTYfDgwSxatIjVq1dTtmxZ+/KQkBBSUlI4d+5cpqs7sbGxhISE2LfZuHFjpuNlPK2Vsc3VvLy88PLycvJZiIiISH7k0is7hmEwePBgFixYwPLly6lQoUKm9Y0aNcLDw4Nly5bZl+3bt4+oqCgiIyMBiIyMZMeOHZw8edK+zdKlSylRogQ1a9bMmxMRERGRfMulV3YGDRrErFmz+O677yhevLi9jY2fnx8+Pj74+fkxYMAAhg0bRqlSpShRogRPP/00kZGRNGvWDID27dtTs2ZNHnroId5++21iYmJ45ZVXGDRokK7eiIiIiGvDzqRJkwBo3bp1puXTpk2jf//+ALz77ru4ubnRs2dPkpOT6dChAx9//LF9W3d3dxYtWsTAgQOJjIzE19eXfv368Z///CevTkNERETyMZeGHcMw/nUbb29vJk6cyMSJE6+5TXh4OIsXL3ZmaSIiImIR+eZpLBEREZHcoLAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIiIpamsCMiIiKWprAjIiIilqawIyIi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hIeHA9b4fZNh2rRpBAUF0aVLF/syK3yPFy9exM0tc6Rwd3cnPT0dyAffYa43gS5E5syZY3h5eRnTp083du/ebTz++OOGv7+/ERMT4+rSHHL+/Hnjjz/+MP744w8DMCZMmGD88ccfxtGjRw3DMB8j9Pf3N7777jtj+/btxt13312gHgUdOHCg4efnZ6xcuTLTI6EXL160b/Pkk08aYWFhxvLly41NmzYZkZGRRmRkpAurzpkRI0YYq1atMo4cOWJs377dGDFihGGz2Yyff/7ZMIyCf37ZufJpLMMo+Of43HPPGStXrjSOHDli/Pbbb0a7du2MgIAA4+TJk4ZhFPzzMwyz24AiRYoYY8eONQ4cOGDMnDnTKFq0qPHll1/atynov28Mw3xCNywszHjxxRezrCvo32O/fv2MW265xf7o+fz5842AgADjhRdesG/jyu9QYcfJPvzwQyMsLMzw9PQ0mjZtaqxfv97VJTlsxYoVBpBl6tevn2EY5qOEr776qhEcHGx4eXkZbdu2Nfbt2+faonMgu3MDjGnTptm3uXTpkvHUU08ZJUuWNIoWLWp0797diI6Odl3ROfTII48Y4eHhhqenpxEYGGi0bdvWHnQMo+CfX3auDjsF/Rx79eplhIaGGp6ensYtt9xi9OrVK1P/MwX9/DJ8//33Ru3atQ0vLy+jevXqxpQpUzKtL+i/bwzDMH766ScDyLbugv49JiQkGEOGDDHCwsIMb29vo2LFisbLL79sJCcn27dx5XdoM4wrujcUERERsRi12RERERFLU9gRERERS1PYEREREUtT2BERERFLU9gRERERS1PYEREREUtT2BERERFLU9gRERERS1PYEZECad26dbi7u2caY0hEJDvqQVlECqRHH32UYsWKMXXqVPbt20eZMmVcXZKI5FO6siMiBU5iYiJfffUVAwcOpEuXLkyfPj3T+oULF1KlShW8vb1p06YNX3zxBTabjXPnztm3WbNmDS1btsTHx4dy5crxzDPPcOHChbw9ERHJEwo7IlLgzJ07l+rVq1OtWjX69OnD559/TsZF6iNHjnDPPffQrVs3tm3bxhNPPMHLL7+caf9Dhw7RsWNHevbsyfbt2/nqq69Ys2YNgwcPdsXpiEgu020sESlwmjdvzn333ceQIUO4fPkyoaGhzJs3j9atWzNixAh++OEHduzYYd/+lVdeYezYsZw9exZ/f38effRR3N3d+eSTT+zbrFmzhlatWnHhwgW8vb1dcVoikkt0ZUdECpR9+/axceNGHnjgAQCKFClCr169mDp1qn19kyZNMu3TtGnTTO+3bdvG9OnTKVasmH3q0KED6enpHDlyJG9ORETyTBFXFyAikhNTp07l8uXLmRokG4aBl5cXH3300Q0dIzExkSeeeIJnnnkmy7qwsDCn1Soi+YPCjogUGJcvX2bGjBm88847tG/fPtO6bt26MXv2bKpVq8bixYszrfv9998zvW/YsCG7d++mcuXKuV6ziLie2uyISIHx7bff0qtXL06ePImfn1+mdS+++CLLly9n7ty5VKtWjaFDhzJgwAC2bt3Kc889x/Hjxzl37hx+fn5s376dZs2a8cgjj/Doo4/i6+vL7t27Wbp06Q1fHRKRgkNtdkSkwJg6dSrt2rXLEnQAevbsyaZNmzh//jxff/018+fPp27dukyaNMn+NJaXlxcAdevWZdWqVezfv5+WLVvSoEEDRo0apb56RCxKV3ZExPLGjh3L5MmTOXbsmKtLEREXUJsdEbGcjz/+mCZNmlC6dGl+++03xo8frz50RAoxhR0RsZwDBw7wxhtvcObMGcLCwnjuuecYOXKkq8sSERfRbSwRERGxNDVQFhEREUtT2BERERFLU9gRERERS1PYEREREUtT2BERERFLU9gRERERS1PYEREREUtT2BERERFLU9gRERERS/t/GCkzT9o2LIMAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.histplot(df['Age'], kde=True, color='purple')\n",
    "plt.title('Before Imputation ')\n",
    "plt.xlabel('Age')\n",
    "plt.ylabel('Frequency')\n",
    "plt.show()\n",
    "\n",
    "sns.histplot(df['age'], kde=True, color='blue')\n",
    "plt.title('After Imputation')\n",
    "plt.xlabel('Age')\n",
    "plt.ylabel('Frequency')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "f8e1edb7-c9d3-4226-a6a1-95b2c9c02d0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['Embarked'].dropna(inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "1eeccbbd-c92a-4a89-9ba0-be3225efc6ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: >"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAigAAAGdCAYAAAA44ojeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzi0lEQVR4nO3dfXRU9b3v8c8kmYQ8MInhYUIkRCQqpkZBFMhVtLUQFGRJjW1VRFROexcGqETAQjlREIsCgsWCHB/xVCmnVMWKVIl4CFgixFB6MCKXxIcoYRIQ80zmIZn7hzf7MiYqQ5KZncz7tRaLmf37zp7fXnuG+fDbe/+2xev1egUAAGAiYcHuAAAAwLcRUAAAgOkQUAAAgOkQUAAAgOkQUAAAgOkQUAAAgOkQUAAAgOkQUAAAgOlEBLsDZ6OlpUUVFRXq3bu3LBZLsLsDAADOgNfrVV1dnZKTkxUW9v1jJN0yoFRUVCglJSXY3QAAAGfhiy++0MCBA7+3plsGlN69e0v6ZgNtNluQe4Ou5na7tX37dmVlZclqtQa7OwA6Ed/v0FJbW6uUlBTjd/z7dMuA0npYx2azEVBCgNvtVkxMjGw2G/+AAT0M3+/QdCanZ3CSLAAAMB0CCgAAMB0CCgAAMB0CCgAAMB0CCgAAMB0CCgAAMB0CCgAAMB0CCgAAMB0CCgAgKE6dOqXZs2froYce0uzZs3Xq1KlgdwkmQkABAATc5MmTFRMTo/Xr1+vAgQNav369YmJiNHny5GB3DSZBQAEABNTkyZP1+uuvKzIyUvPnz9dTTz2l+fPnKzIyUq+//johBZIIKACAADp16pQRTurq6rR06VINGDBAS5cuVV1dnRFSONwDAgoAIGDmzZsnScrNzVVkZKRPW2RkpO677z6fOoQuAgoAIGCOHDkiSfq3f/u3dtunT5/uU4fQRUABAATMBRdcIEl69tln221/7rnnfOoQuggoAICAWbFihSRp1apVcrlcPm0ul0tPPPGETx1CFwEFABAw0dHRuummm+RyudS7d28tXLhQR48e1cKFC9W7d2+5XC7ddNNNio6ODnZXEWR+BZSHHnpIFovF58/QoUON9qamJuXk5KhPnz6Ki4tTdna2KisrfdZRXl6uiRMnKiYmRv3799e8efPk8Xg6Z2sAAKa3ZcsWI6SsXLlSOTk5WrlypRFOtmzZEuwuwgQi/H3Bj370I73zzjv/fwUR/38Vc+bM0ZtvvqnNmzcrPj5eM2fO1M0336x//OMfkqTm5mZNnDhRSUlJ2rNnj44dO6Y777xTVqtVv//97zthcwAA3cGWLVt06tQp5ebm6v3339fo0aO1atUqRk5g8DugREREKCkpqc3ympoaPffcc9q4caOuu+46SdILL7ygiy++2Pjwbd++XR999JHeeecd2e12DRs2TA8//LAeeOABPfTQQ20uOQMA9FzR0dFas2aNtm3bpgkTJshqtQa7SzARv89BOXLkiJKTk3X++edrypQpKi8vlyQVFxfL7XZr7NixRu3QoUM1aNAgFRYWSpIKCwuVkZEhu91u1IwfP161tbUqKSnp6LYAAIAewq8RlFGjRmnDhg266KKLdOzYMS1evFhjxozRhx9+KIfDocjISCUkJPi8xm63y+FwSJIcDodPOGltb237Lk6nU06n03heW1srSXK73XK73f5sArqh1n3MvgZ6Hr7focWf/exXQLnhhhuMx5deeqlGjRql1NRU/eUvf+nS44bLli3T4sWL2yzfvn27YmJiuux9YS75+fnB7gKALsL3OzQ0Njaeca3f56CcLiEhQRdeeKFKS0s1btw4uVwuVVdX+4yiVFZWGuesJCUlad++fT7raL3Kp73zWlotWLBAubm5xvPa2lqlpKQoKytLNputI5uAbsDtdis/P1/jxo3jGDXQw/D9Di2tR0DORIcCSn19vcrKyjR16lSNGDFCVqtVO3bsUHZ2tiTp8OHDKi8vV2ZmpiQpMzNTjzzyiKqqqtS/f39J36Rmm82m9PT073yfqKgoRUVFtVlutVr5QIcQ9jfQc/H9Dg3+7GO/AsrcuXM1adIkpaamqqKiQg8++KDCw8N12223KT4+XtOnT1dubq4SExNls9k0a9YsZWZmavTo0ZKkrKwspaena+rUqVq+fLkcDocWLVqknJycdgMIAAAITX4FlC+//FK33XabvvrqK/Xr109XX3213n//ffXr10+StHr1aoWFhSk7O1tOp1Pjx4/XunXrjNeHh4dr69atmjFjhjIzMxUbG6tp06ZpyZIlnbtVAACgW/MroGzatOl723v16qW1a9dq7dq131mTmpqqbdu2+fO2AAAgxHAvHgAAYDoEFAAAYDoEFAAAYDoEFAAAYDoEFAAAYDoEFAAAYDoEFAAAYDoEFAAA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39XgwYN92keMGCGr1aodO3YYyw4fPqzy8nJlZmZKkjIzM3Xw4EFVVVUZNfn5+bLZbEpPT/enOwAAoIfyawQlJydHGzdu1Ouvv67evXsb54zEx8crOjpa8fHxmj59unJzc5WYmCibzaZZs2YpMzNTo0ePliRlZWUpPT1dU6dO1fLly+VwOLRo0SLl5OS0O0oCAABCj18B5amnnpIk/fjHP/ZZ/sILL+iuu+6SJK1evVphYWHKzs6W0+nU+PHjtW7dOqM2PDxcW7du1YwZM5SZmanY2FhNmzZNS5Ys6diWAACAHsOvgOL1en+wplevXlq7dq3Wrl37nTWpqanatm2bP28NAABCCPfiAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApkNAAQAApuPXvXgAAOgsLpdLTz75pN59912VlpZq1qxZioyMDHa3YBKMoAAAAm7+/PmKjY3V3LlztW3bNs2dO1exsbGaP39+sLsGk2AEBQAQUPPnz9eKFStkt9u1ePFiRUVFyel06sEHH9SKFSskScuXLw9yLxFsjKAAAALG5XJp9erVstvt+vLLL3XPPffonHPO0T333KMvv/xSdrtdq1evlsvlCnZXEWQEFABAwKxbt04ej0dLly5VRITvIH5ERISWLFkij8ejdevWBamHMAsCCgAgYMrKyiRJN954Y7vtrctb6xC6CCgAgIAZMmSIJGnr1q3ttrcub61D6CKgAAAC5t5771VERIQWLVokj8fj0+bxeJSXl6eIiAjde++9QeohzIKAAgAImMjISM2ZM0eVlZU699xzNXbsWC1cuFBjx47Vueeeq8rKSs2ZM4f5UMBlxgCAwFq+fLleffVVlZWVqaqqyqdtyJAhXGIMSYygAAACbPLkyd95EmxZWZkmT54c2A7BlBhBAQAEzKlTp/T6669LkiwWi6ZMmaIRI0aouLhYL7/8srxer15//XWdOnVK0dHRQe4tgokRFABAwMyaNct4XF1drWHDhik/P1/Dhg1TdXV1u3UITRav1+sNdif8VVtbq/j4eNXU1MhmswW7O+hibrdb27Zt04QJE2S1WoPdHQAd0K9fP504cUJDhgzR559/7nMlT0REhAYNGqRPPvlEffv21fHjx4PYU3QFf36/OcQDAAiYlpYWSd+ca9Le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eDxqampSY2OjYmJiJEmRkZG69NJLjdcdPHhQzc3Nbb7LTqdTffr0CczGIGgIKAiaSZMmKTU1Vc8884ySk5PV0tKiSy65RC6X64xeX19fr0mTJumxxx5r0zZgwIDO7i6AMxQbG6u0tDTj+WeffaYbb7xRM2bM0COPPKLExES99957mj59ulwulxFQoqOjZbFYjNfV19crPDxcxcXFCg8P93mP9v5jgp6FgIKg+Oqrr3T48GE988wzGjNmjCTpvffeM9ovuugivfTSS3I6ncZNxIqKinzWcfnll+uVV17Reeedp4gIPsqAWRUXF6ulpUWPP/64cVXOX/7ylx983fDhw9Xc3Kyqqirj3wmEDk6SRVCcc8456tOnj55++mmVlpbq3XffVW5urtF+++23q6WlRb/+9a916NAhvf3221q5cqUkGf/DysnJ0cmTJ3XbbbepqKhIZWVlevvtt3X33Xerubk5KNsFoK20tDS53W49+eST+uSTT/SnP/1J69ev/8HXXXjhhZoyZYruvPNOvfrqq/r000+1b98+LVu2TG+++WYAeo5gIqAgKMLCwrRp0yYVFxfrkksu0Zw5c7RixQqj3Waz6Y033tCBAwc0bNgw/e53v1NeXp4kGeelJCcn6x//+Ieam5uVlZWljIwM3XfffUpISGDuBMBELrvsMq1atUqPPfaYLrnkEr388statmzZGb32hRde0J133qn7779fF110kSZPnqyioiINGjSoi3uNYLN4vV5vsDsBnImXX35Zd999t2pqahQdHR3s7gAAuhAH7mFa//mf/6nzzz9f5557rv71r3/pgQce0C9+8QvCCQCEAAIKTMvhcCgvL08Oh0MDBgzQz3/+cz3yyCPB7hYAIAA4xAMAAEyHMwkBAIDpEFAAAIDpEFAAAIDpEFAAAIDpEFAAAIDpEFAAAIDpEFAAAIDpEFAAAIDpEFAAAIDp/F9zumjzTlTXmAAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df[['age','Fare']].boxplot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "e01e8355-cf2c-4f03-b0e2-69fe6da52e76",
   "metadata": {},
   "outputs": [],
   "source": [
    "le = LabelEncoder()\n",
    "df['Sex']= le.fit_transform(df['Sex'])\n",
    "df['Embarked'] = le.fit_transform(df['Embarked'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7407707f-ec65-4534-8244-dff98f4ea8e2",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_selected = select_feature.transform(X_train)\n",
    "X_test_selected = select_feature.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "35a7c853-c0aa-429e-8863-4cb179d0b687",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = df.iloc[:,1:]\n",
    "y = df.iloc[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "39cbc478-236d-4874-a5fc-489b8de19a80",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=32)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "a72892e4-c6ba-400f-9c54-f567e737bd12",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "\n",
    "# Fit on training data and transform training set\n",
    "X_train[['age', 'Fare']] = scaler.fit_transform(X_train[['age', 'Fare']])\n",
    "\n",
    "# Transform test set using the same scaler\n",
    "X_test[['age', 'Fare']] = scaler.transform(X_test[['age', 'Fare']])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "26e61c11-98f5-4ba7-b881-29c6d7e1a824",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import GridSearchCV\n",
    "\n",
    "rf_params = {\n",
    "    'n_estimators': [50, 100, 200],\n",
    "    'max_depth': [None, 10, 20, 30],\n",
    "    'min_samples_split': [2, 5, 10],\n",
    "    'min_samples_leaf': [1, 2, 4]\n",
    "}\n",
    "\n",
    "logistic_params = {\n",
    "    'C': [0.01, 0.1, 1, 10],\n",
    "    'solver': ['lbfgs', 'liblinear']\n",
    "}\n",
    "dt_params = {\n",
    "    'max_depth': [None, 10, 20, 30],\n",
    "    'min_samples_split': [2, 5, 10],\n",
    "    'min_samples_leaf': [1, 2, 4],\n",
    "    'criterion': ['gini', 'entropy']\n",
    "}\n",
    "\n",
    "svm_params = {\n",
    "    'C': [0.1, 1, 10],\n",
    "    'kernel': ['linear', 'rbf', 'poly'],\n",
    "    'gamma': ['scale', 'auto']\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "94246e70-f157-49eb-a0ad-ebbcf15362e4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Fitting 5 folds for each of 108 candidates, totalling 540 fits\n",
      "Fitting 5 folds for each of 8 candidates, totalling 40 fits\n",
      "Fitting 5 folds for each of 72 candidates, totalling 360 fits\n",
      "Fitting 5 folds for each of 18 candidates, totalling 90 fits\n"
     ]
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.svm import SVC\n",
    "\n",
    "\n",
    "# Random Forest Classification\n",
    "rf_grid = GridSearchCV(estimator=RandomForestClassifier(random_state=42),\n",
    "                       param_grid=rf_params,\n",
    "                       scoring='accuracy',  \n",
    "                       cv=5,  \n",
    "                       verbose=1)\n",
    "rf_grid.fit(X_train, y_train)\n",
    "best_rf_model = rf_grid.best_estimator_  \n",
    "\n",
    "# Logistic Regression\n",
    "logistic_grid = GridSearchCV(estimator=LogisticRegression(random_state=42, max_iter=500),\n",
    "                             param_grid=logistic_params,\n",
    "                             scoring='accuracy',\n",
    "                             cv=5,\n",
    "                             verbose=1)\n",
    "logistic_grid.fit(X_train, y_train)\n",
    "best_logistic_model = logistic_grid.best_estimator_\n",
    "\n",
    "# Decision Tree\n",
    "dt_grid = GridSearchCV(estimator=DecisionTreeClassifier(random_state=42),\n",
    "                       param_grid=dt_params,\n",
    "                       scoring='accuracy',\n",
    "                       cv=5,\n",
    "                       verbose=1)\n",
    "dt_grid.fit(X_train, y_train)\n",
    "best_dt_model = dt_grid.best_estimator_\n",
    "\n",
    "# SVM\n",
    "svm_grid = GridSearchCV(estimator=SVC(probability=True, random_state=42),\n",
    "                        param_grid=svm_params,\n",
    "                        scoring='accuracy',\n",
    "                        cv=5,\n",
    "                        verbose=1)\n",
    "svm_grid.fit(X_train, y_train)\n",
    "best_svm_model = svm_grid.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "63296a39-c048-4d41-bac5-d2533f9bec0a",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_train = pd.read_csv('titanic.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "91e8eb04-7436-40c8-8d5e-c101cf5484cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "df_test = pd.read_csv('titanic.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "3850f700-6748-4d63-923a-7ab5cbd56e07",
   "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": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "14142693-be8d-4307-b655-2cd57275d00c",
   "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": [
    "df_train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "d4c38579-0e2c-4a95-b9a8-4e923b54ed62",
   "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": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.describe(include='number')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e9f0aafd-0f3e-4d5a-987e-9d5565083f64",
   "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>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>204</td>\n",
       "      <td>889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>891</td>\n",
       "      <td>2</td>\n",
       "      <td>681</td>\n",
       "      <td>147</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>347082</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>1</td>\n",
       "      <td>577</td>\n",
       "      <td>7</td>\n",
       "      <td>4</td>\n",
       "      <td>644</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       Name   Sex  Ticket Cabin Embarked\n",
       "count                   891   891     891   204      889\n",
       "unique                  891     2     681   147        3\n",
       "top     Dooley, Mr. Patrick  male  347082    G6        S\n",
       "freq                      1   577       7     4      644"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_train.describe(include='object')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "29d1acd4-2f85-4940-bd70-e826ed8cd087",
   "metadata": {},
   "outputs": [],
   "source": [
    "categorical_columns = ['Survived', 'Pclass', 'Sex', 'Embarked']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "2093a193-fbd4-4adb-95e6-298d0c7c5154",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define a list containing the names of categorical features in our dataset\n",
    "Cat_Features = ['Pclass','Sex','Embarked','Title']\n",
    "\n",
    "# Define the target name as a variable for simplicity\n",
    "Target = 'Survived'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "7f9e2768-eb1c-4c7d-aa53-b17883534935",
   "metadata": {},
   "outputs": [],
   "source": [
    "def tune_hyperparameters(clf, param_grid, X_train, y_train):\n",
    "    \"\"\"\n",
    "    This function tunes the hyperparameters of a classifier using GridSearchCV and cross-validation\n",
    "    and returns the best classifier model with the optimal hyperparameters.\n",
    "    \"\"\"\n",
    "    \n",
    "    # Create the cross-validation object using StratifiedKFold to ensure the class distribution is the same across all the folds\n",
    "    cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=0)\n",
    "\n",
    "    # Create the GridSearchCV object\n",
    "    clf_grid = GridSearchCV(clf, param_grid, cv=cv, scoring='accuracy', n_jobs=-1)\n",
    "\n",
    "    # Fit the GridSearchCV object to the training data\n",
    "    clf_grid.fit(X_train, y_train)\n",
    "\n",
    "    # Get the best hyperparameters\n",
    "    print(\"Best hyperparameters:\\n\", clf_grid.best_params_)\n",
    "     # Return best_estimator_ attribute which gives us the best model that has been fitted to the training data\n",
    "    return clf_grid.best_estimator_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "15debc1c-c12f-49d7-ab6f-726b90ee7c67",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the hyperparameter grid to search\n",
    "xgb_param_grid = {\n",
    "    'max_depth': [5, 6, 7],\n",
    "    'learning_rate': [0.04, 0.05, 0.06],\n",
    "    'n_estimators': [150, 200, 250],\n",
    "    'min_child_weight': [2, 3, 4],\n",
    "    'scale_pos_weight': [0.2, 0.5, 0.8],\n",
    "    'subsample': [0.8, 0.9, 1],  \n",
    "    'colsample_bytree': [0.3, 0.5, 0.8],\n",
    "    'colsample_bylevel': [0.7, 0.8, 0.9], \n",
    "    'reg_alpha': [0.01, 0.05, 0.1],  \n",
    "    'reg_lambda': [0.05, 0.1, 0.2], \n",
    "    'max_delta_step': [1, 2, 3],    \n",
    "    'gamma': [0, 0.1, 0.2]\n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "0c59c268-f9fa-4f46-bcc9-de10ecc47d61",
   "metadata": {},
   "outputs": [],
   "source": [
    "#data analysis libraries \n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "#visualization libraries\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "\n",
    "#ignore warnings\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "0462cc86-08cf-4b4a-a829-1ef7416887c2",
   "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>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>204</td>\n",
       "      <td>889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>891</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>681</td>\n",
       "      <td>NaN</td>\n",
       "      <td>147</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>347082</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>577</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>644</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32.204208</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>NaN</td>\n",
       "      <td>49.693429</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.910400</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        PassengerId    Survived      Pclass                 Name   Sex  \\\n",
       "count    891.000000  891.000000  891.000000                  891   891   \n",
       "unique          NaN         NaN         NaN                  891     2   \n",
       "top             NaN         NaN         NaN  Dooley, Mr. Patrick  male   \n",
       "freq            NaN         NaN         NaN                    1   577   \n",
       "mean     446.000000    0.383838    2.308642                  NaN   NaN   \n",
       "std      257.353842    0.486592    0.836071                  NaN   NaN   \n",
       "min        1.000000    0.000000    1.000000                  NaN   NaN   \n",
       "25%      223.500000    0.000000    2.000000                  NaN   NaN   \n",
       "50%      446.000000    0.000000    3.000000                  NaN   NaN   \n",
       "75%      668.500000    1.000000    3.000000                  NaN   NaN   \n",
       "max      891.000000    1.000000    3.000000                  NaN   NaN   \n",
       "\n",
       "               Age       SibSp       Parch  Ticket        Fare Cabin Embarked  \n",
       "count   714.000000  891.000000  891.000000     891  891.000000   204      889  \n",
       "unique         NaN         NaN         NaN     681         NaN   147        3  \n",
       "top            NaN         NaN         NaN  347082         NaN    G6        S  \n",
       "freq           NaN         NaN         NaN       7         NaN     4      644  \n",
       "mean     29.699118    0.523008    0.381594     NaN   32.204208   NaN      NaN  \n",
       "std      14.526497    1.102743    0.806057     NaN   49.693429   NaN      NaN  \n",
       "min       0.420000    0.000000    0.000000     NaN    0.000000   NaN      NaN  \n",
       "25%      20.125000    0.000000    0.000000     NaN    7.910400   NaN      NaN  \n",
       "50%      28.000000    0.000000    0.000000     NaN   14.454200   NaN      NaN  \n",
       "75%      38.000000    1.000000    0.000000     NaN   31.000000   NaN      NaN  \n",
       "max      80.000000    8.000000    6.000000     NaN  512.329200   NaN      NaN  "
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#import train and test CSV files\n",
    "train = pd.read_csv(\"titanic.csv\")\n",
    "test = pd.read_csv(\"titanic.csv\")\n",
    "\n",
    "#take a look at the training data\n",
    "train.describe(include=\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "db24dccb-038a-457f-bc68-536801966a1d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n",
      "       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n",
      "      dtype='object')\n"
     ]
    }
   ],
   "source": [
    "#get a list of the features within the dataset\n",
    "print(train.columns)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "198ecdd9-abf9-41bf-86d8-64d9a33328dc",
   "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>305</th>\n",
       "      <td>306</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Allison, Master. Hudson Trevor</td>\n",
       "      <td>male</td>\n",
       "      <td>0.92</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>113781</td>\n",
       "      <td>151.5500</td>\n",
       "      <td>C22 C26</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>492</th>\n",
       "      <td>493</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Molson, Mr. Harry Markland</td>\n",
       "      <td>male</td>\n",
       "      <td>55.00</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>113787</td>\n",
       "      <td>30.5000</td>\n",
       "      <td>C30</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>295</th>\n",
       "      <td>296</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>Lewy, Mr. Ervin G</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17612</td>\n",
       "      <td>27.7208</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>448</th>\n",
       "      <td>449</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Baclini, Miss. Marie Catherine</td>\n",
       "      <td>female</td>\n",
       "      <td>5.00</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>2666</td>\n",
       "      <td>19.2583</td>\n",
       "      <td>NaN</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>70</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Kink, Mr. Vincenz</td>\n",
       "      <td>male</td>\n",
       "      <td>26.00</td>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "      <td>315151</td>\n",
       "      <td>8.6625</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived  Pclass                            Name     Sex  \\\n",
       "305          306         1       1  Allison, Master. Hudson Trevor    male   \n",
       "492          493         0       1      Molson, Mr. Harry Markland    male   \n",
       "295          296         0       1               Lewy, Mr. Ervin G    male   \n",
       "448          449         1       3  Baclini, Miss. Marie Catherine  female   \n",
       "69            70         0       3               Kink, Mr. Vincenz    male   \n",
       "\n",
       "       Age  SibSp  Parch    Ticket      Fare    Cabin Embarked  \n",
       "305   0.92      1      2    113781  151.5500  C22 C26        S  \n",
       "492  55.00      0      0    113787   30.5000      C30        S  \n",
       "295    NaN      0      0  PC 17612   27.7208      NaN        C  \n",
       "448   5.00      2      1      2666   19.2583      NaN        C  \n",
       "69   26.00      2      0    315151    8.6625      NaN        S  "
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#see a sample of the dataset to get an idea of the variables\n",
    "train.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "daa599e4-70b2-41c9-a637-3d949605daee",
   "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>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891</td>\n",
       "      <td>891</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>204</td>\n",
       "      <td>889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>891</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>681</td>\n",
       "      <td>NaN</td>\n",
       "      <td>147</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>347082</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>577</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>644</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32.204208</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>NaN</td>\n",
       "      <td>49.693429</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.910400</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        PassengerId    Survived      Pclass                 Name   Sex  \\\n",
       "count    891.000000  891.000000  891.000000                  891   891   \n",
       "unique          NaN         NaN         NaN                  891     2   \n",
       "top             NaN         NaN         NaN  Dooley, Mr. Patrick  male   \n",
       "freq            NaN         NaN         NaN                    1   577   \n",
       "mean     446.000000    0.383838    2.308642                  NaN   NaN   \n",
       "std      257.353842    0.486592    0.836071                  NaN   NaN   \n",
       "min        1.000000    0.000000    1.000000                  NaN   NaN   \n",
       "25%      223.500000    0.000000    2.000000                  NaN   NaN   \n",
       "50%      446.000000    0.000000    3.000000                  NaN   NaN   \n",
       "75%      668.500000    1.000000    3.000000                  NaN   NaN   \n",
       "max      891.000000    1.000000    3.000000                  NaN   NaN   \n",
       "\n",
       "               Age       SibSp       Parch  Ticket        Fare Cabin Embarked  \n",
       "count   714.000000  891.000000  891.000000     891  891.000000   204      889  \n",
       "unique         NaN         NaN         NaN     681         NaN   147        3  \n",
       "top            NaN         NaN         NaN  347082         NaN    G6        S  \n",
       "freq           NaN         NaN         NaN       7         NaN     4      644  \n",
       "mean     29.699118    0.523008    0.381594     NaN   32.204208   NaN      NaN  \n",
       "std      14.526497    1.102743    0.806057     NaN   49.693429   NaN      NaN  \n",
       "min       0.420000    0.000000    0.000000     NaN    0.000000   NaN      NaN  \n",
       "25%      20.125000    0.000000    0.000000     NaN    7.910400   NaN      NaN  \n",
       "50%      28.000000    0.000000    0.000000     NaN   14.454200   NaN      NaN  \n",
       "75%      38.000000    1.000000    0.000000     NaN   31.000000   NaN      NaN  \n",
       "max      80.000000    8.000000    6.000000     NaN  512.329200   NaN      NaN  "
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#see a summary of the training dataset\n",
    "train.describe(include = \"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "b7b29ce4-6704-4faa-8d36-75ae198274c9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PassengerId      0\n",
      "Survived         0\n",
      "Pclass           0\n",
      "Name             0\n",
      "Sex              0\n",
      "Age            177\n",
      "SibSp            0\n",
      "Parch            0\n",
      "Ticket           0\n",
      "Fare             0\n",
      "Cabin          687\n",
      "Embarked         2\n",
      "dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#check for any other unusable values\n",
    "print(pd.isnull(train).sum())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "fef4c42d-adf0-47a1-818a-417bfc64c3f7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percentage of females who survived: 74.20382165605095\n",
      "Percentage of males who survived: 18.890814558058924\n"
     ]
    }
   ],
   "source": [
    "#draw a bar plot of survival by sex\n",
    "sns.barplot(x=\"Sex\", y=\"Survived\", data=train)\n",
    "\n",
    "#print percentages of females vs. males that survive\n",
    "print(\"Percentage of females who survived:\", train[\"Survived\"][train[\"Sex\"] == 'female'].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of males who survived:\", train[\"Survived\"][train[\"Sex\"] == 'male'].value_counts(normalize = True)[1]*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "5076f918-3c96-40c3-9bcf-1caa88f7a376",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percentage of Pclass = 1 who survived: 62.96296296296296\n",
      "Percentage of Pclass = 2 who survived: 47.28260869565217\n",
      "Percentage of Pclass = 3 who survived: 24.236252545824847\n"
     ]
    }
   ],
   "source": [
    "#draw a bar plot of survival by Pclass\n",
    "sns.barplot(x=\"Pclass\", y=\"Survived\", data=train)\n",
    "\n",
    "#print percentage of people by Pclass that survived\n",
    "print(\"Percentage of Pclass = 1 who survived:\", train[\"Survived\"][train[\"Pclass\"] == 1].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of Pclass = 2 who survived:\", train[\"Survived\"][train[\"Pclass\"] == 2].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of Pclass = 3 who survived:\", train[\"Survived\"][train[\"Pclass\"] == 3].value_counts(normalize = True)[1]*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "3d50110a-1512-47e7-90f8-6dafcaf3701e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percentage of SibSp = 0 who survived: 34.53947368421053\n",
      "Percentage of SibSp = 1 who survived: 53.588516746411486\n",
      "Percentage of SibSp = 2 who survived: 46.42857142857143\n"
     ]
    }
   ],
   "source": [
    "#draw a bar plot for SibSp vs. survival\n",
    "sns.barplot(x=\"SibSp\", y=\"Survived\", data=train)\n",
    "\n",
    "#I won't be printing individual percent values for all of these.\n",
    "print(\"Percentage of SibSp = 0 who survived:\", train[\"Survived\"][train[\"SibSp\"] == 0].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of SibSp = 1 who survived:\", train[\"Survived\"][train[\"SibSp\"] == 1].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of SibSp = 2 who survived:\", train[\"Survived\"][train[\"SibSp\"] == 2].value_counts(normalize = True)[1]*100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "4082394a-bc61-4efe-8845-b337b48c96d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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apQSExMlSenp6VqxYoUyMjI0derUM47PyMjQzz//rI0bN6pu3bqSpKioqOosGbXIiRLHOdsAai/Lsjz2nwUFBcnh4Pc4flXucHP77beXe9B//OMf5z2muLhYOTk5Sk5Odvf5+fkpLi5O2dnZZZ7zz3/+UzExMRozZoyWL1+uJk2a6J577tGUKVPk7+9f5jlFRUUqKipytwsLC8s9DwBAzeRyuTRgwAB3e/ny5QoODraxItQk5Q43oaGh7l9blqV33nlHoaGhio6OliTl5OTo0KFD5Q5BBw8eVElJicLDwz36w8PD9fXXX5d5zrfffqt///vfuvfee7Vy5Urt2rVLo0eP1smTJ5WSklLmOampqZoxY0a5agJwpnW9Yys9xglJqvv7Hzcf9e2nwEqPKsWuX+eDUQCYptzh5uWXX3b/esqUKbrrrruUnp7uXjEpKSnR6NGj1aBBA99X+f9KS0vVtGlTzZ8/X/7+/urWrZv27t2rZ5555qzhJjk5WUlJSe52YWGhIiMjq6xGAABgL6/23GRkZGjDhg0el4L8/f2VlJSknj176plnnjnvGGFhYfL391dBQYFHf0FBgSIiIso8p1mzZqpbt67H51555ZXKz89XcXGxAgICzjjH6XTK6XSWd2oAAKCW8+pW8FOnTpV56ejrr79WaWn5nrocEBCgbt26KTMz091XWlqqzMxMxcTElHlOr169tGvXLo/P2Llzp5o1a1ZmsAEAABcer1ZuEhMTNXLkSO3evVvdu3eXJH3yySeaNWuW+86n8khKSlJCQoKio6PVvXt3paWlyeVyuccYMWKEWrRoodTUVEnSQw89pBdeeEHjx4/XuHHj9M0332jmzJn685//7M00AACAgbwKN3/5y18UERGhOXPmaN++fZJ+vWQ0adIk/dd//Ve5xxkyZIgOHDigadOmKT8/X507d9aqVavcm4zz8vLk5/f74lJkZKRWr16tCRMmqGPHjmrRooXGjx+vKVOmeDMNAABgIK/CjZ+fnyZPnqzJkye7b632diPx2LFjNXbs2DLfy8rKOqMvJiZGH3/8sVefBQAAzOf14xdOnTql999/X2+88Yb7i5N+/PFHHT161GfFAQAAVJRXKzc//PCDbrnlFuXl5amoqEg333yzQkJCNHv2bBUVFSk9Pd3XdQIAAJSLVys348ePV3R0tH755RfVq1fP3T9o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a8uWLZo/f76d0wAAADWE7eFmyJAhOnDggKZNm6b8/Hx17txZq1atcm8azsvLk5/f7wtMPXv21KJFi/TYY4/pkUce0eWXX65ly5apffv2dk3hDE6nUykpKWdcDqttTJiHCXOQzJiHCXOQmEdNYsIcJDPmUdPm4LDKc08VAABALWH7l/gBAAD4EuEGAAAYhXADAACMQripRvfdd58GDhzo83Ety9KDDz6oxo0by+FwKDc31+efUR7ff/+9rZ8PAIBEuDHCqlWr9Morr+jdd9/Vvn37atSdY3ZZv369+vfvr+bNm8vhcJz12WM1XWpqqq6++mqFhISoadOmGjhwoHbs2GF3WRXy4osvqmPHju4v94qJidF7771nd1lemzdvnqKiohQYGKgePXpo06ZNdpfktVmzZsnhcOjhhx+2u5QKmT59uhwOh8erbdu2dpdVISUlJXr88cd18cUXq169err00kv15JNPluu5STXN3r17NWzYMF100UWqV6+eOnTooC1btthaE+HGALt371azZs3Us2dPRUREqE4d2+/wt53L5VKnTp00b948u0uplHXr1mnMmDH6+OOPtXbtWp08eVJ9+vSRy+Wyu7Rya9mypWbNmqWcnBxt2bJFN954owYMGKAvvvjC7tIqbMmSJUpKSlJKSoq2bt2qTp06KT4+Xvv377e7tArbvHmzXnrpJXXs2NHuUrxy1VVXad++fe7Xhg0b7C6pQmbPnq0XX3xRL7zwgr766ivNnj1bTz/9tJ5//nm7S6uQX375Rb169VLdunX13nvv6csvv9ScOXPUqFEjewuzUKbY2Fhr7Nix1vjx462GDRtaTZs2tebPn28dPXrUuu+++6zg4GDr0ksvtVauXGlZlmWdOnXKuv/++62oqCgrMDDQatOmjZWWluYxZkJCgjVgwAB3u6SkxJo5c6b7nI4dO1pvvvlmhepMSEiwJLlfrVu3Pu+4H3zwgSXJWrVqldW5c2crMDDQuuGGG6yCggJr5cqVVtu2ba2QkBBr6NChlsvlcp/33nvvWb169bJCQ0Otxo0bW/369bN27drlfv+7776zJFmffvqpu2/79u3WLbfcYgUFBVlNmza1hg0bZh04cKBCc6wsSdY777xTrZ9ZVfbv329JstatW2d3KZXSqFEja+HChXaXUWHdu3e3xowZ426XlJRYzZs3t1JTU22squKOHDliXX755dbatWut2NhYa/z48XaXVCEpKSlWp06d7C6jUvr162fdf//9Hn233367de+999pUkXemTJliXXvttXaXcQZWbs7h1VdfVVhYmDZt2qRx48bpoYce0uDBg9WzZ09t3bpVffr00fDhw3Xs2DGVlpaqZcuWevPNN/Xll19q2rRpeuSRR7R06dKzjp+amqrXXntN6enp+uKLLzRhwgQNGzZM69atK3eNzz33nJ544gm1bNlS+/bt0+bNm8s97vTp0/XCCy9o48aN2rNnj+666y6lpaVp0aJFWrFihdasWePxrwiXy6WkpCRt2bJFmZmZ8vPz06BBg1RaWlpmbYcOHdKNN96oLl26aMuWLVq1apUKCgp01113lXt+8HT48GFJUuPGjW2uxDslJSVavHixXC5XrXtkSnFxsXJychQXF+fu8/PzU1xcnLKzs22srOLGjBmjfv36ecyltvnmm2/UvHlzXXLJJbr33nuVl5dnd0kV0rNnT2VmZmrnzp2SpG3btmnDhg269dZbba6sYv75z38qOjpagwcPVtOmTdWlSxctWLDA7rJYuTmb2NhYjzR66tQpKygoyBo+fLi7b9++fZYkKzs7u8wxxowZY91xxx3u9ukrNydOnLDq169vbdy40eOckSNHWkOHDq1Qrc8++6zVunXrco/728rN+++/734/NTXVkmTt3r3b3fef//mfVnx8/Fk/98CBA5Yka/v27ZZlnbly8+STT1p9+vTxOGfPnj2WJGvHjh0VmmNlyJCVm5KSEqtfv35Wr1697C6lwj777DMrKCjI8vf3t0JDQ60VK1bYXVKF7d2715J0xu+tSZMmWd27d7epqop74403rPbt21vHjx+3LMuqlSs3K1eutJYuXWpt27bNWrVqlRUTE2O1atXKKiwstLu0cispKbGmTJliORwOq06dOpbD4bBmzpxpd1kV5nQ6LafTaSUnJ1tbt261XnrpJSswMNB65ZVXbK2LzRnncPq1aH9/f1100UXq0KGDu++3R0T8dr193rx5ysjIUF5eno4fP67i4mJ17ty5zLF37dqlY8eO6eabb/boLy4uVpcuXbyuuSLjnj6/8PBw1a9fX5dccolH3+mbJb/55htNmzZNn3zyiQ4ePOhescnLyytzE/O2bdv0wQcfKDg4+Iz3du/erTZt2ng3yQvUmDFj9Pnnn9e6vQWSdMUVVyg3N1eHDx/WW2+9pYSEBK1bt07t2rWzu7QLyp49ezR+/HitXbtWgYGBdpfjtdNXNzp27KgePXqodevWWrp0qUaOHGljZeW3dOlSvf7661q0aJGuuuoq5ebm6uGHH1bz5s2VkJBgd3nlVlpaqujoaM2cOVOS1KVLF33++edKT0+3dR6Em3OoW7euR9vhcHj0ORwOSb/+cBcvXqyJEydqzpw5iomJUUhIiJ555hl98sknZY599OhRSdKKFSvUokULj/cq82yOioz7x7mUNd/TLzn1799frVu31oIFC9S8eXOVlpaqffv2Ki4uPmst/fv31+zZs894r1mzZhWb2AVu7Nixevfdd7V+/Xq1bNnS7nIqLCAgQJdddpkkqVu3btq8ebOee+45vfTSSzZXVn5hYWHy9/dXQUGBR39BQYEiIiJsqqpicnJytH//fnXt2tXdV1JSovXr1+uFF15QUVGR/P39bazQOw0bNlSbNm20a9cuu0spt0mTJmnq1Km6++67JUkdOnTQDz/8oNTU1FoVbpo1a3bGP1KuvPJKvf322zZV9CvCjY989NFH6tmzp0aPHu3u271791mPb9eunZxOp/Ly8hQbG+uzOqpq3J9++kk7duzQggULdN1110nSeVcQunbtqrfffltRUVHcweUly7I0btw4vfPOO8rKytLFF19sd0k+UVpaqqKiIrvLqJCAgAB169ZNmZmZ7u+rKi0tVWZmpsaOHWtvceV00003afv27R59iYmJatu2raZMmVIrg4306z+kdu/ereHDh9tdSrkdO3bM46HQ0q9XCM62h7Gm6tWr1xlfT7Fz5061bt3apop+xd84PnL55Zfrtdde0+rVq3XxxRfrf/7nf7R58+az/mUUEhKiiRMnasKECSotLdW1116rw4cP66OPPlKDBg28Tu5VNW6jRo100UUXaf78+WrWrJny8vI0derUc54zZswYLViwQEOHDtXkyZPVuHFj7dq1S4sXL9bChQur9A/So0ePevwr7rvvvlNubq4aN26sVq1aVdnn+tqYMWO0aNEiLV++XCEhIcrPz5ckhYaGql69ejZXVz7Jycm69dZb1apVKx05ckSLFi1SVlaWVq9ebXdpFZaUlKSEhARFR0ere/fuSktLk8vlUmJiot2llUtISMgZl5CDgoJ00UUX1arvx5o4caJ7JfnHH39USkqK/P39NXToULtLK7f+/fvrqaeeUqtWrXTVVVfp008/1dy5c3X//ffbXVqFTJgwQT179tTMmTN11113adOmTZo/f77mz59vb2G27vipwcraZNe6dWvr2Wef9ejT/29WPXHihHXfffdZoaGhVsOGDa2HHnrImjp1qsftin+8Fby0tNRKS0uzrrjiCqtu3bpWkyZNrPj4+Arf5nv6huLyjPvbhuJffvnFfc7LL79shYaGeoz7x9st165da1155ZWW0+m0OnbsaGVlZXls1i3rVvCdO3dagwYNsho2bGjVq1fPatu2rfXwww9bpaWlFZpjRf02xz++EhISqvRzfa2sOUiyXn75ZbtLK7f777/fat26tRUQEGA1adLEuummm6w1a9bYXZbXnn/+eatVq1ZWQECA1b17d+vjjz+2u6RKqY0biocMGWI1a9bMCggIsFq0aGENGTLE42spaoPCwkJr/PjxVqtWrazAwEDrkksusR599FGrqKjI7tIq7F//+pfVvn17y+l0Wm3btrXmz59vd0mWw7Jq4dchAgAAnAXfcwMAAIxCuAEAAEYh3AAAAKMQbgAAgFEINwAAwCiEGwAAYBTCDQAAMArhBgAAGIVwAwAAjEK4AVArHDhwQA899JBatWolp9OpiIgIxcfH66OPPrK7NAA1DA/OBFAr3HHHHSouLtarr76qSy65RAUFBcrMzNRPP/1kd2kAahhWbgDUeIcOHdKHH36o2bNn64YbblDr1q3VvXt3JScn67bbbnMf88ADD6hJkyZq0KCBbrzxRm3btk3Sr6s+ERERmjlzpnvMjRs3KiAgQJmZmbbMCUDVIdwAqPGCg4MVHBysZcuWqaioqMxjBg8erP379+u9995TTk6Ounbtqptuukk///yzmjRpooyMDE2fPl1btmzRkSNHNHz4cI0dO1Y33XRTNc8GQFXjqeAAaoW3335bo0aN0vHjx9W1a1fFxsbq7rvvVseOHbVhwwb169dP+/fvl9PpdJ9z2WWXafLkyXrwwQclSWPGjNH777+v6Ohobd++XZs3b/Y4HoAZCDcAao0TJ07oww8/1Mcff6z33ntPmzZt0sKFC+VyufTnP/9Z9erV8zj++PHjmjhxombPnu1ut2/fXnv27FFOTo46dOhgxzQAVDHCDYBa64EHHtDatWs1evRoPf/888rKyjrjmIYNGyosLEyS9Pnnn+vqq6/WyZMn9c4776h///7VXDGA6sDdUgBqrXbt2mnZsmXq2rWr8vPzVadOHUVFRZV5bHFxsYYNG6YhQ4boiiuu0AMPPKDt27eradOm1Vs0gCrHyg2AGu+nn37S4MGDdf/996tjx44KCQnRli1bNG7cOPXr108LFy5U7969deTIET399NNq06aNfvzxR61YsUKDBg1SdHS0Jk2apLfeekvbtm1TcHCwYmNjFRoaqnfffdfu6QHwMcINgBqvqKhI06dP15o1a7R7926dPHlSkZGRGjx4sB555BHVq1dPR44c0aOPPqq3337bfet37969lZqaqt27d+vmm2/WBx98oGuvvVaS9P3336tTp06aNWuWHnroIZtnCMCXCDcAAMAofM8NAAAwCuEGAAAYhXADAACMQrgBAABGIdwAAACjEG4AAIBRCDcAAMAohBsAAGAUwg0AADAK4QYAABiFcAMAAIzyf8xtg09Ai9QrAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#draw a bar plot for Parch vs. survival\n",
    "sns.barplot(x=\"Parch\", y=\"Survived\", data=train)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "81938063-8a5d-4304-8064-d2fd71a1d19f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGwCAYAAABVdURTAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDLUlEQVR4nO3de1wWdd7/8fcFclAQPKCghnLn2S0lDxB2l1YYrlbadiCzhbjNbVXSls0Da0oeCssTtZm2BmqliW2lbpa5N3eUp2I9oRXiIU1LQU0FwQKF7++Pfl51BSogcOH4ej4e83g4M9+Z+cx1zXXxduY719iMMUYAAAAW4eLsAgAAAKoT4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFhKPWcXUNtKS0t15MgRNWzYUDabzdnlAACACjDG6MyZM2rZsqVcXC59buaaCzdHjhxRYGCgs8sAAABVcPjwYV133XWXbHPNhZuGDRtK+vnF8fHxcXI1AACgIvLz8xUYGGj/O34p11y4uXApysfHh3ADAMBVpiJdSuhQDAAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALIVwAwAALOWaeyo4apcxRoWFhfZxLy+vCj3RFQCAqiLcoEYVFhZq0KBB9vFVq1bJ29vbiRUBAKyOy1IAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSCDcAAMBSnB5u5s2bp6CgIHl6eio0NFQZGRmXbJ+UlKSOHTuqfv36CgwM1F/+8hf99NNPtVQtAACo65wablJTUxUXF6eEhARt27ZN3bp1U0REhI4dO1Zu+2XLlmnChAlKSEhQVlaWkpOTlZqaqr/97W+1XDkAAKirnBpu5syZo+HDhysmJkZdunTRggUL1KBBA6WkpJTbftOmTbrlllv0yCOPKCgoSHfddZeGDBly2bM9AADg2uG0cFNcXKytW7cqPDz8l2JcXBQeHq7NmzeXu0zv3r21detWe5j55ptv9OGHH2rAgAEX3U5RUZHy8/MdBgAAYF31nLXhEydOqKSkRP7+/g7T/f39tXv37nKXeeSRR3TixAn993//t4wxOn/+vP785z9f8rJUYmKipkyZUq21AwCAusvpHYorIz09Xc8//7xeffVVbdu2Te+9957WrFmjadOmXXSZ+Ph45eXl2YfDhw/XYsUAAKC2Oe3MjZ+fn1xdXZWbm+swPTc3VwEBAeUuM2nSJP3xj3/U448/Lkm68cYbVVhYqD/96U+aOHGiXFzKZjUPDw95eHhU/w4AAIA6yWlnbtzd3dWjRw+lpaXZp5WWliotLU1hYWHlLnP27NkyAcbV1VWSZIypuWIBAMBVw2lnbiQpLi5O0dHR6tmzp0JCQpSUlKTCwkLFxMRIkqKiotSqVSslJiZKku655x7NmTNHN910k0JDQ7Vv3z5NmjRJ99xzjz3kAACAa5tTw01kZKSOHz+uyZMnKycnR8HBwVq7dq29k/GhQ4ccztQ888wzstlseuaZZ/T999+rWbNmuueee/Tcc885axcAAEAdYzPX2PWc/Px8+fr6Ki8vTz4+Ps4ux/IKCgo0aNAg+/iqVavk7e3txIoAAFejyvz9vqrulgIAALgcwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALCUOhFu5s2bp6CgIHl6eio0NFQZGRkXbdu3b1/ZbLYyw8CBA2uxYgAAUFc5PdykpqYqLi5OCQkJ2rZtm7p166aIiAgdO3as3Pbvvfeejh49ah++/PJLubq66sEHH6zlygEAQF1kM8YYZxYQGhqqXr166ZVXXpEklZaWKjAwUE8++aQmTJhw2eWTkpI0efJkHT16VF5eXpdtn5+fL19fX+Xl5cnHx+eK67eCHmPfqLF1284Xy3fn2/bxvK5DZOq518i2ts6MqpH1AgCcrzJ/v5165qa4uFhbt25VeHi4fZqLi4vCw8O1efPmCq0jOTlZDz/88EWDTVFRkfLz8x0GAABgXU4NNydOnFBJSYn8/f0dpvv7+ysnJ+eyy2dkZOjLL7/U448/ftE2iYmJ8vX1tQ+BgYFXXDcAAKi7nN7n5kokJyfrxhtvVEhIyEXbxMfHKy8vzz4cPny4FisEAAC1rZ4zN+7n5ydXV1fl5uY6TM/NzVVAQMAlly0sLNTy5cs1derUS7bz8PCQh4fHFdcKAACuDk49c+Pu7q4ePXooLS3NPq20tFRpaWkKCwu75LLvvPOOioqK9Oijj9Z0mQAA4Cri1DM3khQXF6fo6Gj17NlTISEhSkpKUmFhoWJiYiRJUVFRatWqlRITEx2WS05O1uDBg9W0aVNnlA0AAOoop4ebyMhIHT9+XJMnT1ZOTo6Cg4O1du1aeyfjQ4cOycXF8QRTdna2NmzYoHXr1jmjZAAAUIc5PdxIUmxsrGJjY8udl56eXmZax44d5eSf5wEAAHXUVX23FAAAwG8RbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKU4PdzMmzdPQUFB8vT0VGhoqDIyMi7Z/vTp0xo1apRatGghDw8PdejQQR9++GEtVQsAAOq6es7ceGpqquLi4rRgwQKFhoYqKSlJERERys7OVvPmzcu0Ly4uVr9+/dS8eXP985//VKtWrfTtt9+qUaNGtV88AACok5wabubMmaPhw4crJiZGkrRgwQKtWbNGKSkpmjBhQpn2KSkpOnnypDZt2iQ3NzdJUlBQUG2WDAAA6jinXZYqLi7W1q1bFR4e/ksxLi4KDw/X5s2by11m9erVCgsL06hRo+Tv768bbrhBzz//vEpKSi66naKiIuXn5zsMAADAupwWbk6cOKGSkhL5+/s7TPf391dOTk65y3zzzTf65z//qZKSEn344YeaNGmSZs+erenTp190O4mJifL19bUPgYGB1bofAACgbnF6h+LKKC0tVfPmzfWPf/xDPXr0UGRkpCZOnKgFCxZcdJn4+Hjl5eXZh8OHD9dixQAAoLY5rc+Nn5+fXF1dlZub6zA9NzdXAQEB5S7TokULubm5ydXV1T6tc+fOysnJUXFxsdzd3css4+HhIQ8Pj+otHgAA1FlOO3Pj7u6uHj16KC0tzT6ttLRUaWlpCgsLK3eZW265Rfv27VNpaal92p49e9SiRYtygw0AALj2OPWyVFxcnBYuXKglS5YoKytLI0aMUGFhof3uqaioKMXHx9vbjxgxQidPntSYMWO0Z88erVmzRs8//7xGjRrlrF0AAAB1jFNvBY+MjNTx48c1efJk5eTkKDg4WGvXrrV3Mj506JBcXH7JX4GBgfr444/1l7/8RV27dlWrVq00ZswYjR8/3lm7AAAA6hinhhtJio2NVWxsbLnz0tPTy0wLCwvT559/XsNVAQCAq9VVdbcUAADA5RBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApTj9d24AKzLGqLCw0D7u5eUlm83mxIoA4NpBuEGNMq5uyus6xGH8WlBYWKhBgwbZx1etWiVvb28nVgQA1w7CDWqWzSZTj4eaXis4YwWgLiDcAKg2nLECUBfQoRgAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFhKnQg38+bNU1BQkDw9PRUaGqqMjIyLtl28eLFsNpvD4OnpWYvVAgCAuqxeRRv+4Q9/qPBK33vvvQq3TU1NVVxcnBYsWKDQ0FAlJSUpIiJC2dnZat68ebnL+Pj4KDs72z5us9kqvD0AAGBtFT5z4+vrax98fHyUlpamLVu22Odv3bpVaWlp8vX1rVQBc+bM0fDhwxUTE6MuXbpowYIFatCggVJSUi66jM1mU0BAgH3w9/e/aNuioiLl5+c7DAAAwLoqfOZm0aJF9n+PHz9eDz30kBYsWCBXV1dJUklJiUaOHCkfH58Kb7y4uFhbt25VfHy8fZqLi4vCw8O1efPmiy5XUFCgNm3aqLS0VN27d9fzzz+v3/3ud+W2TUxM1JQpUypcEwAAuLpVqc9NSkqKnn76aXuwkSRXV1fFxcVd8ozLb504cUIlJSVlzrz4+/srJyen3GU6duyolJQUrVq1Sm+99ZZKS0vVu3dvfffdd+W2j4+PV15enn04fPhwhesDAABXnwqfufm18+fPa/fu3erYsaPD9N27d6u0tLRaCruYsLAwhYWF2cd79+6tzp0767XXXtO0adPKtPfw8JCHh0eN1gQAAOqOKoWbmJgYDRs2TPv371dISIgk6YsvvtCMGTMUExNT4fX4+fnJ1dVVubm5DtNzc3MVEBBQoXW4ubnppptu0r59+yq+AwAAwLKqFG5mzZqlgIAAzZ49W0ePHpUktWjRQmPHjtVf//rXCq/H3d1dPXr0UFpamgYPHixJKi0tVVpammJjYyu0jpKSEu3atUsDBgyo9H4AAADrqVK4cXFx0bhx4zRu3Dj73UeV6Uj8a3FxcYqOjlbPnj0VEhKipKQkFRYW2s8ARUVFqVWrVkpMTJQkTZ06VTfffLPatWun06dPa+bMmfr222/1+OOPV2n7AADAWqoUbqSf+92kp6dr//79euSRRyRJR44ckY+Pj7y9vSu8nsjISB0/flyTJ09WTk6OgoODtXbtWnsn40OHDsnF5Zd+z6dOndLw4cOVk5Ojxo0bq0ePHtq0aZO6dOlS1V0BAAAWUqVw8+2336p///46dOiQioqK1K9fPzVs2FAvvPCCioqKtGDBgkqtLzY29qKXodLT0x3G586dq7lz51albAAAcA2o0q3gY8aMUc+ePXXq1CnVr1/fPv2+++5TWlpatRUHAABQWVU6c7N+/Xpt2rRJ7u7uDtODgoL0/fffV0thAAAAVVGlMzelpaUqKSkpM/27775Tw4YNr7goAACAqqpSuLnrrruUlJRkH7fZbCooKFBCQgK3ZAMAAKeq0mWp2bNnKyIiQl26dNFPP/2kRx55RHv37pWfn5/efvvt6q4RAFAHGWNUWFhoH/fy8pLNZnNiRbXjWt3vq0mVws11112nzMxMLV++XDt37lRBQYGGDRumoUOHOnQwBgBYV2FhoQYNGmQfX7VqVaV+CuRqda3u99WkSuHmp59+kqenpx599NHqrgcAAOCKVKnPTfPmzRUdHa1///vfNf6gTAAAgMqoUrhZsmSJzp49q0GDBqlVq1Z66qmntGXLluquDQAAoNKqFG7uu+8+vfPOO8rNzdXzzz+vr7/+WjfffLM6dOigqVOnVneNAAAAFValcHNBw4YNFRMTo3Xr1mnnzp3y8vLSlClTqqs2AACASruicPPTTz9pxYoVGjx4sLp3766TJ09q7Nix1VUbAABApVXpbqmPP/5Yy5Yt08qVK1WvXj098MADWrdunW677bbqrg8AAKBSqhRu7rvvPt1999164403NGDAALm5uVV3XQAAAFVSpXCTm5vLM6QAAECdVOFwk5+fLx8fH0k///R0fn7+RdteaAcAAFDbKhxuGjdurKNHj6p58+Zq1KhRuc/RMMbIZrOV+8RwAACA2lDhcPN///d/atKkif3fPCQMAADURRUON3369LH/u2/fvjVRCwAAwBWr0u/ctG/fXs8++6z27t1b3fUAAABckSqFm5EjR2rNmjXq1KmTevXqpZdeekk5OTnVXRsAAEClVSnc/OUvf9F//vMfZWVlacCAAZo3b54CAwN111136Y033qjuGgEAACqsSr9zc0GHDh00ZcoUTZkyRZ9//rlGjBihmJgYRUVFVVd9AKpZj7E19x8Q2/li+f5qvO+k5TL13GtkW1tn8j0DoHxXFG4kKSMjQ8uWLVNqaqry8/P14IMPVkddAAAAVVKlcLNnzx4tXbpUb7/9tg4cOKA77rhDL7zwgv7whz/I29u7umsEgDrNGKPCwkL7uJeXFz+XAThRlcLNhY7Eo0aN0sMPPyx/f//qrgsArhqFhYUaNGiQfXzVqlX8Rw9wokqHm5KSEr322mt64IEH1Lhx45qoCQAAoMoqfbeUq6urnnzySZ0+fboGygEAALgyVboV/IYbbtA333xT3bUAAIA6yhijgoIC+2CMcXZJF1WlPjfTp0/X008/rWnTpqlHjx7y8vJymM9TwQEAsJarqW9ZlcLNgAEDJEn33nuvwx0BPBUcAAA4W5XCzSeffFKtRcybN08zZ85UTk6OunXrpr///e8KCQm57HLLly/XkCFDNGjQIK1cubJaawIAAFenKoWbXz8h/EqlpqYqLi5OCxYsUGhoqJKSkhQREaHs7Gw1b978ossdPHhQTz/9tG699dZqqwUArIZfpMa1qErh5rPPPrvk/Ntuu63C65ozZ46GDx+umJgYSdKCBQu0Zs0apaSkaMKECeUuU1JSoqFDh2rKlClav379Je/cKioqUlFRkX08Pz+/wrUBAICrT5XCTd++fctM+3Xfm4r2uSkuLtbWrVsVHx9vn+bi4qLw8HBt3rz5ostNnTpVzZs317Bhw7R+/fpLbiMxMVFTpkypUD0AAGvgjNW1rUq3gp86dcphOHbsmNauXatevXpp3bp1FV7PiRMnVFJSUuYXjv39/ZWTk1PuMhs2bFBycrIWLlxYoW3Ex8crLy/PPhw+fLjC9QEAgKtPlc7c+Pr6lpnWr18/ubu7Ky4uTlu3br3iwspz5swZ/fGPf9TChQvl5+dXoWU8PDzk4eFRI/UAAIC654qfCv5r/v7+ys7OrnB7Pz8/ubq6Kjc312F6bm6uAgICyrTfv3+/Dh48qHvuucc+rbS0VJJUr149ZWdnq23btlWsHgAAWEGVws3OnTsdxo0xOnr0qGbMmKHg4OAKr8fd3V09evRQWlqaBg8eLOnnsJKWlqbY2Ngy7Tt16qRdu3Y5THvmmWd05swZvfTSSwoMDKz0vgAAAGupUrgJDg6WzWYr89PLN998s1JSUiq1rri4OEVHR6tnz54KCQlRUlKSCgsL7XdPRUVFqVWrVkpMTJSnp6duuOEGh+UbNWokSWWmAwCAa1OVws2BAwccxl1cXNSsWTN5enpWel2RkZE6fvy4Jk+erJycHAUHB2vt2rX2TsaHDh2Si0uV+j0DAIBrUKXCzebNm/XDDz/o7rvvtk974403lJCQoMLCQg0ePFh///vfK92BNzY2ttzLUJKUnp5+yWUXL15cqW0BAABrq9QpkalTp+qrr76yj+/atUvDhg1TeHi4JkyYoH/9619KTEys9iIBAAAqqlLhZseOHbrzzjvt48uXL1doaKgWLlyouLg4vfzyy1qxYkW1FwkAAFBRlQo3p06dcvjBvU8//VS///3v7eO9evXiR/IAAIBTVSrc+Pv72zsTFxcXa9u2bbr55pvt88+cOSM3N7fqrRAAAKASKhVuBgwYoAkTJmj9+vWKj49XgwYNHJ7KvXPnTn5EDwAAOFWl7paaNm2a/vCHP6hPnz7y9vbWkiVL5O7+y8PCUlJSdNddd1V7kQAAABVVqXDj5+enzz77THl5efL29parq6vD/HfeeUfe3t7VWqBVGGNUWFhoH/fy8nJ4kjoAAKge1fbgTElq0qTJFRVjZYWFhRo0aJB9fNWqVQRBAABqAD/9CwAALKVanwoOXE16jH2jxtZtO1+sX5/f7DtpuUw994u2vxJbZ0bVyHoB4GrFmRsAAGAphBsAAGAphBsAAGAphBsAAGApdCgGcE2gAzlw7eDMDQAAsBTCDQAAsBTCDQAAsBTCDQAAsBQ6FAMAqsS4uimv6xCHcaAuINwAAKrGZquxu8KAK8FlKQAAYCmEGwAAYCmEGwAAYCn0uQEAoBLoSF33EW4AAKgMOlLXeVyWAgAAlkK4AQAAlkK4AQAAlkK4AQAAlkKHYgDVhrtIANQFdeLMzbx58xQUFCRPT0+FhoYqIyPjom3fe+899ezZU40aNZKXl5eCg4P15ptv1mK1AC7q/99FcmGQzebsigBcg5weblJTUxUXF6eEhARt27ZN3bp1U0REhI4dO1Zu+yZNmmjixInavHmzdu7cqZiYGMXExOjjjz+u5coBAEBd5PRwM2fOHA0fPlwxMTHq0qWLFixYoAYNGiglJaXc9n379tV9992nzp07q23bthozZoy6du2qDRs2lNu+qKhI+fn5DgMAALAup4ab4uJibd26VeHh4fZpLi4uCg8P1+bNmy+7vDFGaWlpys7O1m233VZum8TERPn6+tqHwMDAaqsfAADUPU4NNydOnFBJSYn8/f0dpvv7+ysnJ+eiy+Xl5cnb21vu7u4aOHCg/v73v6tfv37lto2Pj1deXp59OHz4cLXuAwAAqFuuyrulGjZsqB07dqigoEBpaWmKi4vT9ddfr759+5Zp6+HhIQ8Pj9ovEgAAOIVTw42fn59cXV2Vm5vrMD03N1cBAQEXXc7FxUXt2rWTJAUHBysrK0uJiYnlhpvK6DH2jSta/lJs54vl+6vxvpOW19izSbbOjKqR9QIAcDVw6mUpd3d39ejRQ2lpafZppaWlSktLU1hYWIXXU1paqqKiopooEQAAXGWcflkqLi5O0dHR6tmzp0JCQpSUlKTCwkLFxMRIkqKiotSqVSslJiZK+rmDcM+ePdW2bVsVFRXpww8/1Jtvvqn58+c7czcAAEAd4fRwExkZqePHj2vy5MnKyclRcHCw1q5da+9kfOjQIbm4/HKCqbCwUCNHjtR3332n+vXrq1OnTnrrrbcUGRnprF0AAAB1iNPDjSTFxsYqNja23Hnp6ekO49OnT9f06dNroSoAAHA1cvqP+AEAAFQnwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALCUOvE7NwBwNTOubsrrOsRhHIDzEG4A4ErZbDX2IFwAlcdlKQAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCn1nF0AAACoHj3GvlFj67adL5bvr8b7TlouU8+9Rra1dWbUFS3PmRsAAGApnLmpJcbVTXldhziMAwCA6ke4qS02W42dvgMAAL/gshQAALAUwg0AALAUwg0AALCUOhFu5s2bp6CgIHl6eio0NFQZGRkXbbtw4ULdeuutaty4sRo3bqzw8PBLtgcAANcWp4eb1NRUxcXFKSEhQdu2bVO3bt0UERGhY8eOlds+PT1dQ4YM0SeffKLNmzcrMDBQd911l77//vtarhwAANRFTg83c+bM0fDhwxUTE6MuXbpowYIFatCggVJSUsptv3TpUo0cOVLBwcHq1KmTXn/9dZWWliotLa2WKwcAAHWRU8NNcXGxtm7dqvDwcPs0FxcXhYeHa/PmzRVax9mzZ3Xu3Dk1adKk3PlFRUXKz893GAAAgHU5NdycOHFCJSUl8vf3d5ju7++vnJycCq1j/PjxatmypUNA+rXExET5+vrah8DAwCuuGwAA1F1Ovyx1JWbMmKHly5fr/fffl6enZ7lt4uPjlZeXZx8OHz5cy1UCAIDa5NRfKPbz85Orq6tyc3Mdpufm5iogIOCSy86aNUszZszQ//7v/6pr164Xbefh4SEPD49qqReoKB63AQDO49QzN+7u7urRo4dDZ+ALnYPDwsIuutyLL76oadOmae3aterZs2dtlApUzv9/3MaFQTabsysCgGuG058tFRcXp+joaPXs2VMhISFKSkpSYWGhYmJiJElRUVFq1aqVEhMTJUkvvPCCJk+erGXLlikoKMjeN8fb21ve3t5O2w8AAFA3OD3cREZG6vjx45o8ebJycnIUHBystWvX2jsZHzp0SC4uv5xgmj9/voqLi/XAAw84rCchIUHPPvtsbZYOAADqIKeHG0mKjY1VbGxsufPS09Mdxg8ePFjzBQEAgKvWVX23FAAAwG8RbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKU4PdzMmzdPQUFB8vT0VGhoqDIyMi7a9quvvtL999+voKAg2Ww2JSUl1V6hAADgquDUcJOamqq4uDglJCRo27Zt6tatmyIiInTs2LFy2589e1bXX3+9ZsyYoYCAgFquFgAAXA2cGm7mzJmj4cOHKyYmRl26dNGCBQvUoEEDpaSklNu+V69emjlzph5++GF5eHjUcrUAAOBq4LRwU1xcrK1btyo8PPyXYlxcFB4ers2bN1fbdoqKipSfn+8wAAAA63JauDlx4oRKSkrk7+/vMN3f3185OTnVtp3ExET5+vrah8DAwGpbNwAAqHuc3qG4psXHxysvL88+HD582NklAQCAGlTPWRv28/OTq6urcnNzHabn5uZWa2dhDw8P+ucAAHANcdqZG3d3d/Xo0UNpaWn2aaWlpUpLS1NYWJizygIAAFc5p525kaS4uDhFR0erZ8+eCgkJUVJSkgoLCxUTEyNJioqKUqtWrZSYmCjp507IX3/9tf3f33//vXbs2CFvb2+1a9fOafsBAADqDqeGm8jISB0/flyTJ09WTk6OgoODtXbtWnsn40OHDsnF5ZeTS0eOHNFNN91kH581a5ZmzZqlPn36KD09vbbLBwAAdZBTw40kxcbGKjY2ttx5vw0sQUFBMsbUQlUAAOBqZfm7pQAAwLWFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACyFcAMAACylnrMLAAAAdZ9xdVNe1yEO43UV4QYAAFyezSZTz93ZVVQIl6UAAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAIClEG4AAICl1IlwM2/ePAUFBcnT01OhoaHKyMi4ZPt33nlHnTp1kqenp2688UZ9+OGHtVQpAACo65weblJTUxUXF6eEhARt27ZN3bp1U0REhI4dO1Zu+02bNmnIkCEaNmyYtm/frsGDB2vw4MH68ssva7lyAABQFzk93MyZM0fDhw9XTEyMunTpogULFqhBgwZKSUkpt/1LL72k/v37a+zYsercubOmTZum7t2765VXXqnlygEAQF1Uz5kbLy4u1tatWxUfH2+f5uLiovDwcG3evLncZTZv3qy4uDiHaREREVq5cmW57YuKilRUVGQfz8vLkyTl5+eXaVtS9GNld6FOKm/fLoX9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t/nta3Hq1ClFRUWpcePGatCggX7/+99r79699vkXjvnVq1erS5cu8vDwqNb/KBNuLuGTTz7R/v379cknn2jJkiVavHhxuR8mSXrxxRc1YcIErVu3Tnfeead9+pIlS+Tl5aUvvvhCL774oqZOnap///vfkn4OK4MGDdLJkyf16aef6t///re++eYbRUZGSvr5GRrBwcH2L8Fdu3bJZrNp+/btKigokPTzF0efPn0capk4caKefvpp7dixQx06dNCQIUMcvuyqQ0FBgd566y21a9dOTZs2lSQ1bNhQixcv1tdff62XXnpJCxcu1Ny5cx2W27dvn1asWKF//etfWrt2rbZv366RI0dKkm677TZdf/31evPNN+3tz507p6VLl+p//ud/qrX+ijh58qTWrl2rUaNGycvLq8z8X1/CnDJlih566CHt3LlTAwYM0NChQ3Xy5MkKbWfFihV69tln9fzzz2vLli1q0aJFmbBRnZYuXarJkyfrueeeU1ZWlp5//nlNmjRJS5YskfTzax4REaGGDRtq/fr12rhxo/2PbXFxsX09l/t8nDt3TtOmTVNmZqZWrlypgwcPOnzpHzhwQA888IAGDx6szMxMPfHEE5o4caJDrfv371f//v11//33a+fOnUpNTdWGDRsUGxvr0G7WrFnq1q2btm/frkmTJpXZZ29vb3l7e2vlypUqKioqM/8///mPJGnRokU6evSofbwixo4dq08//VSrVq3SunXrlJ6erm3btjm0iY2N1ebNm7V8+XLt3LlTDz74oPr37+/wZX/27FnNmjVLb775pj777DMdOnRITz/9tCTp6aef1kMPPaTmzZurd+/emj59ur777jvNnTtXAwYMUK9evZSZman58+crOTlZ06dPr3D9F1zqGK7Ie3UxycnJGjJkiNzc3DRkyBAlJydX+vWrjMDAQL377ruSpOzsbB09elQvvfRSuW1XrFihTp06qWPHjnr00UeVkpKiCz/9VhOfyys5zqrqcse+JD344IM6duyYPvroI23dulXdu3fXnXfe6fAdtn//fq1cuVIffPCBPvjgA3366aeaMWPGRbf72GOPacuWLVq9erU2b94sY4wGDBjg8B+gs2fP6oUXXtDrr7+ur776Ss2bN6++Hb/sc8MtqE+fPmbMmDFlpi9atMj4+voaY4yJjo42bdq0MefPn7fPf/DBB01k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3HPP6Y033tDGjRt1+vRpPfzww5VaB4AaUGPPGwdwTerdu7dJSkoyxhhz7tw54+fnZz755BNjjDHjx483N9xwg0P7iRMnGknm1KlTxhhjhg0bZv70pz85tFm/fr1xcXExP/74o1m+fLmRZLZt22afn5uba7y8vOzDvHnzjDHGHDhwwEiy13NBy5YtzXPPPecwrVevXmbkyJHGGGM++eQTh5qMMWb79u1Gkjlw4IAxxphFixYZSebzzz+3t8nKyjKSzBdffFGJVwxAdePMDYBqk52drYyMDA0ZMkSSVK9ePUVGRio5Odk+v1evXg7LhISEOIxnZmZq8eLF8vb2tg8REREqLS3VgQMHyt1u06ZNtWPHDu3YsUONGjVScXGxw/yePXva/52fn68jR47olltucWhzyy23KCsrq1L7W69ePYf96dSpkxo1alTp9QCoXjwVHEC1SU5O1vnz59WyZUv7NGOMPDw89Morr1RoHQUFBXriiSc0evToMvNat26tH3/8UdLPQemmm26SJLm6uqpdu3aSfg4cv+Xl5VWp/bhwucv86rnCdEQGrh6cuQFQLc6fP6833nhDs2fPtp9F2bFjhzIzM9WyZUu9/fbb6tixo7Zs2eKw3H/+8x+H8e7du+vrr79Wu3btygzu7u666aab1KlTJ82aNUulpaWVrtPHx0ctW7bUxo0bHaZv3LhRXbp0kSQ1a9ZMknT06FH7/B07dpS7z7/en+zsbJ0+fVqdO3eudF0AqpGzr4sBsIb333/fuLu7m9OnT5eZN27cONOzZ0/zzTffGDc3NzNu3DiTnZ1tUlNTzXXXXWck2ZfLzMw09evXN6NGjTLbt283e/bsMStXrjSjRo2yr2/z5s3G29vb3HzzzWbVqlVmz5495quvvjLz5883DRo0MC+//LIx5pc+N9u3b3eoZ+7cucbHx8csX77c7N6924wfP964ubmZPXv2GGOMKS4uNoGBgebBBx80e/bsMR988IHp2LFjmT43bm5uJiQkxHz++edmy5Yt5uabbzY333xzDby6ACqDcAOgWtx9991mwIAB5c774osvjCSTmZlpVq1aZdq1a2c8PDxM3759zfz5840k8+OPP9rbZ2RkmH79+hlvb2/j5eVlunbtWqYDcHZ2tomOjjbXXXedqVevnvH19TW33Xabee2118y5c+eMMRcPNyUlJebZZ581rVq1Mm5ubqZbt27mo48+cmizYcMGc+ONNxpPT09z6623mnfeeadMuPH19TXvvvuuuf76642Hh4cJDw8333777RW+kgCulM2YX11UBoBa9txzz2nBggVX3e/DLF68WE899ZTDb+EAqBvoUAygVr366qvq1auXmjZtqo0bN2rmzJn237ABgOpAuAFQq/bu3avp06fr5MmTat26tf76178qPj7e2WUBsBAuSwEAAEvhVnAAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAp/w+isOkwxGRxCwAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#sort the ages into logical categories\n",
    "train[\"Age\"] = train[\"Age\"].fillna(-0.5)\n",
    "test[\"Age\"] = test[\"Age\"].fillna(-0.5)\n",
    "bins = [-1, 0, 5, 12, 18, 24, 35, 60, np.inf]\n",
    "labels = ['Unknown', 'Baby', 'Child', 'Teenager', 'Student', 'Young Adult', 'Adult', 'Senior']\n",
    "train['AgeGroup'] = pd.cut(train[\"Age\"], bins, labels = labels)\n",
    "test['AgeGroup'] = pd.cut(test[\"Age\"], bins, labels = labels)\n",
    "\n",
    "#draw a bar plot of Age vs. survival\n",
    "sns.barplot(x=\"AgeGroup\", y=\"Survived\", data=train)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "d989ab7a-b0c4-46af-92b1-e95af85cb731",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Percentage of CabinBool = 1 who survived: 66.66666666666666\n",
      "Percentage of CabinBool = 0 who survived: 29.985443959243085\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "train[\"CabinBool\"] = (train[\"Cabin\"].notnull().astype('int'))\n",
    "test[\"CabinBool\"] = (test[\"Cabin\"].notnull().astype('int'))\n",
    "\n",
    "#calculate percentages of CabinBool vs. survived\n",
    "print(\"Percentage of CabinBool = 1 who survived:\", train[\"Survived\"][train[\"CabinBool\"] == 1].value_counts(normalize = True)[1]*100)\n",
    "\n",
    "print(\"Percentage of CabinBool = 0 who survived:\", train[\"Survived\"][train[\"CabinBool\"] == 0].value_counts(normalize = True)[1]*100)\n",
    "#draw a bar plot of CabinBool vs. survival\n",
    "sns.barplot(x=\"CabinBool\", y=\"Survived\", data=train)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "887e6cee-605e-4b8d-9f2b-4e1254dfe612",
   "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",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</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>891</td>\n",
       "      <td>891</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>204</td>\n",
       "      <td>889</td>\n",
       "      <td>891</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>unique</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>891</td>\n",
       "      <td>2</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>681</td>\n",
       "      <td>NaN</td>\n",
       "      <td>147</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>top</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>Dooley, Mr. Patrick</td>\n",
       "      <td>male</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>347082</td>\n",
       "      <td>NaN</td>\n",
       "      <td>G6</td>\n",
       "      <td>S</td>\n",
       "      <td>Young Adult</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>freq</th>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "      <td>577</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7</td>\n",
       "      <td>NaN</td>\n",
       "      <td>4</td>\n",
       "      <td>644</td>\n",
       "      <td>220</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>23.699966</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>NaN</td>\n",
       "      <td>32.204208</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.228956</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>17.731181</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>NaN</td>\n",
       "      <td>49.693429</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.420397</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>-0.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>7.910400</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>24.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>14.454200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000000</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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>35.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>31.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>0.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>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>NaN</td>\n",
       "      <td>512.329200</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        PassengerId    Survived      Pclass                 Name   Sex  \\\n",
       "count    891.000000  891.000000  891.000000                  891   891   \n",
       "unique          NaN         NaN         NaN                  891     2   \n",
       "top             NaN         NaN         NaN  Dooley, Mr. Patrick  male   \n",
       "freq            NaN         NaN         NaN                    1   577   \n",
       "mean     446.000000    0.383838    2.308642                  NaN   NaN   \n",
       "std      257.353842    0.486592    0.836071                  NaN   NaN   \n",
       "min        1.000000    0.000000    1.000000                  NaN   NaN   \n",
       "25%      223.500000    0.000000    2.000000                  NaN   NaN   \n",
       "50%      446.000000    0.000000    3.000000                  NaN   NaN   \n",
       "75%      668.500000    1.000000    3.000000                  NaN   NaN   \n",
       "max      891.000000    1.000000    3.000000                  NaN   NaN   \n",
       "\n",
       "               Age       SibSp       Parch  Ticket        Fare Cabin Embarked  \\\n",
       "count   891.000000  891.000000  891.000000     891  891.000000   204      889   \n",
       "unique         NaN         NaN         NaN     681         NaN   147        3   \n",
       "top            NaN         NaN         NaN  347082         NaN    G6        S   \n",
       "freq           NaN         NaN         NaN       7         NaN     4      644   \n",
       "mean     23.699966    0.523008    0.381594     NaN   32.204208   NaN      NaN   \n",
       "std      17.731181    1.102743    0.806057     NaN   49.693429   NaN      NaN   \n",
       "min      -0.500000    0.000000    0.000000     NaN    0.000000   NaN      NaN   \n",
       "25%       6.000000    0.000000    0.000000     NaN    7.910400   NaN      NaN   \n",
       "50%      24.000000    0.000000    0.000000     NaN   14.454200   NaN      NaN   \n",
       "75%      35.000000    1.000000    0.000000     NaN   31.000000   NaN      NaN   \n",
       "max      80.000000    8.000000    6.000000     NaN  512.329200   NaN      NaN   \n",
       "\n",
       "           AgeGroup   CabinBool  \n",
       "count           891  891.000000  \n",
       "unique            8         NaN  \n",
       "top     Young Adult         NaN  \n",
       "freq            220         NaN  \n",
       "mean            NaN    0.228956  \n",
       "std             NaN    0.420397  \n",
       "min             NaN    0.000000  \n",
       "25%             NaN    0.000000  \n",
       "50%             NaN    0.000000  \n",
       "75%             NaN    0.000000  \n",
       "max             NaN    1.000000  "
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.describe(include=\"all\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "d4b91901-cfaa-4bd7-9fe6-1276a3af9978",
   "metadata": {},
   "outputs": [],
   "source": [
    "#we'll start off by dropping the Cabin feature since not a lot more useful information can be extracted from it.\n",
    "train = train.drop(['Cabin'], axis = 1)\n",
    "test = test.drop(['Cabin'], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "aad28f67-5194-42e6-8394-aedd1a4329c5",
   "metadata": {},
   "outputs": [],
   "source": [
    "#we can also drop the Ticket feature since it's unlikely to yield any useful information\n",
    "train = train.drop(['Ticket'], axis = 1)\n",
    "test = test.drop(['Ticket'], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "29e50dfd-464e-45ac-8f2c-b0bc99ded428",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Number of people embarking in Southampton (S):\n",
      "644\n",
      "Number of people embarking in Cherbourg (C):\n",
      "168\n",
      "Number of people embarking in Queenstown (Q):\n",
      "77\n"
     ]
    }
   ],
   "source": [
    "#now we need to fill in the missing values in the Embarked feature\n",
    "print(\"Number of people embarking in Southampton (S):\")\n",
    "southampton = train[train[\"Embarked\"] == \"S\"].shape[0]\n",
    "print(southampton)\n",
    "\n",
    "print(\"Number of people embarking in Cherbourg (C):\")\n",
    "cherbourg = train[train[\"Embarked\"] == \"C\"].shape[0]\n",
    "print(cherbourg)\n",
    "\n",
    "print(\"Number of people embarking in Queenstown (Q):\")\n",
    "queenstown = train[train[\"Embarked\"] == \"Q\"].shape[0]\n",
    "print(queenstown)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "66a3a864-3001-4da6-8541-b35e768017f6",
   "metadata": {},
   "outputs": [],
   "source": [
    "#replacing the missing values in the Embarked feature with S\n",
    "train = train.fillna({\"Embarked\": \"S\"})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "54803111-da74-40db-b026-4178a5763c52",
   "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>Sex</th>\n",
       "      <th>female</th>\n",
       "      <th>male</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Title</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Capt</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Col</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Countess</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Don</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Dr</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Jonkheer</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Lady</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Major</th>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Master</th>\n",
       "      <td>0</td>\n",
       "      <td>40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Miss</th>\n",
       "      <td>182</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mlle</th>\n",
       "      <td>2</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mme</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mr</th>\n",
       "      <td>0</td>\n",
       "      <td>517</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mrs</th>\n",
       "      <td>125</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Ms</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Rev</th>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Sir</th>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "Sex       female  male\n",
       "Title                 \n",
       "Capt           0     1\n",
       "Col            0     2\n",
       "Countess       1     0\n",
       "Don            0     1\n",
       "Dr             1     6\n",
       "Jonkheer       0     1\n",
       "Lady           1     0\n",
       "Major          0     2\n",
       "Master         0    40\n",
       "Miss         182     0\n",
       "Mlle           2     0\n",
       "Mme            1     0\n",
       "Mr             0   517\n",
       "Mrs          125     0\n",
       "Ms             1     0\n",
       "Rev            0     6\n",
       "Sir            0     1"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#create a combined group of both datasets\n",
    "combine = [train, test]\n",
    "\n",
    "#extract a title for each Name in the train and test datasets\n",
    "for dataset in combine:\n",
    "    dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\\.', expand=False)\n",
    "\n",
    "pd.crosstab(train['Title'], train['Sex'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "b1e263d3-b519-4256-a2f3-6ceecc27a5ed",
   "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>Title</th>\n",
       "      <th>Survived</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Master</td>\n",
       "      <td>0.575000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Miss</td>\n",
       "      <td>0.702703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Mr</td>\n",
       "      <td>0.156673</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Mrs</td>\n",
       "      <td>0.793651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Rare</td>\n",
       "      <td>0.285714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Royal</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Title  Survived\n",
       "0  Master  0.575000\n",
       "1    Miss  0.702703\n",
       "2      Mr  0.156673\n",
       "3     Mrs  0.793651\n",
       "4    Rare  0.285714\n",
       "5   Royal  1.000000"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#replace various titles with more common names\n",
    "for dataset in combine:\n",
    "    dataset['Title'] = dataset['Title'].replace(['Lady', 'Capt', 'Col',\n",
    "    'Don', 'Dr', 'Major', 'Rev', 'Jonkheer', 'Dona'], 'Rare')\n",
    "    \n",
    "    dataset['Title'] = dataset['Title'].replace(['Countess', 'Lady', 'Sir'], 'Royal')\n",
    "    dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')\n",
    "    dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')\n",
    "    dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')\n",
    "\n",
    "train[['Title', 'Survived']].groupby(['Title'], as_index=False).mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "77e1545b-1b28-47da-b7d1-9be7ff502342",
   "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>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</th>\n",
       "      <th>Title</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>7.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>Student</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>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>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>Adult</td>\n",
       "      <td>1</td>\n",
       "      <td>3</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>7.9250</td>\n",
       "      <td>S</td>\n",
       "      <td>Young Adult</td>\n",
       "      <td>0</td>\n",
       "      <td>2</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>53.1000</td>\n",
       "      <td>S</td>\n",
       "      <td>Young Adult</td>\n",
       "      <td>1</td>\n",
       "      <td>3</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>8.0500</td>\n",
       "      <td>S</td>\n",
       "      <td>Young Adult</td>\n",
       "      <td>0</td>\n",
       "      <td>1</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     Fare Embarked     AgeGroup  CabinBool  Title  \n",
       "0      0   7.2500        S      Student          0      1  \n",
       "1      0  71.2833        C        Adult          1      3  \n",
       "2      0   7.9250        S  Young Adult          0      2  \n",
       "3      0  53.1000        S  Young Adult          1      3  \n",
       "4      0   8.0500        S  Young Adult          0      1  "
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#map each of the title groups to a numerical value\n",
    "title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Royal\": 5, \"Rare\": 6}\n",
    "for dataset in combine:\n",
    "    dataset['Title'] = dataset['Title'].map(title_mapping)\n",
    "    dataset['Title'] = dataset['Title'].fillna(0)\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "5d0fdef0-9f22-4d1e-9a87-0adb21a5019c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# fill missing age with mode age group for each title\n",
    "mr_age = train[train[\"Title\"] == 1][\"AgeGroup\"].mode() #Young Adult\n",
    "miss_age = train[train[\"Title\"] == 2][\"AgeGroup\"].mode() #Student\n",
    "mrs_age = train[train[\"Title\"] == 3][\"AgeGroup\"].mode() #Adult\n",
    "master_age = train[train[\"Title\"] == 4][\"AgeGroup\"].mode() #Baby\n",
    "royal_age = train[train[\"Title\"] == 5][\"AgeGroup\"].mode() #Adult\n",
    "rare_age = train[train[\"Title\"] == 6][\"AgeGroup\"].mode() #Adult\n",
    "\n",
    "age_title_mapping = {1: \"Young Adult\", 2: \"Student\", 3: \"Adult\", 4: \"Baby\", 5: \"Adult\", 6: \"Adult\"}\n",
    "for x in range(len(train[\"AgeGroup\"])):\n",
    "    if train[\"AgeGroup\"][x] == \"Unknown\":\n",
    "        train[\"AgeGroup\"][x] = age_title_mapping[train[\"Title\"][x]]\n",
    "        \n",
    "for x in range(len(test[\"AgeGroup\"])):\n",
    "    if test[\"AgeGroup\"][x] == \"Unknown\":\n",
    "        test[\"AgeGroup\"][x] = age_title_mapping[test[\"Title\"][x]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "9c9b0465-50b5-43b2-be53-55e6eb5c1919",
   "metadata": {},
   "outputs": [],
   "source": [
    "age_mapping = {'Baby': 1, 'Child': 2, 'Teenager': 3, 'Student': 4, 'Young Adult': 5, 'Adult': 6, 'Senior': 7}\n",
    "train['AgeGroup'] = train['AgeGroup'].map(age_mapping)\n",
    "test['AgeGroup'] = test['AgeGroup'].map(age_mapping)\n",
    "\n",
    "train.head()\n",
    "\n",
    "#dropping the Age feature for now, might change\n",
    "train = train.drop(['Age'], axis = 1)\n",
    "test = test.drop(['Age'], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "2b9ec86e-2929-4741-9094-ecd782a7ae99",
   "metadata": {},
   "outputs": [],
   "source": [
    "train = train.drop(['Name'], axis = 1)\n",
    "test = test.drop(['Name'], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "abfea185-dc62-42c5-8740-16065d5c53f6",
   "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>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</th>\n",
       "      <th>Title</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>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>S</td>\n",
       "      <td>4.0</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>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>S</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>S</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>S</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  Sex  SibSp  Parch     Fare Embarked  \\\n",
       "0            1         0       3    0      1      0   7.2500        S   \n",
       "1            2         1       1    1      1      0  71.2833        C   \n",
       "2            3         1       3    1      0      0   7.9250        S   \n",
       "3            4         1       1    1      1      0  53.1000        S   \n",
       "4            5         0       3    0      0      0   8.0500        S   \n",
       "\n",
       "   AgeGroup  CabinBool  Title  \n",
       "0       4.0          0      1  \n",
       "1       6.0          1      3  \n",
       "2       5.0          0      2  \n",
       "3       5.0          1      3  \n",
       "4       5.0          0      1  "
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#map each Sex value to a numerical value\n",
    "sex_mapping = {\"male\": 0, \"female\": 1}\n",
    "train['Sex'] = train['Sex'].map(sex_mapping)\n",
    "test['Sex'] = test['Sex'].map(sex_mapping)\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "id": "5cd745bc-2238-4618-8709-d55a6903f704",
   "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>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</th>\n",
       "      <th>Title</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>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</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>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>2</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.0500</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  Sex  SibSp  Parch     Fare  Embarked  \\\n",
       "0            1         0       3    0      1      0   7.2500         1   \n",
       "1            2         1       1    1      1      0  71.2833         2   \n",
       "2            3         1       3    1      0      0   7.9250         1   \n",
       "3            4         1       1    1      1      0  53.1000         1   \n",
       "4            5         0       3    0      0      0   8.0500         1   \n",
       "\n",
       "   AgeGroup  CabinBool  Title  \n",
       "0       4.0          0      1  \n",
       "1       6.0          1      3  \n",
       "2       5.0          0      2  \n",
       "3       5.0          1      3  \n",
       "4       5.0          0      1  "
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#map each Embarked value to a numerical value\n",
    "embarked_mapping = {\"S\": 1, \"C\": 2, \"Q\": 3}\n",
    "train['Embarked'] = train['Embarked'].map(embarked_mapping)\n",
    "test['Embarked'] = test['Embarked'].map(embarked_mapping)\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "d33e022c-422b-462b-b71b-61169ab8d482",
   "metadata": {},
   "outputs": [],
   "source": [
    "#fill in missing Fare value in test set based on mean fare for that Pclass \n",
    "for x in range(len(test[\"Fare\"])):\n",
    "    if pd.isnull(test[\"Fare\"][x]):\n",
    "        pclass = test[\"Pclass\"][x] #Pclass = 3\n",
    "        test[\"Fare\"][x] = round(train[train[\"Pclass\"] == pclass][\"Fare\"].mean(), 4)\n",
    "        \n",
    "#map Fare values into groups of numerical values\n",
    "train['FareBand'] = pd.qcut(train['Fare'], 4, labels = [1, 2, 3, 4])\n",
    "test['FareBand'] = pd.qcut(test['Fare'], 4, labels = [1, 2, 3, 4])\n",
    "\n",
    "#drop Fare values\n",
    "train = train.drop(['Fare'], axis = 1)\n",
    "test = test.drop(['Fare'], axis = 1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "id": "7a6e5373-e797-440c-af74-88d86cf9e7fd",
   "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>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</th>\n",
       "      <th>Title</th>\n",
       "      <th>FareBand</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>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</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>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  Sex  SibSp  Parch  Embarked  AgeGroup  \\\n",
       "0            1         0       3    0      1      0         1       4.0   \n",
       "1            2         1       1    1      1      0         2       6.0   \n",
       "2            3         1       3    1      0      0         1       5.0   \n",
       "3            4         1       1    1      1      0         1       5.0   \n",
       "4            5         0       3    0      0      0         1       5.0   \n",
       "\n",
       "   CabinBool  Title FareBand  \n",
       "0          0      1        1  \n",
       "1          1      3        4  \n",
       "2          0      2        2  \n",
       "3          1      3        4  \n",
       "4          0      1        2  "
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "id": "400c1fdb-0d5a-4c95-9d9e-141dafaf80e9",
   "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>Sex</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Embarked</th>\n",
       "      <th>AgeGroup</th>\n",
       "      <th>CabinBool</th>\n",
       "      <th>Title</th>\n",
       "      <th>FareBand</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>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>4.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</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>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>6.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  Sex  SibSp  Parch  Embarked  AgeGroup  \\\n",
       "0            1         0       3    0      1      0       1.0       4.0   \n",
       "1            2         1       1    1      1      0       2.0       6.0   \n",
       "2            3         1       3    1      0      0       1.0       5.0   \n",
       "3            4         1       1    1      1      0       1.0       5.0   \n",
       "4            5         0       3    0      0      0       1.0       5.0   \n",
       "\n",
       "   CabinBool  Title FareBand  \n",
       "0          0      1        1  \n",
       "1          1      3        4  \n",
       "2          0      2        2  \n",
       "3          1      3        4  \n",
       "4          0      1        2  "
      ]
     },
     "execution_count": 67,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "d4134bcd-f480-456c-bbcb-b234fa657d43",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "\n",
    "predictors = train.drop(['Survived', 'PassengerId'], axis=1)\n",
    "target = train[\"Survived\"]\n",
    "x_train, x_val, y_train, y_val = train_test_split(predictors, target, test_size = 0.22, random_state = 0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "id": "1e2a993e-693c-4265-a19a-b2257f36005f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "78.68\n"
     ]
    }
   ],
   "source": [
    "# Gaussian Naive Bayes\n",
    "from sklearn.naive_bayes import GaussianNB\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "gaussian = GaussianNB()\n",
    "gaussian.fit(x_train, y_train)\n",
    "y_pred = gaussian.predict(x_val)\n",
    "acc_gaussian = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_gaussian)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "2988503e-b58b-4a6e-b468-61c4fda4a710",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "79.7\n"
     ]
    }
   ],
   "source": [
    "# Logistic Regression\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "logreg = LogisticRegression()\n",
    "logreg.fit(x_train, y_train)\n",
    "y_pred = logreg.predict(x_val)\n",
    "acc_logreg = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_logreg)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "id": "c3dba715-61c1-4675-96a0-d97fabedc75a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82.74\n"
     ]
    }
   ],
   "source": [
    "# Support Vector Machines\n",
    "from sklearn.svm import SVC\n",
    "\n",
    "svc = SVC()\n",
    "svc.fit(x_train, y_train)\n",
    "y_pred = svc.predict(x_val)\n",
    "acc_svc = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_svc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "ccb7962b-54c2-422c-94d2-c33e140cab5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "78.68\n"
     ]
    }
   ],
   "source": [
    "# Linear SVC\n",
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "linear_svc = LinearSVC()\n",
    "linear_svc.fit(x_train, y_train)\n",
    "y_pred = linear_svc.predict(x_val)\n",
    "acc_linear_svc = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_linear_svc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "3559bd77-78a2-4249-8e50-4484febf53b5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "78.68\n"
     ]
    }
   ],
   "source": [
    "# Perceptron\n",
    "from sklearn.linear_model import Perceptron\n",
    "\n",
    "perceptron = Perceptron()\n",
    "perceptron.fit(x_train, y_train)\n",
    "y_pred = perceptron.predict(x_val)\n",
    "acc_perceptron = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_perceptron)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "4c75febc-f997-41f6-a705-608d8b4c7940",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "80.71\n"
     ]
    }
   ],
   "source": [
    "#Decision Tree\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "\n",
    "decisiontree = DecisionTreeClassifier()\n",
    "decisiontree.fit(x_train, y_train)\n",
    "y_pred = decisiontree.predict(x_val)\n",
    "acc_decisiontree = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_decisiontree)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "8d73a7c1-71ab-40c6-85b0-f7b03680296d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "84.26\n"
     ]
    }
   ],
   "source": [
    "# Random Forest\n",
    "from sklearn.ensemble import RandomForestClassifier\n",
    "\n",
    "randomforest = RandomForestClassifier()\n",
    "randomforest.fit(x_train, y_train)\n",
    "y_pred = randomforest.predict(x_val)\n",
    "acc_randomforest = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_randomforest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "056a9077-e1c5-44a9-bf80-82e435dba91a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "82.74\n"
     ]
    }
   ],
   "source": [
    "# KNN or k-Nearest Neighbors\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "knn = KNeighborsClassifier()\n",
    "knn.fit(x_train, y_train)\n",
    "y_pred = knn.predict(x_val)\n",
    "acc_knn = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_knn)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "id": "97ba7cae-0b26-4e7b-a81d-ba913751acf0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "78.17\n"
     ]
    }
   ],
   "source": [
    "# Stochastic Gradient Descent\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd = SGDClassifier()\n",
    "sgd.fit(x_train, y_train)\n",
    "y_pred = sgd.predict(x_val)\n",
    "acc_sgd = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_sgd)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "85612adf-04c1-41b6-8756-6fd48b364cc9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "84.26\n"
     ]
    }
   ],
   "source": [
    "# Gradient Boosting Classifier\n",
    "from sklearn.ensemble import GradientBoostingClassifier\n",
    "\n",
    "gbk = GradientBoostingClassifier()\n",
    "gbk.fit(x_train, y_train)\n",
    "y_pred = gbk.predict(x_val)\n",
    "acc_gbk = round(accuracy_score(y_pred, y_val) * 100, 2)\n",
    "print(acc_gbk)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "aa783ce4-0581-4c58-9d75-119caed0c94b",
   "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>Model</th>\n",
       "      <th>Score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>Gradient Boosting Classifier</td>\n",
       "      <td>84.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Random Forest</td>\n",
       "      <td>84.26</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>KNN</td>\n",
       "      <td>82.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Support Vector Machines</td>\n",
       "      <td>82.74</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>Decision Tree</td>\n",
       "      <td>80.71</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Logistic Regression</td>\n",
       "      <td>79.70</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>Perceptron</td>\n",
       "      <td>78.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Naive Bayes</td>\n",
       "      <td>78.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>Linear SVC</td>\n",
       "      <td>78.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>Stochastic Gradient Descent</td>\n",
       "      <td>78.17</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                          Model  Score\n",
       "9  Gradient Boosting Classifier  84.26\n",
       "3                 Random Forest  84.26\n",
       "1                           KNN  82.74\n",
       "0       Support Vector Machines  82.74\n",
       "7                 Decision Tree  80.71\n",
       "2           Logistic Regression  79.70\n",
       "5                    Perceptron  78.68\n",
       "4                   Naive Bayes  78.68\n",
       "6                    Linear SVC  78.68\n",
       "8   Stochastic Gradient Descent  78.17"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = pd.DataFrame({\n",
    "    'Model': ['Support Vector Machines', 'KNN', 'Logistic Regression', \n",
    "              'Random Forest', 'Naive Bayes', 'Perceptron', 'Linear SVC', \n",
    "              'Decision Tree', 'Stochastic Gradient Descent', 'Gradient Boosting Classifier'],\n",
    "    'Score': [acc_svc, acc_knn, acc_logreg, \n",
    "              acc_randomforest, acc_gaussian, acc_perceptron,acc_linear_svc, acc_decisiontree,\n",
    "              acc_sgd, acc_gbk]})\n",
    "models.sort_values(by='Score', ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89e76474-51a1-49d3-bf54-fbb88640ca0b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
