Skip to content

Instantly share code, notes, and snippets.

@jgwerner
Created June 20, 2017 17:28
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 jgwerner/dc9ef15820faeea5fe77c3d5e17b4429 to your computer and use it in GitHub Desktop.
Save jgwerner/dc9ef15820faeea5fe77c3d5e17b4429 to your computer and use it in GitHub Desktop.
Sample notebook
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### ML Workflow Example\n",
"#### TItanic Dataset \n"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"##### 1. Import"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#import packages \n",
"from __future__ import division\n",
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import statsmodels.api as sm\n",
"import pylab as pl\n",
"import numpy as np\n",
"from patsy import dmatrices\n",
"from statsmodels.nonparametric.kde import KDEUnivariate\n",
"from statsmodels.nonparametric import smoothers_lowess\n",
"# remove warnings\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"pd.options.display.max_columns = 100\n",
"from matplotlib import pyplot as plt\n",
"import matplotlib\n",
"matplotlib.style.use('ggplot')\n",
"import numpy as np\n",
"from sklearn.preprocessing import OneHotEncoder\n",
"pd.options.display.max_rows = 100\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false,
"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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Braund, Mr. Owen Harris</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>PC 17599</td>\n",
" <td>71.2833</td>\n",
" <td>C85</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>Heikkinen, Miss. Laina</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O2. 3101282</td>\n",
" <td>7.9250</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Allen, Mr. William Henry</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 1 0 3 \n",
"1 2 1 1 \n",
"2 3 1 3 \n",
"3 4 1 1 \n",
"4 5 0 3 \n",
"\n",
" Name Sex Age SibSp \\\n",
"0 Braund, Mr. Owen Harris male 22.0 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
"2 Heikkinen, Miss. Laina female 26.0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
"4 Allen, Mr. William Henry male 35.0 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#import data \n",
"#Read in data from source \n",
"df_train = pd.read_csv(\"../data/titanictrain.csv\")\n",
"df_train.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 2. Define Problem"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"scrolled": false
},
"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": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Describe the data using basic statistics \n",
"df_train.describe()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"PassengerId 891\n",
"Survived 891\n",
"Pclass 891\n",
"Name 891\n",
"Sex 891\n",
"Age 714\n",
"SibSp 891\n",
"Parch 891\n",
"Ticket 891\n",
"Fare 891\n",
"Cabin 204\n",
"Embarked 889\n",
"dtype: int64"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_train.count()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false,
"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>891.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.361582</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>13.019697</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>22.000000</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>35.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 891.000000 891.000000 \n",
"mean 446.000000 0.383838 2.308642 29.361582 0.523008 \n",
"std 257.353842 0.486592 0.836071 13.019697 1.102743 \n",
"min 1.000000 0.000000 1.000000 0.420000 0.000000 \n",
"25% 223.500000 0.000000 2.000000 22.000000 0.000000 \n",
"50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n",
"75% 668.500000 1.000000 3.000000 35.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": [
"data= df_train\n",
"data['Age'].fillna(data['Age'].median(), inplace=True)\n",
"data.describe()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false,
"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>PassengerId</th>\n",
" <td>1.000000</td>\n",
" <td>-0.005007</td>\n",
" <td>-0.035144</td>\n",
" <td>0.034212</td>\n",
" <td>-0.057527</td>\n",
" <td>-0.001652</td>\n",
" <td>0.012658</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Survived</th>\n",
" <td>-0.005007</td>\n",
" <td>1.000000</td>\n",
" <td>-0.338481</td>\n",
" <td>-0.064910</td>\n",
" <td>-0.035322</td>\n",
" <td>0.081629</td>\n",
" <td>0.257307</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pclass</th>\n",
" <td>-0.035144</td>\n",
" <td>-0.338481</td>\n",
" <td>1.000000</td>\n",
" <td>-0.339898</td>\n",
" <td>0.083081</td>\n",
" <td>0.018443</td>\n",
" <td>-0.549500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Age</th>\n",
" <td>0.034212</td>\n",
" <td>-0.064910</td>\n",
" <td>-0.339898</td>\n",
" <td>1.000000</td>\n",
" <td>-0.233296</td>\n",
" <td>-0.172482</td>\n",
" <td>0.096688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>SibSp</th>\n",
" <td>-0.057527</td>\n",
" <td>-0.035322</td>\n",
" <td>0.083081</td>\n",
" <td>-0.233296</td>\n",
" <td>1.000000</td>\n",
" <td>0.414838</td>\n",
" <td>0.159651</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Parch</th>\n",
" <td>-0.001652</td>\n",
" <td>0.081629</td>\n",
" <td>0.018443</td>\n",
" <td>-0.172482</td>\n",
" <td>0.414838</td>\n",
" <td>1.000000</td>\n",
" <td>0.216225</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fare</th>\n",
" <td>0.012658</td>\n",
" <td>0.257307</td>\n",
" <td>-0.549500</td>\n",
" <td>0.096688</td>\n",
" <td>0.159651</td>\n",
" <td>0.216225</td>\n",
" <td>1.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived Pclass Age SibSp Parch \\\n",
"PassengerId 1.000000 -0.005007 -0.035144 0.034212 -0.057527 -0.001652 \n",
"Survived -0.005007 1.000000 -0.338481 -0.064910 -0.035322 0.081629 \n",
"Pclass -0.035144 -0.338481 1.000000 -0.339898 0.083081 0.018443 \n",
"Age 0.034212 -0.064910 -0.339898 1.000000 -0.233296 -0.172482 \n",
"SibSp -0.057527 -0.035322 0.083081 -0.233296 1.000000 0.414838 \n",
"Parch -0.001652 0.081629 0.018443 -0.172482 0.414838 1.000000 \n",
"Fare 0.012658 0.257307 -0.549500 0.096688 0.159651 0.216225 \n",
"\n",
" Fare \n",
"PassengerId 0.012658 \n",
"Survived 0.257307 \n",
"Pclass -0.549500 \n",
"Age 0.096688 \n",
"SibSp 0.159651 \n",
"Parch 0.216225 \n",
"Fare 1.000000 "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Check for colinearity \n",
"data.corr()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### 3. Vizualize"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x11bb8de90>"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\nAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1094cf610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#Visualizing the clean data\n",
"\n",
"fig = plt.figure(figsize=(18,6), dpi=1600) \n",
"alpha=alpha_scatterplot = 0.2 \n",
"alpha_bar_chart = 0.55\n",
"\n",
"\n",
"ax1 = plt.subplot2grid((2,3),(0,0))\n",
"# plots a bar graph of those who surived vs those who did not. \n",
"data.Survived.value_counts().plot(kind='bar', alpha=alpha_bar_chart)\n",
"ax1.set_xlim(-1, 2)\n",
"plt.title(\"Distribution of Survival, (1 = Survived)\") \n",
"\n",
"plt.subplot2grid((2,3),(0,1))\n",
"plt.scatter(data.Survived, data.Age, alpha=alpha_scatterplot)\n",
"plt.ylabel(\"Age\") \n",
"plt.grid(b=True, which='major', axis='y') \n",
"plt.title(\"Survival by Age, (1 = Survived)\")\n",
"\n",
"ax3 = plt.subplot2grid((2,3),(0,2))\n",
"data.Pclass.value_counts().plot(kind=\"barh\", alpha=alpha_bar_chart)\n",
"ax3.set_ylim(-1, len(data.Pclass.value_counts()))\n",
"plt.title(\"Class Distribution\")\n",
"\n",
"plt.subplot2grid((2,3),(1,0), colspan=2)\n",
"data.Age[data.Pclass == 1].plot(kind='kde') \n",
"data.Age[data.Pclass == 2].plot(kind='kde')\n",
"data.Age[data.Pclass == 3].plot(kind='kde')\n",
"\n",
"plt.xlabel(\"Age\") \n",
"plt.title(\"Age Distribution within classes\")\n",
"plt.legend(('1st Class', '2nd Class','3rd Class'),loc='best') \n",
"\n",
"ax5 = plt.subplot2grid((2,3),(1,2))\n",
"data.Embarked.value_counts().plot(kind='bar', alpha=alpha_bar_chart)\n",
"ax5.set_xlim(-1, len(data.Embarked.value_counts()))\n",
"plt.title(\"Passengers per boarding location\")"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x15ddff5d0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA24AAAIFCAYAAACqFa5KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+U5XV93/HXMMu6i4wGAixdsFZr+bFBKKLbeNS6SdRK\n2wCnNR9/EKKhtulRozWGyKopS9IEtpxKUlsxqZauCSm+a2IhJ9SsHLLGotZYNTGsURJcKiCrgMCy\n/oAZpn/MBYd1f8zuzuz93JnH4xzO3u/3fu/3vgfYufOc7/d+79j09HQAAADo12HDHgAAAIC9E24A\nAACdE24AAACdE24AAACdE24AAACdE24AAACdWzaXjVprT03y/iSnJXk0yYVJvpLkQ0menmRbklZV\nDwy2Xz/YZjLJW6pq87xPDgAAsETM9Yjbbya5oapOTXJGkr9KcnGSG6vq5CQ3JVmfJK21NUlaklOT\nnJ3kva21sfkeHPhBrbV1w54BgKXL6xAsnH2GW2vtKUleVFVXJ0lVTQ6OrJ2bZNNgs01JzhvcPifJ\ntYPttiW5Ncna+R4c2K11wx4AgCVt3bAHgMVqLqdKPiPJPa21qzNztO2zSf5NklVVtT1Jquru1tpx\ng+1PSPKpWY+/c7AOAACAAzCXUyWXJXlOkv9cVc9JsjMzp0lO77LdrssAAADMg7kccbsjydeq6rOD\n5d/PTLhtb62tqqrtrbXjk3xjcP+dSZ426/EnDtY9weAc6HWPLVfVJfs9PfAEVZUk/i4BMBReh+Dg\ntdYunbW4paq2JMnY9PS+D5S11j6e5F9W1Vdaa5ckOWJw131VtbG19vYkR1XVxYOLk1yT5B9k5hTJ\njyX5e1W1ryeavuuuu/briwKeaGJiIjt27Bj2GAAsUV6H4OCsXr06SXZ7Ycc5fRxAkjcnuaa1dniS\n25L8bJLxJNVauzDJ7Zm5kmSqamtrrZJsTfJIkjfMIdoAAADYgzkdcTtEHHGDg+Q3nQAMk9chODh7\nO+I2189xAwAAYEiEGwAAQOfm+h43AABgiTryyCMzNrbbM/g4ANPT03nooYf26zHCDQAA2KuxsTHv\nX5xHExMT+/0Yp0oCAAB0TrgBAAB0TrgBAAB0TrgBAAAj62/+5m/yspe9LKecckquvvrqQ/a8J554\nYm6//fZD9nwuTgIAAOyX8W/dk9z3zYV7gqOPzdRRx8xp06uuuioveMELsnnz5oWbZzcO9VU2hRsA\nALB/7vtmHr787Qu2++UXb0zmGG533HFHzjvvvAWbZU+mp6cP6fM5VRIAABhJrbV88pOfzDvf+c6c\nfPLJue222/Irv/IrWbt2bc4888ysX78+3/ve95Ikn/rUp/Lc5z43V111Vc4444ycddZZ+eM//uPc\ndNNNedGLXpTTTjst73nPex7f9xe+8IWcc845WbNmTc4666y8613vyuTk5G7nePjhh/f4vPNFuAEA\nACOpqrJ27dr8+q//er785S9n06ZN2bZtW2688cbcfPPNufvuu3PllVc+vv03v/nNPPzww/nc5z6X\nt73tbbnooovykY98JJs3b84f/MEf5Dd+4zdyxx13JEnGx8dz6aWX5pZbbsn111+fm2++OZs2bdrt\nHL/2a7+21+edD8INAAAYaY+dtvh7v/d72bBhQ57ylKfkiCOOyBvf+MZcd911j293+OGH581vfnPG\nx8dz7rnn5r777svrX//6rFy5MieddFJOOumkbN26NUny7Gc/O2eeeWbGxsZywgkn5Pzzz8+nP/3p\n3T7/vp53PniPGwAAMPLuvffefOc738nZZ5/9+LpHH330Ce9FO+qoox6/qMiKFSuSJMcc8/330q1Y\nsSI7d+5Mktx222259NJL8xd/8Rf57ne/m8nJyZx++ukH9LzzQbgBAAAj7+ijj87KlStz0003ZdWq\nVQe9v/Xr1+fZz3523ve+92XlypV5//vfnxtuuGHBn3dPnCoJAACMvLGxsbzmNa/JJZdcknvvvTdJ\n8vWvfz0f//jHD2h/O3fuzJFHHpmVK1fmr//6r/PBD37wkDzvnjjiBgAA7J+jj525ZP8C7n+uZn+e\n2jve8Y5ceeWV+cmf/Ml861vfyvHHH5+f+ZmfyYtf/OJ9PnbX5V/+5V/OL/3SL+Wqq67KaaedlnPP\nPTc333zzbrd95zvfmXe/+91zft4DMXaoP39gL6bvuuuuYc8AI21iYiI7duwY9hgALFFehxYv/23n\n157+fa5evTpJdvvJ3k6VBAAA6JxwAwAA6JxwAwAA6JxwAwAA6JxwAwAA6JxwAwAA6JxwAwAA6Jxw\nAwAA6JxwAwAAlry3vvWtueKKK4Y9xh4tG/YAAADAaLnnu4/mnp2TC7b/Y568LMescIxpNuEGAADs\nl3t2TubtH71twfa/8eXPzDErli/Y/keRjAUAAEbWj/7oj+Z973tfXvKSl+Skk07KRRddlHvuuScX\nXHBBTj755Lz61a/Ogw8+mCT5uZ/7uZx55plZs2ZNXvGKV+QrX/nKHvf7sY99LC972cuyZs2anHfe\nefnSl750qL6k3RJuAADASLvhhhtSVfnEJz6RzZs354ILLsj69evzxS9+MVNTU/nABz6QJPnxH//x\nfPKTn8yf//mf57TTTsub3vSm3e7vL//yL/OLv/iLueKKK3LLLbfkp3/6p/OzP/uzeeSRRw7ll/UE\nwg0AABhpF154YY4++uisWrUqa9euffyo2vLly3P22WfnlltuSZK88pWvzMqVK3P44YfnrW99a7Zu\n3ZqHHnroB/Z3zTXX5IILLsgZZ5yRsbGxvOIVr8jy5cvzuc997lB/aY/zHjcAAGCkHXPMMY/fXrFi\nRY499tgnLO/cuTOPPvpoLr/88vzRH/1R7rvvvoyNjWVsbCz33XdfjjzyyCfs74477siHP/zhXH31\n1UmS6enpPPLII7n77rsPzRe0G8INABgJC30VOw7e+P33Z2pqathjsBdL+WqNH/nIR7J58+ZUVU44\n4YQ8+OCDWbNmTaanp39g29WrV+fNb35zfv7nf34Ik+6ecAMARsJCX8UOloKlfLXGnTt35klPelKe\n+tSn5tvf/nYuu+yyjI2N7Xbb888/P69//evzwhe+MGeeeWa+/e1v51Of+lSe//zn54gjjjjEk88Q\nbgAAwH455snLsvHlz1zQ/c/VrvG1pxj7qZ/6qWzZsiVnnXVWjjrqqFx00UX53d/93d1ue/rpp+eK\nK67Iu971rmzbti0rVqzI8573vDz/+c+f+xcxz8Z2d2hwSKbvuuuuYc8AI21iYiI7duwY9hgAC+Kv\n7n3YETc4SBtf/syc8sP7f8TNzxjza0//PlevXp0kuy3PpXmCKwAAwAgRbgAAAJ0TbgAAAJ0TbgAA\nAJ0TbgAAAJ0TbgAAAJ3zOW4AAMBeTU9PZ2JiYthjLBoH8pFswg0AANirhx56aNgjLHlOlQQAAOic\ncAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMA\nAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOiccAMAAOic\ncAMAAOjcsrls1FrbluSBJI8meaSq1rbWjkryoSRPT7ItSauqBwbbr09yYZLJJG+pqs3zPzoAAMDS\nMNcjbo8mWVdVZ1bV2sG6i5PcWFUnJ7kpyfokaa2tSdKSnJrk7CTvba2Nze/YAAAAS8dcw21sN9ue\nm2TT4PamJOcNbp+T5NqqmqyqbUluTbI2AAAAHJC5htt0ko+11v6stfb6wbpVVbU9Sarq7iTHDdaf\nkORrsx5752AdAAAAB2BO73FL8oKq+npr7dgkm1trX85MzM226/JetdbWJVn32HJVZWJiYn92Aexi\n+fLl/h4Bi9b4/fcPewQYeePj435W6FxrbcOsxS1VtSWZY7hV1dcHf36ztfY/M3Pq4/bW2qqq2t5a\nOz7JNwab35nkabMefuJg3a773JJky6xVl+zYsWMu4wB7MDExEX+PgMVqampq2CPAyJuamvKzQscm\nJiZSVRt2d98+T5VsrR3RWjtycPvJSV6W5ItJrk/yusFmr01y3eD29Ule1Vpb3lp7RpJnJfnMwXwB\nAAAAS9lc3uO2Ksn/bq19Psmnk/zh4PL+G5O8dHDa5E8kuTxJqmprkkqyNckNSd5QVft1GiUAAADf\nNzY93U1TTd91113DngFGmlMlgcXsr+59OG//6G3DHgNG2saXPzOn/PDyYY/BHqxevTqZuaL/D5jr\nVSUBAAAYEuEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEG\nAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQ\nOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEG\nAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQ\nOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEG\nAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQ\nOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQOeEGAADQuWVz3bC1dliS\nzya5o6rOaa0dleRDSZ6eZFuSVlUPDLZdn+TCJJNJ3lJVm+d7cAAAgKVif464vSXJ1lnLFye5sapO\nTnJTkvVJ0lpbk6QlOTXJ2Une21obm59xAQAAlp45hVtr7cQk/zjJ+2etPjfJpsHtTUnOG9w+J8m1\nVTVZVduS3Jpk7bxMCwAAsATN9YjblUkuSjI9a92qqtqeJFV1d5LjButPSPK1WdvdOVgHAADAAdjn\ne9xaa/8kyfaq+kJrbd1eNp3ey3272++6JI/vr6oyMTGxP7sAdrF8+XJ/j4BFa/z++4c9Aoy88fFx\nPyt0rrW2Ydbilqrakszt4iQvSHJOa+0fJ1mZZKK19jtJ7m6traqq7a2145N8Y7D9nUmeNuvxJw7W\nPcFggC2zVl2yY8eOOX0xwO5NTEzE3yNgsZqamhr2CDDypqam/KzQsYmJiVTVht3dt89TJavqHVX1\nt6vqmUleleSmqrogyR8med1gs9cmuW5w+/okr2qtLW+tPSPJs5J85uC+BAAAgKXrYD7H7fIkL22t\nfTnJTwyWU1Vbk1RmrkB5Q5I3VNV+nUYJAADA941NT3fTVNN33XXXsGeAkeZUSWAx+6t7H87bP3rb\nsMeAkbbx5c/MKT+8fNhjsAerV69Okt1+lNrBHHEDAADgEBBuAAAAnRNuAAAAnRNuAAAAnRNuAAAA\nnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNu\nAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAA\nnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNu\nAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnVs27AEYHfd899Hcs3Ny2GOwF+P335+pqalhj8Ee\nHPPkZTlmhd+XAQD7T7gxZ/fsnMzbP3rbsMeAkbXx5c/MMSuWD3sMAGAE+dUvAABA54QbAABA54Qb\nAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA\n54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54QbAABA54Qb\nAABA54QbAABA54QbAABA54QbAABA55bta4PW2pOS/GmS5YPtP1xVl7bWjkryoSRPT7ItSauqBwaP\nWZ/kwiSTSd5SVZsXZnwAAIDFb59H3Krqe0l+rKrOTPL3k5zdWlub5OIkN1bVyUluSrI+SVpra5K0\nJKcmOTvJe1trYws0PwAAwKI3p1Mlq+rbg5tPysxRt+kk5ybZNFi/Kcl5g9vnJLm2qiaraluSW5Os\nna+BAQAAlpo5hVtr7bDW2ueT3J3kY1X1Z0lWVdX2JKmqu5McN9j8hCRfm/XwOwfrAAAAOABzPeL2\n6OBUyROTrG2t/UhmjrrNtusyAAAA82CfFyeZraoebK1tSfLyJNtba6uqantr7fgk3xhsdmeSp816\n2ImDdU/QWluXZN2sfWdiYmK/hufQGr///mGPACNtfHzc9zk4CF6H4OB5Lepfa23DrMUtVbUlmdtV\nJY9J8khVPdBaW5nkpUkuT3J9ktcl2ZjktUmuGzzk+iTXtNauzMwpks9K8pld9zsYYMusVZfs2LFj\nP74kDrWpqalhjwAjbWpqKr7PwYHzOgQHz2tR3yYmJlJVG3Z331xOlfxbSf6ktfaFJP8nyR9X1Q2Z\nCbaXtta+nOQnMhNzqaqtSSrJ1iQ3JHlDVTmNEgAA4ADt84hbVX0xyXN2s/6+JC/Zw2MuS3LZQU8H\nAADA3C5OAgAAwPAINwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAA\ngM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4J\nNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAA\ngM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4J\nNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4JNwAAgM4tG/YA\njI5jl01m44uPH/YY7MXY2Fimp6eHPQZ7cOyyySTLhz0GADCChBtzdtw9t+eHLn/7sMeAkbX84o2Z\neuqpwx4DABhBTpUEAADonHADAADonHADAADonHADAADonHADAADonHADAADonHADAADonHADAADo\nnHADAADonHADAADonHADAADonHADAADonHADAADonHADAADonHADAADonHADAADonHADAADonHAD\nAADo3LJ9bdBaOzHJB5OsSvJokv9SVf+xtXZUkg8leXqSbUlaVT0weMz6JBcmmUzylqravDDjAwAA\nLH5zOeI2meQXqupHkjw/yRtba6ckuTjJjVV1cpKbkqxPktbamiQtyalJzk7y3tba2EIMDwAAsBTs\nM9yq6u6q+sLg9kNJvpTkxCTnJtk02GxTkvMGt89Jcm1VTVbVtiS3Jlk7z3MDAAAsGfv1HrfW2t9J\n8veTfDrJqqranszEXZLjBpudkORrsx5252AdAAAAB2Cf73F7TGvtyCQfzsx71h5qrU3vssmuy/va\n37ok6x5brqpMTEzszy44xL43Puf/XYDdGB9fliN8n4MDNn7//cMeAUbe+Pi4n7k711rbMGtxS1Vt\nSeYYbq21ZZmJtt+pqusGq7e31lZV1fbW2vFJvjFYf2eSp816+ImDdU8wGGDLrFWX7NixYy7jMCTj\nU5PDHgFG2tTUZHyfgwM3NTU17BFg5E1NTXkt6tjExESqasPu7pvrIZT/mmRrVf3mrHXXJ3ldko1J\nXpvkulnrr2mtXZmZUySfleQz+z82AAAAydw+DuAFSc5P8sXW2uczc0rkOzITbNVauzDJ7Zm5kmSq\namtrrZJsTfJIkjdU1X6dRgkAAMD37TPcqurmJON7uPsle3jMZUkuO4i5AAAAGNivq0oCAABw6Ak3\nAACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACA\nzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3\nAACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACA\nzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3\nAACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACA\nzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3\nAACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzgk3AACAzi3b1wattQ8k+adJtlfV6YN1\nRyX5UJKnJ9mWpFXVA4P71ie5MMlkkrdU1eaFGR0AAGBpmMsRt6uT/KNd1l2c5MaqOjnJTUnWJ0lr\nbU2SluTUJGcneW9rbWz+xgUAAFh69hluVfW/k3xrl9XnJtk0uL0pyXmD2+ckubaqJqtqW5Jbk6yd\nn1EBAACWpgN9j9txVbU9Sarq7iTHDdafkORrs7a7c7AOAACAAzRfFyeZnqf9AAAAsIt9XpxkD7a3\n1lZV1fbW2vFJvjFYf2eSp83a7sTBuh/QWluXZN1jy1WViYmJAxyHQ+F74wf6vwuQJOPjy3KE73Nw\nwMbvv3/YI8DIGx8f9zN351prG2YtbqmqLcncw21s8M9jrk/yuiQbk7w2yXWz1l/TWrsyM6dIPivJ\nZ3a3w8EAW2atumTHjh1zHIdhGJ+aHPYIMNKmpibj+xwcuKmpqWGPACNvamrKa1HHJiYmUlUbdnff\nXD4O4Pcyc2Tsh1tr/y/JJUkuT/I/WmsXJrk9M1eSTFVtba1Vkq1JHknyhqpyGiUAAMBB2Ge4VdVr\n9nDXS/aw/WVJLjuYoQAAAPi++bo4CQAAAAtEuAEAAHROuAEAAHROuAEAAHROuAEAAHROuAEAAHRO\nuAEAAHROuAEAAHROuAEAAHROuAEAAHRu2bAHAACYi2OXTWbji48f9hjsxdjYWKanp4c9Bntx7LLJ\nJMuHPQYHQLgBACPhuHtuzw9d/vZhjwEjbfnFGzP11FOHPQYHwKmSAAAAnRNuAAAAnRNuAAAAnRNu\nAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAA\nnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNu\nAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAA\nnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNu\nAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAAnRNuAAAA\nnRNuAAAAnRNuAAAAnRNuAAAAnVu2UDturb08yW9kJg4/UFUbF+q5AAAAFrMFOeLWWjssyX9K8o+S\n/EiSV7fWTlmI5wIAAFjsFupUybVJbq2q26vqkSTXJjl3gZ4LAABgUVuocDshyddmLd8xWAcAAMB+\nWrD3uO1La21dknWPLVdVVq9ePaxxmIvVq5MXfXbYUwCwVHkdApaA1tqGWYtbqmpLsnDhdmeSvz1r\n+cTBuscNBtgya9WGBZoFlozW2oaq2jDsOQBYmrwOwcGrqt2uX6hw+7Mkz2qtPT3J15O8KsmrF+i5\nAAAAFrUFeY9bVU0leVOSzUluSXJtVX1pIZ4LAABgsVuw97hV1UeTnLxQ+wd2a8uwBwBgSdsy7AFg\nsRqbnp4e9gwAAADsxUJ9HAAAAADzRLgBAAB0TrgBAAB0TrgBAAB0TrgBAAB0bsE+DgBYOK21HUn2\neEnYqnrKIRwHgCWotfYLe7u/qt59qGaBpUC4wQiqqokkaa39apKvJ/mdJGNJzk/yt4Y4GgBLx8Tg\nz5OTPC/J9YPln0zymaFMBIuYcIPRdk5VnTFr+arW2p8n+bfDGgiApaGqLk2S1tqfJnlOVe0YLG9I\n8kdDHA0WJeEGo21na+38JNdm5tTJVyfZOdyRAFhiViV5eNbyw4N1wDwSbjDaXpPkNwf/TCe5ebAO\nAA6VDyb5TGvtI4Pl85JsGuI8sCiNTU/v8foGAACwT621s5K8cLD4p1X1+WHOA4uRcIMR1lo7KclV\nSVZV1WmttdMz8763fzfk0QBYYlprxyVZ8dhyVf2/IY4Di47PcYPR9l+SrE/ySJJU1V8kedVQJwJg\nSWmtndNauzXJV5N8fPDn/xruVLD4CDcYbUdU1a6XXJ4cyiQALFW/muRHk3ylqp6R5CVJPj3ckWDx\nEW4w2u5prf3dDD6Mu7X2isx8rhsAHCqPVNW9SQ5rrR1WVX+S5LnDHgoWG1eVhNH2xiS/neSU1tqd\nmTk95fzhjgTAEnN/a+3IJJ9Ick1r7Rvx0TQw74QbjLbbq+olrbUnJznssQ8/BYBD6Nwk30nybzLz\ny8OnJvmVoU4Ei5BTJWG0fbW19tuZeW/BQ8MeBoClp6p2JnlaknVVtSnJ+/PED+QG5oFwg9F2SpIb\nM3PK5Fdba/+ptfbCfTwGAOZNa+1fJvlwkt8arDohyf8c3kSwOAk3GGFV9e2a8c+SnJnkKZm5FDMA\nHCpvTPKCJA8mSVXdmuS4oU4Ei5BwgxHXWntxa+29Sf5vZj74tA15JACWlu9V1eOnRrbWlmVwtWNg\n/rg4CYyw1tq2JJ9PUkkuGrzPAAAOpY+31t6RZGVr7aVJ3pDkD4c8Eyw6wg1G2+lV9eCwhwBgSbs4\nyb9I8sUF14nxAAAC0UlEQVQkP5fkhsxcoASYR2PT045kw6hprf1SVf371tp7spvTUarqzUMYC4Al\nqrV2bJJU1TeHPQssVo64wWj60uDPzw51CgCWrNbaWJJLkrwpg+smtNamkrynqnyOG8wzR9xghLXW\nnlNVnxv2HAAsPa21X0hydpJ/VVVfHax7ZpKrkny0qq4c5nyw2LiqJIy2/9Ba+1Jr7Vdba6cNexgA\nlpQLkrz6sWhLkqq6LclPJ/mZoU0Fi5RwgxFWVT+W5MeSfDPJb7XWvthae9eQxwJgaTi8qu7ZdeXg\nfW6HD2EeWNSEG4y4qrq7qv5jkn+d5AtJ/u2QRwJgaXj4AO8DDoCLk8AIa62dmuSVSf55knuTfCjJ\n24Y6FABLxRmttd19JM1YkhWHehhY7FycBEZYa+1TSa5N8j+q6q5hzwMAwMJwxA1GVGttPMlXq+o3\nhz0LAAALy3vcYERV1VSSp7XWlg97FgAAFpYjbjDavprk5tba9Ul2Prayqt49vJEAAJhvwg1G298M\n/jksycSQZwEAYIG4OAkAAEDnHHGDEdZa+5MkP/Dbl6r68SGMAwDAAhFuMNp+cdbtFZn5PLfJIc0C\nAMACcaokLDKttc9U1dphzwEAwPxxxA1GWGvt6FmLhyV5bpKnDmkcAAAWiHCD0fZ/8/33uE0m2Zbk\nXwxtGgAAFoRwgxHUWntekq9V1TMGy6/NzPvbtiXZOsTRAABYAIcNewDggPxWkoeTpLX2D5NclmRT\nkgeS/PYQ5wIAYAE44gajabyq7hvcfmWS366q30/y+621LwxxLgAAFoAjbjCaxltrj/3i5SeS3DTr\nPr+QAQBYZPyAB6Ppvyf5eGvtniTfSfKJJGmtPSszp0sCALCIOOIGI6iqfi3J25L8tyQvrKrHrix5\nWJKfH9ZcAAAsDB/ADQAA0DlH3AAAADon3AAAADon3AAAADon3AAAADon3AAAADr3/wGnqIGPSrrp\nvwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11b7ea490>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"survived_sex = data[data['Survived']==1]['Sex'].value_counts()\n",
"dead_sex = data[data['Survived']==0]['Sex'].value_counts()\n",
"df = pd.DataFrame([survived_sex,dead_sex])\n",
"df.index = ['Survived','Dead']\n",
"df.plot(kind='bar',stacked=True, figsize=(15,8))"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x11bc26150>"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4YAAAH1CAYAAACqWuBLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu43FV9L/73TkKAyBYUD4EEBSkoyFU4oP6oGouItgpR\nZB21ClSxesT7rWJVLsdW9PyMBxX7QysWFC9LxUQ9tj/gweDlcIlV6wUtVA1CNsSqEBOIQHb2+WMm\nuA25TJK5ZX9fr+fJk5k1M2s+k8+TwHuvNes7MjExEQAAAJpr2qALAAAAYLAEQwAAgIYTDAEAABpO\nMAQAAGg4wRAAAKDhBEMAAICG61swLKXsXUq5upTy41LKD0spr2mPn11Kua2U8t32r2dOes1ZpZSb\nSyk/KaU8o8P3mdejj0CX6NHw06Phpj/DT4+Gm/4MPz0afno03LamP/1cMVyT5I211oOTPCnJq0sp\nB7YfW1BrPbL961+SpJRyUJKS5KAkz0rykVLKSAfvM6/7pdNl8wZdAJs1b9AFsEnzBl0AmzVv0AWw\nSfMGXQCbNW/QBbBZ8wZdAJs0b0tf0LdgWGu9o9b6/fbtVUl+kmRu++ENBb6Tkny21rqm1ro0yc1J\njulHrQAAAE0yYxBvWkrZN8kRSa5P8qdprR6+JMl3kryp1roirdB47aSXLcsfgiQAAABdMjIxMdHX\nNyyl7JJkcZL/UWtdVEr5L0l+XWudKKW8O8metdYzSikfSnJtrfXT7df9Y5Kv1VovX2++eZm0VFpr\nPbs/nwQAAGA4lVLOnXR3ca118aae39cVw1LKjCRfSPLJWuuiJKm1/uekp3wsyVfat5cleeSkx/Zu\nj/2R9gdcPGno7LGxse4VTdeNjo5m5cqVgy6DTdCj4aY/w0+Phpv+DD89Gn56NNzmzJmTWus5W/Ka\nfl+u4uIkN9ZaL1g3UErZc9Ljz0vyo/btLyd5QSllZinl0Un2T3JD3yoFAABoiL6tGJZSjk3yl0l+\nWEr5XpKJJG9P8qJSyhFJ1iZZmuQVSVJrvbGUUpPcmOT+JK+qtfZ33ysAAEAD9P07hn0wYSvpcLP1\nYPjp0XDTn+GnR8NNf4afHg0/PRpuc+bMSTZ85YeN6vdWUgAAAIbMQC5XAQAAbP922WWXjIxs0cIU\nXTQxMZFVq1Z1ZS7BEAAA2CojIyO2lA7Q6Oho1+aylRQAAKDhBEMAAICGEwwBAAAaTjAEAABoOMEQ\nAABgG73tbW/LBRdc0PV5FyxYkNe85jVdn3d9TiUFAAC6Zu3aZVmzZqxn88+YMSfTps3t+Pk33HBD\n/u7v/i433XRTpk+fngMOOCDnnntuDjvssK7Wdf7553d1vsn6cUkQwRAAAOiaNWvGsnTp/J7Nv+++\nCzNzZmfBcNWqVTn99NNz/vnn5znPeU7uu+++XH/99Zk5c+YWv+/ExMSUvmajYAiwDXZctizTx7r/\nU9HxOXNy79zOfxoKADzYz3/+84yMjOTEE09Mkuy44455ylOekqS1RfMXv/hFPvShDyVJbrvttjzx\niU/ML3/5y0ybNi3Pf/7zc/TRR+faa6/Nj370o7zxjW/MV7/61Xzta197YP6PfvSjue6663LxxRfn\nDW94Q+bMmZO3vOUtmTdvXt75znfmuOOOS5KMj4/n8Y9/fD796U/nkEMOyb/+67/mvPPOy80335y9\n99475557bp70pCclSW699da84Q1vyI9+9KMceeSR2W+//fryZyUYAmyD6WNj2W1+938qetfChYlg\nCADbZL/99su0adPy+te/PieddFKOPPLI7Lrrrg88vv4K4Pr3L7/88lx22WXZb7/9cvfdd+eDH/xg\nli5dmn333TdJsmjRorzyla980PuedNJJWbhw4QPB8Otf/3p23333HHLIIbn99ttz2mmn5cMf/nDm\nzZuXb37zm3n5y1+eb3zjG3n4wx+eM888M0cffXQ+85nP5Lvf/W5OPfXUnHDCCV3+k3kwh88AAABT\n0i677JIvfelLmTZtWt761rfmsMMOy0tf+tL8+te/7uj1pZTsv//+mTZtWkZHR/OMZzwjCxcuTNJa\njfzZz36W448//kGve+5zn5srrrgiv//975O0AuRJJ52UJPnSl76U4447LvPmzUuSPPnJT87hhx+e\nq6++OsuWLcsPfvCDvPnNb84OO+yQJzzhCRucvxcEQwAAYMraf//9s2DBgixZsiRXX311li9fnrPP\nPruj186ZM+eP7s+fPz+LFi1KkixcuDAnnHBCdtpppwe9bt99980BBxyQK6+8MqtXr84VV1yR5z3v\neUlaW1a/+tWv5uCDD87BBx+cxz3ucVmyZEl+9atfZfny5dl1112z8847PzDX3D7tILKVFAAAaIQ/\n+ZM/ySmnnJJPfepTOfTQQ7N69eoHHlu+fPmDnr/+1tKnPOUp+c1vfpMf//jHWbRoUc4999yNvte6\n7aRr167NYx7zmDzqUY9K0gqbJ598ct73vvc96DXLli3LihUrsnr16gfC4djYWF8OvbFiCAAATEn/\n8R//kYsuuii33357klbwWrhwYY466qg87nGPy/XXX59ly5bld7/7XS688MLNzjdjxow8+9nPzrvf\n/e6sWLHigYNsNuSkk07KNddck0svvTTPfe5zHxh/3vOel6uuuirXXHNN1q5dm9///ve59tprc8cd\nd2Tu3Lk57LDD8v73vz/3339/brjhhlx55ZXb/gfRASuGAABA18yYMSf77ruwp/N3apdddsn3vve9\nfPSjH83KlSvz0Ic+NMcff3ze8Y535CEPeUhOPPHEHH/88Q8c+jI5hG1slW7+/Pk5+eSTc/rpp2fa\ntGkbff4ee+yRo446KjfccEMuuuiiB8bnzJmTiy++OO9+97vzqle9KjNmzMgRRxyR97znPUmSD3/4\nw3n961+fQw45JEcddVROOeWUrFixouPPvLVGJiYmev4mfTYx1oOj4+me0dHRrFy5ctBlsAl61LlZ\nS5b07FTSe44+eoOP6c/w06Phpj/DT4+G37oe6dVgbezPv/3dyC3af2orKQAAQMMJhgAAAA0nGAIA\nADScYAgAANBwgiEAAEDDCYYAAAANJxgCAAA0nGAIAADQcIIhAADANlqwYEFe85rXDLqMrTZj0AUA\nAABTx47LlmX62FjP5h+fMyf3zp3b0XOf8IQn5Ne//nV22GGHTJ8+PQcccEBOPvnkvPjFL87IyEjX\na+vFnP0iGAIAAF0zfWwsu82f37P571q4MOkwGI6MjOTSSy/Nsccem1WrVuXaa6/Nu971rnzve9/L\nggULelbj9shWUgAAYMqamJhIkuyyyy45/vjj8w//8A/5/Oc/n5tuuin33XdfzjvvvBxzzDF5/OMf\nn7POOiv33ntvkmTFihU57bTTcthhh+Xggw/OaaedljvuuOOBeW+99dY8//nPz4EHHpgXvehF+e1v\nfzuQz9ctgiEAANAYRxxxRPbaa69cf/31+fu///ssXbo0V111Vb797W/njjvuyAc+8IEkydq1a/OC\nF7wgS5YsyZIlS7Lzzjvnb//2bx+Y58wzz8zhhx+eH/7wh3nd616Xz3/+84P6SF0hGAIAAI0ye/bs\n3Hnnnbnssstyzjnn5KEPfWhmzZqVM888M4sWLUqSPOxhD8uznvWs7Ljjjpk1a1Ze/epX57rrrkuS\n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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x15de43190>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure = plt.figure(figsize=(15,8))\n",
"plt.hist([data[data['Survived']==1]['Age'],data[data['Survived']==0]['Age']], stacked=True, color = ['y','r'],\n",
" bins = 30,label = ['Survived','Dead'])\n",
"plt.xlabel('Age')\n",
"plt.ylabel('Number of passengers')\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x11c289ed0>"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA4oAAAH1CAYAAACwZgDFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+UnVV9L/73DCEIZrSIEkxQUUERFLRc8bqsGGvxtxBF\nP1WrQqnWXlHRaq1YK+i1irbitdcfX23VgrVXN/5ItNfeAsXQ6lWg/Wr9gYo/GsWExF80JhCFMHP/\nmBOcJxA4Q86ZM5m8Xmtl5Xn2ec4+n5m1Vybv2fvZz9jU1FQAAABgu/FRFwAAAMD8IigCAADQISgC\nAADQISgCAADQISgCAADQISgCAADQMadBsarWVtW/V9WXquqyXtv+VXVBVX2rqv6xqu484/ozqurb\nVfWNqnpsn5+xYkjlswAZL/TLWGE2jBf6ZawwG8YL/RrEWJnrGcXJJCtaaw9prR3ba3t1kotaa/dP\ncnGSM5Kkqo5IUkkekOQJSd5dVWN9fMaKgVfNQrZi1AWw21gx6gLYrawYdQHsNlaMugB2KytGXQC7\njRW72sFcB8WxW/jME5Oc2zs+N8nK3vEJST7SWtvWWlub5NtJjg0AAABDNddBcSrJhVV1eVU9v9e2\ntLW2MUlaaxuSHNhrX57kqhnvXddrAwAAYIgWzfHnPaK1dnVV3S3JBVX1rUyHx5l2PL9VvfW3K7af\nt9bOTHLmLtbJHqK1lhgv9MFYYTaMF/plrDAbxgv9aq2lqmY2rWmtrZlNH3MaFFtrV/f+/nFVrcr0\nUtKNVbW0tbaxqg5K8qPe5euS3GPG2w/ute3Y55oka2Y0nbl+/fohVM9CNDExkc2bN4+6DHYDxgqz\nYbzQL2OF2TBe6NeyZcvSWjtrV/qYs6WnVbVfVS3pHd8xyWOTfDXJp5Kc0rvs5CSre8efSvLMqlpc\nVfdOcmiSy+aqXgAAgD3VXN6juDTJ56rqS0m+mOTTrbULkrwlyfG9ZaiPSXJ2krTWrkjSklyR5DNJ\nXtRam8Wy1KmMjd04oD+TA/1GAAAAzGdjU1OzuiVwdzC1fv36TE5elfXrXzKQDu92t9Ozzz6PHkhf\nzC+WcNAvY4XZMF7ol7HCbBgv9GvZsmXJ9BMnbre53sxmDk3luusuH0hPN9zwo+yzz0C6AgAAmPcW\ncFAEAACGacmSJRkb26WJK3bB1NRUtmzZMpS+BUUAAOB2GRsbsxx2hCYmJobW91xuZgMAAMBuQFAE\nAACgQ1AEAACgQ1AEAACgQ1AEAADYRa9+9avzjne8Y+D9nnPOOXnJSwbzfPjZsOspAAAwMOuuW5f1\n164fWv/L7rgsy/db3vf1l112Wf7sz/4sV155Zfbaa68cdthhef3rX5+jjjpqoHWdffbZA+1vplE8\ngkRQBAAABmb9teuzctXKofW/auWqvoPili1bcsopp+Tss8/OU57ylFx//fW59NJLs3jx4ll/7tTU\n1B71zEhLTwEAgAXpe9/7XsbGxnLCCSdkbGws++yzT4477rgcfvjhN1vS+cMf/jAHH3xwJicnkyRP\nf/rT85a3vCUrV67MoYcemve85z154hOf2On/fe97X0499dQkyctf/vL8+Z//eZJkxYoV+ad/+qeb\nrrvxxhtz1FFH5Wtf+1qS5N/+7d9y4okn5ogjjshjH/vYfOELX7jp2quuuipPf/rTc/jhh+fZz352\nfvaznw3nm3MbBEUAAGBBus997pPx8fG87GUvy2c/+9ls2rSp8/qOM4Q7nn/iE5/IX/zFX+TKK6/M\nc5/73Hzve9/L2rVrb3p99erVeepTn3qzzz3xxBOzatWqm84/+9nP5oADDsgDH/jAXH311Tn55JPz\n8pe/PFdccUX+9E//NC94wQtuCoSnnXZajj766Hz1q1/N6aefnvPPP39Xvw23i6AIAAAsSEuWLMkn\nP/nJjI+P51WvelWOOuqonHrqqfnJT37S1/urKoceemjGx8czMTGRxz72sTcFwO9973v57ne/m+OP\nP/5m73vqU5+aCy64IL/4xS+STAfKE088MUnyyU9+Mo95zGOyYsWKJMkjH/nIHH300bn44ouzbt26\nfOUrX8krX/nK7L333nnYwx52i/3PBUERAABYsA499NCcc845ufzyy3PxxRdn48aNOfPMM/t677Jl\nyzrnK1euzOrVq5Mkq1atyuMe97jc4Q53uNn7DjnkkBx22GG58MILs3Xr1lxwwQV52tOelmR6ievf\n//3f58gjj8yRRx6ZI444Ipdffnl+9KMfZePGjbnzne+cfffd96a+li/vf+OeQbKZDQAAsEe4733v\nm2c84xn527/92zzoQQ/K1q1bb3pt48aNN7t+x6Woxx13XH7605/m61//elavXp3Xv/71O/2s7ctP\nJycnc7/73S/3vOc9k0yHz5NOOilvfetbb/aedevWZdOmTdm6detNYXH9+vUj2UTHjCIAALAgfec7\n38l73/veXH311Ummg9iqVatyzDHH5Igjjsill16adevW5ec//3ne9a533WZ/ixYtypOf/OS88Y1v\nzKZNm3Lcccft9NoTTzwxl1xySc4777zOfYxPe9rTctFFF+WSSy7J5ORkfvGLX+QLX/hCNmzYkOXL\nl+eoo47K2972ttxwww257LLLcuGFF+76N+J2MKMIAAAMzLI7Lsuqlatu+8Jd6L9fS5YsyZe+9KW8\n733vy+bNm3OnO90pxx9/fF772tfmjne8Y0444YQcf/zxuctd7pLTTjutE8p2Nou3cuXKnHTSSTnl\nlFMyPj6+0+sPPPDAHHPMMbnsssvy3ve+91f1L1uWD3zgA3njG9+YF73oRVm0aFEe/OAH581vfnOS\n5J3vfGde9rKX5YEPfGCOOeaYPOMZz7jZJjxzYWxqamrOP3TIptavX5/JyR/kO995+EA6XLbsnCxZ\n8tsD6Yv5ZWJiIps3bx51GewGjBVmw3ihX8YKszEfx8t8rGlPsrPvf+/eyl1ar2rpKQAAAB2CIgAA\nAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAwC4655xz8pKXvGTUZQzM\nolEXAAAALByTk+uybdv6ofW/aNGyjI8v7+vahz3sYfnJT36SvffeO3vttVcOO+ywnHTSSXnOc56T\nsbGxgdc2jD5HRVAEAAAGZtu29Vm7duXQ+j/kkFVZvLi/oDg2Npbzzjsvj3jEI7Jly5Z84QtfyOte\n97p86UtfyjnnnDO0GhcCS08BAIAFa2pqKkmyZMmSHH/88XnPe96T888/P1deeWWuv/76vOENb8ix\nxx6bhzzkITnjjDPyy1/+MkmyadOmnHzyyTnqqKNy5JFH5uSTT86GDRtu6veqq67K05/+9Bx++OF5\n9rOfnZ/97Gcj+fqGRVAEAAD2GA9+8INz97vfPZdeemne9KY3Ze3atbnooovy+c9/Phs2bMjb3/72\nJMnk5GSe+cxn5vLLL8/ll1+efffdN3/yJ39yUz+nnXZajj766Hz1q1/N6aefnvPPP39UX9JQCIoA\nAMAeZenSpbnmmmvy4Q9/OGeddVbudKc7Zb/99stpp52W1atXJ0n233//POEJT8g+++yT/fbbLy9+\n8YvzxS9+MUmybt26fOUrX8krX/nK7L333nnYwx6W448/fpRf0sC5RxEAANijbNiwITfeeGO2bt2a\nJzzhCTe1T05O3rRUdevWrTnzzDNzySWX5Oc//3mmpqZy7bXXZmpqKhs3bsyd73zn7Lvvvje9d/ny\n5bn66qvn/GsZFkERAADYY3z5y1/Oxo0b8/jHPz7vfve7c/HFF2fp0qU3u+69731v/uM//iOf+cxn\ncsABB+TrX/96Hv/4x2dqaipLly7Npk2bsnXr1pvC4vr16xfUrqeWngIAAAveli1bcuGFF+a0007L\nSSedlAc84AF51rOelTPPPDM//elPkyRXX311LrnkkiTJtddemzvc4Q5ZsmRJrrnmms4uqcuXL89R\nRx2Vt73tbbnhhhty2WWX5cILLxzJ1zUsZhQBAICBWbRoWQ45ZNVQ+5+NU045JYsWLcr4+HgOO+yw\nvPCFL8xzn/vcJMlrX/vanHPOOXnKU56Sa665JgcddFCe97zn5VGPelSe//zn57TTTsuDHvSgHHTQ\nQXnhC1+YCy644KZ+3/Wud+X000/PAx/4wBxzzDF5xjOekU2bNg30ax2lse1rcBeQqfXr12dy8gf5\nzncePpAOly07J0uW/PZA+mJ+mZiYyObNm0ddBrsBY4XZMF7ol7HCbMzH8TIfa9qT7Oz7v2zZsiTZ\npXWwlp4CAADQISgCAADQISgCAADQISgCAADQISgCAADQISgCAADQ4TmKAADA7TI1NZWJiYlRl7HH\nGuajDgVFAADgdtmyZcuoS2BILD0FAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AE\nAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACg\nQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AE\nAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACgQ1AEAACg\nY9Fcf2BVjSf51yQ/bK2dUFX7J/loknslWZukWmubeteekeTUJNuSnN5au2Cu6wUAANjTjGJG8fQk\nV8w4f3WSi1pr909ycZIzkqSqjkhSSR6Q5AlJ3l1VY3NcKwAAwB5nToNiVR2c5IlJ/npG84lJzu0d\nn5tkZe/4hCQfaa1ta62tTfLtJMfOUakAAAB7rLmeUXx7kj9KMjWjbWlrbWOStNY2JDmw1748yVUz\nrlvXawMAAGCI5iwoVtWTkmxsrX05ya0tIZ26ldcAAAAYsrnczOYRSU6oqicm2TfJRFV9KMmGqlra\nWttYVQcl+VHv+nVJ7jHj/Qf32jqqakWSFdvPW2uZmJjIddftPbDCx8fHs2TJkoyNuUVyoVm8eHEm\nJiZGXQa7AWOF2TBe6JexwmwYL8xGVZ0143RNa23NbN4/Z0GxtfaaJK9Jkqp6VJJXtNaeW1VvTXJK\nkrckOTnJ6t5bPpXkw1X19kwvOT00yWW30O+aJGtmNJ25efPmTE7eMLDaJycns2XLloH1x/wxMTGR\nzZs3j7oMdgPGCrNhvNAvY4XZMF7o18TERFprZ+1KH/PhOYpnJzm+qr6V5DG987TWrkjSMr1D6meS\nvKi1ZlkqAADAkI1NTS247DW1fv36TE7+IN/5zsMH0uGyZedkyZLfHkhfzC9+M0e/jBVmw3ihX8YK\ns2G80K9ly5Ylt74vzG2aDzOKAAAAzCOCIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAA\nAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2C\nIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAA\nAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2C\nIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAA\nAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2C\nIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB23KyhW\n1b5Vtc+giwEAAGD0+gqKVfUXVXVs7/hJSX6W5JqqesowiwMAAGDu9Tuj+DtJvtY7fl2S5yQ5Icmb\nhlEUAAAAo7Ooz+v2a61dV1UHJLlPa+3jSVJV9xpeaQAAAIxCv0Hxyqr6nSSHJrkwSarqrkm2Dqsw\nAAAARqPfoPiiJO9Icn2S3+u1PS7JBcMoCgAAgNG5zaBYVXsleVCS32yt/WJ7e2vtw0k+PMTaAAAA\n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\nKwIAAGCk+r1HcVuSqR3a1iV5wWDLAQAAYNT6DYr33uH82tbaTwZdDAAAAKPX72Y23x92IQAAAMwP\ntxoUq+qbWeyvAAAPUElEQVSzufmS05mmWmuPGWxJAAAAjNJtzSj+7U7alyd5aaY3tQEAAGABudWg\n2Fp7/8zzqjogyRmZ3sTmo0neMLzSAAAAGIV+H49xpyR/lOTFSf4+ya+31r47zMIAAAAYjdu6R3Hf\nJC9L8ooka5L8Rmvt63NQFwAAACNyWzOKa5OMJ3lrkn9NsrSqls68oLV28XBKAwAAYBRuKyhuzfSu\np/9tJ69PJbnPQCsCAABgpG5rM5tD5qgOAAAA5onxURcAAADA/CIoAgAA0CEoAgAA0CEoAgAA0CEo\nAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA\n0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEo\nAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA0CEoAgAA\n0CEoAgAA0LFo1AUMz3judKcTB9LTPvscMpB+AAAAdgcLNihu+MV43vqtxQPp69lHjOXYuw2kKwAA\ngHlvwQbFbVPbcv6V5w+kr4cvf3iOvduxA+kLAABgvnOPIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2C\nIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAA\nAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2CIgAAAB2L5uqDqur9\nSZ6cZGNr7ahe2/5JPprkXknWJqnW2qbea2ckOTXJtiSnt9YumKtaAQAA9mRzOaP4wSSP26Ht1Uku\naq3dP8nFSc5Ikqo6IkkleUCSJyR5d1WNzWGtAAAAe6w5C4qttc8luWaH5hOTnNs7PjfJyt7xCUk+\n0lrb1lpbm+TbSY6dizoBAAD2dKO+R/HA1trGJGmtbUhyYK99eZKrZly3rtcGAADAkI06KO5oatQF\nAAAA7OnmbDObndhYVUtbaxur6qAkP+q1r0tyjxnXHdxru5mqWpFkxfbz1lomJiay9/V7D6zI8bHx\nLFmyJGNj3dskN23aa2CfsWjRXpmYmBhYf/Rn8eLFvu/0xVhhNowX+mWsMBvGC7NRVWfNOF3TWlsz\nm/fPdVAc6/3Z7lNJTknyliQnJ1k9o/3DVfX2TC85PTTJZbfUYe8LXjOj6czNmzfnhhtuGFjRk1OT\n2bJly83at227cWCfsW3bjdm8efPA+qM/ExMTvu/0xVhhNowX+mWsMBvGC/2amJhIa+2sXeljLh+P\n8XeZnvk7oKp+kOTMJGcnOb+qTk3y/UzvdJrW2hVV1ZJckeSGJC9qrVmWCgAAMAfmLCi21p69k5d+\nayfXvznJm4dXEQAAALdkvm1mAwAAwIgJigAAAHQIigAAAHQIigAAAHQIigAAAHQIigAAAHQIigAA\nAHTM2XMUF6Lrc+ccsPy8gfW1eCA9AQAA7BpBcRd8Y9OmrFz1vIH0tWrlqjz0bgPpCgAAYJdYegoA\nAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECH\noAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgA\nAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECHoAgAAECH\noAgAAECHoAgAAECHoAgAAECHoAgAAEDHolEXwMI0Obku27atH0hfixYty/j48oH0BQAA3DZBkaHY\ntm191q5dOZC+DjlkVRYvFhQBAGCuWHoKAABAhxnFeWrYSzctDQUAAHZGUJynhr1009JQAABgZyw9\nBQAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAA\noGPRqAtgNK7PnXPA8vMG1tfigfQEAADMB4LiHuobmzZl5arnDaSvVStX5aF3G0hXAADAPGDpKQAA\nAB2CIgAAAB2WnjIU7oEEAIDdl6DIULgHEgAAdl+WngIAANAhKAIAANAhKAIAANAhKAIAANAhKAIA\nANAhKAIAANAhKAIAANAhKAIAANAhKAIAANCxaNQFcMuuz51zwPLzBtbX4oH0BAAA7AkExXnqG5s2\nZeWq5w2kr1UrV+WhdxtIV/PG5OS6bNu2fpf72bRpryRLMz6+fNeLAgCABUJQZLd03bZr88sbfr7L\n/YxtG8viRUuyxJQrAADcRFBktzTsGddBzVgmyaJFyzozloPs+5b6BwCAXSUowi3Ytm191q5dOZC+\nDjlkVRYv/lWQG9Rs6Hb75M5mRAEAGChBEebYIGdDk5vPiA5zNhQAgD2DoAgLzDBnQwEA2DMIinAL\ndufHk+zOtbOwme0GgN2HoAi3YHd+PMnuXPtCIAztnNluANh9zPugWFWPT/I/kowneX9r7S0jLglg\np4YZhnb3EGq2GwB2H/M6KFbVeJJ3JnlMkvVJLq+q1a21b462MoBbNswwNMgdc0exW67ZboDZ+dn1\nP8u2bLvp/Mc/+3GmpqZuV1+Lsih3WXyXQZXGHmBeB8Ukxyb5dmvt+0lSVR9JcmISQRFGZMcfWrti\nIf7QGmYY2p2fHwrA7H1303ezctVgVqmsWrkqd7nbwvqZy3DN96C4PMlVM85/mOnweJv22Wuf/Pff\n+O8DKeKYpccMpB9YCPzQWrh29xlLAGBwxm7v9PVcqKqTkjyutfb7vfPnJDm2tfbSGdesSLJi+3lr\n7cw5LhMAAGBeqarXzzhd01pbM5v3z/cZxXVJ7jnj/OBe2016X/Ca7edVldbaWXNQGwtAVZ1lvNAP\nY4XZMF7ol7HCbBgv9GsQY2W+B8XLkxxaVfdKcnWSZyZ51mhLAgAAWNjGR13ArWmt3ZjkxUkuSPL1\nJB9prX1jtFUBAAAsbPN9RjGttf+T5P6zeMuaIZXCwrRm1AWw21gz6gLYrawZdQHsNtaMugB2K2tG\nXQC7jTW72sG83swGAACAuTevl54CAAAw9wRFAAAAOgRFAAAAOub9ZjazUVWPT/I/Mh2A399ae8uI\nS2KEqur9SZ6cZGNr7ahe2/5JPprkXknWJqnW2qbea2ckOTXJtiSnt9YuGEXdjEZVHZzkvCRLk0wm\n+avW2l8aM+yoqvZJ8s9JFmf65+jHWmuvN1bYmaoaT/KvSX7YWjvBWGFnqmptkk2Z/jl0Q2vtWOOF\nnamqOyf56yQPzPSYOTXJlRnQeFkwM4q9f4TfmeRxSY5M8qyqOny0VTFiH8z0eJjp1Ukuaq3dP8nF\nSc5Ikqo6IkkleUCSJyR5d1WNzWGtjN62JH/YWjsyycOTnNb7N8SYoaO19sskj26tPSTJg5M8oaqO\njbHCzp2e5IoZ58YKOzOZZEVr7SGttWN7bcYLO/OOJJ9prT0gydFJvpkBjpcFExSTHJvk262177fW\nbkjykSQnjrgmRqi19rkk1+zQfGKSc3vH5yZZ2Ts+IdPP6dzWWlub5NuZHlPsIVprG1prX+4db0ny\njSQHx5jhFrTWrusd7pPpWcWpGCvcgt5qhSdm+rf+2xkr7MxYbv7/c+OFm6mqOyV5ZGvtg0nSGweb\nMsDxspCC4vIkV804/2GvDWY6sLW2MZkOBkkO7LXvOH7WxfjZY1XVIZmeKfpikqXGDDuqqvGq+lKS\nDUkubK1dHmOFW/b2JH+U6V8mbGessDNTSS6sqsur6vm9NuOFW3LvJD+pqg9W1f9fVe+rqv0ywPGy\nkIIi3B4eJEpHVS1J8rFMr93fkpuPEWOGtNYme0tPD05ybFUdGWOFHVTVkzJ9n/yXMz1TtDPGCts9\norX265mehT6tqh4Z/7ZwyxYl+fUk7+qNmWszvex0YONlIQXFdUnuOeP84F4bzLSxqpYmSVUdlORH\nvfZ1Se4x4zrjZw9UVYsyHRI/1Fpb3Ws2Ztip1trPk6xJ8vgYK9zcI5KcUFXfS/K/kvxmVX0oyQZj\nhVvSWru69/ePk6zK9NJA/7ZwS36Y5KrW2r/2zj+e6eA4sPGykILi5UkOrap7VdXiJM9M8qkR18To\njaX7W9xPJTmld3xyktUz2p9ZVYur6t5JDk1y2VwVybzxgSRXtNbeMaPNmKGjqu7a22kuVbVvkuMz\nfU+rsUJHa+01rbV7ttbuk+n/l1zcWntukk/HWGEHVbVfb1VLquqOSR6b5Kvxbwu3oLe89Kqqul+v\n6TFJvp4BjpexqamFM3vdezzGO/Krx2OcPeKSGKGq+rskK5IckGRjkjMz/du58zP9G5XvZ3rL4P/s\nXX9Gkt9LckNsMb3HqapHZPqRB1/N9DKNqSSvyfQ/oi3GDD1V9aBMbxAw3vvz0dban1XVXWKssBNV\n9agkr+g9HsNY4WZ6/3n/ZKZ//ixK8uHW2tnGCztTVUdneqOsvZN8L8nvJtkrAxovCyooAgAAsOsW\n0tJTAAAABkBQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoENQBAAAoGPRqAsAgPmuqtYmOTDJ\ntiRjmX4g9v1aaxtGWRcADIugCAC3bSrJk1prn729HVTVeGttcoA1AcDQCIoA0J+xmSdVNZakJfmN\nJPsk+XKSF7XWvtl7/UNJNiW5b++aJ1XVpUnenOTpSfZO8vEkf9hau36uvggA6Id7FAHg9vt0poPg\nQUm+luRDO7z+rCRnttYmknwxyV8kuVeSByY5LMkhSf5krooFgH6ZUQSA/qyqqm294zWttaclOW/7\ni1X1hiQ/qqp9W2tbe82fbK1d1ju+IcnzM31v48977zk7yQeSnDknXwEA9ElQBID+nDjzHsWqGk9y\ndpKTkhyQ6fsYp5LcNclVvcuumvH+gzK9RPXfq2p723gS9y0CMO8IigDQn7Edzp+X5PFJVrTWrqqq\nA5L8eIfrpmYcb0zyyyT3b639eKiVAsAuco8iANw+E5kOftdU1R2TvCndYNjR2/H0r5O8o6rumiRV\ndXBVHT8XxQLAbAiKAHDbbikAfjDJ1UnWJ/lqks/18Z5XJPl+ksuq6j+T/J8khw6wTgAYiLGpqZ3+\n8hMAAIA9kBlFAAAAOgRFAAAAOgRFAAAAOgRFAAAAOgRFAAAAOgRFAAAAOgRFAAAAOgRFAAAAOv4f\nN/I5nGCh4gQAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11c3e4750>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figure = plt.figure(figsize=(15,8))\n",
"plt.hist([data[data['Survived']==1]['Fare'],data[data['Survived']==0]['Fare']], stacked=True, color = ['g','y'],\n",
" bins = 30,label = ['Survived','Dead'])\n",
"plt.xlabel('Fare')\n",
"plt.ylabel('Number of passengers')\n",
"plt.legend()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x11bbdda50>"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3oAAAHyCAYAAAC9L7zkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xu0pXdd3/HP5AxjTdjqUMikAxKV1nCRgihUS9WxEFBr\nSerSr2IXJmJrXVKhN5uE0maQXjK6vBZE64U19YL5CmqwyyrGcETaCmIRL1y02iAQMgmGhkF0wpyc\n/nH2LI7jSbLPydl7z/nN67VW1pzn2Xuf/c3K2s/w5vfs59m3vr4eAAAAxnHBsgcAAABgdwk9AACA\nwQg9AACAwQg9AACAwQg9AACAwQg9AACAwexf5JtV1YuS/KPp5g919/dV1cEkNya5NMmtSaq7717k\nXAAAACNZ2IpeVT0hyTck+dwkT07y5VX1mCTXJrm5uy9LckuS6xY1E+eHqjqy7BmA8Ti2APPg2MJu\nWeSpm49L8ubuPtXda0nemOQrkjwnyfHpc44nuXKBM3F+OLLsAYAhHVn2AMCQjix7AMawyND73SRf\nUFUHq+rCJF+W5FOTHOruE0nS3bcnuXiBMwEAAAxnYaHX3e9KcizJLyf5hSRvS7K2xVPXFzUTAADA\niPatry+nq6rqPyR5b5IXJTnS3Seq6pIkb+jux23x/CPZtJTd3dcvaFQAAIBzUlW9dNPmanevJgsO\nvap6RHffWVWPTvKLST4vyb9Jcld3H6uqa5Ic7O5rZ/h167fddts8x2UQk8kkJ0+eXPYYwGAcW4B5\ncGxhOw4fPpwk+7Z6bNH30XttVf1ukpuSfHN3fzgbp3NeXlXvTvKMJDcseCYAAIChLO3UzV1gRY+Z\n+H/GgHlwbAHmwbGF7TiXVvQAAACYM6EHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAw\nGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEH\nAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwGKEHAAAwmP3LHoDd\ntfKhDyZ33bnsMc4pp1b2Z2Xt9LLHOPc87BFZO/jwZU8BAMAcCL3R3HVn7rnhmmVPwR5w4NpjidAD\nABiSUzcBAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAG\nI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGI/QAAAAGs3+Rb1ZV/zzJNyS5N8nvJPn6JBcluTHJpUlu\nTVLdffci5wIAABjJwlb0qupwkm9J8pTu/pvZiMznJrk2yc3dfVmSW5Jct6iZAAAARrToUzdXklxU\nVfuTfGKS9ye5Isnx6ePHk1y54JkAAACGsrDQ6+7bknxnkj/ORuDd3d03JznU3Semz7k9ycWLmgkA\nAGBEizx181OysXp3aZLD2VjZ+4dJ1s966tnbAAAAbMMiL8byzCR/1N13JUlV/WySv53kRFUd6u4T\nVXVJkju2enFVHUly5Mx2d2cymcx96L3m1MpCr6/DHraysj8X+gzBjh04cMDfQ8Cuc2xhu6rq6KbN\n1e5eTRYben+c5POq6q8kOZXkGUl+I8lHklyd5FiSq5LctNWLpwOvbtp1/cmTJ+c37R61snZ62SOw\nR6ytnY7PEOzcZDLxGQJ2nWML2zGZTNLdR7d6bJHf0XtLktckeVuStyfZl+S/ZCPwLq+qd2cj/m5Y\n1EwAAAAjWuh5ft390iQvPWv3Xdk4rRMAAIBdsOjbKwAAADBnQg8AAGAwQg8AAGAwQg8AAGAwQg8A\nAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAw\nQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8A\nAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAw\nQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAwQg8AAGAw+xf1RlX1mUluTLKeZF+S\nz0jyb5P82HT/pUluTVLdffei5gIAABjNwlb0uvv3u/uzu/spST4nyZ8m+dkk1ya5ubsvS3JLkusW\nNRMAAMCIlnXq5jOT/GF3vzfJFUmOT/cfT3LlkmYCAAAYwrJC76uT/OT050PdfSJJuvv2JBcvaSYA\nAIAhLDz0quohSZ6T5Kenu9bPesrZ2wAAAGzDwi7GssmXJvnN7v7gdPtEVR3q7hNVdUmSO7Z6UVUd\nSXLkzHZ3ZzKZzHvWPefUyjL+k7IXrazsz4U+Q7BjBw4c8PcQsOscW9iuqjq6aXO1u1eT5YTec5O8\netP265JcneRYkquS3LTVi6YDr27adf3JkyfnMuBetrJ2etkjsEesrZ2OzxDs3GQy8RkCdp1jC9sx\nmUzS3Ue3emyhp25W1YXZuBDLz2zafSzJ5VX17iTPSHLDImcCAAAYzUJX9Lr7o0kecda+u7IRfwAA\nAOyCZV11EwAAgDkRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAA\nAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMR\negAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAA\nAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMRegAAAIMR\negAAAIMRegAAAIMRegAAAIMRegAAAIPZv8g3q6pPTvLDST4ryb1Jnp/k95PcmOTSJLcmqe6+e5Fz\nAQAAjGTRK3rfm+QXuvtxSZ6U5F1Jrk1yc3dfluSWJNcteCYAAIChLCz0quqTknxBd78qSbr79HTl\n7ookx6dPO57kykXNBAAAMKJFnrr56Uk+WFWvysZq3luT/LMkh7r7RJJ09+1VdfECZwIAABjOIk/d\n3J/kKUle0d1PSfKn2Thtc/2s5529DQAAwDYsckXvfUne291vnW6/Nhuhd6KqDnX3iaq6JMkdW724\nqo4kOXJmu7szmUzmO/EedGplodfXYQ9bWdmfC32GYMcOHDjg7yFg1zm2sF1VdXTT5mp3ryYLDL1p\nyL23qj6zu38/yTOS/N70n6uTHEtyVZKb7uP1q0lWN+26/uTJk/MceU9aWTu97BHYI9bWTsdnCHZu\nMpn4DAG7zrGF7ZhMJunuo1s9tujlnxcm+YmqekiSP0ry9UlWknRVPT/Je5LUgmcCAAAYykJDr7vf\nnuSpWzz0zEXOAQAAMLJF30cPAACAORN6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAA\ngxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6\nAAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAAgxF6AAAA\n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\nAAAABiP0AAAABiP0AAAABiP0AAAABrN/UW9UVZ+Q5I1JDkzf9zXd/dKqOpjkxiSXJrk1SXX33Yua\nCwAAYDQLW9Hr7lNJvri7PzvJk5N8aVU9Lcm1SW7u7suS3JLkukXNBAAAMKKFnrrZ3R+d/vgJ2VjV\nW09yRZLj0/3Hk1y5yJkAAABGs9DQq6oLquptSW5P8svd/RtJDnX3iSTp7tuTXLzImQAAAEaz6BW9\ne6enbj4qydOq6gnZWNXb7OxtAAAAtmFhF2PZrLs/XFWrSb4kyYmqOtTdJ6rqkiR3bPWaqjqS5Mim\n35HJZLKAafeWUytL+U/KHrSysj8X+gzBjh04cMDfQ8Cuc2xhu6rq6KbN1e5eTRZ71c2HJ/lYd99d\nVZ+Y5PIkNyR5XZKrkxxLclWSm7Z6/XTg1U27rj958uQcJ96bVtZOL3sE9oi1tdPxGYKdm0wmPkPA\nrnNsYTsmk0m6++hWjy3y1M2/luQNVfVbSd6c5Je6+xeyEXiXV9W7kzwjG/EHAADADi1sRa+7fyfJ\nU7bYf1eSZy5qDgAAgNEt9GIsAAAAzJ/QAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAA\nGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQ\nAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAA\nGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQ\nAwAAGIzQAwAAGIzQAwAAGIzQAwAAGIzQAwAAGMz+Rb1RVT0qyX9NcijJvUl+qLu/r6oOJrkxyaVJ\nbk1S3X33ouYCAAAYzSJX9E4n+Rfd/YQkn5/kBVX12CTXJrm5uy9LckuS6xY4EwAAwHAWtqLX3bcn\nuX3680eq6p1JHpXkiiRfNH3a8SSr2Yg/AM4RKx/6YHLXncse45xyamV/VtZOL3uMc8/DHpG1gw9f\n9hQA572Fhd5mVfVpSZ6c5NeTHOruE8lGDFbVxcuYCYD7cdedueeGa5Y9BXvAgWuPJUIPYOkWfjGW\nqnpoktckeVF3fyTJ+llPOXsbAACAbVjoil5V7c9G5P1Yd9803X2iqg5194mquiTJHffx2iNJjpzZ\n7u5MJpM5T7z3nFpZyiIte9DKyv5c6DPEjBxbmJVjCzw4Bw4c8L9x2ZaqOrppc7W7V5PFn7r5o0ne\n0d3fu2nf65JcneRYkquS3LTF6zIdeHXTrutPnjw5lyH3Mt8XYVZra6fjM8SsHFuYlWMLPDiTycRn\niJlNJpN099GtHlvk7RWenuQfJvmdqnpbNk7RfHE2Aq+r6vlJ3pOkFjUTAADAiBZ51c3/kWTlPh5+\n5qLmAAAAGN3CL8YCAADAfAk9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACA\nwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9\nAACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACAwQg9AACA\nwQg9AACAwexf9gAAAJyfVj70weSuO5c9xjnl1Mr+rKydXvYY556HPSJrBx++7Cn2FKEHAMBy3HVn\n7rnhmmVPwR5w4NpjidDbFqduAgAADEboAQAADEboAQAADEboAQAADEboAQAADEboAQAADEboAQAA\nDEboAQAADEboAQAADEboAQAADEboAQAADGb/ot6oqn4kyZcnOdHdf3O672CSG5NcmuTWJNXddy9q\nJgAAgBEtckXvVUmefda+a5Pc3N2XJbklyXULnAcAAGBICwu97n5Tkg+dtfuKJMenPx9PcuWi5gEA\nABjVsr+jd3F3n0iS7r49ycVLngcAAGDPW3bonW192QMAAADsdQu7GMt9OFFVh7r7RFVdkuSO+3pi\nVR1JcuTMdndnMpnMf8I95tTKsv+TslesrOzPhT5DzMixhVk5trAdji3MyrHlvlXV0U2bq929miw+\n9PZN/znjdUmuTnIsyVVJbrqvF04HXt206/qTJ0/u+oB73cra6WWPwB6xtnY6PkPMyrGFWTm2sB2O\nLczKsWVrk8kk3X10q8cWeXuFn8zGitxfrao/TnJ9khuS/HRVPT/Je5LUouYBAAAY1cJCr7u/9j4e\neuaiZgAAADgfnGsXYwEAAOBBEnoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoA\nAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACD\nEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoA\nAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACD\nEXoAAACDEXoAAACDEXoAAACDEXoAAACDEXoAAACD2b/sAZKkqr4kyfdkIzx/pLuPLXkkAACAPWvp\nK3pVdUGSlyd5dpInJHluVT12uVMBAADsXUsPvSRPS/IH3f2e7v5Ykp9KcsWSZwIAANizzoXQe2SS\n927aft90HwAAADtwTnxHbxZVdSTJkTPb3Z3Dhw8vbZ5z1uHDyRe8ddlTAKNxbAHmwbEFHrSqOrpp\nc7W7V5NzI/Ten+TRm7YfNd33F0wHXt206+g8h2IcVXW0u48uew5gLI4twDw4trBd3b3l/nMh9H4j\nyV+vqkuTfCDJ1yR57nJHAgAA2LuW/h297l5L8k+TvD7J7yX5qe5+53KnAgAA2LvOhRW9dPcvJrls\n2XMwrNVlDwAMaXXZAwBDWl32AIxh3/r6+rJnAAAAYBct/dRNAAAAdpfQAwAAGIzQAwAAGIzQAwAA\nGMw5cdVNADjXVdVjkzwyyZu7+yOb9n/J9OrRANtWVU9Lst7dv1FVj0/yJUne1d2/sOTR2OOs6HFe\nqaqvX/YMwN5TVS9MclOSb0nyu1V1xaaH/+NypgL2uqq6Psn3JXllVf2nJC9PclGSa6vq3yx1OPY8\nocf55qXLHgDYk/5xks/p7iuTHEnyb6vqRdPH9i1tKmCv+8okT0/yhUlekOTK7n5Zkmcn+eplDsbe\n59RNhlNVv30fD+1LcmiRswDDuODM6ZrdfWtVHUnymqq6NEIP2LnT3b2W5KNV9Yfd/eEk6e4/q6p7\nlzwbe5wVPUZ0KMnXJfn7W/zzJ0ucC9i7TlTVk89sTKPvy5M8PMkTlzYVsNfdU1UXTn/+nDM7q+qT\nkwg9HhQreozovyV5aHf/1tkPVNXq4scBBvB1SU5v3tHdp5N8XVX94HJGAgbwhd19Kkm6e3PYPSTJ\nVcsZiVHsW19fX/YMAAAA7CKnbgIAAAxG6AEAAAxG6AEAAAxG6AHAA6iqL6qq9y57DgCYlatuAnDe\nqapbk1ycjStp/mmSX0zygu7+6P28zNXLANgzrOgBcD5aT/L3uvuTkjwlyecmeclyRwKA3WNFD4Dz\n1b4k6e4PVNV/T/JZVXUwyXcleVaSv5LkV7v7K85+YVVdk+QfZ2NV8I+TvKS7f2762GOS/EiSJye5\nJ8mvdPesxbaWAAACKUlEQVRzp499d5Kvnf7uW5M8t7vfMc9/SQDOT1b0ADivVdWnJvmyJG9L8mPZ\niLDHZSPivvs+XvZ/kjx9uiL40iQ/XlWHpo+9LMkvdfenJHlUkv88fZ9nJfk7Sf56d39ykkryJ3P5\nlwLgvGdFD4Dz1c9V1ekkdyf5b0lemeT9SQ5294enz/m1rV7Y3a/d9PNPV9WLkzwtyc8n+ViSS6vq\nkd39/iT/c/rUjyWZJHl8Vb2lu989j38pAEiEHgDnryu6+w1nNqrqqUn+ZFPk3aeq+rok/zzJp013\nXZTk4dOfvzXJv0/ylqq6K8l3dferuvsNVfXyJK9I8uiq+pkk/6q7P7Jr/0YAMOXUTQDOV/vO2n5v\nkodV1Sfd34uq6tFJ/kuSb+7ug919MMnv5ePf+buju7+xux+Z5JuSfH9Vfcb0sZd39+cmeXySy7IR\nhQCw66zoAUCS7r59elGW76+qf5rkI0k+v7vPPn3zoiT3JvlgVV2Q5Kokn3Xmwar6yiT/a3ra5v+b\nPvfeqvrcbPwfrP87yZ8l+fPpYwCw66zoAXA+uq974j0vG/fWe1eSE0ledPYTuvudSb4zya8nuT3J\nE5K8adNTnprkzVX14SQ/l+SF3X1rkk9K8kNJ7kryf5N8MMl37MK/CwD8JfvW193/FQAAYCRW9AAA\nAAYj9AAAAAYj9AAAAAYj9AAAAAYj9AAAAAYj9AAAAAYj9AAAAAYj9AAAAAYj9AAAAAbz/wFwGh13\nuqUL4wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11bc79490>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"ax = plt.subplot()\n",
"ax.set_ylabel('Average fare')\n",
"data.groupby('Pclass').mean()['Fare'].plot(kind='bar',figsize=(15,8), ax = ax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 4. Data Preprocessing "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def get_combined_data():\n",
" # reading train data\n",
" train = pd.read_csv('../data/titanictrain.csv')\n",
" \n",
" # reading test data\n",
" test = pd.read_csv('../data/titanictest.csv')\n",
"\n",
" # extracting and then removing the targets from the training data \n",
" targets = train.Survived\n",
" train.drop('Survived',1,inplace=True)\n",
" \n",
"\n",
" # merging train data and test data for future feature engineering\n",
" combined = train.append(test)\n",
" combined.reset_index(inplace=True)\n",
" combined.drop('index',inplace=True,axis=1)\n",
" \n",
" return combined"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"combined = get_combined_data()\n"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1309, 11)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"combined.shape"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>Braund, Mr. Owen Harris</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>Mr</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>PC 17599</td>\n",
" <td>71.2833</td>\n",
" <td>C85</td>\n",
" <td>C</td>\n",
" <td>Mrs</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>Heikkinen, Miss. Laina</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O2. 3101282</td>\n",
" <td>7.9250</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>Miss</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>S</td>\n",
" <td>Mrs</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>Allen, Mr. William Henry</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>Mr</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Name \\\n",
"0 1 3 Braund, Mr. Owen Harris \n",
"1 2 1 Cumings, Mrs. John Bradley (Florence Briggs Th... \n",
"2 3 3 Heikkinen, Miss. Laina \n",
"3 4 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) \n",
"4 5 3 Allen, Mr. William Henry \n",
"\n",
" Sex Age SibSp Parch Ticket Fare Cabin Embarked Title \n",
"0 male 22.0 1 0 A/5 21171 7.2500 NaN S Mr \n",
"1 female 38.0 1 0 PC 17599 71.2833 C85 C Mrs \n",
"2 female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S Miss \n",
"3 female 35.0 1 0 113803 53.1000 C123 S Mrs \n",
"4 male 35.0 0 0 373450 8.0500 NaN S Mr "
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"## Handle Categorical Data\n",
"def get_titles():\n",
"\n",
" global combined\n",
" \n",
" # Extract the title from each name\n",
" combined['Title'] = combined['Name'].map(lambda name:name.split(',')[1].split('.')[0].strip())\n",
" \n",
" # Map of more aggregated titles\n",
" Title_Dictionary = {\n",
" \"Capt\": \"Officer\",\n",
" \"Col\": \"Officer\",\n",
" \"Major\": \"Officer\",\n",
" \"Jonkheer\": \"Royalty\",\n",
" \"Don\": \"Royalty\",\n",
" \"Sir\" : \"Royalty\",\n",
" \"Dr\": \"Officer\",\n",
" \"Rev\": \"Officer\",\n",
" \"the Countess\":\"Royalty\",\n",
" \"Dona\": \"Royalty\",\n",
" \"Mme\": \"Mrs\",\n",
" \"Mlle\": \"Miss\",\n",
" \"Ms\": \"Mrs\",\n",
" \"Mr\" : \"Mr\",\n",
" \"Mrs\" : \"Mrs\",\n",
" \"Miss\" : \"Miss\",\n",
" \"Master\" : \"Master\",\n",
" \"Lady\" : \"Royalty\"\n",
"\n",
" }\n",
" \n",
" # Map each title\n",
" combined['Title'] = combined.Title.map(Title_Dictionary)\n",
"# Run \n",
"get_titles()\n",
"\n",
"# View\n",
"combined.head()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Age</th>\n",
" <th>SibSp</th>\n",
" <th>Parch</th>\n",
" <th>Fare</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Sex</th>\n",
" <th>Pclass</th>\n",
" <th>Title</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">female</th>\n",
" <th rowspan=\"4\" valign=\"top\">1</th>\n",
" <th>Miss</th>\n",
" <td>529.5</td>\n",
" <td>30.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>99.9625</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>853.5</td>\n",
" <td>45.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>78.1125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Officer</th>\n",
" <td>797.0</td>\n",
" <td>49.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>25.9292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Royalty</th>\n",
" <td>760.0</td>\n",
" <td>39.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>86.5000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">2</th>\n",
" <th>Miss</th>\n",
" <td>606.5</td>\n",
" <td>20.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>20.2500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>533.0</td>\n",
" <td>30.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>26.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">3</th>\n",
" <th>Miss</th>\n",
" <td>603.5</td>\n",
" <td>18.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>8.0500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mrs</th>\n",
" <td>668.5</td>\n",
" <td>31.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>15.5000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"9\" valign=\"top\">male</th>\n",
" <th rowspan=\"4\" valign=\"top\">1</th>\n",
" <th>Master</th>\n",
" <td>803.0</td>\n",
" <td>6.0</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>134.5000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>634.0</td>\n",
" <td>41.5</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>47.1000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Officer</th>\n",
" <td>678.0</td>\n",
" <td>52.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>37.5500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Royalty</th>\n",
" <td>600.0</td>\n",
" <td>40.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>27.7208</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"3\" valign=\"top\">2</th>\n",
" <th>Master</th>\n",
" <td>550.0</td>\n",
" <td>2.0</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>26.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>723.5</td>\n",
" <td>30.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>13.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Officer</th>\n",
" <td>513.0</td>\n",
" <td>41.5</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>13.0000</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">3</th>\n",
" <th>Master</th>\n",
" <td>789.0</td>\n",
" <td>6.0</td>\n",
" <td>3.0</td>\n",
" <td>1.0</td>\n",
" <td>22.3583</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mr</th>\n",
" <td>640.5</td>\n",
" <td>26.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>7.8958</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Age SibSp Parch Fare\n",
"Sex Pclass Title \n",
"female 1 Miss 529.5 30.0 0.0 0.0 99.9625\n",
" Mrs 853.5 45.0 1.0 0.0 78.1125\n",
" Officer 797.0 49.0 0.0 0.0 25.9292\n",
" Royalty 760.0 39.0 0.0 0.0 86.5000\n",
" 2 Miss 606.5 20.0 0.0 0.0 20.2500\n",
" Mrs 533.0 30.0 1.0 0.0 26.0000\n",
" 3 Miss 603.5 18.0 0.0 0.0 8.0500\n",
" Mrs 668.5 31.0 1.0 1.0 15.5000\n",
"male 1 Master 803.0 6.0 1.0 2.0 134.5000\n",
" Mr 634.0 41.5 0.0 0.0 47.1000\n",
" Officer 678.0 52.0 0.0 0.0 37.5500\n",
" Royalty 600.0 40.0 0.0 0.0 27.7208\n",
" 2 Master 550.0 2.0 1.0 1.0 26.0000\n",
" Mr 723.5 30.0 0.0 0.0 13.0000\n",
" Officer 513.0 41.5 0.0 0.0 13.0000\n",
" 3 Master 789.0 6.0 3.0 1.0 22.3583\n",
" Mr 640.5 26.0 0.0 0.0 7.8958"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Age grouping \n",
"\n",
"grouped = combined.groupby(['Sex','Pclass','Title'])\n",
"grouped.median()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1309 entries, 0 to 1308\n",
"Data columns (total 12 columns):\n",
"PassengerId 1309 non-null int64\n",
"Pclass 1309 non-null int64\n",
"Name 1309 non-null object\n",
"Sex 1309 non-null object\n",
"Age 1309 non-null float64\n",
"SibSp 1309 non-null int64\n",
"Parch 1309 non-null int64\n",
"Ticket 1309 non-null object\n",
"Fare 1308 non-null float64\n",
"Cabin 295 non-null object\n",
"Embarked 1307 non-null object\n",
"Title 1309 non-null object\n",
"dtypes: float64(2), int64(4), object(6)\n",
"memory usage: 122.8+ KB\n"
]
}
],
"source": [
"def process_age():\n",
" \n",
" global combined\n",
" \n",
" # a function that fills the missing values of the Age variable\n",
" \n",
" def fillAges(row):\n",
" if row['Sex']=='female' and row['Pclass'] == 1:\n",
" if row['Title'] == 'Miss':\n",
" return 30\n",
" elif row['Title'] == 'Mrs':\n",
" return 45\n",
" elif row['Title'] == 'Officer':\n",
" return 49\n",
" elif row['Title'] == 'Royalty':\n",
" return 39\n",
"\n",
" elif row['Sex']=='female' and row['Pclass'] == 2:\n",
" if row['Title'] == 'Miss':\n",
" return 20\n",
" elif row['Title'] == 'Mrs':\n",
" return 30\n",
"\n",
" elif row['Sex']=='female' and row['Pclass'] == 3:\n",
" if row['Title'] == 'Miss':\n",
" return 18\n",
" elif row['Title'] == 'Mrs':\n",
" return 31\n",
"\n",
" elif row['Sex']=='male' and row['Pclass'] == 1:\n",
" if row['Title'] == 'Master':\n",
" return 6\n",
" elif row['Title'] == 'Mr':\n",
" return 41.5\n",
" elif row['Title'] == 'Officer':\n",
" return 52\n",
" elif row['Title'] == 'Royalty':\n",
" return 40\n",
"\n",
" elif row['Sex']=='male' and row['Pclass'] == 2:\n",
" if row['Title'] == 'Master':\n",
" return 2\n",
" elif row['Title'] == 'Mr':\n",
" return 30\n",
" elif row['Title'] == 'Officer':\n",
" return 41.5\n",
"\n",
" elif row['Sex']=='male' and row['Pclass'] == 3:\n",
" if row['Title'] == 'Master':\n",
" return 6\n",
" elif row['Title'] == 'Mr':\n",
" return 26\n",
" \n",
" combined.Age = combined.apply(lambda r : fillAges(r) if np.isnan(r['Age']) else r['Age'], axis=1)\n",
"\n",
"process_age()\n",
"combined.info()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"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>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_Master</th>\n",
" <th>Title_Miss</th>\n",
" <th>Title_Mr</th>\n",
" <th>Title_Mrs</th>\n",
" <th>Title_Officer</th>\n",
" <th>Title_Royalty</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>PC 17599</td>\n",
" <td>71.2833</td>\n",
" <td>C85</td>\n",
" <td>C</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>3</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O2. 3101282</td>\n",
" <td>7.9250</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>S</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>3</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Pclass Sex Age SibSp Parch Ticket Fare \\\n",
"0 1 3 male 22.0 1 0 A/5 21171 7.2500 \n",
"1 2 1 female 38.0 1 0 PC 17599 71.2833 \n",
"2 3 3 female 26.0 0 0 STON/O2. 3101282 7.9250 \n",
"3 4 1 female 35.0 1 0 113803 53.1000 \n",
"4 5 3 male 35.0 0 0 373450 8.0500 \n",
"\n",
" Cabin Embarked Title_Master Title_Miss Title_Mr Title_Mrs \\\n",
"0 NaN S 0.0 0.0 1.0 0.0 \n",
"1 C85 C 0.0 0.0 0.0 1.0 \n",
"2 NaN S 0.0 1.0 0.0 0.0 \n",
"3 C123 S 0.0 0.0 0.0 1.0 \n",
"4 NaN S 0.0 0.0 1.0 0.0 \n",
"\n",
" Title_Officer Title_Royalty \n",
"0 0.0 0.0 \n",
"1 0.0 0.0 \n",
"2 0.0 0.0 \n",
"3 0.0 0.0 \n",
"4 0.0 0.0 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def process_names():\n",
" \n",
" global combined\n",
" # we clean the Name variable\n",
" combined.drop('Name',axis=1,inplace=True)\n",
" \n",
" # encoding in dummy variable\n",
" titles_dummies = pd.get_dummies(combined['Title'],prefix='Title')\n",
" combined = pd.concat([combined,titles_dummies],axis=1)\n",
" \n",
" # removing the title variable\n",
" combined.drop('Title',axis=1,inplace=True)\n",
" \n",
"process_names()\n",
"combined.head()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def process_fares():\n",
" \n",
" global combined\n",
" # there's one missing fare value - replacing it with the mean.\n",
" combined.Fare.fillna(combined.Fare.mean(),inplace=True)\n",
" \n",
"process_fares()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def process_embarked():\n",
" \n",
" global combined\n",
" # two missing embarked values - filling them with the most frequent one (S)\n",
" combined.Embarked.fillna('S',inplace=True)\n",
" \n",
" # dummy encoding \n",
" embarked_dummies = pd.get_dummies(combined['Embarked'],prefix='Embarked')\n",
" combined = pd.concat([combined,embarked_dummies],axis=1)\n",
" combined.drop('Embarked',axis=1,inplace=True)\n",
" \n",
"process_embarked()\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def process_cabin():\n",
" \n",
" global combined\n",
" \n",
" # replacing missing cabins with U (for Uknown)\n",
" combined.Cabin.fillna('U',inplace=True)\n",
" \n",
" # mapping each Cabin value with the cabin letter\n",
" combined['Cabin'] = combined['Cabin'].map(lambda c : c[0])\n",
" \n",
" # dummy encoding ...\n",
" cabin_dummies = pd.get_dummies(combined['Cabin'],prefix='Cabin')\n",
" \n",
" combined = pd.concat([combined,cabin_dummies],axis=1)\n",
" \n",
" combined.drop('Cabin',axis=1,inplace=True)\n",
" \n",
"process_cabin()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 1309 entries, 0 to 1308\n",
"Data columns (total 26 columns):\n",
"PassengerId 1309 non-null int64\n",
"Pclass 1309 non-null int64\n",
"Sex 1309 non-null object\n",
"Age 1309 non-null float64\n",
"SibSp 1309 non-null int64\n",
"Parch 1309 non-null int64\n",
"Ticket 1309 non-null object\n",
"Fare 1309 non-null float64\n",
"Title_Master 1309 non-null float64\n",
"Title_Miss 1309 non-null float64\n",
"Title_Mr 1309 non-null float64\n",
"Title_Mrs 1309 non-null float64\n",
"Title_Officer 1309 non-null float64\n",
"Title_Royalty 1309 non-null float64\n",
"Embarked_C 1309 non-null float64\n",
"Embarked_Q 1309 non-null float64\n",
"Embarked_S 1309 non-null float64\n",
"Cabin_A 1309 non-null float64\n",
"Cabin_B 1309 non-null float64\n",
"Cabin_C 1309 non-null float64\n",
"Cabin_D 1309 non-null float64\n",
"Cabin_E 1309 non-null float64\n",
"Cabin_F 1309 non-null float64\n",
"Cabin_G 1309 non-null float64\n",
"Cabin_T 1309 non-null float64\n",
"Cabin_U 1309 non-null float64\n",
"dtypes: float64(20), int64(4), object(2)\n",
"memory usage: 266.0+ KB\n"
]
}
],
"source": [
"combined.info()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def process_sex():\n",
" \n",
" global combined\n",
" # mapping string values to numerical one \n",
" combined['Sex'] = combined['Sex'].map({'male':1,'female':0})\n",
" \n",
"\n",
"process_sex()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def process_pclass():\n",
" \n",
" global combined\n",
" # encoding into 3 categories:\n",
" pclass_dummies = pd.get_dummies(combined['Pclass'],prefix=\"Pclass\")\n",
" \n",
" # adding dummy variables\n",
" combined = pd.concat([combined,pclass_dummies],axis=1)\n",
" \n",
" # removing \"Pclass\"\n",
" \n",
" combined.drop('Pclass',axis=1,inplace=True)\n",
" \n",
"process_pclass()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def process_ticket():\n",
" \n",
" global combined\n",
" \n",
" # a function that extracts each prefix of the ticket, returns 'XXX' if no prefix (i.e the ticket is a digit)\n",
" def cleanTicket(ticket):\n",
" ticket = ticket.replace('.','')\n",
" ticket = ticket.replace('/','')\n",
" ticket = ticket.split()\n",
" ticket = map(lambda t : t.strip() , ticket)\n",
" ticket = filter(lambda t : not t.isdigit(), ticket)\n",
" if len(ticket) > 0:\n",
" return ticket[0]\n",
" else: \n",
" return 'XXX'\n",
" \n",
"\n",
" # Extracting dummy variables from tickets:\n",
"\n",
" combined['Ticket'] = combined['Ticket'].map(cleanTicket)\n",
" tickets_dummies = pd.get_dummies(combined['Ticket'],prefix='Ticket')\n",
" combined = pd.concat([combined, tickets_dummies],axis=1)\n",
" combined.drop('Ticket',inplace=True,axis=1)\n",
"\n",
"process_ticket()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def process_family():\n",
" \n",
" global combined\n",
" # introducing a new feature : the size of families (including the passenger)\n",
" combined['FamilySize'] = combined['Parch'] + combined['SibSp'] + 1\n",
" \n",
" # introducing other features based on the family size\n",
" combined['Singleton'] = combined['FamilySize'].map(lambda s : 1 if s == 1 else 0)\n",
" combined['SmallFamily'] = combined['FamilySize'].map(lambda s : 1 if 2<=s<=4 else 0)\n",
" combined['LargeFamily'] = combined['FamilySize'].map(lambda s : 1 if 5<=s else 0)\n",
" \n",
"process_family()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": false
},
"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>Sex</th>\n",
" <th>Age</th>\n",
" <th>SibSp</th>\n",
" <th>Parch</th>\n",
" <th>Fare</th>\n",
" <th>Title_Master</th>\n",
" <th>Title_Miss</th>\n",
" <th>Title_Mr</th>\n",
" <th>Title_Mrs</th>\n",
" <th>Title_Officer</th>\n",
" <th>Title_Royalty</th>\n",
" <th>Embarked_C</th>\n",
" <th>Embarked_Q</th>\n",
" <th>Embarked_S</th>\n",
" <th>Cabin_A</th>\n",
" <th>Cabin_B</th>\n",
" <th>Cabin_C</th>\n",
" <th>Cabin_D</th>\n",
" <th>Cabin_E</th>\n",
" <th>Cabin_F</th>\n",
" <th>Cabin_G</th>\n",
" <th>Cabin_T</th>\n",
" <th>Cabin_U</th>\n",
" <th>Pclass_1</th>\n",
" <th>Pclass_2</th>\n",
" <th>Pclass_3</th>\n",
" <th>Ticket_A</th>\n",
" <th>Ticket_A4</th>\n",
" <th>Ticket_A5</th>\n",
" <th>Ticket_AQ3</th>\n",
" <th>Ticket_AQ4</th>\n",
" <th>Ticket_AS</th>\n",
" <th>Ticket_C</th>\n",
" <th>Ticket_CA</th>\n",
" <th>Ticket_CASOTON</th>\n",
" <th>Ticket_FC</th>\n",
" <th>Ticket_FCC</th>\n",
" <th>Ticket_Fa</th>\n",
" <th>Ticket_LINE</th>\n",
" <th>Ticket_LP</th>\n",
" <th>Ticket_PC</th>\n",
" <th>Ticket_PP</th>\n",
" <th>Ticket_PPP</th>\n",
" <th>Ticket_SC</th>\n",
" <th>Ticket_SCA3</th>\n",
" <th>Ticket_SCA4</th>\n",
" <th>Ticket_SCAH</th>\n",
" <th>Ticket_SCOW</th>\n",
" <th>Ticket_SCPARIS</th>\n",
" <th>Ticket_SCParis</th>\n",
" <th>Ticket_SOC</th>\n",
" <th>Ticket_SOP</th>\n",
" <th>Ticket_SOPP</th>\n",
" <th>Ticket_SOTONO2</th>\n",
" <th>Ticket_SOTONOQ</th>\n",
" <th>Ticket_SP</th>\n",
" <th>Ticket_STONO</th>\n",
" <th>Ticket_STONO2</th>\n",
" <th>Ticket_STONOQ</th>\n",
" <th>Ticket_SWPP</th>\n",
" <th>Ticket_WC</th>\n",
" <th>Ticket_WEP</th>\n",
" <th>Ticket_XXX</th>\n",
" <th>FamilySize</th>\n",
" <th>Singleton</th>\n",
" <th>SmallFamily</th>\n",
" <th>LargeFamily</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>7.2500</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>71.2833</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.9250</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>53.1000</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>1</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>0.0</td>\n",
" <td>1.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Sex Age SibSp Parch Fare Title_Master Title_Miss \\\n",
"0 1 1 22.0 1 0 7.2500 0.0 0.0 \n",
"1 2 0 38.0 1 0 71.2833 0.0 0.0 \n",
"2 3 0 26.0 0 0 7.9250 0.0 1.0 \n",
"3 4 0 35.0 1 0 53.1000 0.0 0.0 \n",
"4 5 1 35.0 0 0 8.0500 0.0 0.0 \n",
"\n",
" Title_Mr Title_Mrs Title_Officer Title_Royalty Embarked_C Embarked_Q \\\n",
"0 1.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 1.0 0.0 0.0 1.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 1.0 0.0 0.0 0.0 0.0 \n",
"4 1.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Embarked_S Cabin_A Cabin_B Cabin_C Cabin_D Cabin_E Cabin_F Cabin_G \\\n",
"0 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 \n",
"2 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 1.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0 \n",
"4 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Cabin_T Cabin_U Pclass_1 Pclass_2 Pclass_3 Ticket_A Ticket_A4 \\\n",
"0 0.0 1.0 0.0 0.0 1.0 0.0 0.0 \n",
"1 0.0 0.0 1.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 1.0 0.0 0.0 1.0 0.0 0.0 \n",
"3 0.0 0.0 1.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 1.0 0.0 0.0 1.0 0.0 0.0 \n",
"\n",
" Ticket_A5 Ticket_AQ3 Ticket_AQ4 Ticket_AS Ticket_C Ticket_CA \\\n",
"0 1.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_CASOTON Ticket_FC Ticket_FCC Ticket_Fa Ticket_LINE Ticket_LP \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_PC Ticket_PP Ticket_PPP Ticket_SC Ticket_SCA3 Ticket_SCA4 \\\n",
"0 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"1 1.0 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_SCAH Ticket_SCOW Ticket_SCPARIS Ticket_SCParis Ticket_SOC \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_SOP Ticket_SOPP Ticket_SOTONO2 Ticket_SOTONOQ Ticket_SP \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 0.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_STONO Ticket_STONO2 Ticket_STONOQ Ticket_SWPP Ticket_WC \\\n",
"0 0.0 0.0 0.0 0.0 0.0 \n",
"1 0.0 0.0 0.0 0.0 0.0 \n",
"2 0.0 1.0 0.0 0.0 0.0 \n",
"3 0.0 0.0 0.0 0.0 0.0 \n",
"4 0.0 0.0 0.0 0.0 0.0 \n",
"\n",
" Ticket_WEP Ticket_XXX FamilySize Singleton SmallFamily LargeFamily \n",
"0 0.0 0.0 2 0 1 0 \n",
"1 0.0 0.0 2 0 1 0 \n",
"2 0.0 0.0 1 1 0 0 \n",
"3 0.0 1.0 2 0 1 0 \n",
"4 0.0 1.0 1 1 0 0 "
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"combined.head()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"#scale to correct for interval\n",
"\n",
"def scale_all_features():\n",
" \n",
" global combined\n",
" \n",
" features = list(combined.columns)\n",
" features.remove('PassengerId')\n",
" combined[features] = combined[features].apply(lambda x: x/x.max(), axis=0)\n",
" \n",
" print 'Features scaled successfully!'"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Features scaled successfully!\n"
]
}
],
"source": [
"scale_all_features()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 5. Model"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.feature_selection import SelectKBest\n",
"from sklearn.cross_validation import StratifiedKFold\n",
"from sklearn.grid_search import GridSearchCV\n",
"from sklearn.ensemble.gradient_boosting import GradientBoostingClassifier\n",
"from sklearn.cross_validation import cross_val_score"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def compute_score(clf, X, y,scoring='accuracy'):\n",
" xval = cross_val_score(clf, X, y, cv = 5,scoring=scoring)\n",
" return np.mean(xval)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def recover_train_test_target():\n",
" global combined\n",
" \n",
" train0 = pd.read_csv('../data/titanictrain.csv')\n",
" \n",
" targets = train0.Survived\n",
" train = combined.ix[0:890]\n",
" test = combined.ix[891:]\n",
" \n",
" return train,test,targets"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"train,test,targets = recover_train_test_target()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### 5. Feature Engineering"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"from sklearn.ensemble import ExtraTreesClassifier\n",
"from sklearn.feature_selection import SelectFromModel"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"clf = ExtraTreesClassifier(n_estimators=200)\n",
"clf = clf.fit(train, targets)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"features = pd.DataFrame()\n",
"features['feature'] = train.columns\n",
"features['importance'] = clf.feature_importances_"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>feature</th>\n",
" <th>importance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PassengerId</td>\n",
" <td>0.128551</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Age</td>\n",
" <td>0.119907</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>Title_Mr</td>\n",
" <td>0.119459</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>Fare</td>\n",
" <td>0.114279</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Sex</td>\n",
" <td>0.099397</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>Pclass_3</td>\n",
" <td>0.041191</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>Title_Miss</td>\n",
" <td>0.040646</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>Title_Mrs</td>\n",
" <td>0.032838</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>Cabin_U</td>\n",
" <td>0.026212</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>Pclass_1</td>\n",
" <td>0.022409</td>\n",
" </tr>\n",
" <tr>\n",
" <th>64</th>\n",
" <td>FamilySize</td>\n",
" <td>0.020086</td>\n",
" </tr>\n",
" <tr>\n",
" <th>66</th>\n",
" <td>SmallFamily</td>\n",
" <td>0.019078</td>\n",
" </tr>\n",
" <tr>\n",
" <th>67</th>\n",
" <td>LargeFamily</td>\n",
" <td>0.017246</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>SibSp</td>\n",
" <td>0.016695</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Parch</td>\n",
" <td>0.015137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>Pclass_2</td>\n",
" <td>0.013053</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>Title_Master</td>\n",
" <td>0.012673</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>Embarked_S</td>\n",
" <td>0.012530</td>\n",
" </tr>\n",
" <tr>\n",
" <th>63</th>\n",
" <td>Ticket_XXX</td>\n",
" <td>0.012158</td>\n",
" </tr>\n",
" <tr>\n",
" <th>65</th>\n",
" <td>Singleton</td>\n",
" <td>0.011730</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>Embarked_C</td>\n",
" <td>0.010622</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>Cabin_E</td>\n",
" <td>0.010226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>Title_Officer</td>\n",
" <td>0.008389</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>Embarked_Q</td>\n",
" <td>0.007250</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>Cabin_B</td>\n",
" <td>0.006664</td>\n",
" </tr>\n",
" <tr>\n",
" <th>41</th>\n",
" <td>Ticket_PC</td>\n",
" <td>0.006643</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>Cabin_D</td>\n",
" <td>0.006570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>Cabin_C</td>\n",
" <td>0.006377</td>\n",
" </tr>\n",
" <tr>\n",
" <th>60</th>\n",
" <td>Ticket_SWPP</td>\n",
" <td>0.006249</td>\n",
" </tr>\n",
" <tr>\n",
" <th>57</th>\n",
" <td>Ticket_STONO</td>\n",
" <td>0.005688</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>Ticket_A5</td>\n",
" <td>0.003607</td>\n",
" </tr>\n",
" <tr>\n",
" <th>34</th>\n",
" <td>Ticket_CA</td>\n",
" <td>0.003341</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>Ticket_WC</td>\n",
" <td>0.002735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>Cabin_A</td>\n",
" <td>0.002361</td>\n",
" </tr>\n",
" <tr>\n",
" <th>55</th>\n",
" <td>Ticket_SOTONOQ</td>\n",
" <td>0.001978</td>\n",
" </tr>\n",
" <tr>\n",
" <th>33</th>\n",
" <td>Ticket_C</td>\n",
" <td>0.001887</td>\n",
" </tr>\n",
" <tr>\n",
" <th>58</th>\n",
" <td>Ticket_STONO2</td>\n",
" <td>0.001552</td>\n",
" </tr>\n",
" <tr>\n",
" <th>53</th>\n",
" <td>Ticket_SOPP</td>\n",
" <td>0.001544</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>Cabin_F</td>\n",
" <td>0.001497</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>Cabin_G</td>\n",
" <td>0.001330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>Title_Royalty</td>\n",
" <td>0.001161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>62</th>\n",
" <td>Ticket_WEP</td>\n",
" <td>0.000969</td>\n",
" </tr>\n",
" <tr>\n",
" <th>42</th>\n",
" <td>Ticket_PP</td>\n",
" <td>0.000826</td>\n",
" </tr>\n",
" <tr>\n",
" <th>36</th>\n",
" <td>Ticket_FC</td>\n",
" <td>0.000662</td>\n",
" </tr>\n",
" <tr>\n",
" <th>37</th>\n",
" <td>Ticket_FCC</td>\n",
" <td>0.000586</td>\n",
" </tr>\n",
" <tr>\n",
" <th>39</th>\n",
" <td>Ticket_LINE</td>\n",
" <td>0.000533</td>\n",
" </tr>\n",
" <tr>\n",
" <th>51</th>\n",
" <td>Ticket_SOC</td>\n",
" <td>0.000527</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>Ticket_A4</td>\n",
" <td>0.000519</td>\n",
" </tr>\n",
" <tr>\n",
" <th>49</th>\n",
" <td>Ticket_SCPARIS</td>\n",
" <td>0.000500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50</th>\n",
" <td>Ticket_SCParis</td>\n",
" <td>0.000447</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>Cabin_T</td>\n",
" <td>0.000329</td>\n",
" </tr>\n",
" <tr>\n",
" <th>52</th>\n",
" <td>Ticket_SOP</td>\n",
" <td>0.000256</td>\n",
" </tr>\n",
" <tr>\n",
" <th>47</th>\n",
" <td>Ticket_SCAH</td>\n",
" <td>0.000232</td>\n",
" </tr>\n",
" <tr>\n",
" <th>56</th>\n",
" <td>Ticket_SP</td>\n",
" <td>0.000155</td>\n",
" </tr>\n",
" <tr>\n",
" <th>44</th>\n",
" <td>Ticket_SC</td>\n",
" <td>0.000096</td>\n",
" </tr>\n",
" <tr>\n",
" <th>54</th>\n",
" <td>Ticket_SOTONO2</td>\n",
" <td>0.000080</td>\n",
" </tr>\n",
" <tr>\n",
" <th>43</th>\n",
" <td>Ticket_PPP</td>\n",
" <td>0.000072</td>\n",
" </tr>\n",
" <tr>\n",
" <th>38</th>\n",
" <td>Ticket_Fa</td>\n",
" <td>0.000062</td>\n",
" </tr>\n",
" <tr>\n",
" <th>48</th>\n",
" <td>Ticket_SCOW</td>\n",
" <td>0.000060</td>\n",
" </tr>\n",
" <tr>\n",
" <th>46</th>\n",
" <td>Ticket_SCA4</td>\n",
" <td>0.000054</td>\n",
" </tr>\n",
" <tr>\n",
" <th>35</th>\n",
" <td>Ticket_CASOTON</td>\n",
" <td>0.000048</td>\n",
" </tr>\n",
" <tr>\n",
" <th>32</th>\n",
" <td>Ticket_AS</td>\n",
" <td>0.000040</td>\n",
" </tr>\n",
" <tr>\n",
" <th>59</th>\n",
" <td>Ticket_STONOQ</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>Ticket_A</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>45</th>\n",
" <td>Ticket_SCA3</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>30</th>\n",
" <td>Ticket_AQ3</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>31</th>\n",
" <td>Ticket_AQ4</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>40</th>\n",
" <td>Ticket_LP</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" feature importance\n",
"0 PassengerId 0.128551\n",
"2 Age 0.119907\n",
"8 Title_Mr 0.119459\n",
"5 Fare 0.114279\n",
"1 Sex 0.099397\n",
"26 Pclass_3 0.041191\n",
"7 Title_Miss 0.040646\n",
"9 Title_Mrs 0.032838\n",
"23 Cabin_U 0.026212\n",
"24 Pclass_1 0.022409\n",
"64 FamilySize 0.020086\n",
"66 SmallFamily 0.019078\n",
"67 LargeFamily 0.017246\n",
"3 SibSp 0.016695\n",
"4 Parch 0.015137\n",
"25 Pclass_2 0.013053\n",
"6 Title_Master 0.012673\n",
"14 Embarked_S 0.012530\n",
"63 Ticket_XXX 0.012158\n",
"65 Singleton 0.011730\n",
"12 Embarked_C 0.010622\n",
"19 Cabin_E 0.010226\n",
"10 Title_Officer 0.008389\n",
"13 Embarked_Q 0.007250\n",
"16 Cabin_B 0.006664\n",
"41 Ticket_PC 0.006643\n",
"18 Cabin_D 0.006570\n",
"17 Cabin_C 0.006377\n",
"60 Ticket_SWPP 0.006249\n",
"57 Ticket_STONO 0.005688\n",
"29 Ticket_A5 0.003607\n",
"34 Ticket_CA 0.003341\n",
"61 Ticket_WC 0.002735\n",
"15 Cabin_A 0.002361\n",
"55 Ticket_SOTONOQ 0.001978\n",
"33 Ticket_C 0.001887\n",
"58 Ticket_STONO2 0.001552\n",
"53 Ticket_SOPP 0.001544\n",
"20 Cabin_F 0.001497\n",
"21 Cabin_G 0.001330\n",
"11 Title_Royalty 0.001161\n",
"62 Ticket_WEP 0.000969\n",
"42 Ticket_PP 0.000826\n",
"36 Ticket_FC 0.000662\n",
"37 Ticket_FCC 0.000586\n",
"39 Ticket_LINE 0.000533\n",
"51 Ticket_SOC 0.000527\n",
"28 Ticket_A4 0.000519\n",
"49 Ticket_SCPARIS 0.000500\n",
"50 Ticket_SCParis 0.000447\n",
"22 Cabin_T 0.000329\n",
"52 Ticket_SOP 0.000256\n",
"47 Ticket_SCAH 0.000232\n",
"56 Ticket_SP 0.000155\n",
"44 Ticket_SC 0.000096\n",
"54 Ticket_SOTONO2 0.000080\n",
"43 Ticket_PPP 0.000072\n",
"38 Ticket_Fa 0.000062\n",
"48 Ticket_SCOW 0.000060\n",
"46 Ticket_SCA4 0.000054\n",
"35 Ticket_CASOTON 0.000048\n",
"32 Ticket_AS 0.000040\n",
"59 Ticket_STONOQ 0.000000\n",
"27 Ticket_A 0.000000\n",
"45 Ticket_SCA3 0.000000\n",
"30 Ticket_AQ3 0.000000\n",
"31 Ticket_AQ4 0.000000\n",
"40 Ticket_LP 0.000000"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"features.sort(['importance'],ascending=False)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(891, 15)"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#15 features\n",
"model = SelectFromModel(clf, prefit=True)\n",
"train_new = model.transform(train)\n",
"train_new.shape"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(418, 15)"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Test Shape\n",
"test_new = model.transform(test)\n",
"test_new.shape"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Best score: 0.83164983165\n",
"Best parameters: {'n_estimators': 240, 'criterion': 'gini', 'max_depth': 5}\n"
]
}
],
"source": [
"#Boosted Random Forest Params\n",
"forest = RandomForestClassifier(max_features='sqrt')\n",
"\n",
"parameter_grid = {\n",
" 'max_depth' : [4,5,6,7,8],\n",
" 'n_estimators': [200,210,240,250],\n",
" 'criterion': ['gini','entropy']\n",
" }\n",
"\n",
"cross_validation = StratifiedKFold(targets, n_folds=5)\n",
"\n",
"grid_search = GridSearchCV(forest,\n",
" param_grid=parameter_grid,\n",
" cv=cross_validation)\n",
"\n",
"grid_search.fit(train_new, targets)\n",
"\n",
"print('Best score: {}'.format(grid_search.best_score_))\n",
"print('Best parameters: {}'.format(grid_search.best_params_))"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"output = grid_search.predict(test_new).astype(int)\n",
"df_output = pd.DataFrame()\n",
"df_output['PassengerId'] = test['PassengerId']\n",
"df_output['Survived'] = output\n",
"df_output[['PassengerId','Survived']].to_csv('../data/output.csv',index=False)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### 6. Show Results "
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"results = pd.read_csv('../data/output.csv')"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x11cf24190>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11d3d6c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#graph results data\n",
"results.Survived.value_counts().plot(kind='bar', alpha=alpha_bar_chart)\n",
"ax1.set_xlim(-1, 2)\n",
"plt.title(\"Distribution of Survival Predicted, (1 = Survived)\") "
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.text.Text at 0x11d4ee450>"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11cf6cb90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#graph original data\n",
"data.Survived.value_counts().plot(kind='bar', alpha=alpha_bar_chart)\n",
"ax1.set_xlim(-1, 2)\n",
"plt.title(\"Distribution of Survival Observed, (1 = Survived)\") "
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"#### XGboost"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"SelectKBest(k=5, score_func=<function f_classif at 0x11cdebe60>)"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn import cross_validation\n",
"from sklearn.feature_selection import SelectKBest, f_classif\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import numpy as np\n",
"import re\n",
"\n",
"titanic = pd.read_csv('../data/titanictrain.csv', header=0)\n",
"titanic_test = pd.read_csv('../data/titanictest.csv', header=0)\n",
"predictors = [\"Pclass\", \"Sex\", \"Age\", \"SibSp\", \"Parch\", \"Fare\", \"Embarked\"]\n",
"\n",
"titanic[\"Age\"] = titanic[\"Age\"].fillna(titanic[\"Age\"].median())\n",
"# Replace all the occurences of male with the number 0.\n",
"titanic.loc[titanic[\"Sex\"] == \"male\", \"Sex\"] = 0\n",
"# Replace all the occurences of female with the number 1.\n",
"titanic.loc[titanic[\"Sex\"] == \"female\", \"Sex\"] = 1\n",
"\n",
"titanic[\"Embarked\"] = titanic[\"Embarked\"].fillna(\"S\")\n",
"titanic.loc[titanic[\"Embarked\"] == \"S\", \"Embarked\"] = 0\n",
"titanic.loc[titanic[\"Embarked\"] == \"C\", \"Embarked\"] = 1\n",
"titanic.loc[titanic[\"Embarked\"] == \"Q\", \"Embarked\"] = 2\n",
"\n",
"# Repeat with test dataset\n",
"titanic_test[\"Age\"] = titanic_test[\"Age\"].fillna(titanic[\"Age\"].median())\n",
"titanic_test[\"Fare\"] = titanic_test[\"Fare\"].fillna(titanic_test[\"Fare\"].median())\n",
"titanic_test.loc[titanic_test[\"Sex\"] == \"male\", \"Sex\"] = 0 \n",
"titanic_test.loc[titanic_test[\"Sex\"] == \"female\", \"Sex\"] = 1\n",
"titanic_test[\"Embarked\"] = titanic_test[\"Embarked\"].fillna(\"S\")\n",
"\n",
"titanic_test.loc[titanic_test[\"Embarked\"] == \"S\", \"Embarked\"] = 0\n",
"titanic_test.loc[titanic_test[\"Embarked\"] == \"C\", \"Embarked\"] = 1\n",
"titanic_test.loc[titanic_test[\"Embarked\"] == \"Q\", \"Embarked\"] = 2\n",
"\n",
"\n",
"# Generating a familysize column\n",
"titanic[\"FamilySize\"] = titanic[\"SibSp\"] + titanic[\"Parch\"]\n",
"titanic_test[\"FamilySize\"] = titanic_test[\"SibSp\"] + titanic_test[\"Parch\"]\n",
"\n",
"# The .apply method generates a new series\n",
"titanic[\"NameLength\"] = titanic[\"Name\"].apply(lambda x: len(x))\n",
"titanic_test[\"NameLength\"] = titanic_test[\"Name\"].apply(lambda x: len(x))\n",
"\n",
"# A function to get the title from a name.\n",
"def get_title(name):\n",
" # Use a regular expression to search for a title. Titles always consist of capital and lowercase letters, and end with a period.\n",
" title_search = re.search(' ([A-Za-z]+)\\.', name)\n",
" # If the title exists, extract and return it.\n",
" if title_search:\n",
" return title_search.group(1)\n",
" return \"\"\n",
"\n",
"# Get all the titles\n",
"titles = titanic[\"Name\"].apply(get_title)\n",
"# Map each title to an integer. Some titles are very rare, and are compressed into the same codes as other titles.\n",
"title_mapping = {\"Mr\": 1, \"Miss\": 2, \"Mrs\": 3, \"Master\": 4, \"Dr\": 5, \"Rev\": 6, \"Major\": 7, \"Col\": 7, \"Mlle\": 8, \"Mme\": 8, \"Don\": 9, \"Lady\": 10, \"Countess\": 10, \"Jonkheer\": 10, \"Sir\": 9, \"Capt\": 7, \"Ms\": 2}\n",
"for k,v in title_mapping.items():\n",
" titles[titles == k] = v\n",
"\n",
"# Add in the title column.\n",
"titanic[\"Title\"] = titles\n",
"\n",
"titles_test = titanic[\"Name\"].apply(get_title)\n",
"for k,v in title_mapping.items():\n",
" titles_test[titles_test == k] = v\n",
"titanic_test[\"Title\"] = titles\n",
" \n",
" \n",
"predictors = [\"Pclass\", \"Sex\", \"Age\", \"SibSp\", \"Parch\", \"Fare\", \"Embarked\", \"FamilySize\", \"NameLength\", \"Title\"]\n",
"\n",
"# Perform feature selection\n",
"selector = SelectKBest(f_classif, k=5)\n",
"selector.fit(titanic[predictors], titanic[\"Survived\"])"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 24.59567142 68.85199425 1.27768955 0.5342545 1.82976043\n",
" 14.21323514 2.85130099 0.20768458 23.69319016 26.98338607]\n"
]
}
],
"source": [
"# Get the raw p-values for each feature, and transform from p-values into scores\n",
"scores = -np.log10(selector.pvalues_)\n",
"print scores"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11d5d1650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Plot the scores. See how \"Pclass\", \"Sex\", \"Title\", and \"Fare\" are the best?\n",
"plt.bar(range(len(predictors)), scores)\n",
"plt.xticks(range(len(predictors)), predictors, rotation='vertical')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"titanic['Sex'] = titanic['Sex'].astype(int)\n",
"titanic['Embarked'] = titanic['Embarked'].astype(int)\n",
"titanic['Title'] = titanic['Title'].astype(int)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import xgboost as xgb\n",
"from xgboost.sklearn import XGBClassifier"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.927048260382\n"
]
}
],
"source": [
"predictors = [\"Pclass\", \"Sex\", \"Age\", \"Fare\", \"Embarked\", \"FamilySize\", \"NameLength\", \"Title\"]\n",
"\n",
"titanic_test['Sex'] = titanic_test['Sex'].astype(int)\n",
"titanic_test['Embarked'] = titanic_test['Embarked'].astype(int)\n",
"titanic_test[\"Title\"] = titanic_test[\"Title\"].astype(int)\n",
"train_X = titanic[predictors]\n",
"test_X = titanic_test[predictors]\n",
"train_y = titanic[\"Survived\"]\n",
"\n",
"gbm = xgb.XGBClassifier(max_depth=3, n_estimators=300, learning_rate=0.1).fit(train_X, train_y)\n",
"predictions = gbm.predict(train_X)\n",
"\n",
"\n",
"accuracy = sum(predictions[predictions == titanic[\"Survived\"]]) / len(predictions)\n",
"print(accuracy)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\ngVIz24vouN2L29je74E+gJvZ6cDLwN1m9hV3f9/MdgL2Bt4BOpvZAe7+AXB2bQMeW9Kl9tnVQvs2\n0Ue7fPlyioqKaNu2LevWrWPWrFkMGzaMnXfemdmzZ9OrVy/ef/99Nm3apONuIpIYzaG4tap0zG2y\nu49i22chZs+bB9zNf04o+QuAmb0O/C9R0fufatatmHb3X5tZO+CP7j7EzIYCj5pZy3iZa939PTO7\nGHjOzNYAs4Cda5Nk192La7NYnS1dupTLL7+csrIyMpkMgwYNon///mzatIkrrriC/v37U1xczB13\n3NEg+xcRyYWQyeT0THWJZBYvXpzrGBpFcxjqqC/5kmu+5AnKtanp1KkTVDO6pzuUiIhI4qi4iYhI\n4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4\niYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4qi4iYhI4oRMJpPr\nGAT0IYiIbJ9QVaN6bk2Amd1A9AEl/ke5Ju8nX/JUrk32p0oqbiIikjgqbiIikjgqbk3DjFwH0Ihm\n5DqARjQj1wE0khm5DqARzch1AI1oRq4D2BE6oURERBJHPTcREUkcFTcREUmcolwHkO/MrAT4DdEf\nGr9397E5DmmHmNnvgVOBpe7+1bhtV+DPQGfgQ8Dc/ct43tXAfwGbgR+7+9RcxF1XZrYP8AdgL6AM\n+J2735nQXFsCLwHFRN8ZT7j7DUnMFcDMCoBXgEXuflqC8/wQ+JLo3+8md++ZpFzVc8uh+D/R3cDJ\nwOHA2WbWNbdR7bAHiPLJ9jNgmrsfAkwHrgYws8MAAw4FTgHuMbNqr1tpYjYDV7j74UAvYFj82SUu\nV3ffAPRz9+5AN+AUM+tJAnON/Rh4O2s6qXmWAX3dvbu794zbEpOriltu9QTec/eP3H0T8BgwOMcx\n7RB3/x9gRaXmwcBD8euHgG/Hr08DHnP3ze7+IfAe0XvS5Ln7End/PX69GvhfYB8SmCuAu6+NX7Yk\n6r1lSGCucY/8W8CErObE5RkLbF0DEpOriltu7Q18kjW9KG5Lmj3dfSlERQHYM26vnP+/aYb5m9n+\nRD2al4G9kpirmRWY2WvAEuB5d59PMnP9NXAlW94SL4l5QpTj82Y238z+O25LTK4qbpILibn+xMx2\nBp4gOgaxmq1zS0Su7l4WD0vuA/Q0s8NJWK5mNpDoWPHrbOO2TjTzPLP0dvejiXqqw8zsmyToM1Vx\ny61/A/tlTe8TtyXNUjPbC8DMOgCfxe3/BvbNWq5Z5W9mRUSF7Y/u/kzcnMhcy7n7KqKLe0tIXq69\ngdPMbCHwKHCCmf0RWJKwPAFw90/j358DTxMNMybmM9XZkrk1HzjQzDoDnwJnAWfnNqR6UfmGpn8F\nhgJjgfOAZ7LaHzGzXxMNcRwIzGu8MHfY/cDb7n5HVlvicjWz9kRn031pZq2Bk4BbSViu7j4KGAVg\nZn2AEe7+AzO7jQTlCWBmOwEF7r7azNoAA4AbSNBnqjuU5Fh8KcAd/OdSgFtzHNIOMbM/AX2B3YGl\nwPVEfxU+TvSX30dEpxevjJe/GrgA2EQzOL24nJn1Jjo9/g2ioZsM0RfjPMBJVq5HEp1cUBD//Nnd\nbzKz3UhYruWyittpSczTzA4A/kL077YIeMTdb01SripuIiKSODrmJiIiiaPiJiIiiaPiJiIiiaPi\nJiIiiaPiJiIiiaPiJiIiiaPiJiIiiaM7lIgkSPyMrj2JHskTiC7SPTi+Ca5I3lBxE0mWDDDQ3V/M\nZRBmVuju6VzGIPlNxU0keWp8iKSZ7Q48CHyD6KGVb7p7n3jePkS3hPtmvK1H3X14/HDKa4D/BloB\nk4Hh7r4qvj/qB/G86+PXfc3sOOBXwGFET3a+3N1n1l+qIlXTMTeR/DSC6PlcuxMNY5bfMLgAmEhU\nnPYjuknuY/E65wPnAn2ALkCK6Eny2Y4HugInm1mneFs3uvuuwEjgybiwijQo9dxEkudpM9scv57h\n7t+pYplNQEfgAHd/H5gdt/eM23/q7mVx29/j3+cA49z9I6i4ke6bZjY0np8Brnf3dfH87wOT3H0K\ngLu/YGavED0/7I/1k6pI1VTcRJJncC2Oud1G9IiTqWaWAX7n7mOJ7wafVdiydSK6U3y5j4i+Q/bK\naluU9bozYGY2KJ4O8fLTa52JyHZScRNJnhqPubn7GqJhwpFmdhjwopnNIxqq3M/MCqoocIuJCla5\nzkQ9wKX850GW2Y8Z+QT4g7tfvH1piGw/FTeRPGRmA4F34iHJUqJLB8qInkf3KXCrmY0B0sAx7v53\noqdT/9TMJgNfADcBj7l7mZnB1kX1YWCemT0JTAOKga8B77n74gZOUfKcTigRSZbaPqDxIGCamZUS\nHW8b7+4z497aoHj+x0S9L4vXuZ/oWNlLwPvAWmB4dft290XAYKKTVT4nGsYcib53pBHoYaUiIpI4\n+gtKREQSR8VNREQSR8VNREQSR8VNREQSR8VNREQSR8VNREQSR8VNREQSR8VNREQSR8VNREQS5/8D\nviaODXb6C5oAAAAASUVORK5CYII=\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x11d861710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"#print(gbm.feature_importances_)\n",
"xgb.plot_importance(gbm)\n",
"\n",
"predictions = gbm.predict(test_X)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"submission = pd.DataFrame({ 'PassengerId': titanic_test['PassengerId'],\n",
" 'Survived': predictions })\n",
"submission.to_csv(\"../data/submission.csv\", index=False)"
]
}
],
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment