{ "cells": [ { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "## Imports\n", "\n", "# Cleaning, wrangling\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "# Visualization\n", "\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "%matplotlib inline\n", "\n", "# Machine Learning\n", "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": 5, "metadata": {}, "outputs": [], "source": [ "train_df = pd.read_csv(\"train.csv\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "test_df = pd.read_csv(\"test.csv\")" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n", " 'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n", " dtype='object')" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.columns" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\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": [ "train_df.info()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
\n", "
" ], "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": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PassengerId 342\n", "Survived 342\n", "Pclass 342\n", "Name 342\n", "Sex 342\n", "Age 290\n", "SibSp 342\n", "Parch 342\n", "Ticket 342\n", "Fare 342\n", "Cabin 136\n", "Embarked 340\n", "dtype: int64" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[train_df['Survived'] == 1].count()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "38.38383838383838" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Survival Rate\n", "\n", "(342/891)*100" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200
\n", "
" ], "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": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.describe()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "891" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[\"Name\"].nunique()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "PassengerId 577\n", "Survived 577\n", "Pclass 577\n", "Name 577\n", "Sex 577\n", "Age 453\n", "SibSp 577\n", "Parch 577\n", "Ticket 577\n", "Fare 577\n", "Cabin 107\n", "Embarked 577\n", "dtype: int64" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[train_df[\"Sex\"] == \"male\"].count()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "64.75869809203144" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Train dataset is 65% Male\n", "\n", "577/891*100" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\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", "----------------------------------------\n", "\n", "RangeIndex: 418 entries, 0 to 417\n", "Data columns (total 11 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 PassengerId 418 non-null int64 \n", " 1 Pclass 418 non-null int64 \n", " 2 Name 418 non-null object \n", " 3 Sex 418 non-null object \n", " 4 Age 332 non-null float64\n", " 5 SibSp 418 non-null int64 \n", " 6 Parch 418 non-null int64 \n", " 7 Ticket 418 non-null object \n", " 8 Fare 417 non-null float64\n", " 9 Cabin 91 non-null object \n", " 10 Embarked 418 non-null object \n", "dtypes: float64(2), int64(4), object(5)\n", "memory usage: 36.0+ KB\n" ] } ], "source": [ "train_df.info()\n", "print(\"-\"*40)\n", "test_df.info()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PclassSurvived
010.629630
120.472826
230.242363
\n", "
" ], "text/plain": [ " Pclass Survived\n", "0 1 0.629630\n", "1 2 0.472826\n", "2 3 0.242363" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"Pclass\", \"Survived\"]].groupby([\"Pclass\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SexSurvived
0female0.742038
1male0.188908
\n", "
" ], "text/plain": [ " Sex Survived\n", "0 female 0.742038\n", "1 male 0.188908" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"Sex\", \"Survived\"]].groupby([\"Sex\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SibSpSurvived
110.535885
220.464286
000.345395
330.250000
440.166667
550.000000
680.000000
\n", "
" ], "text/plain": [ " SibSp Survived\n", "1 1 0.535885\n", "2 2 0.464286\n", "0 0 0.345395\n", "3 3 0.250000\n", "4 4 0.166667\n", "5 5 0.000000\n", "6 8 0.000000" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"SibSp\", \"Survived\"]].groupby([\"SibSp\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ParchSurvived
330.600000
110.550847
220.500000
000.343658
550.200000
440.000000
660.000000
\n", "
" ], "text/plain": [ " Parch Survived\n", "3 3 0.600000\n", "1 1 0.550847\n", "2 2 0.500000\n", "0 0 0.343658\n", "5 5 0.200000\n", "4 4 0.000000\n", "6 6 0.000000" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"Parch\", \"Survived\"]].groupby([\"Parch\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "g = sns.FacetGrid(train_df, col=\"Survived\")\n", "g.map(plt.hist, \"Age\", bins=20)" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:316: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", " warnings.warn(msg, UserWarning)\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgAAAAHUCAYAAABMP5BeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAArZElEQVR4nO3df7RddX3n/+fLgBWrVqIXvpHAoDZaI1NiSRHF1UGQr7F2JNMpIhUNHWiqi86g33ZpKNVBW5d86yx/4nSVBU6irTVRUShjoVmR+KNCIAoBASGUIqaNJGA7SrVV8D1/nB29udybe+6959x7ztnPx1pnnb0/Z+993p9zz/vc9/nsffZOVSFJktrlcQsdgCRJmn8WAJIktZAFgCRJLWQBIElSC1kASJLUQhYAkiS1kAWAJEktZAEwB0keTXJLkq8n+WSSJx5g2YuS/P58xjdFHL+Q5Pok/3ageJKsT3LSJO2HJ7k6yY4kdyT5XA9juyzJ8h5s5+wkl/RgO8cluS3JPUk+mCRz3aYGj3k88nn8riTfSvLwXLc1aiwA5uYHVbWiqo4Bfgi8YaED6sJ3gP8G/I9Zrv9OYHNVHVtVy4F1M1k5yaKpHquqc6vqjlnG1Q9/CqwFljW3VQsbjvrEPB7tPP4r4PiFDmIQWQD0zpeAnwdI8voktzbV9ccmLpjkt5Pc1Dz+6X3fOJKc3nwL2ZHki03b85Pc2HxDuTXJsrkEWVV7quom4Eez3MQSYNe47d3axHlSkqv3tSe5JMnZzfR9Sd6e5MvAW5LcOG65o5Ps28bWJCuTvDHJn4xb5uwkH2qmzxr3evzZvg+iJL+V5O4kXwBOnGXffiLJEuApVXV9dU6X+VFg9Vy3q4FnHo9QHjd9u6GqdvdiW6PGAqAHkhwEvAK4LcnzgQuBk6vqWOD8SVa5oqp+uXn8TuCcpv3twMub9lc1bW8APlBVK4CVjEvacc+/sUmkibfX97KfjQ8Dlye5LsmFSZ7R5Xr/WlUvqap3A49P8qym/Qxg04RlPwX8+rj5M4CNSZ7XTJ/YvB6PAq9t/lm/g84HxqnApMOPSV46xev0lUkWP4L9X+tdTZtGlHnclWHLYx3AQQsdwJA7JMktzfSXgMuB3wE+VVUPAlTVdyZZ75gkfww8FXgScG3T/rfA+iSbgCuatuuBC5MspfOBs3PixqrqjN50Z3pVdW2T9KvofFjenOSYLlbdOG56E/Bq4GI6HwT7xV9Ve5Pcm+QEYCfwXDqvzXnAccBN6eyOPwTYA7wQ2FpVe6HzQQo8Z5LYrwNWdNnVyfb3e+GM0WQej24e6wAsAObmB00F+xPpvKOn+0exHlhdVTua4bWTAKrqDUleCLwSuCXJiqr6eJJtTdu1Sc6tqs9PeM6NdJJrovdW1Udn3q0Daz4MPw58vBku/BXgAfYfUXrChNX+Zdz0RuCTSa7obO6xH4bNMq8GvgF8pqqqeW03VNUF4xdMspou/jkneSnwvkke+n5VvXhC2y5g6bj5pcA/TvccGkrm8ejmsQ7AAqD3tgCfSfK+qnooyeJJvj08Gdid5GDgtcA/ACR5dlVtA7Yl+Y/AkUl+Dri3qj7YVOy/COz3wTGf3xySnAzcUFXfT/Jk4NnA/cC3geVJfobOh8YpwJcn20ZV/V2SR4G3sf83ivGuoDME+03grU3bFuDK5rXdk2QxnddyG/CBJE8DvgucDuyY5Hm7/uZQVbuTfK/59rINeD3woW7W1Ugwj0cgj3VgFgA9VlW3J3kX8IUmOW4Gzp6w2NvovNm/CdxG580P8J50Dg4KnSTZQefo3LOS/IhOcr5zLvEl+X+A7cBTgB8neROwvKq+2+UmjgMuSfIInW8KlzUHI9EMed5KZ7jv5mm2sxF4D/DMyR6sqn9KckcT241N2x1J/hD4mySPo3MA1HlVdUOSi+gMs+4GvgZMeZTyDLyRzre8Q4C/bm5qAfN4dPI4nQMRfxN4YpJddPp60Vy3OwrSOcBZ2l+S9cD6qtq6wKFImiXzWAfirwAkSWohCwBN5bPAfQscg6S5+SzmsabgLgBJklrIEQBJklpoXn8FsGrVqrrmmmvm8yklTW3WFzcyl6WBMqtcntcRgAcffHA+n05Sn5jL0vBzF4AkSS1kASBJUgtZAEiS1EIWAJIktZAFgCRJLWQBIElSC1kASJLUQl0XAEkWJbk5ydXN/OIkm5PsbO4P7V+YkiSpl2YyAnA+cOe4+XXAlqpaRuea1+t6GZgkSeqfrgqAJEuBVwKXjWs+DdjQTG8AVvc0MkmS1DfdjgC8H3gL8ONxbYdX1W6A5v6w3oYmSZL6ZdoCIMmvAXuq6quzeYIka5NsT7J97969s9mEpAFgLkujpZsRgBOBVyW5D/gEcHKSPwceSLIEoLnfM9nKVXVpVa2sqpVjY2M9ClvSfDOXpdEybQFQVRdU1dKqOhp4DfD5qjoLuApY0yy2Briyb1FKkqSemst5AC4GTk2yEzi1mZckSUPgoJksXFVbga3N9EPAKb0PSZIk9ZtnApQkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphaYtAJI8IcmNSXYkuT3JO5r2xUk2J9nZ3B/a/3AlSVIvdDMC8G/AyVV1LLACWJXkBGAdsKWqlgFbmnlJkjQEpi0AquPhZvbg5lbAacCGpn0DsLofAUqSpN7r6hiAJIuS3ALsATZX1Tbg8KraDdDcH9a3KCVJUk91VQBU1aNVtQJYChyf5JhunyDJ2iTbk2zfu3fvLMOUtNDMZWm0zOhXAFX1z8BWYBXwQJIlAM39ninWubSqVlbVyrGxsblFK2nBmMvSaOnmVwBjSZ7aTB8CvAz4BnAVsKZZbA1wZZ9ilCRJPXZQF8ssATYkWUSnYNhUVVcnuR7YlOQc4H7g9D7GKUmSemjaAqCqbgVeMEn7Q8Ap/QhKkiT1l2cClCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFpi0AkhyZ5Lokdya5Pcn5TfviJJuT7GzuD+1/uJIkqRe6GQF4BPi9qnoecAJwXpLlwDpgS1UtA7Y085IkaQhMWwBU1e6q+loz/T3gTuAI4DRgQ7PYBmB1n2KUJEk9NqNjAJIcDbwA2AYcXlW7oVMkAIf1PDpJktQXB3W7YJInAZ8G3lRV303S7XprgbUARx111GxilDQAzOWF977Nd3e13JtPfU6fI9Eo6GoEIMnBdP75/0VVXdE0P5BkSfP4EmDPZOtW1aVVtbKqVo6NjfUiZkkLwFyWRks3vwIIcDlwZ1W9d9xDVwFrmuk1wJW9D0+SJPVDN7sATgReB9yW5Jam7Q+Ai4FNSc4B7gdO70uEkiSp56YtAKrqy8BUO/xP6W04kiRpPngmQEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBbq+nLAkiQvyavR4QiAJEktZAEgSVILWQBIktRCFgCSJLWQBwFK0ojxQEV1Y9oRgCQfSbInydfHtS1OsjnJzub+0P6GKUmSeqmbXQDrgVUT2tYBW6pqGbClmZckSUNi2l0AVfXFJEdPaD4NOKmZ3gBsBd7ay8AkqQ26Ha4fFu5+GB6zPQjw8KraDdDcH9a7kCRJUr/1/VcASdYm2Z5k+969e/v9dJL6xFyWRstsC4AHkiwBaO73TLVgVV1aVSurauXY2Ngsn07SQjOXpdEy2wLgKmBNM70GuLI34UiSpPkw7UGASf6SzgF/T0+yC/jvwMXApiTnAPcDp/czSEnqp34ciDdqB/dp9HTzK4Azp3jolB7HIkmS5olnAtSC6ObbkT8TkgaHIxqjx2sBSJLUQhYAkiS1kLsA1HMOFUrDwVxtN0cAJElqIUcAJDwoUVL7OAIgSVILWQBIktRC7gIYcPM5ND2Mw+DDGLPmjwe5Da5+/G3M9ZlxBECSpBayAJAkqYXcBTACHAaXJM2UIwCSJLWQIwCz0Ktv3MN4gJIxz/25HI2RNAgcAZAkqYUsACRJaiF3AfTJoA2VD1o83Ri0mActnmExk9fN3SOai27fa77POuY0ApBkVZK7ktyTZF2vgpIkSf016xGAJIuADwOnAruAm5JcVVV39Cq4fTywStJ4jsZoWA3SKMVcRgCOB+6pqnur6ofAJ4DTehOWJEnqp7kUAEcA3xo3v6tpkyRJAy5VNbsVk9OBl1fVuc3864Djq+q/TlhuLbC2mX0ucNc0m3468OCsghpM9mfwjVqfuu3Pg1W1qtuNmsv2Z8C1uT8zyuV95lIAvAi4qKpe3sxfAFBV757VBn+63e1VtXIu2xgk9mfwjVqfBqU/gxJHr9ifwWZ/Zm4uuwBuApYleWaSxwOvAa7qTViSJKmfZv0rgKp6JMnvAtcCi4CPVNXtPYtMkiT1zZxOBFRVnwM+16NY9rm0x9tbaPZn8I1anwalP4MSR6/Yn8Fmf2Zo1scASJKk4eW1ACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJiDJI8muSXJ15N8MskTD7DsRUl+fz7jmyKO1ya5tbl9JcmxUyy3PslJk7QfnuTqJDuS3JGkZxeDSnJZkuU92M7ZSS7pwXaOS3JbknuSfDBJ5rpNDR7zeOTz+F1JvpXk4blua9RYAMzND6pqRVUdA/wQeMNCB9SFvwf+Q1X9IvBHzPyKU+8ENlfVsVW1HFg3k5WTLJrqsao6t6rumGE8/fSnwFpgWXNbtbDhqE/M49HO478Cjl/oIAaRBUDvfAn4eYAkr28q8x1JPjZxwSS/neSm5vFP7/vGkeT05lvIjiRfbNqen+TG5hvKrUmWzSXIqvpKVf1TM3sDsHSGm1gC7Bq3vVubOE9KcvW4Pl6S5Oxm+r4kb0/yZeAtSW4ct9zRSfZtY2uSlUnemORPxi1zdpIPNdNnjXs9/mzfB1GS30pyd5IvACfOsE+PkWQJ8JSqur46l8z8KLB6rtvVwDOPRyiPm77dUFW7e7GtUWMB0ANJDgJeAdyW5PnAhcDJVXUscP4kq1xRVb/cPH4ncE7T/nbg5U37q5q2NwAfqKoVwErGJe2459/YJNLE2+unCf0c4K9n1ls+DFye5LokFyZ5Rpfr/WtVvaSq3g08PsmzmvYzgE0Tlv0U8Ovj5s8ANiZ5XjN9YvN6PAq8tvln/Q46HxinApMOPyZ56RSv01cmWfwI9n+tdzVtGlHmcVeGLY91AActdABD7pAktzTTXwIuB34H+FRVPQhQVd+ZZL1jkvwx8FTgScC1TfvfAuuTbAKuaNquBy5MspTOB87OiRurqjNmGniSl9L54HjJTNarqmubpF9F58Py5iTHdLHqxnHTm4BXAxfT+SDYL/6q2pvk3iQnADuB59J5bc4DjgNuSmd3/CHAHuCFwNaq2tv0bSPwnElivw5Y0WVXJ9vfX12uq+FiHo9uHusALADm5gdNBfsT6byjp/tHsR5YXVU7muG1kwCq6g1JXgi8ErglyYqq+niSbU3btUnOrarPT3jOjXSSa6L3VtVHJzYm+UXgMuAVVfXQ9N3cX/Nh+HHg481w4a8AD7D/iNITJqz2L+OmNwKfTHJFZ3OP/TBslnk18A3gM1VVzWu7oaoumNCf1XTxz7n5sHzfJA99v6pePKFtF/sPqy4F/nG659BQMo9HN491IFXlbZY34OFJ2p4P3A08rZlf3NxfBPx+M/0gcBhwMLAZWN+0P3vcdm6mU+U+C0jT9n7gTXOM+SjgHuDF0yy3HjhpkvaTgSc200+mM/T5y8CRwH3AzwA/R+cgpbOb5e4Dnj5hOzcBHwPeMq5tK7CymT4UuBe4Dji+aVtO55vEYfteW+Df0dmf+U3gac1r+iXgkh78fW8CTqAzGvDXwK8u9HvOW+9v5vFo5/GB/s5tvzkC0GNVdXuSdwFfSPIonQ+Asycs9jZgG503+210EhDgPekcHBRgC7CDztG5ZyX5EfBtOkfvzsXb6STY/2yG3x6pqpUzWP844JIkj9D5pnBZVd0E0Ax53konuW+eZjsbgfcAz5zswar6pyR3AMur6sam7Y4kfwj8TZLHAT8CzquqG5JcRGeYdTfwNWDKo5Rn4I10PkAPoVMAzHQ/q4aUeTw6eZzOgYi/CTwxyS46fb1ortsdBfsqUmk/SdbT+UazdYFDkTRL5rEOxF8BSJLUQhYAmspn6ezzkzS8Pot5rCm4C0CSpBZyBECSpBayAJAkqYXm9WeAq1atqmuuuWY+n1LS1GZ9dUNzWRoos8rleR0BePDBB+fz6ST1ibksDT93AUiS1EIWAJIktZAFgCRJLWQBIElSC1kASJLUQhYAkiS1kAWAJEkt1HUBkGRRkpuTXN3ML06yOcnO5v7Q/oUpSZJ6aSYjAOcDd46bXwdsqaplwJZmXpIkDYGuCoAkS4FXApeNaz4N2NBMbwBW9zQySZLUN92OALwfeAvw43Fth1fVboDm/rDehiZJkvpl2gIgya8Be6rqq7N5giRrk2xPsn3v3r2z2YSkAWAuS6OlmxGAE4FXJbkP+ARwcpI/Bx5IsgSgud8z2cpVdWlVrayqlWNjYz0KW9J8M5el0TJtAVBVF1TV0qo6GngN8PmqOgu4CljTLLYGuLJvUUqSpJ6ay3kALgZOTbITOLWZlyRJQ+CgmSxcVVuBrc30Q8ApvQ9JkiT1m2cClCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWmrYASPKEJDcm2ZHk9iTvaNoXJ9mcZGdzf2j/w5UkSb3QzQjAvwEnV9WxwApgVZITgHXAlqpaBmxp5iVJ0hCYtgCojoeb2YObWwGnARua9g3A6n4EKEmSeq+rYwCSLEpyC7AH2FxV24DDq2o3QHN/WN+ilCRJPdVVAVBVj1bVCmApcHySY7p9giRrk2xPsn3v3r2zDFPSQjOXpdEyo18BVNU/A1uBVcADSZYANPd7pljn0qpaWVUrx8bG5hatpAVjLkujpZtfAYwleWozfQjwMuAbwFXAmmaxNcCVfYpRkiT12EFdLLME2JBkEZ2CYVNVXZ3kemBTknOA+4HT+xinJEnqoWkLgKq6FXjBJO0PAaf0IyhJktRfnglQkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBaatgBIcmSS65LcmeT2JOc37YuTbE6ys7k/tP/hSpKkXuhmBOAR4Peq6nnACcB5SZYD64AtVbUM2NLMS5KkITBtAVBVu6vqa83094A7gSOA04ANzWIbgNV9ilGSJPXYjI4BSHI08AJgG3B4Ve2GTpEAHNbz6CRJUl90XQAkeRLwaeBNVfXdGay3Nsn2JNv37t07mxglDQBzWRotXRUASQ6m88//L6rqiqb5gSRLmseXAHsmW7eqLq2qlVW1cmxsrBcxS1oA5rI0Wrr5FUCAy4E7q+q94x66CljTTK8Brux9eJIkqR8O6mKZE4HXAbcluaVp+wPgYmBTknOA+4HT+xKhJEnquWkLgKr6MpApHj6lt+FIkqT54JkAJUlqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWqhaQuAJB9JsifJ18e1LU6yOcnO5v7Q/oYpSZJ66aAullkPXAJ8dFzbOmBLVV2cZF0z/9beh6d93rf57ikfe/Opz5nHSCRJo2DaEYCq+iLwnQnNpwEbmukNwOrehiVJkvpptscAHF5VuwGa+8N6F5IkSeq3bnYBzEmStcBagKOOOqrfTzfw+jGU7+4BzYfZ5vKB3p/ge/RAfO3UT7MdAXggyRKA5n7PVAtW1aVVtbKqVo6Njc3y6SQtNHNZGi2zHQG4ClgDXNzcX9mziCRpSPgNXcOsm58B/iVwPfDcJLuSnEPnH/+pSXYCpzbzkiRpSEw7AlBVZ07x0Ck9jkWSJM2Tvh8EqMHlwYPSwppuF4LUT54KWJKkFnIEYID049uA3zCkA+vnSJj5p0HmCIAkSS1kASBJUgu5C2CWHNqTJA0zRwAkSWohCwBJklrIAkCSpBayAJAkqYU8CFCT8iyBmi9eUGf25vra+dq3myMAkiS1kAWAJEkt5C4A9dRsz48w26HG+X4+zb+FHKYe9vN9LHT87mIYbI4ASJLUQo4AaMa8aJGGie+t2ev3N3hHCBbWnEYAkqxKcleSe5Ks61VQkiSpv2ZdACRZBHwYeAWwHDgzyfJeBSZJkvpnLrsAjgfuqap7AZJ8AjgNuKMXgUn9NJehRw88lDoWeveKuxDmZi67AI4AvjVuflfTJkmSBlyqanYrJqcDL6+qc5v51wHHV9V/nbDcWmBtM/tc4K5pNv104MFZBTWY7M/gG7U+ddufB6tqVbcbNZftz4Brc39mlMv7zKUAeBFwUVW9vJm/AKCq3j2rDf50u9urauVctjFI7M/gG7U+DUp/BiWOXrE/g83+zNxcdgHcBCxL8swkjwdeA1zVm7AkSVI/zfogwKp6JMnvAtcCi4CPVNXtPYtMkiT1zZxOBFRVnwM+16NY9rm0x9tbaPZn8I1anwalP4MSR6/Yn8Fmf2Zo1scASJKk4eW1ACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsAOYgyaNJbkny9SSfTPLEAyx7UZLfn8/4pojjtCS3NnFvT/KSKZZbn+SkSdoPT3J1kh1J7kjSs6tBJrksyfIebOfsJJf0YDvHJbktyT1JPpgkc92mBo95PPJ5/K4k30ry8Fy3NWosAObmB1W1oqqOAX4IvGGhA+rCFuDYqloB/Bfgshmu/05gc1UdW1XLgXUzWTnJoqkeq6pzq+qOGcbTT38KrAWWNbdVCxuO+sQ8Hu08/ivg+IUOYhBZAPTOl4CfB0jy+qY635HkYxMXTPLbSW5qHv/0vm8cSU5vvoXsSPLFpu35SW5sKv1bkyybS5BV9XD99BrQPwvM9HrQS4Bd47Z3axPnSUmuHtfHS5Kc3Uzfl+TtSb4MvCXJjeOWOzrJvm1sTbIyyRuT/Mm4Zc5O8qFm+qxxr8ef7fsgSvJbSe5O8gXgxBn26TGSLAGeUlXXN6/XR4HVc92uBp55PEJ53PTthqra3YttjRoLgB5IchDwCuC2JM8HLgROrqpjgfMnWeWKqvrl5vE7gXOa9rcDL2/aX9W0vQH4QFPpr2Rc0o57/o1NIk28vX6KeP9Tkm8A/5vOt4eZ+DBweZLrklyY5BldrvevVfWSqno38Pgkz2razwA2TVj2U8Cvj5s/A9iY5HnN9InN6/Eo8Nrmn/U76HxgnApMOvyY5KVTvE5fmWTxI9j/td7VtGlEmcddGbY81gEctNABDLlDktzSTH8JuBz4HeBTVfUgQFV9Z5L1jknyx8BTgScB1zbtfwusT7IJuKJpux64MMlSOh84OydurKrOmEnQVfUZ4DNJfgX4I+BlM1j32ibpV9H5sLw5yTFdrLpx3PQm4NXAxXQ+CPaLv6r2Jrk3yQnATuC5dF6b84DjgJvS2R1/CLAHeCGwtar2QueDFHjOJLFfB6zosquT7e+f6bcsDQfzeHTzWAdgATA3P2gq2J9I5x093T+K9cDqqtrRDK+dBFBVb0jyQuCVwC1JVlTVx5Nsa9quTXJuVX1+wnNupJNcE723qj46VRBV9cUkz07y9H0fdN1oPgw/Dny8GS78FeAB9h9ResKE1f5l3PRG4JNJruhs7rEfhs0yrwa+AXymqqp5bTdU1QXjF0yymi7+OSd5KfC+SR76flW9eELbLmDpuPmlwD9O9xwaSubx6OaxDsACoPe20KnK31dVDyVZPMm3hycDu5McDLwW+AeAJM+uqm3AtiT/ETgyyc8B91bVB5uK/ReB/T44ZvLNIcnPA3/XJOIvAY8HHprB+icDN1TV95M8GXg2cD/wbWB5kp+h86FxCvDlybZRVX+X5FHgbez/jWK8K+gMwX4TeGvTtgW4snlt9yRZTOe13AZ8IMnTgO8CpwM7Jnnerr85VNXuJN9rvr1sA14PfKibdTUSzOMRyGMdmAVAj1XV7UneBXyhSY6bgbMnLPY2Om/2bwK30XnzA7wnnYODQidJdtA5OvesJD+ik5zvnGOI/xl4fbO9HwBnjDuYqBvHAZckeYTON4XLquomgGbI81Y6w303T7OdjcB7gGdO9mBV/VOSO4DlVXVj03ZHkj8E/ibJ44AfAedV1Q1JLqIzzLob+Bow5VHKM/BGOt/yDgH+urmpBczj0cnjdA5E/E3giUl20enrRXPd7ijIzN4zaosk64H1VbV1gUORNEvmsQ7EXwFIktRCFgCaymeB+xY4Bklz81nMY03BXQCSJLWQIwCSJLXQvP4KYNWqVXXNNdfM51NKmtqsL25kLksDZVa5PK8jAA8+2PU5KiQNMHNZGn7uApAkqYUsACRJaiELAEmSWsgCQJKkFvJaAH3yvs13d7Xcm099zNUuJUnqO0cAJElqIQsASZJaqOsCIMmiJDcnubqZX5xkc5Kdzf2h/QtTkiT10kxGAM4H7hw3vw7YUlXL6Fzzel0vA5MkSf3TVQGQZCnwSuCycc2nARua6Q3A6p5GJkmS+qbbEYD3A28Bfjyu7fCq2g3Q3B/W29AkSVK/TFsAJPk1YE9VfXU2T5BkbZLtSbbv3bt3NpuQNADMZWm0dDMCcCLwqiT3AZ8ATk7y58ADSZYANPd7Jlu5qi6tqpVVtXJsbKxHYUuab+ayNFqmLQCq6oKqWlpVRwOvAT5fVWcBVwFrmsXWAFf2LUpJktRTczkT4MXApiTnAPcDp/cmpMHX7Vn+JEkaVDMqAKpqK7C1mX4IOKX3IUmSpH7zTICSJLWQBYAkSS1kASBJUgtZAEiS1EIWAJIktZAFgCRJLTSX8wCoB7o5p8CbT33OPEQiSWoTRwAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIc8EOAS6OVsgeMZASVL3ph0BSPKEJDcm2ZHk9iTvaNoXJ9mcZGdzf2j/w5UkSb3QzS6AfwNOrqpjgRXAqiQnAOuALVW1DNjSzEuSpCEwbQFQHQ83swc3twJOAzY07RuA1f0IUJIk9V5XBwEmWZTkFmAPsLmqtgGHV9VugOb+sL5FKUmSeqqrAqCqHq2qFcBS4Pgkx3T7BEnWJtmeZPvevXtnGaakhWYuS6NlRj8DrKp/BrYCq4AHkiwBaO73TLHOpVW1sqpWjo2NzS1aSQvGXJZGSze/AhhL8tRm+hDgZcA3gKuANc1ia4Ar+xSjJEnqsW7OA7AE2JBkEZ2CYVNVXZ3kemBTknOA+4HT+xinJEnqoWkLgKq6FXjBJO0PAaf0IyhJktRfngpYkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphSwAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBaatgBIcmSS65LcmeT2JOc37YuTbE6ys7k/tP/hSpKkXuhmBOAR4Peq6nnACcB5SZYD64AtVbUM2NLMS5KkITBtAVBVu6vqa83094A7gSOA04ANzWIbgNV9ilGSJPXYjI4BSHI08AJgG3B4Ve2GTpEAHNbz6CRJUl8c1O2CSZ4EfBp4U1V9N0m3660F1gIcddRRs4lRXXrf5runXebNpz5nHiLRKDKXpdHS1QhAkoPp/PP/i6q6oml+IMmS5vElwJ7J1q2qS6tqZVWtHBsb60XMkhaAuSyNlmlHANL5qn85cGdVvXfcQ1cBa4CLm/sr+xKhFoSjCZI02rrZBXAi8DrgtiS3NG1/QOcf/6Yk5wD3A6f3JUJJktRz0xYAVfVlYKod/qf0NhxJkjQfPBOgJEktZAEgSVILdf0zQI2Gbg7ukySNPkcAJElqIQsASZJayAJAkqQWsgCQJKmFLAAkSWohCwBJklrIAkCSpBayAJAkqYUsACRJaiELAEmSWsgCQJKkFrIAkCSphQb6YkDdXLjmzac+Zx4ikSRptEw7ApDkI0n2JPn6uLbFSTYn2dncH9rfMCVJUi91swtgPbBqQts6YEtVLQO2NPOSJGlITLsLoKq+mOToCc2nASc10xuArcBbexlYr7k7QZKkn5rtQYCHV9VugOb+sN6FJEmS+q3vBwEmWQusBTjqqKP6/XSaR92MqnTL0ZfB19Zcnu59Pt17d67rS/0y2xGAB5IsAWju90y1YFVdWlUrq2rl2NjYLJ9O0kIzl6XRMtsC4CpgTTO9BriyN+FIkqT5MO0ugCR/SeeAv6cn2QX8d+BiYFOSc4D7gdP7GaSk4eTw9/R8jbRQuvkVwJlTPHRKj2ORJEnzZKDPBChptM3Ht99eHqwqjRKvBSBJUgtZAEiS1ELuApCkOXAXg4aVIwCSJLWQIwCSNMC8jon6xREASZJayAJAkqQWGvpdAL08AMeDeRZOt6+9Q52S1BuOAEiS1EIWAJIktZAFgCRJLWQBIElSC1kASJLUQhYAkiS1kAWAJEktNPTnAZCGiad1nZnpXi9fq465nsPE17Gd5jQCkGRVkruS3JNkXa+CkiRJ/TXrEYAki4APA6cCu4CbklxVVXf0KjhpokE9W6PfoBbGoL4fhs0ojCA4WjRzcxkBOB64p6ruraofAp8ATutNWJIkqZ/mUgAcAXxr3Pyupk2SJA24uRwEmEna6jELJWuBtc3sw0numma7TwcenENcg8b+DL459+n/61EgPdpWt/25pqpWdbtRc9n+TKWX7/85OGB/BiTGmZjJ32dGubxPqh7zP7u7FZMXARdV1cub+QsAqurds9rgT7e7vapWzmUbg8T+DL5R69Og9GdQ4ugV+zPY7M/MzWUXwE3AsiTPTPJ44DXAVb0JS5Ik9dOsdwFU1SNJfhe4FlgEfKSqbu9ZZJIkqW/mdCKgqvoc8LkexbLPpT3e3kKzP4Nv1Po0KP0ZlDh6xf4MNvszQ7M+BkCSJA0vrwUgSVILDVQBMOynFk5yZJLrktyZ5PYk5zfti5NsTrKzuT90oWOdiSSLktyc5Opmfmj7k+SpST6V5BvN3+lFQ96fNzfvta8n+cskT1jo/pjHg2mU8hjM5V4YmAJg3KmFXwEsB85Msnxho5qxR4Dfq6rnAScA5zV9WAdsqaplwJZmfpicD9w5bn6Y+/MBOr+Z/QXgWDr9Gsr+JDkC+G/Ayqo6hs7BuK9hAftjHg+0UcpjMJfnrqoG4ga8CLh23PwFwAULHdcc+3QlnWsl3AUsadqWAHctdGwz6MPS5o13MnB10zaU/QGeAvw9zbEv49qHtT/7zsa5mM4BvVcD/+9C9sc8HszbKOVxE6+53IPbwIwAMGKnFk5yNPACYBtweFXtBmjuD1vA0Gbq/cBbgB+PaxvW/jwL2Av8r2Yo9LIkP8uQ9qeq/gH4H8D9wG7g/1TV37Cw/TGPB9P7GZ08BnO5JwapAOjq1MLDIMmTgE8Db6qq7y50PLOV5NeAPVX11YWOpUcOAn4J+NOqegHwLwzJEOFkmv2BpwHPBJ4B/GySsxY2KvN40IxgHoO53BODVADsAo4cN78U+McFimXWkhxM50PjL6rqiqb5gSRLmseXAHsWKr4ZOhF4VZL76Fzt8eQkf87w9mcXsKuqtjXzn6LzITKs/XkZ8PdVtbeqfgRcAbyYhe2PeTx4Ri2PwVzuiUEqAIb+1MJJAlwO3FlV7x330FXAmmZ6DZ19igOvqi6oqqVVdTSdv8fnq+oshrc/3wa+leS5TdMpwB0MaX/oDBeekOSJzXvvFDoHQi1kf8zjATNqeQzmcs8s9MEPEw6E+FXgbuDvgAsXOp5ZxP8SOsOdtwK3NLdfBZ5G5wCcnc394oWOdRZ9O4mfHjw0tP0BVgDbm7/RZ4FDh7w/7wC+AXwd+BjwMwvdH/N4cG+jksdN/ObyHG+eCVCSpBYapF0AkiRpnlgASJLUQhYAkiS1kAWAJEktZAEgSVILWQDoMZL8pySV5BcWOhZJs2cu60AsADSZM4Ev0zlpiKThZS5rShYA2k9z/vMTgXNoPjSSPC7J/2yuVX11ks8l+Y3mseOSfCHJV5Ncu++0lZIWlrms6VgAaKLVdK6xfTfwnSS/BPw6cDTw74Fz6Vzydd/50j8E/EZVHQd8BHjXAsQs6bFWYy7rAA5a6AA0cM6kc+lQ6Fw45EzgYOCTVfVj4NtJrmsefy5wDLC5c/pqFtG5lKWkhWcu64AsAPQTSZ4GnAwck6TofAgU8JmpVgFur6oXzVOIkrpgLqsb7gLQeL8BfLSq/l1VHV1VRwJ/DzwI/Odm/+HhdC4oAnAXMJbkJ8OISZ6/EIFL2o+5rGlZAGi8M3nsN4RPA8+gc/3trwN/BmwD/k9V/ZDOB83/n2QHnaumvXjeopU0FXNZ0/JqgOpKkidV1cPN0OKNwInVuSa3pCFiLmsfjwFQt65O8lTg8cAf+YEhDS1zWYAjAJIktZLHAEiS1EIWAJIktZAFgCRJLWQBIElSC1kASJLUQhYAkiS10P8F0dAx82u2TNQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# grid = sns.FacetGrid(train_df, col='Pclass', hue='Survived')\n", "grid = sns.FacetGrid(train_df, col='Survived', row='Pclass', size=2.2, aspect=1.6)\n", "grid.map(plt.hist, 'Age', alpha=.5, bins=20)\n", "grid.add_legend();" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:316: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", " warnings.warn(msg, UserWarning)\n", "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:645: UserWarning: Using the pointplot function without specifying `order` is likely to produce an incorrect plot.\n", " warnings.warn(warning)\n", "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:650: UserWarning: Using the pointplot function without specifying `hue_order` is likely to produce an incorrect plot.\n", " warnings.warn(warning)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "grid = sns.FacetGrid(train_df, row='Embarked', size=2.2, aspect=1.6)\n", "grid.map(sns.pointplot, 'Pclass', 'Survived', 'Sex', palette='deep')\n", "grid.add_legend()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:316: UserWarning: The `size` parameter has been renamed to `height`; please update your code.\n", " warnings.warn(msg, UserWarning)\n", "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\axisgrid.py:645: UserWarning: Using the barplot function without specifying `order` is likely to produce an incorrect plot.\n", " warnings.warn(warning)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# grid = sns.FacetGrid(train_df, col='Embarked', hue='Survived', palette={0: 'k', 1: 'w'})\n", "grid = sns.FacetGrid(train_df, row='Embarked', col='Survived', size=2.2, aspect=1.6)\n", "grid.map(sns.barplot, 'Sex', 'Fare', alpha=.5, ci=None)\n", "grid.add_legend()" ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(891, 12) (418, 11)\n" ] } ], "source": [ "#Before\n", "\n", "print(train_df.shape, test_df.shape)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Dropping the columns of ticket & cabin\n", "\n", "train_df=train_df.drop([\"Ticket\", \"Cabin\"], axis=1)\n", "test_df=test_df.drop([\"Ticket\",\"Cabin\"],axis=1)" ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(891, 10) (418, 9)\n" ] } ], "source": [ "#After\n", "\n", "print(train_df.shape, test_df.shape)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "combine = [train_df, test_df]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Sexfemalemale
Title
Capt01
Col02
Countess10
Don01
Dr16
Jonkheer01
Lady10
Major02
Master040
Miss1820
Mlle20
Mme10
Mr0517
Mrs1250
Ms10
Rev06
Sir01
\n", "
" ], "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": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for dataset in combine:\n", " dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\\.', expand=False)\n", "\n", "pd.crosstab(train_df['Title'], train_df['Sex'])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TitleSurvived
0Master0.575000
1Miss0.702703
2Mr0.156673
3Mrs0.793651
4Rare0.347826
\n", "
" ], "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.347826" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for dataset in combine:\n", " dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col',\\\n", " \t'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')\n", "\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_df[['Title', 'Survived']].groupby(['Title'], as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Rare\": 5}\n", "for dataset in combine:\n", " dataset['Title'] = dataset['Title'].map(title_mapping)\n", " dataset['Title'] = dataset['Title'].fillna(0)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdSurvivedPclassNameSexAgeSibSpParchFareEmbarkedTitle
0103Braund, Mr. Owen Harrismale22.0107.2500S1
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.01071.2833C3
2313Heikkinen, Miss. Lainafemale26.0007.9250S2
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01053.1000S3
4503Allen, Mr. William Henrymale35.0008.0500S1
\n", "
" ], "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 Title \n", "0 0 7.2500 S 1 \n", "1 0 71.2833 C 3 \n", "2 0 7.9250 S 2 \n", "3 0 53.1000 S 3 \n", "4 0 8.0500 S 1 " ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "train_df = train_df.drop(['Name', 'PassengerId'], axis=1)\n", "test_df = test_df.drop(['Name'], axis=1)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "combine = [train_df, test_df]" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(891, 9)" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.shape" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(418, 9)" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_df.shape" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "for dataset in combine:\n", " dataset[\"Sex\"] = dataset[\"Sex\"].map( {\"female\": 1, \"male\": 0}).astype(int)" ] }, { "cell_type": "code", "execution_count": 98, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeSibSpParchFareEmbarkedTitle
003022.0107.2500S1
111138.01071.2833C3
213126.0007.9250S2
311135.01053.1000S3
403035.0008.0500S1
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age SibSp Parch Fare Embarked Title\n", "0 0 3 0 22.0 1 0 7.2500 S 1\n", "1 1 1 1 38.0 1 0 71.2833 C 3\n", "2 1 3 1 26.0 0 0 7.9250 S 2\n", "3 1 1 1 35.0 1 0 53.1000 S 3\n", "4 0 3 0 35.0 0 0 8.0500 S 1" ] }, "execution_count": 98, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "grid = sns.FacetGrid(train_df, row=\"Pclass\", col=\"Sex\")\n", "grid.map(plt.hist, \"Age\", bins=20)\n", "grid.add_legend()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "guess_ages = np.zeros((2,3))" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0., 0., 0.],\n", " [0., 0., 0.]])" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "guess_ages" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeSibSpParchFareEmbarkedTitle
003022107.2500S1
1111381071.2833C3
213126007.9250S2
3111351053.1000S3
403035008.0500S1
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age SibSp Parch Fare Embarked Title\n", "0 0 3 0 22 1 0 7.2500 S 1\n", "1 1 1 1 38 1 0 71.2833 C 3\n", "2 1 3 1 26 0 0 7.9250 S 2\n", "3 1 1 1 35 1 0 53.1000 S 3\n", "4 0 3 0 35 0 0 8.0500 S 1" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for dataset in combine:\n", " for i in range(0, 2):\n", " for j in range(0, 3):\n", " guess_df = dataset[(dataset['Sex'] == i) & \\\n", " (dataset['Pclass'] == j+1)]['Age'].dropna()\n", "\n", " # age_mean = guess_df.mean()\n", " # age_std = guess_df.std()\n", " # age_guess = rnd.uniform(age_mean - age_std, age_mean + age_std)\n", "\n", " age_guess = guess_df.median()\n", "\n", " # Convert random age float to nearest .5 age\n", " guess_ages[i,j] = int( age_guess/0.5 + 0.5 ) * 0.5\n", " \n", " for i in range(0, 2):\n", " for j in range(0, 3):\n", " dataset.loc[ (dataset.Age.isnull()) & (dataset.Sex == i) & (dataset.Pclass == j+1),\\\n", " 'Age'] = guess_ages[i,j]\n", "\n", " dataset['Age'] = dataset['Age'].astype(int)\n", "\n", "train_df.head()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AgeBandSurvived
0(-0.08, 16.0]0.550000
1(16.0, 32.0]0.337374
2(32.0, 48.0]0.412037
3(48.0, 64.0]0.434783
4(64.0, 80.0]0.090909
\n", "
" ], "text/plain": [ " AgeBand Survived\n", "0 (-0.08, 16.0] 0.550000\n", "1 (16.0, 32.0] 0.337374\n", "2 (32.0, 48.0] 0.412037\n", "3 (48.0, 64.0] 0.434783\n", "4 (64.0, 80.0] 0.090909" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df['AgeBand'] = pd.cut(train_df['Age'], 5)\n", "train_df[['AgeBand', 'Survived']].groupby(['AgeBand'], as_index=False).mean().sort_values(by='AgeBand', ascending=True)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeSibSpParchFareEmbarkedTitleAgeBand
00301107.2500S1(16.0, 32.0]
111121071.2833C3(32.0, 48.0]
21311007.9250S2(16.0, 32.0]
311121053.1000S3(32.0, 48.0]
40302008.0500S1(32.0, 48.0]
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age SibSp Parch Fare Embarked Title \\\n", "0 0 3 0 1 1 0 7.2500 S 1 \n", "1 1 1 1 2 1 0 71.2833 C 3 \n", "2 1 3 1 1 0 0 7.9250 S 2 \n", "3 1 1 1 2 1 0 53.1000 S 3 \n", "4 0 3 0 2 0 0 8.0500 S 1 \n", "\n", " AgeBand \n", "0 (16.0, 32.0] \n", "1 (32.0, 48.0] \n", "2 (16.0, 32.0] \n", "3 (32.0, 48.0] \n", "4 (32.0, 48.0] " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for dataset in combine: \n", " dataset.loc[ dataset['Age'] <= 16, 'Age'] = 0\n", " dataset.loc[(dataset['Age'] > 16) & (dataset['Age'] <= 32), 'Age'] = 1\n", " dataset.loc[(dataset['Age'] > 32) & (dataset['Age'] <= 48), 'Age'] = 2\n", " dataset.loc[(dataset['Age'] > 48) & (dataset['Age'] <= 64), 'Age'] = 3\n", " dataset.loc[ dataset['Age'] > 64, 'Age']\n", "train_df.head()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeSibSpParchFareEmbarkedTitle
00301107.2500S1
111121071.2833C3
21311007.9250S2
311121053.1000S3
40302008.0500S1
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age SibSp Parch Fare Embarked Title\n", "0 0 3 0 1 1 0 7.2500 S 1\n", "1 1 1 1 2 1 0 71.2833 C 3\n", "2 1 3 1 1 0 0 7.9250 S 2\n", "3 1 1 1 2 1 0 53.1000 S 3\n", "4 0 3 0 2 0 0 8.0500 S 1" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df = train_df.drop(['AgeBand'], axis=1)\n", "combine = [train_df, test_df]\n", "train_df.head()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "for dataset in combine:\n", " dataset[\"FamilySize\"] = dataset[\"SibSp\"] + dataset[\"Parch\"] + 1" ] }, { "cell_type": "code", "execution_count": 110, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FamilySizeSurvived
340.724138
230.578431
120.552795
670.333333
010.303538
450.200000
560.136364
780.000000
8110.000000
\n", "
" ], "text/plain": [ " FamilySize Survived\n", "3 4 0.724138\n", "2 3 0.578431\n", "1 2 0.552795\n", "6 7 0.333333\n", "0 1 0.303538\n", "4 5 0.200000\n", "5 6 0.136364\n", "7 8 0.000000\n", "8 11 0.000000" ] }, "execution_count": 110, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"FamilySize\", \"Survived\"]].groupby([\"FamilySize\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "for dataset in combine:\n", " dataset[\"IsAlone\"] = 0\n", " dataset.loc[dataset[\"FamilySize\"] == 1, \"IsAlone\"] = 1" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
IsAloneSurvived
000.505650
110.303538
\n", "
" ], "text/plain": [ " IsAlone Survived\n", "0 0 0.505650\n", "1 1 0.303538" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"IsAlone\", \"Survived\"]].groupby([\"IsAlone\"], as_index=False).mean()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "train_df = train_df.drop(['Parch', 'SibSp', 'FamilySize'], axis=1)\n", "test_df = test_df.drop(['Parch', 'SibSp', 'FamilySize'], axis=1)\n", "combine = [train_df, test_df]" ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeFareEmbarkedTitleIsAlone
003017.2500S10
1111271.2833C30
213117.9250S21
3111253.1000S30
403028.0500S11
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age Fare Embarked Title IsAlone\n", "0 0 3 0 1 7.2500 S 1 0\n", "1 1 1 1 2 71.2833 C 3 0\n", "2 1 3 1 1 7.9250 S 2 1\n", "3 1 1 1 2 53.1000 S 3 0\n", "4 0 3 0 2 8.0500 S 1 1" ] }, "execution_count": 114, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "for dataset in combine:\n", " dataset['Age*Class'] = dataset.Age * dataset.Pclass" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Age*ClassAgePclass
0313
1221
2313
3221
4623
\n", "
" ], "text/plain": [ " Age*Class Age Pclass\n", "0 3 1 3\n", "1 2 2 1\n", "2 3 1 3\n", "3 2 2 1\n", "4 6 2 3" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.loc[:, ['Age*Class', 'Age', 'Pclass']].head()" ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "S 644\n", "C 168\n", "Q 77\n", "Name: Embarked, dtype: int64" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[\"Embarked\"].value_counts()" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0 S\n", "dtype: object" ] }, "execution_count": 124, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[\"Embarked\"].dropna().mode()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "train_df[\"Embarked\"].fillna(\"S\", inplace=True)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 891 entries, 0 to 890\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 Survived 891 non-null int64 \n", " 1 Pclass 891 non-null int64 \n", " 2 Sex 891 non-null int32 \n", " 3 Age 891 non-null int32 \n", " 4 Fare 891 non-null float64\n", " 5 Embarked 891 non-null object \n", " 6 Title 891 non-null int64 \n", " 7 IsAlone 891 non-null int64 \n", " 8 Age*Class 891 non-null int64 \n", "dtypes: float64(1), int32(2), int64(5), object(1)\n", "memory usage: 55.8+ KB\n" ] } ], "source": [ "train_df.info()" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "test_df[\"Embarked\"] = test_df[\"Embarked\"].fillna(\"S\")" ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 418 entries, 0 to 417\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 PassengerId 418 non-null int64 \n", " 1 Pclass 418 non-null int64 \n", " 2 Sex 418 non-null int32 \n", " 3 Age 418 non-null int32 \n", " 4 Fare 417 non-null float64\n", " 5 Embarked 418 non-null object \n", " 6 Title 418 non-null int64 \n", " 7 IsAlone 418 non-null int64 \n", " 8 Age*Class 418 non-null int64 \n", "dtypes: float64(1), int32(2), int64(5), object(1)\n", "memory usage: 26.2+ KB\n" ] } ], "source": [ "test_df.info()" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EmbarkedSurvived
0C0.553571
1Q0.389610
2S0.339009
\n", "
" ], "text/plain": [ " Embarked Survived\n", "0 C 0.553571\n", "1 Q 0.389610\n", "2 S 0.339009" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"Embarked\", \"Survived\"]].groupby([\"Embarked\"], as_index=False).mean().sort_values(by=\"Survived\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeFareEmbarkedTitleIsAloneAge*Class
003017.25000103
1111271.28331302
213117.92500213
3111253.10000302
403028.05000116
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age Fare Embarked Title IsAlone Age*Class\n", "0 0 3 0 1 7.2500 0 1 0 3\n", "1 1 1 1 2 71.2833 1 3 0 2\n", "2 1 3 1 1 7.9250 0 2 1 3\n", "3 1 1 1 2 53.1000 0 3 0 2\n", "4 0 3 0 2 8.0500 0 1 1 6" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for dataset in combine:\n", " dataset['Embarked'] = dataset['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)\n", "\n", "train_df.head()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "test_df[\"Fare\"].fillna(test_df[\"Fare\"].dropna().median(), inplace=True)" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 418 entries, 0 to 417\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 PassengerId 418 non-null int64 \n", " 1 Pclass 418 non-null int64 \n", " 2 Sex 418 non-null int32 \n", " 3 Age 418 non-null int32 \n", " 4 Fare 418 non-null float64\n", " 5 Embarked 418 non-null int32 \n", " 6 Title 418 non-null int64 \n", " 7 IsAlone 418 non-null int64 \n", " 8 Age*Class 418 non-null int64 \n", "dtypes: float64(1), int32(3), int64(5)\n", "memory usage: 24.6 KB\n" ] } ], "source": [ "test_df.info()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "train_df[\"FareBand\"] = pd.qcut(train_df[\"Fare\"], 4)" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FareBandSurvived
0(-0.001, 7.91]0.197309
1(7.91, 14.454]0.303571
2(14.454, 31.0]0.454955
3(31.0, 512.329]0.581081
\n", "
" ], "text/plain": [ " FareBand Survived\n", "0 (-0.001, 7.91] 0.197309\n", "1 (7.91, 14.454] 0.303571\n", "2 (14.454, 31.0] 0.454955\n", "3 (31.0, 512.329] 0.581081" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df[[\"FareBand\", \"Survived\"]].groupby([\"FareBand\"], as_index=False).mean().sort_values(by=\"FareBand\", ascending=True\n", " )" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "for dataset in combine:\n", " dataset.loc[dataset[\"Fare\"] <= 7.91, \"Fare\"] = 0\n", " dataset.loc[(dataset[\"Fare\"] > 7.91) & (dataset[\"Fare\"] <= 14.454), \"Fare\"] = 1\n", " dataset.loc[(dataset[\"Fare\"] > 14.454) & (dataset[\"Fare\"] <= 31), \"Fare\"] = 2\n", " dataset.loc[dataset[\"Fare\"] > 31, \"Fare\"] = 3\n", " dataset[\"Fare\"] = dataset[\"Fare\"].astype(int)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "train_df = train_df.drop([\"FareBand\"], axis=1)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "combine = [train_df, test_df]" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SurvivedPclassSexAgeFareEmbarkedTitleIsAloneAge*Class
0030100103
1111231302
2131110213
3111230302
4030210116
\n", "
" ], "text/plain": [ " Survived Pclass Sex Age Fare Embarked Title IsAlone Age*Class\n", "0 0 3 0 1 0 0 1 0 3\n", "1 1 1 1 2 3 1 3 0 2\n", "2 1 3 1 1 1 0 2 1 3\n", "3 1 1 1 2 3 0 3 0 2\n", "4 0 3 0 2 1 0 1 1 6" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_df.head()" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdPclassSexAgeFareEmbarkedTitleIsAloneAge*Class
089230202116
189331200306
289420312116
389530110113
489631110303
\n", "
" ], "text/plain": [ " PassengerId Pclass Sex Age Fare Embarked Title IsAlone Age*Class\n", "0 892 3 0 2 0 2 1 1 6\n", "1 893 3 1 2 0 0 3 0 6\n", "2 894 2 0 3 1 2 1 1 6\n", "3 895 3 0 1 1 0 1 1 3\n", "4 896 3 1 1 1 0 3 0 3" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_df.head()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [], "source": [ "X_train = train_df.drop(\"Survived\", axis=1)\n", "y_train = train_df[\"Survived\"]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "X_test = test_df.drop(\"PassengerId\", axis=1).copy()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8035914702581369" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Logistic Regression\n", "\n", "logreg = LogisticRegression()\n", "logreg.fit(X_train, y_train)\n", "\n", "y_pred = logreg.predict(X_test)\n", "\n", "acc_log = logreg.score(X_train, y_train)\n", "acc_log" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
FeatureCorrelation
1Sex2.201619
5Title0.397888
2Age0.287011
4Embarked0.261473
6IsAlone0.126553
3Fare-0.086655
7Age*Class-0.311069
0Pclass-0.750700
\n", "
" ], "text/plain": [ " Feature Correlation\n", "1 Sex 2.201619\n", "5 Title 0.397888\n", "2 Age 0.287011\n", "4 Embarked 0.261473\n", "6 IsAlone 0.126553\n", "3 Fare -0.086655\n", "7 Age*Class -0.311069\n", "0 Pclass -0.750700" ] }, "execution_count": 150, "metadata": {}, "output_type": "execute_result" } ], "source": [ "coeff_df = pd.DataFrame(train_df.columns.delete(0))\n", "coeff_df.columns = [\"Feature\"]\n", "coeff_df[\"Correlation\"] = pd.Series(logreg.coef_[0])\n", "\n", "coeff_df.sort_values(by=\"Correlation\", ascending=False)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [], "source": [ "# Support Vector Machines\n", "\n", "svc = SVC()\n", "svc.fit(X_train, y_train)\n", "y_pred = svc.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 2)", "output_type": "error", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m accuracy_svc\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "source": [ "accuracy_svc = round(svc.score(X_train, y_train))\n", "accuracy_svc" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8473625140291807" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# K Nearest Neighbours\n", "\n", "knn = KNeighborsClassifier(n_neighbors=3)\n", "knn.fit(X_train, y_train)\n", "y_pred = knn.predict(X_test)\n", "\n", "accuracy_knn = knn.score(X_train, y_train)\n", "accuracy_knn" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7227833894500562" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Naive Bayes\n", "\n", "nb = GaussianNB()\n", "nb.fit(X_train, y_train)\n", "y_pred = nb.predict(X_test)\n", "\n", "accuracy_nb = nb.score(X_train, y_train)\n", "accuracy_nb" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7833894500561167" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Perceptron\n", "\n", "perceptron = Perceptron()\n", "perceptron.fit(X_train, y_train)\n", "y_pred = perceptron.predict(X_test)\n", "\n", "accuracy_percept = perceptron.score(X_train, y_train)\n", "accuracy_percept" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramData\\Anaconda3\\lib\\site-packages\\sklearn\\svm\\_base.py:976: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n", " warnings.warn(\"Liblinear failed to converge, increase \"\n" ] }, { "data": { "text/plain": [ "0.7890011223344556" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Linear SVC\n", "\n", "svc = LinearSVC()\n", "svc.fit(X_train, y_train)\n", "y_pred = svc.predict(X_test)\n", "\n", "accuracy_svc = svc.score(X_train, y_train)\n", "accuracy_svc" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.7474747474747475" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Stochastic Gradient Descent \n", "\n", "sgd = SGDClassifier()\n", "sgd.fit(X_train, y_train)\n", "y_pred = sgd.predict(X_test)\n", "\n", "accuracy_sgd = sgd.score(X_train, y_train)\n", "accuracy_sgd" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.867564534231201" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Decision Tree\n", "\n", "decision_tree = DecisionTreeClassifier()\n", "decision_tree.fit(X_train, y_train)\n", "y_pred = decision_tree.predict(X_test)\n", "\n", "accuracy_decisiontree = decision_tree.score(X_train, y_train)\n", "accuracy_decisiontree" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.867564534231201" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Random Forest\n", "\n", "random_forest = RandomForestClassifier(n_estimators=100)\n", "random_forest.fit(X_train, y_train)\n", "y_pred = random_forest.predict(X_test)\n", "\n", "accuracy_randomforest = random_forest.score(X_train, y_train)\n", "accuracy_randomforest" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ModelScore
7Decision Tree0.867565
8Random Forest0.867565
2K Nearest Neighbors0.847363
0Logistic Regression0.803591
1Support Vector Machines0.789001
5Linear SVC0.789001
4Perceptron0.783389
6Stochastic Gradient Descent0.747475
3Naive Bayes0.722783
\n", "
" ], "text/plain": [ " Model Score\n", "7 Decision Tree 0.867565\n", "8 Random Forest 0.867565\n", "2 K Nearest Neighbors 0.847363\n", "0 Logistic Regression 0.803591\n", "1 Support Vector Machines 0.789001\n", "5 Linear SVC 0.789001\n", "4 Perceptron 0.783389\n", "6 Stochastic Gradient Descent 0.747475\n", "3 Naive Bayes 0.722783" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "models = pd.DataFrame({\n", " 'Model': ['Logistic Regression', 'Support Vector Machines', 'K Nearest Neighbors', \n", " 'Naive Bayes', 'Perceptron', 'Linear SVC', 'Stochastic Gradient Descent', 'Decision Tree', 'Random Forest'],\n", " 'Score': [acc_log, accuracy_svc, accuracy_knn, \n", " accuracy_nb, accuracy_percept, accuracy_svc, \n", " accuracy_sgd, accuracy_decisiontree, accuracy_randomforest]})\n", "models.sort_values(by='Score', ascending=False)" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.867564534231201" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Rerun Random Forest because highest score\n", "\n", "# Random Forest\n", "\n", "random_forest = RandomForestClassifier(n_estimators=100)\n", "random_forest.fit(X_train, y_train)\n", "y_pred = random_forest.predict(X_test)\n", "\n", "accuracy_randomforest = random_forest.score(X_train, y_train)\n", "accuracy_randomforest" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [], "source": [ "submission = pd.DataFrame({\"PassengerId\": test_df[\"PassengerId\"], \"Survived\": y_pred})" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "submission.to_csv(\"submission.csv\", index=False)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1,\n", " 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1,\n", " 1, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1,\n", " 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0,\n", " 1, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0,\n", " 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0,\n", " 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0,\n", " 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1,\n", " 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1,\n", " 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0,\n", " 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1,\n", " 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1,\n", " 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0,\n", " 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1,\n", " 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0,\n", " 1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0,\n", " 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0,\n", " 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1,\n", " 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1],\n", " dtype=int64)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_pred" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PassengerIdPclassSexAgeFareEmbarkedTitleIsAloneAge*Class
089230202116
189331200306
289420312116
389530110113
489631110303
..............................
413130530110113
414130611231512
415130730200116
416130830110113
417130930121403
\n", "

418 rows × 9 columns

\n", "
" ], "text/plain": [ " PassengerId Pclass Sex Age Fare Embarked Title IsAlone Age*Class\n", "0 892 3 0 2 0 2 1 1 6\n", "1 893 3 1 2 0 0 3 0 6\n", "2 894 2 0 3 1 2 1 1 6\n", "3 895 3 0 1 1 0 1 1 3\n", "4 896 3 1 1 1 0 3 0 3\n", ".. ... ... ... ... ... ... ... ... ...\n", "413 1305 3 0 1 1 0 1 1 3\n", "414 1306 1 1 2 3 1 5 1 2\n", "415 1307 3 0 2 0 0 1 1 6\n", "416 1308 3 0 1 1 0 1 1 3\n", "417 1309 3 0 1 2 1 4 0 3\n", "\n", "[418 rows x 9 columns]" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "test_df" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }