Skip to content

Instantly share code, notes, and snippets.

@chapagain
Created November 1, 2017 06:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save chapagain/a6899b04d4a700dae848a953b0347e52 to your computer and use it in GitHub Desktop.
Save chapagain/a6899b04d4a700dae848a953b0347e52 to your computer and use it in GitHub Desktop.
Titanic: Machine Learning from Disaster
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# TITANIC SOLUTION\n",
"\n",
"### A BEGINNER'S GUIDE"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loading Modules"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"sns.set() # setting seaborn default for plots"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Loading Datasets\n",
"\n",
"Loading train and test dataset"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"train = pd.read_csv('train.csv')\n",
"test = pd.read_csv('test.csv')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Looking into the training dataset\n",
"\n",
"Printing first 5 rows of the train dataset."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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</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</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</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</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</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 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 \n",
"2 Heikkinen, Miss. Laina female 26 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 \n",
"4 Allen, Mr. William Henry male 35 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below is a brief information about each columns of the dataset:\n",
"\n",
"1. **PassengerId:** An unique index for passenger rows. It starts from 1 for first row and increments by 1 for every new rows.\n",
"\n",
"2. **Survived:** Shows if the passenger survived or not. 1 stands for survived and 0 stands for not survived.\n",
"\n",
"3. **Pclass:** Ticket class. 1 stands for First class ticket. 2 stands for Second class ticket. 3 stands for Third class ticket.\n",
"\n",
"4. **Name:** Passenger's name. Name also contain title. \"Mr\" for man. \"Mrs\" for woman. \"Miss\" for girl. \"Master\" for boy.\n",
"\n",
"5. **Sex:** Passenger's sex. It's either Male or Female.\n",
"\n",
"6. **Age:** Passenger's age. \"NaN\" values in this column indicates that the age of that particular passenger has not been recorded.\n",
"\n",
"7. **SibSp:** Number of siblings or spouses travelling with each passenger.\n",
"8. **Parch:** Number of parents of children travelling with each passenger.\n",
"9. **Ticket:** Ticket number.\n",
"10. **Fare:** How much money the passenger has paid for the travel journey.\n",
"11. **Cabin:** Cabin number of the passenger. \"NaN\" values in this column indicates that the cabin number of that particular passenger has not been recorded.\n",
"12. **Embarked:** Port from where the particular passenger was embarked/boarded."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Total rows and columns**"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(891, 12)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that there are 891 rows and 12 columns in our training dataset."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Describing training dataset**\n",
"\n",
"*describe()* method can show different values like count, mean, standard deviation, etc. of numeric data types."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\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": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*describe(include = ['O'])* will show the descriptive statistics of object data types."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Graham, Mr. George Edward</td>\n",
" <td>male</td>\n",
" <td>CA. 2343</td>\n",
" <td>C23 C25 C27</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 Graham, Mr. George Edward male CA. 2343 C23 C25 C27 S\n",
"freq 1 577 7 4 644"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.describe(include=['O'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that there are duplicate *Ticket number* and *Cabins* shared. The highest number of duplicate ticket number is \"CA. 2343\". It has been repeated 7 times. Similarly, the highest number of people using the same cabin is 4. They are using cabin number \"C23 C25 C27\".\n",
"\n",
"We also see that 644 people were embarked from port \"S\".\n",
"\n",
"Among 891 rows, 577 were Male and the rest were Female."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We use *info()* method to see more information of our train dataset."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 891 entries, 0 to 890\n",
"Data columns (total 12 columns):\n",
"PassengerId 891 non-null int64\n",
"Survived 891 non-null int64\n",
"Pclass 891 non-null int64\n",
"Name 891 non-null object\n",
"Sex 891 non-null object\n",
"Age 714 non-null float64\n",
"SibSp 891 non-null int64\n",
"Parch 891 non-null int64\n",
"Ticket 891 non-null object\n",
"Fare 891 non-null float64\n",
"Cabin 204 non-null object\n",
"Embarked 889 non-null object\n",
"dtypes: float64(2), int64(5), object(5)\n",
"memory usage: 90.5+ KB\n"
]
}
],
"source": [
"train.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can see that *Age* value is missing for many rows. \n",
"\n",
"Out of 891 rows, the *Age* value is present only in 714 rows.\n",
"\n",
"Similarly, *Cabin* values are also missing in many rows. Only 204 out of 891 rows have *Cabin* values."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"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"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are 177 rows with missing *Age*, 687 rows with missing *Cabin* and 2 rows with missing *Embarked* information."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Looking into the testing dataset\n",
"\n",
"Test data has 418 rows and 11 columns.\n",
"\n",
"> Train data rows = 891\n",
">\n",
"> Test data rows = 418\n",
">\n",
"> Total rows = 891+418 = 1309\n",
"\n",
"We can see that around 2/3 of total data is set as Train data and around 1/3 of total data is set as Test data."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"(418, 11)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Survived* column is not present in Test data.\n",
"We have to train our classifier using the Train data and generate predictions (*Survived*) on Test data."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Pclass</th>\n",
" <th>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>892</td>\n",
" <td>3</td>\n",
" <td>Kelly, Mr. James</td>\n",
" <td>male</td>\n",
" <td>34.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>330911</td>\n",
" <td>7.8292</td>\n",
" <td>NaN</td>\n",
" <td>Q</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>893</td>\n",
" <td>3</td>\n",
" <td>Wilkes, Mrs. James (Ellen Needs)</td>\n",
" <td>female</td>\n",
" <td>47.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>363272</td>\n",
" <td>7.0000</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>894</td>\n",
" <td>2</td>\n",
" <td>Myles, Mr. Thomas Francis</td>\n",
" <td>male</td>\n",
" <td>62.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>240276</td>\n",
" <td>9.6875</td>\n",
" <td>NaN</td>\n",
" <td>Q</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>895</td>\n",
" <td>3</td>\n",
" <td>Wirz, Mr. Albert</td>\n",
" <td>male</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>315154</td>\n",
" <td>8.6625</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>896</td>\n",
" <td>3</td>\n",
" <td>Hirvonen, Mrs. Alexander (Helga E Lindqvist)</td>\n",
" <td>female</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>3101298</td>\n",
" <td>12.2875</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Name Sex \\\n",
"0 892 3 Kelly, Mr. James male \n",
"1 893 3 Wilkes, Mrs. James (Ellen Needs) female \n",
"2 894 2 Myles, Mr. Thomas Francis male \n",
"3 895 3 Wirz, Mr. Albert male \n",
"4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female \n",
"\n",
" Age SibSp Parch Ticket Fare Cabin Embarked \n",
"0 34.5 0 0 330911 7.8292 NaN Q \n",
"1 47.0 1 0 363272 7.0000 NaN S \n",
"2 62.0 0 0 240276 9.6875 NaN Q \n",
"3 27.0 0 0 315154 8.6625 NaN S \n",
"4 22.0 1 1 3101298 12.2875 NaN S "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.head()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"Int64Index: 418 entries, 0 to 417\n",
"Data columns (total 11 columns):\n",
"PassengerId 418 non-null int64\n",
"Pclass 418 non-null int64\n",
"Name 418 non-null object\n",
"Sex 418 non-null object\n",
"Age 332 non-null float64\n",
"SibSp 418 non-null int64\n",
"Parch 418 non-null int64\n",
"Ticket 418 non-null object\n",
"Fare 417 non-null float64\n",
"Cabin 91 non-null object\n",
"Embarked 418 non-null object\n",
"dtypes: float64(2), int64(4), object(5)\n",
"memory usage: 39.2+ KB\n"
]
}
],
"source": [
"test.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are missing entries for *Age* in Test dataset as well.\n",
"\n",
"Out of 418 rows in Test dataset, only 332 rows have *Age* value.\n",
"\n",
"*Cabin* values are also missing in many rows. Only 91 rows out ot 418 have values for *Cabin* column."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 0\n",
"Pclass 0\n",
"Name 0\n",
"Sex 0\n",
"Age 86\n",
"SibSp 0\n",
"Parch 0\n",
"Ticket 0\n",
"Fare 1\n",
"Cabin 327\n",
"Embarked 0\n",
"dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.isnull().sum()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are 86 rows with missing *Age*, 327 rows with missing *Cabin* and 1 row with missing *Fare* information."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Relationship between Features and Survival\n",
"\n",
"In this section, we analyze relationship between different features with respect to *Survival*. We see how different feature values show different survival chance. We also plot different kinds of diagrams to **visualize** our data and findings."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Survived: 342 (38.4%)\n",
"Not Survived: 549 (61.6%)\n",
"Total: 891\n"
]
}
],
"source": [
"survived = train[train['Survived'] == 1]\n",
"not_survived = train[train['Survived'] == 0]\n",
"\n",
"print (\"Survived: %i (%.1f%%)\"%(len(survived), float(len(survived))/len(train)*100.0))\n",
"print (\"Not Survived: %i (%.1f%%)\"%(len(not_survived), float(len(not_survived))/len(train)*100.0))\n",
"print (\"Total: %i\"%len(train))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pclass vs. Survival\n",
"\n",
"Higher class passengers have better survival chance."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3 491\n",
"1 216\n",
"2 184\n",
"Name: Pclass, dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Pclass.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pclass Survived\n",
"1 1 136\n",
" 0 80\n",
"2 0 97\n",
" 1 87\n",
"3 0 372\n",
" 1 119\n",
"dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.groupby('Pclass').Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Pclass</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0.629630</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.472826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>0.242363</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Pclass Survived\n",
"0 1 0.629630\n",
"1 2 0.472826\n",
"2 3 0.242363"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f063a25e250>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0664bf5e90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#train.groupby('Pclass').Survived.mean().plot(kind='bar')\n",
"sns.barplot(x='Pclass', y='Survived', data=train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sex vs. Survival\n",
"\n",
"Females have better survival chance."
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"male 577\n",
"female 314\n",
"Name: Sex, dtype: int64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Sex.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sex Survived\n",
"female 1 233\n",
" 0 81\n",
"male 0 468\n",
" 1 109\n",
"dtype: int64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.groupby('Sex').Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Sex</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>female</td>\n",
" <td>0.742038</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>male</td>\n",
" <td>0.188908</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Sex Survived\n",
"0 female 0.742038\n",
"1 male 0.188908"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[['Sex', 'Survived']].groupby(['Sex'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f063a121110>"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f063a157350>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#train.groupby('Sex').Survived.mean().plot(kind='bar')\n",
"sns.barplot(x='Sex', y='Survived', data=train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pclass & Sex vs. Survival"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Below, we just find out how many males and females are there in each *Pclass*. We then plot a stacked bar diagram with that information. We found that there are more males among the 3rd Pclass passengers."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sex female male\n",
"Pclass \n",
"1 94 122\n",
"2 76 108\n",
"3 144 347\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x7f063a016710>"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n0qVLG91u48aN+P1+li1bRkFBATk5OSxatKjBOgsXLqS6uvqHn4HIObXlG/u6qS/NJ6QQqKioYOjQ\noSxYsADDMBg/fnyTAQCQn58ffC1lSkoKhYWFDZZv2LABh8PB0KFDf0DpIt+tbd/Y1019aT4hfe03\nOjqaQ4cOYRgGANu2bWvwwvnv4vV68Xg8wWmXy0UgcLIbu3v3btauXcu0adN+SN0iItIMQuoJZGZm\nMnnyZPbv388tt9xCVVUVzz77bJPbud1ufD5fcDoQCASHm1i9ejVlZWXcddddlJSUEBkZSWJiYqO9\ngri49rhczlBK/tEqKtxNr9TKxce7SUjwNL1iK9TW209t17qdT+3XaAiUlpYyZ84c9u3bx4ABA3j8\n8cdxu9306tUrpJ5AamoqeXl5jB49mu3bt9O376mu+YMPPhj8/Pzzz5OQkNDkZaGKipomj9lcysu9\nQNv+ZSwv93L4cNu8H9PW26/tt13b1tLt11jgNHo56NFHH6VXr148+OCDBAIB3nrrLS655JKQAgBg\n5MiRREZGkpGRwbx588jMzCQ3N5e8vLzvdwYiImKJJnsCr776KgBXX301t9566/fauWEYzJ49u8G8\nnj17nrXelClTvtd+RUSkeTTaE4iIiGjw+fRpERFp/b7XSwG+fTpIRETahkYvB+3evZvhw4cHp0tL\nSxk+fDimaWIYBu+//77lBYqIiHUaDYENGza0VB0iIhIGjYZAYmJiS9UhIiJhoBcFi4jYmEJARMTG\nFAIiIjamEBARsTGFgIiIjSkERERsTCEgImJjCgERERtTCIiI2JhCQETExhQCIiI2phAQEbExhYCI\niI0pBEREbKzRoaRFRFpafX0AKsNdhYUq/+8czxMKARE5z5jw+itA93AXYpFiuNcMdxFBCgEROa84\nnU5gGNA33KVY5AucTm+4iwjSPQERERtTCIiI2JhCQETExhQCIiI2phAQEbExhYCIiI0pBEREbEwh\nICJiYwoBEREbUwiIiNiYQkBExMYUAiIiNqYQEBGxMYWAiIiNKQRERGzM0vcJmKZJdnY2RUVFREZG\nMnfuXHr06BFcnpuby7p16zAMg2uvvZb777/fynJEROQMlvYENm7ciN/vZ9myZcyYMYOcnJzgsgMH\nDrB27VpWrFjB8uXL+eijj/jiiy+sLEdERM5gaQjk5+czbNgwAFJSUigsLAwuu/DCC3nllVeC03V1\ndURFRVlZjoiInMHSEPB6vXg8nuC0y+UiEDj5gmWn00nHjh0BeOqpp7j00ktJTk62shwRETmDpfcE\n3G43Pp8vOB0IBHA4TuWO3+8nMzMTj8dDdnZ2k/uLi2uPy+W0otSzVFS4W+Q44RQf7yYhwdP0iq1Q\nW28/tV3rdj61n6UhkJqaSl5eHqNHj2b79u307dvwxdH33XcfV199NXfffXdI+6uoqLGizHMqL/cC\nbfuXsbzcy+HD1eEuwxJtvf3Udq1bS7dfY4FjaQiMHDmSLVu2kJGRAUBOTg65ubkkJydTX1/Ptm3b\nqK2tZfPmzRiGwYwZM0hJSbGyJBEROY2lIWAYBrNnz24wr2fPnsHPBQUFVh5eRESaoC+LiYjYmEJA\nRMTGFAIiIjamEBARsTGFgIiIjSkERERsTCEgImJjCgERERtTCIiI2JhCQETExhQCIiI2phAQEbEx\nhYCIiI0pBEREbEwhICJiYwoBEREbUwiIiNiYQkBExMYUAiIiNqYQEBGxMYWAiIiNKQRERGxMISAi\nYmMKARERG1MIiIjYmEJARMTGFAIiIjamEBARsTGFgIiIjSkERERsTCEgImJjCgERERtTCIiI2JhC\nQETExhQCIiI2phAQEbExS0PANE1mzZpFRkYGd911FwcOHGiwfMWKFYwdO5aMjAw++OADK0sREZFz\ncFm5840bN+L3+1m2bBkFBQXk5OSwaNEiAI4cOcKSJUtYtWoVx48f54477uCnP/0pERERVpYkIiKn\nsbQnkJ+fz7BhwwBISUmhsLAwuOyzzz5j0KBBuFwu3G43F110EUVFRVaWIyIiZ7C0J+D1evF4PKcO\n5nIRCARwOBxnLWvfvj3V1dVWlvMD7A13ARbaCySEuwiLtdX2U9u1budX+1kaAm63G5/PF5z+NgC+\nXeb1eoPLfD4fsbGxje4vIcHT6PLmlJCQimm22OHCoG+4C7BU224/tV3rdn61n6WXg1JTU9m8eTMA\n27dvp2/fUyc/YMAA8vPz8fv9VFdX89VXX9GnTx8ryxERkTMYpmld5pqmSXZ2dvBaf05ODps3byY5\nOZm0tDTeeOMNli9fjmma3HfffYwYMcKqUkRE5BwsDQERETm/6ctiIiI2phAQEbExhYCIiI0pBERE\nbEwhICJiYwoBkWbi9/vDXYL8AMePH7d12ykERL6nTZs2kZaWxsiRI1m3bl1w/t133x3GqiRUX375\nJb/97W/JzMzkn//8J+np6aSnp5OXlxfu0sLC0mEjRNqiP/3pT6xevZpAIMADDzzAiRMnGDNmDPrK\nTeswa9YsHnjgAUpKSpg2bRobNmwgKiqKu+++m7S0tHCX1+IUAmF05513Ultb22CeaZoYhsGyZcvC\nVJU0JSIigg4dOgCwaNEifvnLX3LBBRdgGEaYK5NQBAIBrrzySgC2bt1Kp06dgJMDXNqRvjEcRgUF\nBWRlZfHCCy/gdDobLEtMTAxTVdKUhx56iLi4OB544AHat2/PwYMHmTRpEt988w0fffRRuMuTJjz6\n6KMYhsGcOXOCA1q+/PLL7Nixg4ULF4a5upbnzM7Ozg53EXbVrVs3ampqqKur44orriA2Njb4I+ev\ntLQ0jh49Sp8+fYiIiMDj8TBq1Ciqqqq49tprw12eNOHbSz69e/cOzisuLmby5Mm2fKmVegIiIjam\np4NERGxMISAiYmMKARERG7PnM1Ei51BSUsKoUaOCb7irra2la9euPPnkk3Tt2vWs9VetWsUnn3xC\nTk5OS5cq0mzUExA5TdeuXVm1ahWrVq1i7dq1XHbZZcyZMyfcZYlYRj0BkUYMHjyYvLw8Pv74Y+bN\nm4dpmlx44YUsWLCgwXrr168nNzeXEydOcPz4cf7whz8wePBg/vKXv7B69WqcTif9+/dn9uzZFBUV\nMXPmTOrr64mKiiInJ4ekpKQwnaHYnXoCIt+htraW9evX079/f37/+98zf/583n77bfr168eaNWuC\n65mmyYoVK3jppZdYvXo1v/nNb3j11Vepr6/n5ZdfZuXKlbz11ls4HA7KysrIzc1l4sSJvPnmm/zi\nF79g+/btYTxLsTv1BEROU1paGhwHqLa2lgEDBpCRkcGuXbvo168fANOnTwdO3hMAMAyD5557jry8\nPPbu3csnn3yC0+nE6XSSmprK2LFjGT58OBMmTKBLly5cd911PPHEE3z44YekpaUxevTosJ2viEJA\n5DTf3hM43a5duxpMe71efD5fcLqmpobbbruNW2+9lSFDhtCvXz+WLl0KwAsvvEBBQQEffvghkyZN\n4plnnmHUqFEMHDiQDz74gNdee43NmzfrvoOEjUJA5DTn+gJ9r169qKioYM+ePfTu3ZvFixfjcDiC\n1/G//vprnE4n9957L6ZpkpWVRSAQoLy8nAkTJrBy5UpSUlI4ePAgRUVFLF26lBtvvJHx48fTq1cv\nPV0kYaUQEDnNuUYCjYyM5Omnn+ahhx6irq6OpKQk5s+fz7vvvgvAT37yEy655BJGjRpF+/btGTJk\nCP/+97+Jj4/n9ttvZ+zYsURHR5OYmMiYMWMYNGgQWVlZLFq0CJfLRWZmZkufpkiQxg4SEbExPR0k\nImJjCgERERtTCIiI2JhCQETExhQCIiI2phAQEbExhYCIiI39f0vusweE489bAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f063a0d04d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tab = pd.crosstab(train['Pclass'], train['Sex'])\n",
"print (tab)\n",
"\n",
"tab.div(tab.sum(1).astype(float), axis=0).plot(kind=\"bar\", stacked=True)\n",
"plt.xlabel('Pclass')\n",
"plt.ylabel('Percentage')"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7f063a055a50>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAEUCAYAAACIxVqnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl4VeW5P/zv2lP2zjwnJITMIYMQmZFBZQgyyVSpaMWe\nllNP+9O+vtpjrdZa+p5S1KO1P6t49Yg9tljFSgloCFMgRkTmIQgJIRMhA5nnPWRP6/0jYZOdQLID\n2Vk7yfdzXb3qXs9aa9/RZOfOs+7nfgRRFEUQERER0ZCTSR0AERER0WjFRIyIiIhIIkzEiIiIiCTC\nRIyIiIhIIkzEiIiIiCTCRIyIiIhIIk5PxHJzc7F+/fpexzMyMvD9738fjz/+ODZu3OjsMIiIiIhc\njlMTsa1bt+KVV16ByWSyO97R0YF33nkHH3/8MT755BO0tbUhOzvbmaEQERERuRynJmKRkZF47733\neh1XqVTYvn07VCoVAMBsNsPNzc2ZoRARERG5HKcmYmlpaZDL5b2OC4IAf39/AMC2bdug1+sxa9Ys\nZ4ZCRERE5HIUUr2xKIp44403UFZWhnfffdeha8xmCxSK3okdERER0XA0JInYrbaz/M1vfgO1Wo0t\nW7Y4fJ+mJt1ghkVERETDWFCQl9Qh3LUhScQEQQDQuVJSr9cjJSUFO3fuxJQpU7B+/XoIgoAnn3wS\nCxcuHIpwiIiIiFyCIN5quspF1dW1SR0CERERuYiRMCPGhq5EREREEmEiRkRERCQRJmJEREREEmEi\nRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJERERE\nEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJE\nREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQR\nJmJEREREEmEiRkRERCQRJmJEREREEmEiRkRERCQRpydiubm5WL9+fa/jhw8fxiOPPIJ169bh888/\nd3YYRERERC5H4cybb926Fbt374aHh4fdcbPZjNdeew07d+6Em5sbHnvsMSxYsAD+/v7ODIeIiIjI\npTh1RiwyMhLvvfder+PFxcWIjIyEp6cnlEolpkyZglOnTjkzFCIiIiKX49RELC0tDXK5vNfx9vZ2\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f063a0db890>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.factorplot('Sex', 'Survived', hue='Pclass', size=4, aspect=2, data=train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above plot, it can be seen that:\n",
"- Women from 1st and 2nd Pclass have almost 100% survival chance. \n",
"- Men from 2nd and 3rd Pclass have only around 10% survival chance."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pclass, Sex & Embarked vs. Survival"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"<seaborn.axisgrid.FacetGrid at 0x7f0639f0e690>"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f063a198110>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.factorplot(x='Pclass', y='Survived', hue='Sex', col='Embarked', data=train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above plot, it can be seen that:\n",
"- Almost all females from Pclass 1 and 2 survived.\n",
"- Females dying were mostly from 3rd Pclass.\n",
"- Males from Pclass 1 only have slightly higher survival chance than Pclass 2 and 3."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Embarked vs. Survived"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"S 644\n",
"C 168\n",
"Q 77\n",
"Name: Embarked, dtype: int64"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Embarked.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Embarked Survived\n",
"C 1 93\n",
" 0 75\n",
"Q 0 47\n",
" 1 30\n",
"S 0 427\n",
" 1 217\n",
"dtype: int64"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.groupby('Embarked').Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Embarked</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>C</td>\n",
" <td>0.553571</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Q</td>\n",
" <td>0.389610</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>S</td>\n",
" <td>0.336957</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Embarked Survived\n",
"0 C 0.553571\n",
"1 Q 0.389610\n",
"2 S 0.336957"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[['Embarked', 'Survived']].groupby(['Embarked'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f063a0cae50>"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nu91as2aNfve73yk+Pl5f+cpXFBcXF5XPBqc+TgfBGPX19crNzQ2fEsrNzdX777+vTz/9VBMnTtQr\nr7wiSSovL9eqVas0Z84cPf300+Hl4+Li9OKLL8rr9WrevHlqa2vTX/7yF02ePFk+n08vvfSSVq1a\npb1794a3t3btWt11112SpGAwqDlz5mjSpEmaNm2atm7dqueff14+n0+lpaVKTEzUihUrtGfPHi1f\nvlzPPfecSkpKFAgEev7DgjE4EoAxjnY6yOFwKDMzU9IXI0uOHTtW0hejhH7++efh+a6//npJ0tln\nn63ExERt27ZNM2fO1MaNG7VixQpt2bJF7e3tamlpkSSNGTNGDocjvPwjjzwip9Op3/72t5KkjRs3\n6sMPP1ReXp4sy1J7e7vOPfdcvfPOO8rIyFBiYqIk6dprr9W//vUvGz4RgBAAJKnTMwCO9jyAg6db\nliWXy6WlS5dq165d+s53vqOrrrpKb7zxhr4ciSU2NrbT8pMnT1Zzc7MeeeQRzZs3Tx0dHZo0aZIW\nLlwo6YsH0rS3t+uNN95QKBTqth7gZOB0EIxxtGGyIh0+a926dZKk//73vwoEAho5cqT++c9/atas\nWbr66qu1e/du1dfXq6Oj44jLn3POOfrpT3+qdevWafPmzRo/frzKy8vV2Ngoy7K0ePFiPf300xo7\ndqxqamq0Z88ehUIhlZWVHd8bBiLAnxgwRkNDg3JzcyV98cXvcDg0duzYTqdsjsbhcCgQCCg3N1cx\nMTF68MEHFRMTox/+8Ie65557NGjQIA0dOlTnnXeePvroo6OuZ/DgwZo7d67uv/9+rV69Wj/60Y90\n8803y7IsnXPOObr99tvldrt1//3365ZbbtHAgQN15plnnrTPADgUo4gCgME4HQQABiMEAMBghAAA\nGIwQAACDEQIAYDBCAAAMRggAgMEIAQAw2P8H3sDjhLQa5AYAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0639d0dc50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#train.groupby('Embarked').Survived.mean().plot(kind='bar')\n",
"sns.barplot(x='Embarked', y='Survived', data=train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Parch vs. Survival"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 678\n",
"1 118\n",
"2 80\n",
"5 5\n",
"3 5\n",
"4 4\n",
"6 1\n",
"Name: Parch, dtype: int64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Parch.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Parch Survived\n",
"0 0 445\n",
" 1 233\n",
"1 1 65\n",
" 0 53\n",
"2 0 40\n",
" 1 40\n",
"3 1 3\n",
" 0 2\n",
"4 0 4\n",
"5 0 4\n",
" 1 1\n",
"6 0 1\n",
"dtype: int64"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.groupby('Parch').Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Parch</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0.343658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0.550847</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>0.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>0.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>0.200000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>6</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Parch Survived\n",
"0 0 0.343658\n",
"1 1 0.550847\n",
"2 2 0.500000\n",
"3 3 0.600000\n",
"4 4 0.000000\n",
"5 5 0.200000\n",
"6 6 0.000000"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[['Parch', 'Survived']].groupby(['Parch'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0639e173d0>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nVV5pANWlAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0639adfe50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#train.groupby('Parch').Survived.mean().plot(kind='bar')\n",
"sns.barplot(x='Parch', y='Survived', ci=None, data=train) # ci=None will hide the error bar"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SibSp vs. Survival"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 608\n",
"1 209\n",
"2 28\n",
"4 18\n",
"3 16\n",
"8 7\n",
"5 5\n",
"Name: SibSp, dtype: int64"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.SibSp.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"SibSp Survived\n",
"0 0 398\n",
" 1 210\n",
"1 1 112\n",
" 0 97\n",
"2 0 15\n",
" 1 13\n",
"3 0 12\n",
" 1 4\n",
"4 0 15\n",
" 1 3\n",
"5 0 5\n",
"8 0 7\n",
"dtype: int64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.groupby('SibSp').Survived.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SibSp</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>0.345395</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>0.535885</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2</td>\n",
" <td>0.464286</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>3</td>\n",
" <td>0.250000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>4</td>\n",
" <td>0.166667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>5</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>8</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SibSp Survived\n",
"0 0 0.345395\n",
"1 1 0.535885\n",
"2 2 0.464286\n",
"3 3 0.250000\n",
"4 4 0.166667\n",
"5 5 0.000000\n",
"6 8 0.000000"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train[['SibSp', 'Survived']].groupby(['SibSp'], as_index=False).mean()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0639a3fcd0>"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nJ0/WTTfdpLi4uA5fN378eFVVVYXKxO12q7i4WMnJyRozZowuu+wyzZgxQzabTTfeeCM3qgGACAur\nBPLz85Wfn6/33ntPW7ZsUVFRkX7605/q8ccfb/d1NptNK1eubPNcampq6PHdd9/d4XkFAIB1wp4K\n9FyuEwAAdG1hXyewbds2DRs2rFPXCQAAurawSqB///5av359p68TAAB0bWEdDvrLX/5CAQDABSis\nPYGhQ4dqzZo1ysjIUM+ePUPPjxw50rJgAADrhVUCR44c0c6dO7Vz587QczabTS+99JJlwQAA1gur\nBNatW2d1DgBAFIRVAjk5ObLZbN97nj0BAOjewiqBe+65J/TY7/dr27Zt6t27t2WhAACREVYJnD6p\n26hRozR9+nTdd999loQCAERGWCVw4MCB0ONgMKhPPvlER44csSwUACAywiqBOXPmhM4J2Gw2JSYm\natmyZZYGAwBYr8MSqKioUHFxsX7yk5/onXfe0Ztvvqnhw4dr9OjRkcgHALBQu1cMv/jii1qzZo18\nPp92796tJUuWaNy4cWppadGqVasilREAYJF29wTKyspUWlqquLg4PfHEExo7dqymT5+uYDCoiRMn\nRiojcN61traqvr6r3tdNSkkZopiYmI5XBH6gdkvAZrOFbh6zc+dOzZo1K/Q80J3V13+qe99+XnED\nu96cWMcPNunpXy5UWtql0Y4CA7RbAjExMfrqq6/U0tKijz76KHQeoKGhQQ5HWOeUgS4rbmA/OQcN\niHYMIKra/U2+cOFCTZkyRX6/X7fddpsGDBigLVu2aPXq1brrrrsilREAYJF2SyA7O1tXXnmlPB6P\nhg0bJkmKj4/Xww8/rGuvvTYiAQEA1unwmM7AgQM1cODA0PLPfvYzSwMBACIn7HsMAwAuPJQAABiM\nEgAAg1ECAGAwSgAADEYJAIDBKAEAMBglAAAGowQAwGCWzgIXDAZVUFCgPXv2KDY2VoWFhRo8eHBo\nvLi4WFu2bJHNZtONN97IfEQAEGGW7gmUl5fL5/OppKREeXl5crvdobH9+/dr8+bNev3111VaWqod\nO3bo448/tjIOAOA0lpZAdXW1srKyJEkZGRmqq6sLjQ0aNEhr164NLfv9fvXo0cPKOACA01haAl6v\nVwkJCaFlh8OhQCAg6eS9Cvr27StJWrVqlYYPH67k5GQr4wAATmPpOQGn06nm5ubQciAQkN3+Xe/4\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f06398900d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#train.groupby('SibSp').Survived.mean().plot(kind='bar')\n",
"sns.barplot(x='SibSp', y='Survived', ci=None, data=train) # ci=None will hide the error bar"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Age vs. Survival"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f06397155d0>"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0639855cd0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(15,5))\n",
"ax1 = fig.add_subplot(131)\n",
"ax2 = fig.add_subplot(132)\n",
"ax3 = fig.add_subplot(133)\n",
"\n",
"sns.violinplot(x=\"Embarked\", y=\"Age\", hue=\"Survived\", data=train, split=True, ax=ax1)\n",
"sns.violinplot(x=\"Pclass\", y=\"Age\", hue=\"Survived\", data=train, split=True, ax=ax2)\n",
"sns.violinplot(x=\"Sex\", y=\"Age\", hue=\"Survived\", data=train, split=True, ax=ax3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From *Pclass* violinplot, we can see that:\n",
"- 1st Pclass has very few children as compared to other two classes.\n",
"- 1st Plcass has more old people as compared to other two classes.\n",
"- Almost all children (between age 0 to 10) of 2nd Pclass survived.\n",
"- Most children of 3rd Pclass survived.\n",
"- Younger people of 1st Pclass survived as compared to its older people.\n",
"\n",
"From *Sex* violinplot, we can see that:\n",
"- Most male children (between age 0 to 14) survived.\n",
"- Females with age between 18 to 40 have better survival chance."
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f06336b6c90>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nkiXWWmuHh4ft9773PY4jh61cudL+6Ec/4jhyyMaNG+3f/u3fWmut3bRpk73iiivGdAx19WOQzz33\nnM4880xJ0imnnKIXXnihm9OhDbNnz9aaNWsO//nFF1/U3LlzJUlnnXWWnnnmmV61NuWde+65uvLK\nKyVJo6Oj6uvr0/bt21kfh5xzzjlatWqVJOmtt95SpVJhjRzzzW9+U1/60pf0kY98RNZa1scxL730\nkg4cOKDFixdr4cKF2rJlixqNho466ihJ0h/90R/pJz/5SY+7nNqefvppnXDCCfrrv/5rXXbZZTr7\n7LM5jhz1/PPP69VXX9W5557LceSQY445RqOjo7LWyhijTCYzpmOoqx+DrNVqKpVKv54sk1Gr1VI6\nzVflem3evHnauXPn4T/b9/y6vYGBARljetEWJBUKBUkHj58rr7xSV111lb75zW8efpz1cUM6ndZ1\n112njRs36rvf/a42bdp0+DHWqLc2bNigI488Up/5zGd0xx13SDr40dVDWJ/ey+fzWrx4sS688EK9\n/vrruvTSS1Uulw8/PjAwoF/96lc97BDvvvuu3nrrLd1555168803ddlll3EcOequu+7SFVdcoeHh\n4cMfLZY4jnrt0P6fP3++9u/frzvuuENbtmx53+NJjqGuhrVisajh4eHDfyaoueu96zI8PPy+iybG\n365du3T55ZdrwYIFOu+883T77bcffoz1ccdtt92mffv26YILLlAYhof/njXqrUPf4di0aZNefvll\nLV26VO++++7hx1mf3jvmmGM0e/bsw/9fKpVUrVYPP84a9d60adN03HHHKZPJ6Nhjj5Xnedq9e/fh\nx1kjNxhj9Prrr+u0005TrVZTrVY7/Bhr1Ftr167VmWeeqauuukq7d+/WJZdcokajcfjxpOvT1eT0\n6U9/Wk8++aQkaevWrTrhhBO6OR0+hDlz5mjz5s2SpKeeekqnnnpqjzuauvbu3avFixfr7/7u7/SF\nL3xBknTSSSexPg559NFHddddd0mSPM9TOp3W7/7u7+qnP/2pJNao19avX69169Zp3bp1OvHEE/Wt\nb31LZ555JseQQx5++GHddtttkqTdu3erXq+rUCjozTfflLVWTz/9NGvUY6eeeqr+8z//U9Kv1+j0\n00/nPOeYzZs36/TTT5d08E2SXC7HceSISqVy+J3OUqmkZrOpOXPmtH0MdfWdtXnz5mnTpk36i7/4\nC0nS6tWruzkdPoSlS5fqxhtvVKPR0HHHHaf58+f3uqUp684775Tv+/r+97+vNWvWKJVKadmyZbr5\n5ptZH0f88R//sa6//notWLBAzWZTy5cv1yc+8QktX76cNXIU5zi3XHDBBbr++ut18cUXK51Oa/Xq\n1Uqn07rmmmvUarX0mc98Rp/61Kd63eaUdvbZZ2vLli264IILDv9071mzZnGec8xrr732vp+0vnLl\nSo4jR3z1q1/VDTfcoC9/+ctqNpu65pprdPLJJ7d9DKXse7+sBAAAAABwAl8gAwAAAAAHEdYAAAAA\nwEGENQAAAABwEGENAAAAABxEWAMAAAAABxHWAAAAAMBBhDUAwKTxyiuv6MQTT9Tjjz/e61YAAPjQ\nCGsAgEnjkUce0fz58/XAAw/0uhUAAD60TK8bAACgE0ZHR/XYY4/p/vvv10UXXaQ333xTRx99tJ59\n9lndfPPNymazOuWUU/Tqq69q3bp12rFjh2666Sbt379fhUJBy5cv10knndTrzQAA4DDeWQMATAr/\n8R//oVmzZmn27NmaN2+eHnzwQTWbTS1dulTf+c53tGHDBmUyGaVSKUnS0qVLde2112rDhg36xje+\noauuuqrHWwAAwPsR1gAAk8Ijjzyi8847T5I0f/58bdiwQdu3b9eRRx6p448/XpJ0/vnnS5IOHDig\n559/Xtdff73+/M//XFdffbWCIFC1Wu1Z/wAA/CY+BgkAmPCGhob05JNP6sUXX9S9994ra61839dT\nTz0la+0H6lutlvL5vB555JHDf7d7925VKpXxbBsAgEi8swYAmPAeffRRnXHGGXriiSf07//+7/rx\nj3+sJUuW6Omnn1a1WtUrr7wiSfrnf/5npVIpFYtFzZ49W4899pgkadOmTVqwYEEvNwEAgA9I2d/2\nkiMAABPIn/3Zn+nqq6/WZz/72cN/NzQ0pM997nP64Q9/qFWrVimdTuvYY4+VMUZ33nmnfvnLX2rF\nihWqVqvK5XJauXKlTj755B5uBQAA70dYAwBMarfffruuuOIK5fN5rV27Vrt379bSpUt73RYAALH4\nzhoAYFKrVCo6//zzlc1mddRRR+mWW27pdUsAACTCO2sAAAAA4CB+wAgAAAAAOIiwBgAAAAAOIqwB\nAAAAgIMIawAAAADgIMIaAAAAADjo/wPhpEdL6M7hZwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f06392c5590>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\nSy6R53nKZDJqbW2t8qwBAA5loVBIn/rUp3TXXXdJGrwE8qyzztJ///d/S5Kampr03e9+Vz/96U/1\nzp2fRuUAAAQnSURBVDvv6Mknnxzyydavf/1rvfXWW3rmmWckSalUSr/73e80e/bsgn4PP/ywzj77\nbEmD58Gvf/3rWrRokX73u99p2rRp+tCHPiRJOvfcc3Xbbbdp//79evXVV3XddddlP8WzbVvJZJKr\nTHDQoFjDIc/zPP3nf/6nmpubJUl//etf1dbWpkcffTT7l0NJqqurG7LsY489pn//93/XggULdO65\n52rv3r1D+mQymSHjt7e3F/T51a9+JdM0deWVV0oaLN727NmjXbt2KRwOZ09C+QYGBjR79mzdc889\nkqT+/v4hhSIAAOPV0NCgY489Vi+88IKeffZZff3rX88Wazt37tT8+fN18cUX6/T/v537CYWuC+A4\n/r3KmFCiWUhqwlZIyfjTE2UhMhFN0zSFnUiRsBFZoJiFjR0lJSSJLDQ1mrFQsqFJFixGzWYWqCmR\nmHkXbzxNXr3vs8D0+n1Wt9s5557O5tzfPfecX7+wWCxcXFwAv/esxWIxhoeHaWhoAODu7o6MjIyE\nZ9ze3hIIBDg/P2dlZYV4PE40GsXr9VJYWEgsFnvXr1gshtlsTvgQG4lEFNTkf0W/QcqP8U+BB6Cy\nspLV1VUArq6usNvtPD4+/qf6R0dHNDU10draSk5ODicnJ7y8vCSUsdls79p/eHhIKLO1tcXg4CA+\nnw+fz0cgEKC8vJzNzU2qqqoIBALc39/z9PSE1+vFMAxKS0s5PT0lFAoBsLCwwOzs7B+Pi4iIyL9p\nbGzE4/FQXFxMSsrv18dgMIjVaqWzs5OSkhIODw/fgtXrvGmz2djY2OD5+Zn7+3tcLhdnZ2cJ7e/s\n7FBdXY3f78fn83FwcEBPTw/r6+sUFRURjUa5vLwEYG9vD8MwyMzMxGq1sru7C/y9l87tdn/FcIh8\nGa2syY/x0alUY2NjjI+PY7fbAfB4PG+/HH5U//Xa4XAwNDTE/v4+JpOJsrIywuHwH7V/c3PD8fEx\nMzMzCfW6u7uZnJykr68Pt9uN0+kkPT2d7OxszGYzFouF6elpBgYGiMVi5Obmas+aiIh8ivr6esbG\nxt7tCaupqWFtbY3m5mbS0tIoKSl5C1Wvc6XT6eT6+pq2tjZeXl7o6OigoqIioZ3t7W2GhoYS7rlc\nLpaWlgiHw8zOzjIyMkJKSgoFBQWYzWYA5ubmmJiYYHFxEZPJxPz8/GcNgci3MOIfLTeISFIIhUL4\n/X66uroA6O3txeFwUFdX9639EhER+QrxeByPx0N/fz9ms5nl5WUikQijo6Pf3TWRT6eVNZEkl5eX\nRzAYpKWlBcMwqK2tVVATEZEfwzAMsrKyaG9vJzU1lfz8fKampr67WyJfQitrIiIiIiIiSUgHjIiI\niIiIiCQhhTUREREREZEkpLAmIiIiIiKShBTWREREREREkpDCmoiIiIiISBL6C+jTfPQX+mdYAAAA\nAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0639469490>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"total_survived = train[train['Survived']==1]\n",
"total_not_survived = train[train['Survived']==0]\n",
"male_survived = train[(train['Survived']==1) & (train['Sex']==\"male\")]\n",
"female_survived = train[(train['Survived']==1) & (train['Sex']==\"female\")]\n",
"male_not_survived = train[(train['Survived']==0) & (train['Sex']==\"male\")]\n",
"female_not_survived = train[(train['Survived']==0) & (train['Sex']==\"female\")]\n",
"\n",
"plt.figure(figsize=[15,5])\n",
"plt.subplot(111)\n",
"sns.distplot(total_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='blue')\n",
"sns.distplot(total_not_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='red', axlabel='Age')\n",
"\n",
"plt.figure(figsize=[15,5])\n",
"\n",
"plt.subplot(121)\n",
"sns.distplot(female_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='blue')\n",
"sns.distplot(female_not_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='red', axlabel='Female Age')\n",
"\n",
"plt.subplot(122)\n",
"sns.distplot(male_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='blue')\n",
"sns.distplot(male_not_survived['Age'].dropna().values, bins=range(0, 81, 1), kde=False, color='red', axlabel='Male Age')\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above figures, we can see that:\n",
"- Combining both male and female, we can see that children with age between 0 to 5 have better chance of survival.\n",
"- Females with age between \"18 to 40\" and \"50 and above\" have higher chance of survival.\n",
"- Males with age between 0 to 14 have better chance of survival."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Correlating Features"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Heatmap of Correlation between different features:\n",
"\n",
">Positive numbers = Positive correlation, i.e. increase in one feature will increase the other feature & vice-versa.\n",
">\n",
">Negative numbers = Negative correlation, i.e. increase in one feature will decrease the other feature & vice-versa.\n",
"\n",
"In our case, we focus on which features have strong positive or negative correlation with the *Survived* feature."
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0639a249d0>"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nLU+kfUuK0z5avXp1Fi9e7O00hJd4vRD6+/tz9uxZVq5cSZMmTahVqxYrVqzI8wly+fLlJCcnExkZ\nyUsvvUSpUqVo2rQpq1atYsOGDUDuG0xYWBiLFi1iwoQJDB8+nNmzZ1O+fHk2bdrEzp07GTRoEKNH\njyYtLQ2AsWPHUr16dZYuXer8BJ+SkuKRdl/9PQYWiwWdTseff/5JXFwcSilCQ0OZNm2aMyYxMZFx\n48aRk5NDUlISr732Gi1atGDGjBls374dh8NBq1at6N27N0uXLmXNmjVotVrq1KnDmDFjPNImV+zY\nsYPKlSvTqVMnhg0bRmRkJH/88QexsbH4+/sTFBSE0Whk8uTJLFmyhPXr16PRaGjTpk2heyPucLP9\nFuCrr75iw4YNWK1WxowZQ506dQgODmbp0qVERkby4IMPsmzZMnQ6HatXr2bz5s2kp6dz4cIFBgwY\nQKtWrbzaxoL20Tlz5qCUIiMjg7i4OHQ6nfO4fOKJJ2jQoAGTJk3Ktx/PmTOH5ORksrKyiIuLo2LF\nit5qWj7Xfq+Iw+HgjTfe4OzZs5w7d47mzZvz6quvMmrUKFJTU0lLS2P+/PksWLCAnTt3Yrfb6dGj\nB+Hh4V5qgbgtqgjYv3+/GjVqlGrWrJl6+umn1aZNm1RMTIw6cuSIUkqpZcuWqdmzZ6uEhAQVFham\nbDabUkqpwYMHq19++UVZrVYVERGh7Ha76tatmzpy5IhatmyZmjNnjlJKqb59+6r4+Hg1bdo0tWzZ\nMqWUUseOHVOdO3dWycnJqlWrVionJ0fl5OSotm3bqh07dri1vdu3b1dhYWEqJiZGde/eXfXq1Utt\n3bpVtWvXztnmlStXqn379jn/H3766SdnXrt27VIvvviiUkqp5s2bq1OnTimr1ao++eQTpZRSUVFR\nas+ePc7/O7vd7tb23Iphw4apb7/9VimlVOfOndXvv/+uIiMj1aFDh5RSSk2fPl2NHDlSHTp0SHXu\n3Fk5HA5lt9tV9+7d1dGjR72YeX432m9nz56txo0bp5RSKj4+XkVGRiqllLJYLGru3LkqKipKNWrU\nSE2cOFFZrVa1atUq52uanJysnnzySa++bgXtox9//LFKSkpSSik1b948NW/evHzH5fX2427duqm1\na9cqpZSaPXu2ev/9973TsOtISEhQ9erVUzExMapbt24qJiZG7dq1S3366adKKaWsVqtq1KiRUkqp\nkSNHqg8//FAppdTWrVvVkCFDnDHt2rVTly5d8k4jxG3xeo/wxIkT+Pn5MWnSJAD27dtH7969P1oZ\nXgAABONJREFUKVOmjDNGXfVprWLFivj4+AAQHR3N6tWrnZ/YtNora38iIiLo2rUr0dHRpKenU61a\nNQ4ePMj27dvZsGEDSikuXrzIiRMnqFGjBjpd7n9FnTp1PNHsPMNOfxs9erRzDqVDhw7AlbaHhITw\n7rvvsnLlSgBycnIAmDZtGm+//TbJyck0bdoUgEmTJrFw4UISEhJ49NFHi8wX4168eJHvvvuOlJQU\nlixZgsVi4aOPPiIpKYmqVasC8Nhjj7FhwwYOHjzI6dOneeGFF1BKcenSJY4fP87999/v3UZc5sp+\n+/c8c7Vq1UhOTiY7O5t9+/bRv39/+vfvz8WLFxk5ciSffvopZrPZGV+6dGkCAwNJSUkhODjY8427\n7Hr76Ndff83EiRPx8/MjMTGRevXqAXmPy+Tk5Hz7MeCc9w8ODiY5OdkTTXDZtUOjFouF1atXs337\ndvz8/JzHG+Bs28GDB9m7dy/du3dHKYXdbichIaFIDnOLG/P6qtG//vqL2NhY545WuXJlAgMDKVmy\nJElJSQDs37/fGa/RaJy/h4WF8eeff7Jq1SqioqLyPK+/vz+1a9dm8uTJPPfccwBUrVqVHj16sHjx\nYmbNmkXbtm2pXLky8fHxZGdnY7fb8/wtTytTpgwnTpwAcheUbN68GY1Gg1KKWbNm0b59e6ZOnUqj\nRo1QSpGTk8PGjRuZPn06ixcvZtWqVZw5c4YVK1YwYcIElixZwr59+9i9e7fX2nS1NWvWEBUVxQcf\nfMD777/PihUr+PHHHzGZTBw+fBiA33//HYAqVao435yWLFlC+/btqVmzpjfTz6Og/fbvYgC5C2P+\nji1fvjwajYbhw4dz7NgxAAIDAylfvrxzwdDevXuB3EKSnp5O6dKlPdgi17z++utMmTKFyZMn5yn6\nVx+X19uPr40paq79sLh69WpKlCjBtGnT6NmzJ1lZWc7H/v7AXaVKFRo1asTixYtZvHgx4eHhVKpU\nyaN5izvD6z3Cp556iiNHjhAVFYWfnx8Oh4MRI0ag1+uZMGEC5cuXJzQ01Bl/7cHUunVrtm3bxn33\n3Zfv8Y4dO9KnTx8mT54MQL9+/RgzZgzLly8nPT2dV155haCgIPr06cPzzz9PUFAQfn5+Hmj19cXG\nxjJq1Ci0Wi1lypRxFm2NRkN4eDhTp05l/vz5hIaGcuHCBfR6PSVKlKBjx44YjUaaNGlCuXLlqFGj\nBl26dMHPz4+yZctSt25dr7Xpap999hlvvfWW87bJZKJ169aULl2aMWPGYDab0ev1hIaGUrNmTRo3\nbkznzp3Jzs7mkUceybMfeNvV+63ZbEYpxYgRI1i0aJEzJiEhgRdeeIGcnBwmTJiAXq9n1qxZjB49\nGrvdjkaj4eGHH6ZDhw6sWbOG5ORkevTogcViYfz48UWycLRr144uXbpgNpsJDg52fli9OteC9uOi\n7Nr/67CwMIYOHcpvv/2GXq/n/vvvd7b1b82bN2fHjh107dqVzMxMWrZsidls9mTa4g6Rq08Ir1u6\ndCnPPPMMpUqVYubMmRgMhmK3dH316tUcPXqUIUOGeDsVIYodr/cIhQgODubFF1/EbDYTEBDA1KlT\nvZ2SEKIYkR6hEEKIYs3ri2WEEEIIb5JCKIQQoliTQiiEEKJYk0IohBCiWJNCKIQQoliTQiiEEKJY\n+3/0RnRi4s+/NgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0639341650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(15,6))\n",
"sns.heatmap(train.drop('PassengerId',axis=1).corr(), vmax=0.6, square=True, annot=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Feature Extraction\n",
"\n",
"In this section, we select the appropriate features to train our classifier. Here, we create new features based on existing features. We also convert categorical features into numeric form."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Name Feature\n",
"\n",
"Let's first extract titles from *Name* column."
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"train_test_data = [train, test] # combining train and test dataset\n",
"\n",
"for dataset in train_test_data:\n",
" dataset['Title'] = dataset.Name.str.extract(' ([A-Za-z]+)\\.')"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>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</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",
" <td>Mr</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</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",
" <td>Mrs</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</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",
" <td>Miss</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</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",
" <td>Mrs</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</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",
" <td>Mr</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 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 \n",
"2 Heikkinen, Miss. Laina female 26 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 \n",
"4 Allen, Mr. William Henry male 35 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked Title \n",
"0 0 A/5 21171 7.2500 NaN S Mr \n",
"1 0 PC 17599 71.2833 C85 C Mrs \n",
"2 0 STON/O2. 3101282 7.9250 NaN S Miss \n",
"3 0 113803 53.1000 C123 S Mrs \n",
"4 0 373450 8.0500 NaN S Mr "
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As you can see above, we have added a new column named *Title* in the Train dataset with the *Title* present in the particular passenger name."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.crosstab(train['Title'], train['Sex'])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The number of passengers with each *Title* is shown above.\n",
"\n",
"We now replace some less common titles with the name \"Other\"."
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Other</td>\n",
" <td>0.347826</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 Other 0.347826"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"for dataset in train_test_data:\n",
" dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col', \\\n",
" \t'Don', 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Other')\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[['Title', 'Survived']].groupby(['Title'], as_index=False).mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"After that, we convert the categorical *Title* values into numeric form."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": true,
"scrolled": false
},
"outputs": [],
"source": [
"title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Other\": 5}\n",
"for dataset in train_test_data:\n",
" dataset['Title'] = dataset['Title'].map(title_mapping)\n",
" dataset['Title'] = dataset['Title'].fillna(0)"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>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</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",
" <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</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",
" <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</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",
" <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</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",
" <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</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",
" <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 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38 1 \n",
"2 Heikkinen, Miss. Laina female 26 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35 1 \n",
"4 Allen, Mr. William Henry male 35 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked Title \n",
"0 0 A/5 21171 7.2500 NaN S 1 \n",
"1 0 PC 17599 71.2833 C85 C 3 \n",
"2 0 STON/O2. 3101282 7.9250 NaN S 2 \n",
"3 0 113803 53.1000 C123 S 3 \n",
"4 0 373450 8.0500 NaN S 1 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Sex Feature\n",
"\n",
"We convert the categorical value of *Sex* into numeric. We represent 0 as female and 1 as male."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\n",
" dataset['Sex'] = dataset['Sex'].map( {'female': 1, 'male': 0} ).astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>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>0</td>\n",
" <td>22</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",
" <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>1</td>\n",
" <td>38</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",
" <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>1</td>\n",
" <td>26</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",
" <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>1</td>\n",
" <td>35</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",
" <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>0</td>\n",
" <td>35</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",
" <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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 22 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 38 1 0 \n",
"2 Heikkinen, Miss. Laina 1 26 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 35 1 0 \n",
"4 Allen, Mr. William Henry 0 35 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title \n",
"0 A/5 21171 7.2500 NaN S 1 \n",
"1 PC 17599 71.2833 C85 C 3 \n",
"2 STON/O2. 3101282 7.9250 NaN S 2 \n",
"3 113803 53.1000 C123 S 3 \n",
"4 373450 8.0500 NaN S 1 "
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Embarked Feature"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are empty values for some rows for *Embarked* column. The empty values are represented as \"nan\" in below list."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['S', 'C', 'Q', nan], dtype=object)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Embarked.unique()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's check the number of passengers for each *Embarked* category."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"S 644\n",
"C 168\n",
"Q 77\n",
"Name: Embarked, dtype: int64"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.Embarked.value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We find that category \"S\" has maximum passengers. Hence, we replace \"nan\" values with \"S\"."
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\n",
" dataset['Embarked'] = dataset['Embarked'].fillna('S')"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>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>0</td>\n",
" <td>22</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",
" <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>1</td>\n",
" <td>38</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",
" <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>1</td>\n",
" <td>26</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",
" <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>1</td>\n",
" <td>35</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",
" <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>0</td>\n",
" <td>35</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",
" <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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 22 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 38 1 0 \n",
"2 Heikkinen, Miss. Laina 1 26 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 35 1 0 \n",
"4 Allen, Mr. William Henry 0 35 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title \n",
"0 A/5 21171 7.2500 NaN S 1 \n",
"1 PC 17599 71.2833 C85 C 3 \n",
"2 STON/O2. 3101282 7.9250 NaN S 2 \n",
"3 113803 53.1000 C123 S 3 \n",
"4 373450 8.0500 NaN S 1 "
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We now convert the categorical value of *Embarked* into numeric. We represent 0 as S, 1 as C and 2 as Q."
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\n",
" #print(dataset.Embarked.unique())\n",
" dataset['Embarked'] = dataset['Embarked'].map( {'S': 0, 'C': 1, 'Q': 2} ).astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>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>0</td>\n",
" <td>22</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>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>1</td>\n",
" <td>38</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>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>1</td>\n",
" <td>26</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>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>1</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>0</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>0</td>\n",
" <td>35</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 22 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 38 1 0 \n",
"2 Heikkinen, Miss. Laina 1 26 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 35 1 0 \n",
"4 Allen, Mr. William Henry 0 35 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title \n",
"0 A/5 21171 7.2500 NaN 0 1 \n",
"1 PC 17599 71.2833 C85 1 3 \n",
"2 STON/O2. 3101282 7.9250 NaN 0 2 \n",
"3 113803 53.1000 C123 0 3 \n",
"4 373450 8.0500 NaN 0 1 "
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Age Feature"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We first fill the NULL values of *Age* with a random number between (mean_age - std_age) and (mean_age + std_age). \n",
"\n",
"We then create a new column named *AgeBand*. This categorizes age into 5 different age range."
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/usr/local/lib/python2.7/dist-packages/ipykernel_launcher.py:7: SettingWithCopyWarning: \n",
"A value is trying to be set on a copy of a slice from a DataFrame\n",
"\n",
"See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy\n",
" import sys\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" AgeBand Survived\n",
"0 (-0.08, 16] 0.546296\n",
"1 (16, 32] 0.347630\n",
"2 (32, 48] 0.376923\n",
"3 (48, 64] 0.434783\n",
"4 (64, 80] 0.090909\n"
]
}
],
"source": [
"for dataset in train_test_data:\n",
" age_avg = dataset['Age'].mean()\n",
" age_std = dataset['Age'].std()\n",
" age_null_count = dataset['Age'].isnull().sum()\n",
" \n",
" age_null_random_list = np.random.randint(age_avg - age_std, age_avg + age_std, size=age_null_count)\n",
" dataset['Age'][np.isnan(dataset['Age'])] = age_null_random_list\n",
" dataset['Age'] = dataset['Age'].astype(int)\n",
" \n",
"train['AgeBand'] = pd.cut(train['Age'], 5)\n",
"\n",
"print (train[['AgeBand', 'Survived']].groupby(['AgeBand'], as_index=False).mean())"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Title</th>\n",
" <th>AgeBand</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>0</td>\n",
" <td>22</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>0</td>\n",
" <td>1</td>\n",
" <td>(16, 32]</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>1</td>\n",
" <td>38</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>1</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</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>1</td>\n",
" <td>26</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>0</td>\n",
" <td>2</td>\n",
" <td>(16, 32]</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>1</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</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>0</td>\n",
" <td>35</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(32, 48]</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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 22 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 38 1 0 \n",
"2 Heikkinen, Miss. Laina 1 26 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 35 1 0 \n",
"4 Allen, Mr. William Henry 0 35 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title AgeBand \n",
"0 A/5 21171 7.2500 NaN 0 1 (16, 32] \n",
"1 PC 17599 71.2833 C85 1 3 (32, 48] \n",
"2 STON/O2. 3101282 7.9250 NaN 0 2 (16, 32] \n",
"3 113803 53.1000 C123 0 3 (32, 48] \n",
"4 373450 8.0500 NaN 0 1 (32, 48] "
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we map *Age* according to *AgeBand*."
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\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'] = 4"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Title</th>\n",
" <th>AgeBand</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>0</td>\n",
" <td>1</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>0</td>\n",
" <td>1</td>\n",
" <td>(16, 32]</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>1</td>\n",
" <td>2</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>1</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</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>1</td>\n",
" <td>1</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>0</td>\n",
" <td>2</td>\n",
" <td>(16, 32]</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>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</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>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(32, 48]</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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 1 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 2 1 0 \n",
"2 Heikkinen, Miss. Laina 1 1 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 2 1 0 \n",
"4 Allen, Mr. William Henry 0 2 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title AgeBand \n",
"0 A/5 21171 7.2500 NaN 0 1 (16, 32] \n",
"1 PC 17599 71.2833 C85 1 3 (32, 48] \n",
"2 STON/O2. 3101282 7.9250 NaN 0 2 (16, 32] \n",
"3 113803 53.1000 C123 0 3 (32, 48] \n",
"4 373450 8.0500 NaN 0 1 (32, 48] "
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Fare Feature"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Replace missing *Fare* values with the median of *Fare*."
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\n",
" dataset['Fare'] = dataset['Fare'].fillna(train['Fare'].median())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create *FareBand*. We divide the *Fare* into 4 category range."
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" FareBand Survived\n",
"0 [0, 7.91] 0.197309\n",
"1 (7.91, 14.454] 0.303571\n",
"2 (14.454, 31] 0.454955\n",
"3 (31, 512.329] 0.581081\n"
]
}
],
"source": [
"train['FareBand'] = pd.qcut(train['Fare'], 4)\n",
"print (train[['FareBand', 'Survived']].groupby(['FareBand'], as_index=False).mean())"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Title</th>\n",
" <th>AgeBand</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>Braund, Mr. Owen Harris</td>\n",
" <td>0</td>\n",
" <td>1</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>0</td>\n",
" <td>1</td>\n",
" <td>(16, 32]</td>\n",
" <td>[0, 7.91]</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>1</td>\n",
" <td>2</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>1</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</td>\n",
" <td>(31, 512.329]</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>1</td>\n",
" <td>1</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>0</td>\n",
" <td>2</td>\n",
" <td>(16, 32]</td>\n",
" <td>(7.91, 14.454]</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>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</td>\n",
" <td>(31, 512.329]</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>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(32, 48]</td>\n",
" <td>(7.91, 14.454]</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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 1 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 2 1 0 \n",
"2 Heikkinen, Miss. Laina 1 1 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 2 1 0 \n",
"4 Allen, Mr. William Henry 0 2 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title AgeBand FareBand \n",
"0 A/5 21171 7.2500 NaN 0 1 (16, 32] [0, 7.91] \n",
"1 PC 17599 71.2833 C85 1 3 (32, 48] (31, 512.329] \n",
"2 STON/O2. 3101282 7.9250 NaN 0 2 (16, 32] (7.91, 14.454] \n",
"3 113803 53.1000 C123 0 3 (32, 48] (31, 512.329] \n",
"4 373450 8.0500 NaN 0 1 (32, 48] (7.91, 14.454] "
]
},
"execution_count": 60,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Map *Fare* according to *FareBand*"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"for dataset in train_test_data:\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": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Title</th>\n",
" <th>AgeBand</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>Braund, Mr. Owen Harris</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(16, 32]</td>\n",
" <td>[0, 7.91]</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>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>PC 17599</td>\n",
" <td>3</td>\n",
" <td>C85</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</td>\n",
" <td>(31, 512.329]</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>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O2. 3101282</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>(16, 32]</td>\n",
" <td>(7.91, 14.454]</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>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>3</td>\n",
" <td>C123</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>(32, 48]</td>\n",
" <td>(31, 512.329]</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>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>1</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(32, 48]</td>\n",
" <td>(7.91, 14.454]</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 Parch \\\n",
"0 Braund, Mr. Owen Harris 0 1 1 0 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... 1 2 1 0 \n",
"2 Heikkinen, Miss. Laina 1 1 0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) 1 2 1 0 \n",
"4 Allen, Mr. William Henry 0 2 0 0 \n",
"\n",
" Ticket Fare Cabin Embarked Title AgeBand FareBand \n",
"0 A/5 21171 0 NaN 0 1 (16, 32] [0, 7.91] \n",
"1 PC 17599 3 C85 1 3 (32, 48] (31, 512.329] \n",
"2 STON/O2. 3101282 1 NaN 0 2 (16, 32] (7.91, 14.454] \n",
"3 113803 3 C123 0 3 (32, 48] (31, 512.329] \n",
"4 373450 1 NaN 0 1 (32, 48] (7.91, 14.454] "
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### SibSp & Parch Feature\n",
"\n",
"Combining *SibSp* & *Parch* feature, we create a new feature named *FamilySize*."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" FamilySize Survived\n",
"0 1 0.303538\n",
"1 2 0.552795\n",
"2 3 0.578431\n",
"3 4 0.724138\n",
"4 5 0.200000\n",
"5 6 0.136364\n",
"6 7 0.333333\n",
"7 8 0.000000\n",
"8 11 0.000000\n"
]
}
],
"source": [
"for dataset in train_test_data:\n",
" dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1\n",
"\n",
"print (train[['FamilySize', 'Survived']].groupby(['FamilySize'], as_index=False).mean())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"About data shows that: \n",
"\n",
"- Having *FamilySize* upto 4 (from 2 to 4) has better survival chance. \n",
"- *FamilySize = 1*, i.e. travelling alone has less survival chance.\n",
"- Large *FamilySize* (size of 5 and above) also have less survival chance."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's create a new feature named *IsAlone*. This feature is used to check how is the survival chance while travelling alone as compared to travelling with family."
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" IsAlone Survived\n",
"0 0 0.505650\n",
"1 1 0.303538\n"
]
}
],
"source": [
"for dataset in train_test_data:\n",
" dataset['IsAlone'] = 0\n",
" dataset.loc[dataset['FamilySize'] == 1, 'IsAlone'] = 1\n",
" \n",
"print (train[['IsAlone', 'Survived']].groupby(['IsAlone'], as_index=False).mean())"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This shows that travelling alone has only 30% survival chance."
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Title</th>\n",
" <th>AgeBand</th>\n",
" <th>FareBand</th>\n",
" <th>FamilySize</th>\n",
" <th>IsAlone</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>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>(16, 32]</td>\n",
" <td>[0, 7.91]</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived Pclass Name Sex Age SibSp \\\n",
"0 1 0 3 Braund, Mr. Owen Harris 0 1 1 \n",
"\n",
" Parch Ticket Fare Cabin Embarked Title AgeBand FareBand \\\n",
"0 0 A/5 21171 0 NaN 0 1 (16, 32] [0, 7.91] \n",
"\n",
" FamilySize IsAlone \n",
"0 2 0 "
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head(1)"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Pclass</th>\n",
" <th>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>Title</th>\n",
" <th>FamilySize</th>\n",
" <th>IsAlone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>892</td>\n",
" <td>3</td>\n",
" <td>Kelly, Mr. James</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>330911</td>\n",
" <td>0</td>\n",
" <td>NaN</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Name Sex Age SibSp Parch Ticket \\\n",
"0 892 3 Kelly, Mr. James 0 2 0 0 330911 \n",
"\n",
" Fare Cabin Embarked Title FamilySize IsAlone \n",
"0 0 NaN 2 1 1 1 "
]
},
"execution_count": 66,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.head(1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Feature Selection"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We drop unnecessary columns/features and keep only the useful ones for our experiment. Column *PassengerId* is only dropped from Train set because we need *PassengerId* in Test set while creating Submission file to Kaggle."
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"features_drop = ['Name', 'SibSp', 'Parch', 'Ticket', 'Cabin', 'FamilySize']\n",
"train = train.drop(features_drop, axis=1)\n",
"test = test.drop(features_drop, axis=1)\n",
"train = train.drop(['PassengerId', 'AgeBand', 'FareBand'], axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>Fare</th>\n",
" <th>Embarked</th>\n",
" <th>Title</th>\n",
" <th>IsAlone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Survived Pclass Sex Age Fare Embarked Title IsAlone\n",
"0 0 3 0 1 0 0 1 0\n",
"1 1 1 1 2 3 1 3 0\n",
"2 1 3 1 1 1 0 2 1\n",
"3 1 1 1 2 3 0 3 0\n",
"4 0 3 0 2 1 0 1 1"
]
},
"execution_count": 68,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train.head()"
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Pclass</th>\n",
" <th>Sex</th>\n",
" <th>Age</th>\n",
" <th>Fare</th>\n",
" <th>Embarked</th>\n",
" <th>Title</th>\n",
" <th>IsAlone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>892</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>893</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>894</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>895</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>896</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Sex Age Fare Embarked Title IsAlone\n",
"0 892 3 0 2 0 2 1 1\n",
"1 893 3 1 2 0 0 3 0\n",
"2 894 2 0 3 1 2 1 1\n",
"3 895 3 0 1 1 0 1 1\n",
"4 896 3 1 1 1 0 3 0"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We are done with Feature Selection/Engineering. Now, we are ready to train a classifier with our feature set."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Classification & Accuracy "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Define training and testing set"
]
},
{
"cell_type": "code",
"execution_count": 70,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((891, 7), (891,), (418, 7))"
]
},
"execution_count": 70,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train = train.drop('Survived', axis=1)\n",
"y_train = train['Survived']\n",
"X_test = test.drop(\"PassengerId\", axis=1).copy()\n",
"\n",
"X_train.shape, y_train.shape, X_test.shape"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are many classifying algorithms present. Among them, we choose the following *Classification* algorithms for our problem:\n",
"\n",
"- Logistic Regression\n",
"- Support Vector Machines (SVC)\n",
"- Linear SVC\n",
"- k-Nearest Neighbor (KNN)\n",
"- Decision Tree\n",
"- Random Forest\n",
"- Naive Bayes (GaussianNB)\n",
"- Perceptron\n",
"- Stochastic Gradient Descent (SGD)\n",
"\n",
"Here's the training and testing procedure:\n",
"\n",
"> First, we train these classifiers with our training data. \n",
">\n",
"> After that, using the trained classifier, we predict the *Survival* outcome of test data.\n",
">\n",
"> Finally, we calculate the accuracy score (in percentange) of the trained classifier.\n",
"\n",
"***Please note:*** that the accuracy score is generated based on our training dataset."
]
},
{
"cell_type": "code",
"execution_count": 84,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Importing Classifier Modules\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.svm import SVC, LinearSVC\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.naive_bayes import GaussianNB\n",
"from sklearn.linear_model import Perceptron\n",
"from sklearn.linear_model import SGDClassifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Logistic Regression\n",
"\n",
"[Logistic regression](https://en.wikipedia.org/wiki/Logistic_regression), or logit regression, or logit model is a regression model where the dependent variable (DV) is categorical. This article covers the case of a binary dependent variable—that is, where it can take only two values, \"0\" and \"1\", which represent outcomes such as pass/fail, win/lose, alive/dead or healthy/sick. Cases where the dependent variable has more than two outcome categories may be analysed in multinomial logistic regression, or, if the multiple categories are ordered, in ordinal logistic regression."
]
},
{
"cell_type": "code",
"execution_count": 72,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"80.58 percent\n"
]
}
],
"source": [
"clf = LogisticRegression()\n",
"clf.fit(X_train, y_train)\n",
"y_pred_log_reg = clf.predict(X_test)\n",
"acc_log_reg = round( clf.score(X_train, y_train) * 100, 2)\n",
"print (str(acc_log_reg) + ' percent')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Support Vector Machine (SVM)\n",
"\n",
"[Support Vector Machine (SVM)](https://en.wikipedia.org/wiki/Support_vector_machine) model is a Supervised Learning model used for classification and regression analysis. It is a representation of the examples as points in space, mapped so that the examples of the separate categories are divided by a clear gap that is as wide as possible. New examples are then mapped into that same space and predicted to belong to a category based on which side of the gap they fall.\n",
"\n",
"In addition to performing linear classification, SVMs can efficiently perform a non-linear classification using what is called the kernel trick, implicitly mapping their inputs into high-dimensional feature spaces. Suppose some given data points each belong to one of two classes, and the goal is to decide which class a new data point will be in. In the case of support vector machines, a data point is viewed as a $p$-dimensional vector (a list of $p$ numbers), and we want to know whether we can separate such points with a $(p-1)$-dimensional hyperplane.\n",
"\n",
"When data are not labeled, supervised learning is not possible, and an unsupervised learning approach is required, which attempts to find natural clustering of the data to groups, and then map new data to these formed groups. The clustering algorithm which provides an improvement to the support vector machines is called **support vector clustering** and is often used in industrial applications either when data are not labeled or when only some data are labeled as a preprocessing for a classification pass.\n",
"\n",
"In the below code, [SVC](http://scikit-learn.org/stable/modules/generated/sklearn.svm.SVC.html) stands for Support Vector Classification."
]
},
{
"cell_type": "code",
"execution_count": 73,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"84.06\n"
]
}
],
"source": [
"clf = SVC()\n",
"clf.fit(X_train, y_train)\n",
"y_pred_svc = clf.predict(X_test)\n",
"acc_svc = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_svc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Linear SVM\n",
"\n",
"Linear SVM is a SVM model with linear kernel.\n",
"\n",
"In the below code, [LinearSVC](http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html) stands for Linear Support Vector Classification."
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"79.46\n"
]
}
],
"source": [
"clf = LinearSVC()\n",
"clf.fit(X_train, y_train)\n",
"y_pred_linear_svc = clf.predict(X_test)\n",
"acc_linear_svc = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_linear_svc)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### $k$-Nearest Neighbors\n",
"\n",
"[$k$-nearest neighbors algorithm (k-NN)](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) is one of the simplest machine learning algorithms and is used for classification and regression. In both cases, the input consists of the $k$ closest training examples in the feature space. The output depends on whether $k$-NN is used for classification or regression:\n",
"\n",
"- In *$k$-NN classification*, the output is a class membership. An object is classified by a majority vote of its neighbors, with the object being assigned to the class most common among its $k$ nearest neighbors ($k$ is a positive integer, typically small). If $k = 1$, then the object is simply assigned to the class of that single nearest neighbor.\n",
"\n",
"\n",
"- In *$k$-NN regression*, the output is the property value for the object. This value is the average of the values of its $k$ nearest neighbors."
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"78.23\n"
]
}
],
"source": [
"clf = KNeighborsClassifier(n_neighbors = 3)\n",
"clf.fit(X_train, y_train)\n",
"y_pred_knn = clf.predict(X_test)\n",
"acc_knn = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_knn)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Decision Tree\n",
"\n",
"A [decision tree](https://en.wikipedia.org/wiki/Decision_tree) is a flowchart-like structure in which each internal node represents a \"test\" on an attribute (e.g. whether a coin flip comes up heads or tails), each branch represents the outcome of the test, and each leaf node represents a class label (decision taken after computing all attributes). The paths from root to leaf represent classification rules."
]
},
{
"cell_type": "code",
"execution_count": 76,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"87.77\n"
]
}
],
"source": [
"clf = DecisionTreeClassifier()\n",
"clf.fit(X_train, y_train)\n",
"y_pred_decision_tree = clf.predict(X_test)\n",
"acc_decision_tree = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_decision_tree)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Random Forest\n",
"\n",
"[Random forests](https://en.wikipedia.org/wiki/Random_forest) or **random decision forests** are an **ensemble learning method** for classification, regression and other tasks, that operate by constructing a multitude of decision trees at training time and outputting the class that is the mode of the classes (classification) or mean prediction (regression) of the individual trees. Random decision forests correct for *decision trees' habit of overfitting to their training set*.\n",
"\n",
"[Ensemble methods](https://en.wikipedia.org/wiki/Ensemble_learning) use multiple learning algorithms to obtain better predictive performance than could be obtained from any of the constituent learning algorithms alone."
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"87.77\n"
]
}
],
"source": [
"clf = RandomForestClassifier(n_estimators=100)\n",
"clf.fit(X_train, y_train)\n",
"y_pred_random_forest = clf.predict(X_test)\n",
"acc_random_forest = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_random_forest)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Gaussian Naive Bayes\n",
"\n",
"[Naive Bayes classifiers](https://en.wikipedia.org/wiki/Naive_Bayes_classifier) are a family of simple probabilistic classifiers based on applying Bayes' theorem with strong (naive) independence assumptions between the features.\n",
"\n",
"[Bayes' theorem](https://en.wikipedia.org/wiki/Bayes%27_theorem) (alternatively **Bayes' law** or **Bayes' rule**) describes the probability of an event, based on prior knowledge of conditions that might be related to the event. For example, if cancer is related to age, then, using Bayes' theorem, a person's age can be used to more accurately assess the probability that they have cancer, compared to the assessment of the probability of cancer made without knowledge of the person's age.\n",
"\n",
"Naive Bayes is a simple technique for constructing classifiers: models that assign class labels to problem instances, represented as vectors of feature values, where the class labels are drawn from some finite set. It is not a single algorithm for training such classifiers, but a family of algorithms based on a common principle: all naive Bayes classifiers assume that the value of a particular feature is independent of the value of any other feature, given the class variable. For example, a fruit may be considered to be an apple if it is red, round, and about 10 cm in diameter. A naive Bayes classifier considers each of these features to contribute independently to the probability that this fruit is an apple, regardless of any possible correlations between the color, roundness, and diameter features."
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"77.67\n"
]
}
],
"source": [
"clf = GaussianNB()\n",
"clf.fit(X_train, y_train)\n",
"y_pred_gnb = clf.predict(X_test)\n",
"acc_gnb = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_gnb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Perceptron\n",
"\n",
"[Perceptron](https://en.wikipedia.org/wiki/Perceptron) is a type of linear classifier, i.e. a classification algorithm that makes its predictions based on a linear predictor function combining a set of weights with the feature vector."
]
},
{
"cell_type": "code",
"execution_count": 79,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"79.12\n"
]
}
],
"source": [
"clf = Perceptron(max_iter=5, tol=None)\n",
"clf.fit(X_train, y_train)\n",
"y_pred_perceptron = clf.predict(X_test)\n",
"acc_perceptron = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_perceptron)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Stochastic Gradient Descent (SGD)\n",
"\n",
"[Stochastic gradient descent](https://en.wikipedia.org/wiki/Stochastic_gradient_descent) (often shortened in **SGD**), also known as incremental gradient descent, is a stochastic approximation of the gradient descent optimization method for minimizing an objective function that is written as a sum of differentiable functions. In other words, SGD tries to find minima or maxima by iteration."
]
},
{
"cell_type": "code",
"execution_count": 80,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"77.33\n"
]
}
],
"source": [
"clf = SGDClassifier(max_iter=5, tol=None)\n",
"clf.fit(X_train, y_train)\n",
"y_pred_sgd = clf.predict(X_test)\n",
"acc_sgd = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (acc_sgd)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Confusion Matrix\n",
"\n",
"A [confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix), also known as an error matrix, is a specific table layout that allows visualization of the performance of an algorithm. Each row of the matrix represents the instances in a predicted class while each column represents the instances in an actual class (or vice versa). The name stems from the fact that it makes it easy to see if the system is confusing two classes (i.e. commonly mislabelling one as another).\n",
"\n",
"In predictive analytics, a table of confusion (sometimes also called a confusion matrix), is a table with two rows and two columns that reports the number of false positives, false negatives, true positives, and true negatives. This allows more detailed analysis than mere proportion of correct classifications (accuracy). Accuracy is not a reliable metric for the real performance of a classifier, because it will yield misleading results if the data set is unbalanced (that is, when the numbers of observations in different classes vary greatly). For example, if there were 95 cats and only 5 dogs in the data set, a particular classifier might classify all the observations as cats. The overall accuracy would be 95%, but in more detail the classifier would have a 100% recognition rate for the cat class but a 0% recognition rate for the dog class.\n",
"\n",
"Here's another guide explaining [Confusion Matrix with example](http://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/).\n",
"\n",
"$\\begin{matrix} & Predicted Positive & Predicted Negative \\\\ Actual Positive & TP & FN \\\\ Actual Negative & FP & TN \\end{matrix}$\n",
"\n",
"In our (Titanic problem) case: \n",
"\n",
">**True Positive:** The classifier predicted *Survived* **and** the passenger actually *Survived*.\n",
">\n",
">**True Negative:** The classifier predicted *Not Survived* **and** the passenger actually *Not Survived*.\n",
">\n",
">**False Postiive:** The classifier predicted *Survived* **but** the passenger actually *Not Survived*.\n",
">\n",
">**False Negative:** The classifier predicted *Not Survived* **but** the passenger actually *Survived*."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the example code below, we plot a confusion matrix for the prediction of ***Random Forest Classifier*** on our training dataset. This shows how many entries are correctly and incorrectly predicted by our classifer."
]
},
{
"cell_type": "code",
"execution_count": 130,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy: 87 % \n",
"\n",
"Confusion Matrix in Numbers\n",
"[[516 33]\n",
" [ 76 266]]\n",
"\n",
"Confusion Matrix in Percentage\n",
"[[ 0.94 0.06]\n",
" [ 0.22 0.78]]\n",
"\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7f0627bb9b90>"
]
},
"execution_count": 130,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nveb5eeDAgZoyZYoef/xxffHFF2rRooU2bNiga665RpdddplmzpypxMREHTp0SJZl5TryhMIjI33z\n05GjuvQvVTzPq1aprMwzv+jMmV88U/QaXXmFXl+2SocOH1V01Sp6e/WHys7O0cnTp+XOcWvGMy/q\nhScf1Zsr3iuu3UAJVbNGNe3bd9DzfP/+Q4qICFdYWHnP9Ls/WycyMkJhYeVVt25tVa1aRatXLdKl\n0VX1n/98rrHjptm+HwHPkPs0eb16XnBwsIKDgxUSEqK4uDjt3LnTjroCTvXoqpr7xBRdVqOaJOnO\n23to34FDOvjT4T9dPzs7Rzlut/YfPKT5c2Zo3uxH9eaKd7Xu35/ZWTYM9s47Hyq6emM98uhsvf/u\n657ld9z5gKpGN9QllaI0ccKDxVhhKeO2CvcooOTkZD3zzDPq06ePsrOzFR8fr6uuukpxcXHq3bu3\nRowYoUmTJvlhB0snMtI37jy+484yv/3nSdxfG+reu/ppxLip6nP3CJUpU0YVIsPlcDg0JmW6kkcM\nVeVKTDXFhX69OMsf5eS487VO2bJldUP7NurVZ4iuvuZmXXJJlB6dyr3YipxN+egrr0eaZs2a5Zl6\ncOTIkTy/XLi4r7/7Qbu//UG33NTes8yyLAWV+fO/gqioCipbNki3xN8gSbokqqL+1upqbd3xldq1\nucaWmmGm2rVjdGnVKvrk002SpPkLlmjuc9PVvXsXpaVt1E8/HdEvv5zVkjdXqlvCzcVcbelh+XnO\n9u8vPvBn59kMGzZMw4YN82sNpREZ6ZvoqlW0feduz/PDR48pMiJcoSEhnmVnzvyiuCYN1a3zjZKk\nn0+c1JyXF+rAwZ904NARPfHsi7IsS8eOn5DbbcnlcikleYTt+4KSZ+++A2rZsqnneY0a0Tpx4pTO\nnj2br3UOHfxJK1a+rzNnfpEkvf76co1/eKR9O1BK+Dsfi4rX3+61a9dWbGysYmNj1bZtW82dO9eO\nugKO0+HU9KfmeY4sLVm+WldcXlt/qXLJn65fNihI17e+Wqve/6ck/f9Uvf+q4ZX1bKsZZoq+9C/6\nx2vPKyrq/PSrfv26a/uOXerYoa0mTkiSdH50vGf3W7RuXVpxllq6GDKShoIhI33TqmUzfblzl/bu\nPz896s0V718wMHjk2M+6c3iyZzrVC/Nf180drlfjq+rro+Wvaun8OVq24Dn1Suis+Bva0jDB46OP\n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\nMhKFU2qapt/fwzcjI0NBQUEqU6aMBgwYoEsuuUSnT5/WvHnzNGXKFO3du1dut1sjR45UixYttGbN\nGs2bN0+VKlVSVlaW6tSpo40bN2rJkiWaPXu2li5dqiVLlsiyLLVv316NGjXSrl27lJycrNdff12L\nFy/Wu+++K4fDoc6dO6t///767rvvNH78eJUvX16hoaGqUKFCrnqDg4OVnZ2txYsX6/rrr1fNmjX1\n0UcfSZLGjRunzp0767rrrtO///1vvffee0pNTVW7du1Up04d1alTR+vWrdOqVasUGhqqV155RU6n\nU7t371anTp305ptvatCgQWrevLl27Nih559/Xk8//bQmT5580X13uVyqU6eOrX9vJYFp3x1JqlWr\nllq0aKHZs2crOTk512urVq3SwoULFRISopiYGE2dOlUvvPCCvvvuO82dO1f33XefZ93KlStrzZo1\nuuyyy9SsWTONGTNGTqdTBw4cUFJSkt544w1JUu/evfXkk09q+fLl2rJli86cOaNOnTrp1KlTGjZs\nmFwul7p27arnn39eycnJmjp1qqZNm6aFCxdKku655x6NHDlS6enpevLJJ1WmTBlddtllmjp1qs6d\nO6fRo0crPT1dNWvW9MdfMVDqmfZ7jowsOUz77khkJAqn1DRNn332mQYOHCiHw6GyZctq4sSJKleu\nnCTplltu0Q033KDFixerUqVKmjZtmk6ePKn+/ftrxYoVmjFjhlasWKHIyMhcI1EOh0PHjx/Xyy+/\nrHfeeUfBwcGaPXu2WrZsqSuvvFJTp07Vnj179P7772vx4sWyLEt33nmnWrdurSeeeEIjRozQtdde\nq5deeknff/99rnqDg4P16quvasGCBbr77ruVlZWlIUOGqE+fPnnu408//aSVK1cqMjJSwcHBWrNm\njbp27arVq1dr/vz5mj59uhwOh3r16qXly5erefPmWr58uXr16qWlS5cWaN9LE9O+O79uf8SIEerZ\ns6c2b97sWX7y5EnNmTNHK1euVLly5ZSamqo33nhD99xzj7755ptcYSBJd9xxhypUqKCXX35Z27dv\nV1xcnCZPnuz5jN9/3q/q1Kmjhx9+WKdPn1a/fv00bNgwffzxx2rXrp3Kli0rh8OhK664Qi6XS4cO\nHVJQUJBOnjyp+vXr66abbvL8WT799NNavny50tPTVa9ePY0cOVJffvmlPv/886L5iwXgYdrvOTKy\n5DDtu/Pr9slIFFSpaZp+f/j4j2rVqiVJ+vrrr7V582Zt27ZNlmUpJydHR48eVYUKFRQZGSlJatq0\naa737tu3T/Xq1VNwcLAkKSkpSdL5kRfLsvT111/r4MGDGjRokCzLUnp6uvbs2aMff/xRjRo1kiQ1\na9bsgn/UR44c0S+//KKJEydKkvbs2aPExETFxcXlWu/3IzyVKlXy1NmjRw+lpKQoNjZWsbGxuUZa\nrrvuOj3++OM6deqUNm/erIkTJ2rq1KkF3vfSwrTvzq/Kli2rxx57TKNGjVKvXr08n1m3bl1PoLVo\n0UJpaWm6/vrr/3Qbn332mRISEnTbbbcpKytLL730kh577DElJyfn+u653W7Pz7GxsZKkyMhIXXnl\nldq0aZPefvttjR07Nte2e/ToobffflvBwcG67bbbdPz4cR09elQjR46UZVlyuVxq1aqVfv75Z099\njRs3VlBQqfm1BdjGtN9zZGTJYdp351dkJAqqVFwIwhun8/wfQ+3atdWlSxctXLhQL7/8suLj41W5\ncmWlp6frxIkTknTBSaI1a9bU999/r6ysLEnSAw88oMOHD8vpdMrtdis2NlZ169bVwoULtWjRInXr\n1k3169fX5Zdfri1btvzpNqXzJwM+9NBDyszMlCRFR0erUqVKKlu2rIKDgz0nQf7+RMbfj2TExMTI\nsiz9/e9/9/wy+P168fHxSklJUYcOHeRwOAq17yiZ3x3pt/9QaNCggbp06aKXXnpJklSjRg19++23\nOnv2rKTzJ/HWqlVLTqdTOTk5F2xn4cKFWrVqlaTzAVO3bl0FBwcrJCREx48fl2VZOn36tPbv33/B\nn4kk9ezZUwsXLtS5c+c8QfFrbZ06ddK//vUvrV27Vl26dFFUVJSio6M1d+5cLVq0SEOHDtU111yT\na3937typ7Ozs/P3lACgSJfH3HBlphpL43ZHISBROqW9Hf/9LtHfv3po4caIGDBigzMxM9e3b13Oo\nOTExURUrVrygg69UqZLuvvtu9e/fXw6HQ+3bt1fVqlXVtGlTJScn65VXXtE111yjvn37yuVyqUmT\nJqpataqSk5M9r1eqVMkzkvKrBg0aaMCAAerfv79CQ0PldrvVs2dP1apVSz179tTDDz+sd955xzOK\n82d69OihZ599VldfffUFr3Xv3l0dOnTQhx9+WOh9L+1K6nfnj7Xdc889npOjo6KiNHz4cA0YMMAz\nJ3r06NGSpOzsbM2aNUujRo3yvHfq1KlKSUnxzO+uVKmSUlJSVLlyZbVq1Urdu3dXzZo1FRMT86d/\nRhiX0K0AAACmSURBVC1atNCkSZN07733XlBb+fLlVb9+feXk5Kh8+fKSpPHjx2vIkCFyu92KiIjQ\njBkz1LRpU40ZM0b9+vVTbGzsn+4vAP8oqb/nyMiSr6R+d/5YGxmJ/HJYvz9+CAAAAADIhel5AAAA\nAHARNE0AAAAAcBE0TQAAAABwETRNAAAAAHARNE0AAAAAcBE0TQAAAABwETRNAAAAAHARNE0AAAAA\ncBH/Bw3L9dNUvOAWAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f06284c3450>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from sklearn.metrics import confusion_matrix\n",
"import itertools\n",
"\n",
"clf = RandomForestClassifier(n_estimators=100)\n",
"clf.fit(X_train, y_train)\n",
"y_pred_random_forest_training_set = clf.predict(X_train)\n",
"acc_random_forest = round(clf.score(X_train, y_train) * 100, 2)\n",
"print (\"Accuracy: %i %% \\n\"%acc_random_forest)\n",
"\n",
"class_names = ['Survived', 'Not Survived']\n",
"\n",
"# Compute confusion matrix\n",
"cnf_matrix = confusion_matrix(y_train, y_pred_random_forest_training_set)\n",
"np.set_printoptions(precision=2)\n",
"\n",
"print ('Confusion Matrix in Numbers')\n",
"print (cnf_matrix)\n",
"print ('')\n",
"\n",
"cnf_matrix_percent = cnf_matrix.astype('float') / cnf_matrix.sum(axis=1)[:, np.newaxis]\n",
"\n",
"print ('Confusion Matrix in Percentage')\n",
"print (cnf_matrix_percent)\n",
"print ('')\n",
"\n",
"true_class_names = ['True Survived', 'True Not Survived']\n",
"predicted_class_names = ['Predicted Survived', 'Predicted Not Survived']\n",
"\n",
"df_cnf_matrix = pd.DataFrame(cnf_matrix, \n",
" index = true_class_names,\n",
" columns = predicted_class_names)\n",
"\n",
"df_cnf_matrix_percent = pd.DataFrame(cnf_matrix_percent, \n",
" index = true_class_names,\n",
" columns = predicted_class_names)\n",
"\n",
"plt.figure(figsize = (15,5))\n",
"\n",
"plt.subplot(121)\n",
"sns.heatmap(df_cnf_matrix, annot=True, fmt='d')\n",
"\n",
"plt.subplot(122)\n",
"sns.heatmap(df_cnf_matrix_percent, annot=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Comparing Models\n",
"\n",
"Let's compare the accuracy score of all the classifier models used above."
]
},
{
"cell_type": "code",
"execution_count": 81,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\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>4</th>\n",
" <td>Decision Tree</td>\n",
" <td>87.77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Random Forest</td>\n",
" <td>87.77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Support Vector Machines</td>\n",
" <td>84.06</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Logistic Regression</td>\n",
" <td>80.58</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Linear SVC</td>\n",
" <td>79.46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Perceptron</td>\n",
" <td>79.12</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>KNN</td>\n",
" <td>78.23</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Naive Bayes</td>\n",
" <td>77.67</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Stochastic Gradient Decent</td>\n",
" <td>77.33</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Model Score\n",
"4 Decision Tree 87.77\n",
"5 Random Forest 87.77\n",
"1 Support Vector Machines 84.06\n",
"0 Logistic Regression 80.58\n",
"2 Linear SVC 79.46\n",
"7 Perceptron 79.12\n",
"3 KNN 78.23\n",
"6 Naive Bayes 77.67\n",
"8 Stochastic Gradient Decent 77.33"
]
},
"execution_count": 81,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"models = pd.DataFrame({\n",
" 'Model': ['Logistic Regression', 'Support Vector Machines', 'Linear SVC', \n",
" 'KNN', 'Decision Tree', 'Random Forest', 'Naive Bayes', \n",
" 'Perceptron', 'Stochastic Gradient Decent'],\n",
" \n",
" 'Score': [acc_log_reg, acc_svc, acc_linear_svc, \n",
" acc_knn, acc_decision_tree, acc_random_forest, acc_gnb, \n",
" acc_perceptron, acc_sgd]\n",
" })\n",
"\n",
"models.sort_values(by='Score', ascending=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"From the above table, we can see that *Decision Tree* and *Random Forest* classfiers have the highest accuracy score.\n",
"\n",
"Among these two, we choose *Random Forest* classifier as it has the ability to limit overfitting as compared to *Decision Tree* classifier."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Create Submission File to Kaggle"
]
},
{
"cell_type": "code",
"execution_count": 82,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Pclass</th>\n",
" <th>Sex</th>\n",
" <th>Age</th>\n",
" <th>Fare</th>\n",
" <th>Embarked</th>\n",
" <th>Title</th>\n",
" <th>IsAlone</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>892</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>893</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>894</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>895</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>896</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Sex Age Fare Embarked Title IsAlone\n",
"0 892 3 0 2 0 2 1 1\n",
"1 893 3 1 2 0 0 3 0\n",
"2 894 2 0 3 1 2 1 1\n",
"3 895 3 0 1 1 0 1 1\n",
"4 896 3 1 1 1 0 3 0"
]
},
"execution_count": 82,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.head()"
]
},
{
"cell_type": "code",
"execution_count": 83,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"submission = pd.DataFrame({\n",
" \"PassengerId\": test[\"PassengerId\"],\n",
" \"Survived\": y_pred_random_forest\n",
" })\n",
"submission.to_csv('submission.csv', index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References\n",
"\n",
"This notebook is created by learning from the following notebooks:\n",
"\n",
"- [A Journey through Titanic](https://www.kaggle.com/omarelgabry/a-journey-through-titanic)\n",
"- [Titanic Data Science Solutions](https://www.kaggle.com/startupsci/titanic-data-science-solutions)\n",
"- [Pytanic](https://www.kaggle.com/headsortails/pytanic)\n",
"- [Titanic best working Classifier](https://www.kaggle.com/sinakhorami/titanic-best-working-classifier)\n",
"- [My approach to Titanic competition](https://www.kaggle.com/rafalplis/my-approach-to-titanic-competition)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.12"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment