Skip to content

Instantly share code, notes, and snippets.

@Kristian-Roopnarine
Last active September 4, 2019 02:18
Show Gist options
  • Save Kristian-Roopnarine/9fce01d81e36dee2cfa39a0a92ac3268 to your computer and use it in GitHub Desktop.
Save Kristian-Roopnarine/9fce01d81e36dee2cfa39a0a92ac3268 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Titanic Data set**"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"from sklearn.preprocessing import OrdinalEncoder,OneHotEncoder\n",
"from sklearn.impute import SimpleImputer"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#create variables for our test and train file\n",
"test_file = 'test.csv'\n",
"train_file = 'train.csv'\n",
"\n",
"def load_data(filename):\n",
" return pd.read_csv(filename)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Survived</th>\n",
" <th>Pclass</th>\n",
" <th>Name</th>\n",
" <th>Sex</th>\n",
" <th>Age</th>\n",
" <th>SibSp</th>\n",
" <th>Parch</th>\n",
" <th>Ticket</th>\n",
" <th>Fare</th>\n",
" <th>Cabin</th>\n",
" <th>Embarked</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Braund, Mr. Owen Harris</td>\n",
" <td>male</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>A/5 21171</td>\n",
" <td>7.2500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
" <td>female</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>PC 17599</td>\n",
" <td>71.2833</td>\n",
" <td>C85</td>\n",
" <td>C</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>Heikkinen, Miss. Laina</td>\n",
" <td>female</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>STON/O2. 3101282</td>\n",
" <td>7.9250</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
" <td>female</td>\n",
" <td>35.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>113803</td>\n",
" <td>53.1000</td>\n",
" <td>C123</td>\n",
" <td>S</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>Allen, Mr. William Henry</td>\n",
" <td>male</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>373450</td>\n",
" <td>8.0500</td>\n",
" <td>NaN</td>\n",
" <td>S</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived Pclass \\\n",
"0 1 0 3 \n",
"1 2 1 1 \n",
"2 3 1 3 \n",
"3 4 1 1 \n",
"4 5 0 3 \n",
"\n",
" Name Sex Age SibSp \\\n",
"0 Braund, Mr. Owen Harris male 22.0 1 \n",
"1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n",
"2 Heikkinen, Miss. Laina female 26.0 0 \n",
"3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n",
"4 Allen, Mr. William Henry male 35.0 0 \n",
"\n",
" Parch Ticket Fare Cabin Embarked \n",
"0 0 A/5 21171 7.2500 NaN S \n",
"1 0 PC 17599 71.2833 C85 C \n",
"2 0 STON/O2. 3101282 7.9250 NaN S \n",
"3 0 113803 53.1000 C123 S \n",
"4 0 373450 8.0500 NaN S "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data = load_data(train_file)\n",
"train_data.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(891, 12)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.shape"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Survived</th>\n",
" <th>Pclass</th>\n",
" <th>Age</th>\n",
" <th>SibSp</th>\n",
" <th>Parch</th>\n",
" <th>Fare</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>891.000000</td>\n",
" <td>891.000000</td>\n",
" <td>891.000000</td>\n",
" <td>714.000000</td>\n",
" <td>891.000000</td>\n",
" <td>891.000000</td>\n",
" <td>891.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>446.000000</td>\n",
" <td>0.383838</td>\n",
" <td>2.308642</td>\n",
" <td>29.699118</td>\n",
" <td>0.523008</td>\n",
" <td>0.381594</td>\n",
" <td>32.204208</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>257.353842</td>\n",
" <td>0.486592</td>\n",
" <td>0.836071</td>\n",
" <td>14.526497</td>\n",
" <td>1.102743</td>\n",
" <td>0.806057</td>\n",
" <td>49.693429</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.420000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>223.500000</td>\n",
" <td>0.000000</td>\n",
" <td>2.000000</td>\n",
" <td>20.125000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>7.910400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>446.000000</td>\n",
" <td>0.000000</td>\n",
" <td>3.000000</td>\n",
" <td>28.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>14.454200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>668.500000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>38.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.000000</td>\n",
" <td>31.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>891.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>80.000000</td>\n",
" <td>8.000000</td>\n",
" <td>6.000000</td>\n",
" <td>512.329200</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived Pclass Age SibSp \\\n",
"count 891.000000 891.000000 891.000000 714.000000 891.000000 \n",
"mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n",
"std 257.353842 0.486592 0.836071 14.526497 1.102743 \n",
"min 1.000000 0.000000 1.000000 0.420000 0.000000 \n",
"25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n",
"50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n",
"75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n",
"max 891.000000 1.000000 3.000000 80.000000 8.000000 \n",
"\n",
" Parch Fare \n",
"count 891.000000 891.000000 \n",
"mean 0.381594 32.204208 \n",
"std 0.806057 49.693429 \n",
"min 0.000000 0.000000 \n",
"25% 0.000000 7.910400 \n",
"50% 0.000000 14.454200 \n",
"75% 0.000000 31.000000 \n",
"max 6.000000 512.329200 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **The Objective**\n",
"The objective is to be able to predict whether or not a passenger will survive the titanic given these set of features.\n",
"\n",
"# **The data set**\n",
"\n",
"The data set is labelled which screams supervised learning. This also seems to be a classification problem , survive or not survive, and some of the supervised classification algorithms are:\n",
"* Logisitic Regression\n",
"* Decision Trees, Random Forest\n",
"* Support Vector Machines\n",
"* k-NN\n",
"\n",
"Maybe we can try all of them and create some ensemble method"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 891 entries, 0 to 890\n",
"Data columns (total 12 columns):\n",
"PassengerId 891 non-null int64\n",
"Survived 891 non-null int64\n",
"Pclass 891 non-null int64\n",
"Name 891 non-null object\n",
"Sex 891 non-null object\n",
"Age 714 non-null float64\n",
"SibSp 891 non-null int64\n",
"Parch 891 non-null int64\n",
"Ticket 891 non-null object\n",
"Fare 891 non-null float64\n",
"Cabin 204 non-null object\n",
"Embarked 889 non-null object\n",
"dtypes: float64(2), int64(5), object(5)\n",
"memory usage: 66.2+ KB\n"
]
}
],
"source": [
"train_data.info()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Features**\n",
"\n",
"* The Cabin feature could be useful because the location of these Cabins could have helped a person survive but there are too many missing values.\n",
"* Fare may not be very important because we already have a Pclass feature. Higher fare probably means a higher class.\n",
"* Ticket, not sure what this feature exactly tells us. Is it the ticket number for that person?\n",
"* Name attribute might not be important either. Maybe if there were certain rich families on board, but Sex is probably more important to survival.\n",
"* Embarked may not be important either since the Titanic sunk in the ocean and not at a particular dock.\n",
"* Need to get rid of PassengerId\n",
"\n",
"## **Theoretically important**\n",
"* Sex\n",
"* Pclass\n",
"* Age (has missing values)\n",
"\n",
"## **Unsure**\n",
"\n",
"The features SibSp and Parch may be relevent. If the person had a sibling/spouse on the ship it could affect their survival. Same if the person had a parent or child with them on the ship.\n",
"\n",
"## **Check**\n",
" \n",
"* The relationship of the theoretically important features. Correlation matrix/heat map.\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"G6 4\n",
"C23 C25 C27 4\n",
"B96 B98 4\n",
"C22 C26 3\n",
"D 3\n",
"F2 3\n",
"F33 3\n",
"E101 3\n",
"D33 2\n",
"C83 2\n",
"D35 2\n",
"C78 2\n",
"C52 2\n",
"B49 2\n",
"F G73 2\n",
"C123 2\n",
"B58 B60 2\n",
"E8 2\n",
"B35 2\n",
"B5 2\n",
"E25 2\n",
"C125 2\n",
"D26 2\n",
"E33 2\n",
"B22 2\n",
"D36 2\n",
"C93 2\n",
"E24 2\n",
"D20 2\n",
"C124 2\n",
" ..\n",
"E31 1\n",
"A19 1\n",
"E77 1\n",
"B41 1\n",
"A24 1\n",
"C99 1\n",
"C62 C64 1\n",
"B50 1\n",
"C7 1\n",
"A23 1\n",
"C30 1\n",
"B38 1\n",
"D9 1\n",
"A5 1\n",
"D46 1\n",
"E40 1\n",
"F E69 1\n",
"C82 1\n",
"C91 1\n",
"B94 1\n",
"E12 1\n",
"C95 1\n",
"D50 1\n",
"C32 1\n",
"B69 1\n",
"B37 1\n",
"C47 1\n",
"B4 1\n",
"B39 1\n",
"A7 1\n",
"Name: Cabin, Length: 147, dtype: int64"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#let's get a feel for the weird features. Cabin, Ticket, Fare.\n",
"train_data['Cabin'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>unique</th>\n",
" <th>top</th>\n",
" <th>freq</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Pclass</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>176</td>\n",
" <td>133</td>\n",
" <td>B96 B98</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>16</td>\n",
" <td>7</td>\n",
" <td>E101</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>12</td>\n",
" <td>7</td>\n",
" <td>G6</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count unique top freq\n",
"Pclass \n",
"1 176 133 B96 B98 4\n",
"2 16 7 E101 3\n",
"3 12 7 G6 4"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby('Pclass')['Cabin'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th></th>\n",
" <th>count</th>\n",
" <th>unique</th>\n",
" <th>top</th>\n",
" <th>freq</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Pclass</th>\n",
" <th>Sex</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">1</th>\n",
" <th>female</th>\n",
" <td>81</td>\n",
" <td>67</td>\n",
" <td>B77</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>95</td>\n",
" <td>87</td>\n",
" <td>C23 C25 C27</td>\n",
" <td>2</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">2</th>\n",
" <th>female</th>\n",
" <td>10</td>\n",
" <td>5</td>\n",
" <td>F33</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>6</td>\n",
" <td>4</td>\n",
" <td>F2</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"2\" valign=\"top\">3</th>\n",
" <th>female</th>\n",
" <td>6</td>\n",
" <td>3</td>\n",
" <td>G6</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>male</th>\n",
" <td>6</td>\n",
" <td>5</td>\n",
" <td>F G73</td>\n",
" <td>2</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" count unique top freq\n",
"Pclass Sex \n",
"1 female 81 67 B77 2\n",
" male 95 87 C23 C25 C27 2\n",
"2 female 10 5 F33 3\n",
" male 6 4 F2 3\n",
"3 female 6 3 G6 4\n",
" male 6 5 F G73 2"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby(['Pclass','Sex'])['Cabin'].describe()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 216\n",
"2 184\n",
"3 491\n",
"Name: Pclass, dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.Pclass.value_counts(sort=False)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Pclass\n",
"1 136\n",
"2 87\n",
"3 119\n",
"Name: Survived, dtype: int64"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby('Pclass')['Survived'].sum()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"female 314\n",
"male 577\n",
"Name: Sex, dtype: int64"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.Sex.value_counts(ascending=True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sex\n",
"female 233\n",
"male 109\n",
"Name: Survived, dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby('Sex')['Survived'].sum()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sex Pclass\n",
"female 1 94\n",
" 2 76\n",
" 3 144\n",
"male 1 122\n",
" 2 108\n",
" 3 347\n",
"Name: Pclass, dtype: int64"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby('Sex')['Pclass'].value_counts(sort=False)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sex Pclass Survived\n",
"female 1 1 91\n",
" 0 3\n",
" 2 1 70\n",
" 0 6\n",
" 3 0 72\n",
" 1 72\n",
"male 1 0 77\n",
" 1 45\n",
" 2 0 91\n",
" 1 17\n",
" 3 0 300\n",
" 1 47\n",
"Name: Survived, dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.groupby(['Sex','Pclass'])['Survived'].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Observations** \n",
"\n",
"Just from separating some of the data and analyzing it with relation to other features, it seems that there was a high survivability rate for people that were women and in 1st class. 300 our of the 347 men in 3rd class did not survive the titanic. Now let's do some EDA to get a feel for the distribution of our data."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[<matplotlib.axes._subplots.AxesSubplot object at 0x1B259F70>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1C294B50>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1C2B1B30>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x1C2CDBB0>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1B229E10>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1C301B50>],\n",
" [<matplotlib.axes._subplots.AxesSubplot object at 0x1C31CC90>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1C335750>,\n",
" <matplotlib.axes._subplots.AxesSubplot object at 0x1C335CD0>]],\n",
" dtype=object)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1440x1440 with 9 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"train_data.hist(figsize = (20,20), bins=20)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Survived 1.000000\n",
"Fare 0.257307\n",
"Parch 0.081629\n",
"PassengerId -0.005007\n",
"SibSp -0.035322\n",
"Age -0.077221\n",
"Pclass -0.338481\n",
"Name: Survived, dtype: float64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_id = train_data['PassengerId']\n",
"corr_matrix = train_data.corr()\n",
"corr_matrix['Survived'].sort_values(ascending = False) "
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1cce4c10>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x648 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig,ax = plt.subplots(figsize=(12,9))\n",
"sns.heatmap(corr_matrix,vmax=.5,square=True)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Observations from EDA**\n",
"\n",
"The age feature has some values that are 0 and we have to figure out whether to drop those values or just fill them with the median. Or do we turn it into a categorical dtype (Child,Adult) and encode it later? \n",
"\n",
"The fares feature has a high correlation with the survival rate but that is expected. We noticed earlier that the higher class people had a higher survival rate. \n",
"\n",
"The Parch feature has mainly 0's so we might be able to remove that feature and the same with SibSp.\n",
"\n",
"Now we have to figure out what to do with the age feature.\n",
"\n",
"# **Decisions so far**\n",
"\n",
"The cabin feature can be removed, there are so many values that aren't recorded. The only values that are recorded are for the first class passengers which could show a small correlation. A possible fix is to change the Cabin to Yes/No feature. \n",
"\n",
"I can possibly discard Embarked.\n",
"\n",
"Parch and SibSp contain many 0's I should either discard it or combine it into another feature. \n",
"\n",
"Need to encode Sex and check correlation.\n",
"\n",
"OneHotEncode Pclass and check correlation."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Karun, Miss. Manca 1\n",
"Taylor, Mrs. Elmer Zebley (Juliet Cummins Wright) 1\n",
"Beckwith, Mrs. Richard Leonard (Sallie Monypeny) 1\n",
"Louch, Mrs. Charles Alexander (Alice Adelaide Slow) 1\n",
"Collander, Mr. Erik Gustaf 1\n",
"Najib, Miss. Adele Kiamie \"Jane\" 1\n",
"Crosby, Miss. Harriet R 1\n",
"Canavan, Miss. Mary 1\n",
"Bengtsson, Mr. John Viktor 1\n",
"Newell, Miss. Madeleine 1\n",
"Doharr, Mr. Tannous 1\n",
"Sawyer, Mr. Frederick Charles 1\n",
"Ohman, Miss. Velin 1\n",
"Palsson, Master. Gosta Leonard 1\n",
"Jacobsohn, Mrs. Sidney Samuel (Amy Frances Christy) 1\n",
"Adams, Mr. John 1\n",
"Chapman, Mr. John Henry 1\n",
"Karlsson, Mr. Nils August 1\n",
"Harknett, Miss. Alice Phoebe 1\n",
"Abbott, Mr. Rossmore Edward 1\n",
"Kelly, Miss. Mary 1\n",
"Cribb, Mr. John Hatfield 1\n",
"Ryerson, Miss. Susan Parker \"Suzette\" 1\n",
"Rice, Master. Eric 1\n",
"Mangan, Miss. Mary 1\n",
"Nilsson, Miss. Helmina Josefina 1\n",
"Roebling, Mr. Washington Augustus II 1\n",
"Hegarty, Miss. Hanora \"Nora\" 1\n",
"Dimic, Mr. Jovan 1\n",
"Moor, Master. Meier 1\n",
" ..\n",
"Tikkanen, Mr. Juho 1\n",
"Panula, Master. Urho Abraham 1\n",
"Ali, Mr. Ahmed 1\n",
"Nicholson, Mr. Arthur Ernest 1\n",
"Bowerman, Miss. Elsie Edith 1\n",
"Dooley, Mr. Patrick 1\n",
"Andersson, Miss. Ebba Iris Alfrida 1\n",
"Rommetvedt, Mr. Knud Paust 1\n",
"Yasbeck, Mrs. Antoni (Selini Alexander) 1\n",
"Andreasson, Mr. Paul Edvin 1\n",
"Robins, Mrs. Alexander A (Grace Charity Laury) 1\n",
"Yasbeck, Mr. Antoni 1\n",
"Oreskovic, Miss. Marija 1\n",
"Caldwell, Mrs. Albert Francis (Sylvia Mae Harbaugh) 1\n",
"Wright, Mr. George 1\n",
"Van Impe, Mr. Jean Baptiste 1\n",
"Saad, Mr. Amin 1\n",
"Romaine, Mr. Charles Hallace (\"Mr C Rolmane\") 1\n",
"Stahelin-Maeglin, Dr. Max 1\n",
"Waelens, Mr. Achille 1\n",
"Robert, Mrs. Edward Scott (Elisabeth Walton McMillan) 1\n",
"Stranden, Mr. Juho 1\n",
"Carter, Mrs. Ernest Courtenay (Lilian Hughes) 1\n",
"Bostandyeff, Mr. Guentcho 1\n",
"Natsch, Mr. Charles H 1\n",
"Arnold-Franchi, Mrs. Josef (Josefine Franchi) 1\n",
"Shellard, Mr. Frederick William 1\n",
"Andersson, Miss. Ellis Anna Maria 1\n",
"Pickard, Mr. Berk (Berk Trembisky) 1\n",
"Holm, Mr. John Fredrik Alexander 1\n",
"Name: Name, Length: 891, dtype: int64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data['Name'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [],
"source": [
"def change_sex(dataframe):\n",
" dataframe['Sex'] = dataframe['Sex'].map({'female': 0, 'male':1 }).astype('int64')\n",
" return dataframe"
]
},
{
"cell_type": "code",
"execution_count": 250,
"metadata": {},
"outputs": [],
"source": [
"train_data_copy = train_data.copy()"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
"train_data_copy = change_sex(train_data_copy)"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Survived 1.000000\n",
"Fare 0.257307\n",
"Parch 0.081629\n",
"PassengerId -0.005007\n",
"SibSp -0.035322\n",
"Age -0.077221\n",
"Pclass -0.338481\n",
"Sex -0.543351\n",
"Name: Survived, dtype: float64"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"corr_matrix = train_data_copy.corr()\n",
"corr_matrix['Survived'].sort_values(ascending = False) "
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x1c51b630>"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"train_data_copy['Age'].hist()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Creating our first model**\n",
"\n",
"Just to test out our model I'll get rid of only two columns:\n",
"* Cabin\n",
"* Ticket\n",
"We'll convert the Embark column into dummy varibales with pd.get_dummies and train our models using that data.\n",
"\n",
"Let's create some classes that will transform our data so we can train it easily"
]
},
{
"cell_type": "code",
"execution_count": 247,
"metadata": {},
"outputs": [],
"source": [
"#select the number columns and categorical columns\n",
"num_attr = train_data_copy.select_dtypes([np.int64,np.float64]).columns.values\n",
"cat_attr = train_data_copy.select_dtypes([object]).columns.values\n",
"\n",
"#First iteration \n",
"#cat_drop_cols = ['Ticket','Cabin','Name']\n",
"#train_drop_cols = ['PassengerId','Survived']\n",
"\n",
"#Let's try to add the HasCabin class in\n",
"cat_drop_cols = ['Ticket','Name','Cabin']\n",
"train_drop_cols = ['PassengerId','Survived']\n",
"dropped_cols = ['Ticket','Name','Cabin','PassengerId','Survived']"
]
},
{
"cell_type": "code",
"execution_count": 269,
"metadata": {},
"outputs": [],
"source": [
"#create a function to convert data\n",
"\n",
"def clean_data(dataframe,drop_cols):\n",
" dataframe['HasCabin'] = dataframe['Cabin'].apply(lambda x: 0 if type(x) == float else 1)\n",
" dataframe['Sex'] = dataframe['Sex'].map({'female': 0, 'male':1 }).astype('int64')\n",
" dataframe['Age'] = dataframe['Age'].fillna(dataframe['Age'].median())\n",
" dataframe['Embarked'] = dataframe['Embarked'].fillna('S')\n",
" dataframe['Fare'] = dataframe['Fare'].fillna(0)\n",
" dataframe['Title'] = [i.split(\",\")[1].split(\".\")[0].strip() for i in dataframe['Name']]\n",
" rename = {'Master':0,'Miss':1,'Ms':1,'Mme':1,'Mlle':1,'Mrs':1,'Mr':2,'Rare':3}\n",
" dataframe['Title'] = dataframe['Title'].replace(['Lady','the Countess','Countess','Capt','Col','Don','Dr','Major','Rev','Sir','Jonkheer','Dona'],'Rare')\n",
" dataframe['Title'] = dataframe['Title'].map(rename)\n",
" dataframe['Title'] = dataframe['Title'].astype('int64')\n",
" dataframe.drop(drop_cols,axis=1,inplace=True)\n",
" return pd.get_dummies(dataframe,prefix='Embarked')\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 270,
"metadata": {},
"outputs": [],
"source": [
"train_data_copy = train_data.copy()"
]
},
{
"cell_type": "code",
"execution_count": 271,
"metadata": {},
"outputs": [],
"source": [
"train_data_copy = clean_data(train_data_copy,dropped_cols)"
]
},
{
"cell_type": "code",
"execution_count": 272,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 891 entries, 0 to 890\n",
"Data columns (total 11 columns):\n",
"Pclass 891 non-null int64\n",
"Sex 891 non-null int64\n",
"Age 891 non-null float64\n",
"SibSp 891 non-null int64\n",
"Parch 891 non-null int64\n",
"Fare 891 non-null float64\n",
"HasCabin 891 non-null int64\n",
"Title 891 non-null int64\n",
"Embarked_C 891 non-null uint8\n",
"Embarked_Q 891 non-null uint8\n",
"Embarked_S 891 non-null uint8\n",
"dtypes: float64(2), int64(6), uint8(3)\n",
"memory usage: 58.3 KB\n"
]
}
],
"source": [
"train_data_copy.info()"
]
},
{
"cell_type": "code",
"execution_count": 197,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.base import TransformerMixin,BaseEstimator\n",
"#selects columns\n",
"class DataFrameSelector(BaseEstimator,TransformerMixin):\n",
" def __init__(self,attr = []):\n",
" self.attr = attr\n",
" def fit(self,X,y=None):\n",
" return self\n",
" def transform(self,X,y=None):\n",
" return X.loc[:,self.attr]"
]
},
{
"cell_type": "code",
"execution_count": 198,
"metadata": {},
"outputs": [],
"source": [
"class DropColumns(BaseEstimator,TransformerMixin):\n",
" def __init__(self,drop_cols=[]):\n",
" self.drop_cols = drop_cols\n",
" def fit(self,X,y=None):\n",
" return self\n",
" def transform(self,X,y=None):\n",
" X= X.copy()\n",
" return X.drop(self.drop_cols,axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 273,
"metadata": {},
"outputs": [],
"source": [
"train_data_copy = train_data.copy()\n",
"survived_train = train_data_copy['Survived']"
]
},
{
"cell_type": "code",
"execution_count": 274,
"metadata": {},
"outputs": [],
"source": [
"train_data_cleaned = clean_data(train_data_copy,dropped_cols)"
]
},
{
"cell_type": "code",
"execution_count": 277,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 891 entries, 0 to 890\n",
"Data columns (total 11 columns):\n",
"Pclass 891 non-null int64\n",
"Sex 891 non-null int64\n",
"Age 891 non-null float64\n",
"SibSp 891 non-null int64\n",
"Parch 891 non-null int64\n",
"Fare 891 non-null float64\n",
"HasCabin 891 non-null int64\n",
"Title 891 non-null int64\n",
"Embarked_C 891 non-null uint8\n",
"Embarked_Q 891 non-null uint8\n",
"Embarked_S 891 non-null uint8\n",
"dtypes: float64(2), int64(6), uint8(3)\n",
"memory usage: 58.3 KB\n"
]
}
],
"source": [
"train_data_cleaned.info()"
]
},
{
"cell_type": "code",
"execution_count": 276,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Pclass</th>\n",
" <th>Sex</th>\n",
" <th>Age</th>\n",
" <th>SibSp</th>\n",
" <th>Parch</th>\n",
" <th>Fare</th>\n",
" <th>HasCabin</th>\n",
" <th>Title</th>\n",
" <th>Embarked_C</th>\n",
" <th>Embarked_Q</th>\n",
" <th>Embarked_S</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3</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</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</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>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</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</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</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>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3</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</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.4583</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>54.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>51.8625</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2.0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>21.0750</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>11.1333</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>14.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>30.0708</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>4.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>16.7000</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>58.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26.5500</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>20.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0500</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>39.0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>31.2750</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>14.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8542</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>55.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>16.0000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>2.0</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>29.1250</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>31.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>18.0000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>35.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>26.0000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>34.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>15.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>8.0292</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>35.5000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>8.0</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>21.0750</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>38.0</td>\n",
" <td>1</td>\n",
" <td>5</td>\n",
" <td>31.3875</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>19.0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>263.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8792</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>861</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>21.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>11.5000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>862</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>48.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>25.9292</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>863</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>28.0</td>\n",
" <td>8</td>\n",
" <td>2</td>\n",
" <td>69.5500</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>864</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>24.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>865</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>42.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>866</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>27.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>13.8583</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>867</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>31.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>50.4958</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>868</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9.5000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>869</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>4.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>11.1333</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>870</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>871</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>47.0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>52.5542</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>872</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>33.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>873</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>47.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9.0000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>874</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>28.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>24.0000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>875</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>15.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.2250</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>876</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>20.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>9.8458</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>877</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>878</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>879</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>56.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>83.1583</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>880</th>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>25.0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>26.0000</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>881</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>33.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.8958</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>882</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>22.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10.5167</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>883</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>28.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>10.5000</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>884</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>25.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.0500</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>885</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>39.0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>29.1250</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>886</th>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>27.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>13.0000</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>887</th>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>19.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>888</th>\n",
" <td>3</td>\n",
" <td>0</td>\n",
" <td>28.0</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>23.4500</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>889</th>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>26.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>30.0000</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>890</th>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>32.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>7.7500</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>891 rows × 11 columns</p>\n",
"</div>"
],
"text/plain": [
" Pclass Sex Age SibSp Parch Fare HasCabin Title Embarked_C \\\n",
"0 3 1 22.0 1 0 7.2500 0 2 0 \n",
"1 1 0 38.0 1 0 71.2833 1 1 1 \n",
"2 3 0 26.0 0 0 7.9250 0 1 0 \n",
"3 1 0 35.0 1 0 53.1000 1 1 0 \n",
"4 3 1 35.0 0 0 8.0500 0 2 0 \n",
"5 3 1 28.0 0 0 8.4583 0 2 0 \n",
"6 1 1 54.0 0 0 51.8625 1 2 0 \n",
"7 3 1 2.0 3 1 21.0750 0 0 0 \n",
"8 3 0 27.0 0 2 11.1333 0 1 0 \n",
"9 2 0 14.0 1 0 30.0708 0 1 1 \n",
"10 3 0 4.0 1 1 16.7000 1 1 0 \n",
"11 1 0 58.0 0 0 26.5500 1 1 0 \n",
"12 3 1 20.0 0 0 8.0500 0 2 0 \n",
"13 3 1 39.0 1 5 31.2750 0 2 0 \n",
"14 3 0 14.0 0 0 7.8542 0 1 0 \n",
"15 2 0 55.0 0 0 16.0000 0 1 0 \n",
"16 3 1 2.0 4 1 29.1250 0 0 0 \n",
"17 2 1 28.0 0 0 13.0000 0 2 0 \n",
"18 3 0 31.0 1 0 18.0000 0 1 0 \n",
"19 3 0 28.0 0 0 7.2250 0 1 1 \n",
"20 2 1 35.0 0 0 26.0000 0 2 0 \n",
"21 2 1 34.0 0 0 13.0000 1 2 0 \n",
"22 3 0 15.0 0 0 8.0292 0 1 0 \n",
"23 1 1 28.0 0 0 35.5000 1 2 0 \n",
"24 3 0 8.0 3 1 21.0750 0 1 0 \n",
"25 3 0 38.0 1 5 31.3875 0 1 0 \n",
"26 3 1 28.0 0 0 7.2250 0 2 1 \n",
"27 1 1 19.0 3 2 263.0000 1 2 0 \n",
"28 3 0 28.0 0 0 7.8792 0 1 0 \n",
"29 3 1 28.0 0 0 7.8958 0 2 0 \n",
".. ... ... ... ... ... ... ... ... ... \n",
"861 2 1 21.0 1 0 11.5000 0 2 0 \n",
"862 1 0 48.0 0 0 25.9292 1 1 0 \n",
"863 3 0 28.0 8 2 69.5500 0 1 0 \n",
"864 2 1 24.0 0 0 13.0000 0 2 0 \n",
"865 2 0 42.0 0 0 13.0000 0 1 0 \n",
"866 2 0 27.0 1 0 13.8583 0 1 1 \n",
"867 1 1 31.0 0 0 50.4958 1 2 0 \n",
"868 3 1 28.0 0 0 9.5000 0 2 0 \n",
"869 3 1 4.0 1 1 11.1333 0 0 0 \n",
"870 3 1 26.0 0 0 7.8958 0 2 0 \n",
"871 1 0 47.0 1 1 52.5542 1 1 0 \n",
"872 1 1 33.0 0 0 5.0000 1 2 0 \n",
"873 3 1 47.0 0 0 9.0000 0 2 0 \n",
"874 2 0 28.0 1 0 24.0000 0 1 1 \n",
"875 3 0 15.0 0 0 7.2250 0 1 1 \n",
"876 3 1 20.0 0 0 9.8458 0 2 0 \n",
"877 3 1 19.0 0 0 7.8958 0 2 0 \n",
"878 3 1 28.0 0 0 7.8958 0 2 0 \n",
"879 1 0 56.0 0 1 83.1583 1 1 1 \n",
"880 2 0 25.0 0 1 26.0000 0 1 0 \n",
"881 3 1 33.0 0 0 7.8958 0 2 0 \n",
"882 3 0 22.0 0 0 10.5167 0 1 0 \n",
"883 2 1 28.0 0 0 10.5000 0 2 0 \n",
"884 3 1 25.0 0 0 7.0500 0 2 0 \n",
"885 3 0 39.0 0 5 29.1250 0 1 0 \n",
"886 2 1 27.0 0 0 13.0000 0 3 0 \n",
"887 1 0 19.0 0 0 30.0000 1 1 0 \n",
"888 3 0 28.0 1 2 23.4500 0 1 0 \n",
"889 1 1 26.0 0 0 30.0000 1 2 1 \n",
"890 3 1 32.0 0 0 7.7500 0 2 0 \n",
"\n",
" Embarked_Q Embarked_S \n",
"0 0 1 \n",
"1 0 0 \n",
"2 0 1 \n",
"3 0 1 \n",
"4 0 1 \n",
"5 1 0 \n",
"6 0 1 \n",
"7 0 1 \n",
"8 0 1 \n",
"9 0 0 \n",
"10 0 1 \n",
"11 0 1 \n",
"12 0 1 \n",
"13 0 1 \n",
"14 0 1 \n",
"15 0 1 \n",
"16 1 0 \n",
"17 0 1 \n",
"18 0 1 \n",
"19 0 0 \n",
"20 0 1 \n",
"21 0 1 \n",
"22 1 0 \n",
"23 0 1 \n",
"24 0 1 \n",
"25 0 1 \n",
"26 0 0 \n",
"27 0 1 \n",
"28 1 0 \n",
"29 0 1 \n",
".. ... ... \n",
"861 0 1 \n",
"862 0 1 \n",
"863 0 1 \n",
"864 0 1 \n",
"865 0 1 \n",
"866 0 0 \n",
"867 0 1 \n",
"868 0 1 \n",
"869 0 1 \n",
"870 0 1 \n",
"871 0 1 \n",
"872 0 1 \n",
"873 0 1 \n",
"874 0 0 \n",
"875 0 0 \n",
"876 0 1 \n",
"877 0 1 \n",
"878 0 1 \n",
"879 0 0 \n",
"880 0 1 \n",
"881 0 1 \n",
"882 0 1 \n",
"883 0 1 \n",
"884 0 1 \n",
"885 1 0 \n",
"886 0 1 \n",
"887 0 1 \n",
"888 0 1 \n",
"889 0 0 \n",
"890 1 0 \n",
"\n",
"[891 rows x 11 columns]"
]
},
"execution_count": 276,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data_cleaned"
]
},
{
"cell_type": "code",
"execution_count": 202,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.ensemble import RandomForestClassifier, AdaBoostClassifier, GradientBoostingClassifier, ExtraTreesClassifier, VotingClassifier\n",
"from sklearn.discriminant_analysis import LinearDiscriminantAnalysis\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.svm import SVC\n",
"from sklearn.model_selection import GridSearchCV, cross_val_score, StratifiedKFold, learning_curve"
]
},
{
"cell_type": "code",
"execution_count": 278,
"metadata": {},
"outputs": [],
"source": [
"#cross validate model with Kfold stratified cross val\n",
"kfold = StratifiedKFold(n_splits=10)\n"
]
},
{
"cell_type": "code",
"execution_count": 279,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Modeling step to test different algorithms\n",
"\n",
"random_state = 2\n",
"classifiers = []\n",
"classifiers.append(SVC(random_state=random_state))\n",
"classifiers.append(DecisionTreeClassifier(random_state=random_state))\n",
"classifiers.append(AdaBoostClassifier(DecisionTreeClassifier(random_state=random_state),random_state=random_state,learning_rate=0.1))\n",
"classifiers.append(RandomForestClassifier(random_state=random_state))\n",
"classifiers.append(ExtraTreesClassifier(random_state=random_state))\n",
"classifiers.append(GradientBoostingClassifier(random_state=random_state))\n",
"classifiers.append(MLPClassifier(random_state=random_state))\n",
"classifiers.append(KNeighborsClassifier())\n",
"classifiers.append(LogisticRegression(random_state=random_state))\n",
"classifiers.append(LinearDiscriminantAnalysis())\n",
"\n",
"cv_results =[]\n",
"for classifier in classifiers:\n",
" cv_results.append(cross_val_score(classifier,train_data_cleaned,y=survived_train,scoring=\"accuracy\",cv=kfold,n_jobs=4))\n",
" \n",
"cv_means = []\n",
"cv_std = []\n",
"\n",
"for cv_result in cv_results:\n",
" cv_means.append(cv_result.mean())\n",
" cv_std.append(cv_result.std())\n",
"\n",
"cv_res = pd.DataFrame({'CrossValMeans':cv_means,'CrossValErrors':cv_std,'Algorithm':['SVC', 'DecisionTree','AdaBoost','RandomForest','ExtraTrees','GradientBoosting','MultipleLayerPerceptron','KNeighbors','LogisticRegression','LDA']})\n",
"\n",
"g =sns.barplot('CrossValMeans','Algorithm', data=cv_res,palette='Set3',orient='h',**{'xerr':cv_std})\n",
"g.set_xlabel('Mean Accuracy')\n",
"g = g.set_title('Cross Validation Scores')"
]
},
{
"cell_type": "code",
"execution_count": 280,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 10 folds for each of 112 candidates, totalling 1120 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 1120 out of 1120 | elapsed: 3.1s finished\n",
"c:\\users\\krist\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
}
],
"source": [
"# ada boosted decision tree classifier\n",
"\n",
"DTC = DecisionTreeClassifier()\n",
"\n",
"adaDTC = AdaBoostClassifier(DTC,random_state=7)\n",
"\n",
"ada_param_grid = {'base_estimator__criterion':['gini','entropy'],\n",
" 'base_estimator__splitter': ['best','random'],\n",
" 'algorithm':['SAMME','SAMME.R'],\n",
" 'n_estimators':[1,2],\n",
" 'learning_rate' : [0.0001,0.001,0.01,0.1,0.2,0.2,1.5]}\n",
"gsadaDTC = GridSearchCV(adaDTC,param_grid= ada_param_grid,cv=kfold,scoring='accuracy',n_jobs=4,verbose=1)\n",
"\n",
"gsadaDTC.fit(train_data_cleaned,survived_train)\n",
"ada_best= gsadaDTC.best_estimator_"
]
},
{
"cell_type": "code",
"execution_count": 281,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.813692480359147"
]
},
"execution_count": 281,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gsadaDTC.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 282,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"dict_keys(['bootstrap', 'class_weight', 'criterion', 'max_depth', 'max_features', 'max_leaf_nodes', 'min_impurity_decrease', 'min_impurity_split', 'min_samples_leaf', 'min_samples_split', 'min_weight_fraction_leaf', 'n_estimators', 'n_jobs', 'oob_score', 'random_state', 'verbose', 'warm_start'])"
]
},
"execution_count": 282,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ExtraTreesClassifier().get_params().keys()"
]
},
{
"cell_type": "code",
"execution_count": 283,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 10 folds for each of 54 candidates, totalling 540 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 76 tasks | elapsed: 4.6s\n",
"[Parallel(n_jobs=4)]: Done 376 tasks | elapsed: 19.6s\n",
"[Parallel(n_jobs=4)]: Done 540 out of 540 | elapsed: 31.0s finished\n",
"c:\\users\\krist\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"0.8361391694725028"
]
},
"execution_count": 283,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Extra Trees\n",
"\n",
"ExtC = ExtraTreesClassifier()\n",
"\n",
"#search for optimal params\n",
"\n",
"ex_param_grid = {'max_depth':[None],\n",
" 'max_features':[1,3,10],\n",
" 'min_samples_split':[2,3,10],\n",
" 'min_samples_leaf':[1,3,10],\n",
" 'bootstrap':[False],\n",
" 'n_estimators': [100,300],\n",
" 'criterion':['gini']}\n",
"\n",
"gsExtC = GridSearchCV(ExtC,param_grid=ex_param_grid,cv=kfold,scoring='accuracy',n_jobs=4,verbose=1)\n",
"\n",
"gsExtC.fit(train_data_cleaned,survived_train)\n",
"\n",
"ExtC_best = gsExtC.best_estimator_\n",
"\n",
"gsExtC.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 284,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 10 folds for each of 54 candidates, totalling 540 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 76 tasks | elapsed: 5.1s\n",
"[Parallel(n_jobs=4)]: Done 376 tasks | elapsed: 24.3s\n",
"[Parallel(n_jobs=4)]: Done 540 out of 540 | elapsed: 41.8s finished\n",
"c:\\users\\krist\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"0.8383838383838383"
]
},
"execution_count": 284,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Random forest classifier\n",
"\n",
"RFC = RandomForestClassifier()\n",
"\n",
"rf_param_grid = {'max_depth':[None],\n",
" 'max_features':[1,3,10],\n",
" 'min_samples_split':[2,3,10],\n",
" 'min_samples_leaf': [1,3,10],\n",
" 'bootstrap' : [False],\n",
" 'n_estimators':[100,300],\n",
" 'criterion':['gini']}\n",
"gsRFC = GridSearchCV(RFC,param_grid=rf_param_grid, cv=kfold,scoring='accuracy',n_jobs=4,verbose=1)\n",
"\n",
"gsRFC.fit(train_data_cleaned,survived_train)\n",
"RFC_best = gsRFC.best_estimator_\n",
"\n",
"gsRFC.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 285,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 10 folds for each of 72 candidates, totalling 720 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 144 tasks | elapsed: 3.5s\n",
"[Parallel(n_jobs=4)]: Done 720 out of 720 | elapsed: 17.0s finished\n"
]
},
{
"data": {
"text/plain": [
"0.8305274971941639"
]
},
"execution_count": 285,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"GBC = GradientBoostingClassifier()\n",
"\n",
"gb_param_grid = {'loss':['deviance'],\n",
" 'n_estimators': [100,200,300],\n",
" 'learning_rate': [0.1,0.05,0.01],\n",
" 'max_depth':[4,8],\n",
" 'min_samples_leaf': [100,150],\n",
" 'max_features': [ 0.3, 0.1]\n",
" }\n",
"\n",
"gsGBC = GridSearchCV(GBC,param_grid = gb_param_grid,cv=kfold,scoring='accuracy',n_jobs = 4,verbose =1)\n",
"\n",
"gsGBC.fit(train_data_cleaned,survived_train)\n",
"\n",
"GBC_best = gsGBC.best_estimator_\n",
"\n",
"gsGBC.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 286,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 10 folds for each of 28 candidates, totalling 280 fits\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"[Parallel(n_jobs=4)]: Using backend LokyBackend with 4 concurrent workers.\n",
"[Parallel(n_jobs=4)]: Done 76 tasks | elapsed: 3.9s\n",
"[Parallel(n_jobs=4)]: Done 280 out of 280 | elapsed: 26.8s finished\n",
"c:\\users\\krist\\appdata\\local\\programs\\python\\python37-32\\lib\\site-packages\\sklearn\\model_selection\\_search.py:814: DeprecationWarning: The default of the `iid` parameter will change from True to False in version 0.22 and will be removed in 0.24. This will change numeric results when test-set sizes are unequal.\n",
" DeprecationWarning)\n"
]
},
{
"data": {
"text/plain": [
"0.8170594837261503"
]
},
"execution_count": 286,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SVMC = SVC(probability=True)\n",
"\n",
"svc_param_grid = {'kernel':['rbf'],\n",
" 'gamma': [0.001,0.01,0.1,1],\n",
" 'C': [1,10,50,100,200,300,1000]}\n",
"\n",
"gsSVMC = GridSearchCV(SVMC,param_grid = svc_param_grid,cv=kfold,scoring='accuracy',n_jobs=4,verbose=1)\n",
"\n",
"gsSVMC.fit(train_data_cleaned,survived_train)\n",
"\n",
"SVMC_best = gsSVMC.best_estimator_\n",
"\n",
"gsSVMC.best_score_\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# **Ensemble modeling**"
]
},
{
"cell_type": "code",
"execution_count": 287,
"metadata": {},
"outputs": [],
"source": [
"votingC = VotingClassifier(estimators = [('rfc',RFC_best),('extc',ExtC_best),('adac',ada_best),('svc',SVMC_best),('gbc',GBC_best)],voting ='soft',n_jobs=4)\n",
"\n",
"votingC = votingC.fit(train_data_cleaned,survived_train)"
]
},
{
"cell_type": "code",
"execution_count": 288,
"metadata": {},
"outputs": [],
"source": [
"test = load_data(test_file)"
]
},
{
"cell_type": "code",
"execution_count": 289,
"metadata": {},
"outputs": [],
"source": [
"test_id = test['PassengerId']\n",
"drop_cols = ['Ticket','Name','Cabin','PassengerId']"
]
},
{
"cell_type": "code",
"execution_count": 290,
"metadata": {},
"outputs": [],
"source": [
"test_cleaned = clean_data(test,drop_cols)"
]
},
{
"cell_type": "code",
"execution_count": 291,
"metadata": {},
"outputs": [],
"source": [
"test_survived = pd.DataFrame({'PassengerId':test_id,'Survived':votingC.predict(test_cleaned)})"
]
},
{
"cell_type": "code",
"execution_count": 295,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>PassengerId</th>\n",
" <th>Survived</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>892</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>893</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>894</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>895</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>896</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>897</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>898</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>899</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>900</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>901</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>902</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>903</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>904</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>905</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>906</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>907</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>908</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>909</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>910</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>911</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>912</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>913</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>914</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>915</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>916</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>917</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>918</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>919</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>920</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>921</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>388</th>\n",
" <td>1280</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>389</th>\n",
" <td>1281</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>390</th>\n",
" <td>1282</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>391</th>\n",
" <td>1283</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>392</th>\n",
" <td>1284</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>393</th>\n",
" <td>1285</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>394</th>\n",
" <td>1286</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>395</th>\n",
" <td>1287</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>396</th>\n",
" <td>1288</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>397</th>\n",
" <td>1289</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>398</th>\n",
" <td>1290</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>399</th>\n",
" <td>1291</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>400</th>\n",
" <td>1292</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>401</th>\n",
" <td>1293</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>402</th>\n",
" <td>1294</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>403</th>\n",
" <td>1295</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>404</th>\n",
" <td>1296</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>405</th>\n",
" <td>1297</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>406</th>\n",
" <td>1298</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>407</th>\n",
" <td>1299</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>408</th>\n",
" <td>1300</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>409</th>\n",
" <td>1301</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>410</th>\n",
" <td>1302</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>411</th>\n",
" <td>1303</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>412</th>\n",
" <td>1304</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>413</th>\n",
" <td>1305</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>414</th>\n",
" <td>1306</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>415</th>\n",
" <td>1307</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>416</th>\n",
" <td>1308</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>417</th>\n",
" <td>1309</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>418 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" PassengerId Survived\n",
"0 892 0\n",
"1 893 0\n",
"2 894 0\n",
"3 895 0\n",
"4 896 0\n",
"5 897 0\n",
"6 898 0\n",
"7 899 0\n",
"8 900 1\n",
"9 901 0\n",
"10 902 0\n",
"11 903 0\n",
"12 904 1\n",
"13 905 0\n",
"14 906 1\n",
"15 907 1\n",
"16 908 0\n",
"17 909 0\n",
"18 910 0\n",
"19 911 1\n",
"20 912 0\n",
"21 913 1\n",
"22 914 1\n",
"23 915 0\n",
"24 916 1\n",
"25 917 0\n",
"26 918 1\n",
"27 919 0\n",
"28 920 1\n",
"29 921 0\n",
".. ... ...\n",
"388 1280 0\n",
"389 1281 0\n",
"390 1282 0\n",
"391 1283 1\n",
"392 1284 1\n",
"393 1285 0\n",
"394 1286 0\n",
"395 1287 1\n",
"396 1288 0\n",
"397 1289 1\n",
"398 1290 0\n",
"399 1291 0\n",
"400 1292 1\n",
"401 1293 0\n",
"402 1294 1\n",
"403 1295 0\n",
"404 1296 1\n",
"405 1297 0\n",
"406 1298 0\n",
"407 1299 0\n",
"408 1300 1\n",
"409 1301 1\n",
"410 1302 1\n",
"411 1303 1\n",
"412 1304 0\n",
"413 1305 0\n",
"414 1306 1\n",
"415 1307 0\n",
"416 1308 0\n",
"417 1309 1\n",
"\n",
"[418 rows x 2 columns]"
]
},
"execution_count": 295,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test_survived"
]
},
{
"cell_type": "code",
"execution_count": 296,
"metadata": {},
"outputs": [],
"source": [
"test_survived.to_csv('titanic.csv',index=False)"
]
},
{
"cell_type": "code",
"execution_count": 294,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x1080 with 4 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"nrows = ncols = 2\n",
"fig, axes = plt.subplots(nrows = nrows, ncols = ncols, sharex=\"all\", figsize=(15,15))\n",
"\n",
"names_classifiers = [(\"AdaBoosting\", ada_best),(\"ExtraTrees\",ExtC_best),(\"RandomForest\",RFC_best),(\"GradientBoosting\",GBC_best)]\n",
"\n",
"nclassifier = 0\n",
"for row in range(nrows):\n",
" for col in range(ncols):\n",
" name = names_classifiers[nclassifier][0]\n",
" classifier = names_classifiers[nclassifier][1]\n",
" indices = np.argsort(classifier.feature_importances_)[::-1][:40]\n",
" g = sns.barplot(y=train_data_cleaned.columns[indices][:40],x = classifier.feature_importances_[indices][:40] , orient='h',ax=axes[row][col])\n",
" g.set_xlabel(\"Relative importance\",fontsize=12)\n",
" g.set_ylabel(\"Features\",fontsize=12)\n",
" g.tick_params(labelsize=9)\n",
" g.set_title(name + \" feature importance\")\n",
" nclassifier += 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment