{
"metadata": {
"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.4-final"
},
"orig_nbformat": 2,
"kernelspec": {
"name": "Python 3.7.4 64-bit ('venv')",
"display_name": "Python 3.7.4 64-bit ('venv')",
"metadata": {
"interpreter": {
"hash": "e284c72d79b42194b3fe2a0767ff9cca6d233ae03063bab113c99e4bc6bd25a8"
}
}
}
},
"nbformat": 4,
"nbformat_minor": 2,
"cells": [
{
"source": [
"# Titanic Model with 90% accuracy\n",
"https://www.kaggle.com/vinothan/titanic-model-with-90-accuracy"
],
"cell_type": "markdown",
"metadata": {}
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np \n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"import warnings\n",
"warnings.filterwarnings('ignore')\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"train_df=pd.read_csv(\"./datasets/titanic/train.csv\")\n",
"test_df=pd.read_csv(\"./datasets/titanic/test.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"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 "
],
"text/html": "
\n\n
\n \n \n | \n PassengerId | \n Survived | \n Pclass | \n Name | \n Sex | \n Age | \n SibSp | \n Parch | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n
\n \n \n \n 0 | \n 1 | \n 0 | \n 3 | \n Braund, Mr. Owen Harris | \n male | \n 22.0 | \n 1 | \n 0 | \n A/5 21171 | \n 7.2500 | \n NaN | \n S | \n
\n \n 1 | \n 2 | \n 1 | \n 1 | \n Cumings, Mrs. John Bradley (Florence Briggs Th... | \n female | \n 38.0 | \n 1 | \n 0 | \n PC 17599 | \n 71.2833 | \n C85 | \n C | \n
\n \n 2 | \n 3 | \n 1 | \n 3 | \n Heikkinen, Miss. Laina | \n female | \n 26.0 | \n 0 | \n 0 | \n STON/O2. 3101282 | \n 7.9250 | \n NaN | \n S | \n
\n \n 3 | \n 4 | \n 1 | \n 1 | \n Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n female | \n 35.0 | \n 1 | \n 0 | \n 113803 | \n 53.1000 | \n C123 | \n S | \n
\n \n 4 | \n 5 | \n 0 | \n 3 | \n Allen, Mr. William Henry | \n male | \n 35.0 | \n 0 | \n 0 | \n 373450 | \n 8.0500 | \n NaN | \n S | \n
\n \n
\n
"
},
"metadata": {},
"execution_count": 3
}
],
"source": [
"train_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"__Test_DataSet_\n"
]
},
{
"output_type": "execute_result",
"data": {
"text/plain": [
" PassengerId Pclass Name Sex \\\n",
"0 892 3 Kelly, Mr. James male \n",
"1 893 3 Wilkes, Mrs. James (Ellen Needs) female \n",
"2 894 2 Myles, Mr. Thomas Francis male \n",
"3 895 3 Wirz, Mr. Albert male \n",
"4 896 3 Hirvonen, Mrs. Alexander (Helga E Lindqvist) female \n",
"\n",
" Age SibSp Parch Ticket Fare Cabin Embarked \n",
"0 34.5 0 0 330911 7.8292 NaN Q \n",
"1 47.0 1 0 363272 7.0000 NaN S \n",
"2 62.0 0 0 240276 9.6875 NaN Q \n",
"3 27.0 0 0 315154 8.6625 NaN S \n",
"4 22.0 1 1 3101298 12.2875 NaN S "
],
"text/html": "\n\n
\n \n \n | \n PassengerId | \n Pclass | \n Name | \n Sex | \n Age | \n SibSp | \n Parch | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n
\n \n \n \n 0 | \n 892 | \n 3 | \n Kelly, Mr. James | \n male | \n 34.5 | \n 0 | \n 0 | \n 330911 | \n 7.8292 | \n NaN | \n Q | \n
\n \n 1 | \n 893 | \n 3 | \n Wilkes, Mrs. James (Ellen Needs) | \n female | \n 47.0 | \n 1 | \n 0 | \n 363272 | \n 7.0000 | \n NaN | \n S | \n
\n \n 2 | \n 894 | \n 2 | \n Myles, Mr. Thomas Francis | \n male | \n 62.0 | \n 0 | \n 0 | \n 240276 | \n 9.6875 | \n NaN | \n Q | \n
\n \n 3 | \n 895 | \n 3 | \n Wirz, Mr. Albert | \n male | \n 27.0 | \n 0 | \n 0 | \n 315154 | \n 8.6625 | \n NaN | \n S | \n
\n \n 4 | \n 896 | \n 3 | \n Hirvonen, Mrs. Alexander (Helga E Lindqvist) | \n female | \n 22.0 | \n 1 | \n 1 | \n 3101298 | \n 12.2875 | \n NaN | \n S | \n
\n \n
\n
"
},
"metadata": {},
"execution_count": 4
}
],
"source": [
"print('__Test_DataSet_')\n",
"test_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"def missingdata(data):\n",
" total = data.isnull().sum().sort_values(ascending = False)\n",
" percent = (data.isnull().sum()/data.isnull().count()*100).sort_values(ascending = False)\n",
" ms=pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])\n",
" ms= ms[ms[\"Percent\"] > 0]\n",
" f,ax =plt.subplots(figsize=(8,6))\n",
" plt.xticks(rotation='90')\n",
" fig=sns.barplot(ms.index, ms[\"Percent\"],color=\"green\",alpha=0.8)\n",
" plt.xlabel('Features', fontsize=15)\n",
" plt.ylabel('Percent of missing values', fontsize=15)\n",
" plt.title('Percent missing data by feature', fontsize=15)\n",
" return ms"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Total Percent\n",
"Cabin 687 77.104377\n",
"Age 177 19.865320\n",
"Embarked 2 0.224467"
],
"text/html": "\n\n
\n \n \n | \n Total | \n Percent | \n
\n \n \n \n Cabin | \n 687 | \n 77.104377 | \n
\n \n Age | \n 177 | \n 19.865320 | \n
\n \n Embarked | \n 2 | \n 0.224467 | \n
\n \n
\n
"
},
"metadata": {},
"execution_count": 6
},
{
"output_type": "display_data",
"data": {
"text/plain": "",
"image/svg+xml": "\n\n\n\n",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"missingdata(train_df)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" Total Percent\n",
"Cabin 327 78.229665\n",
"Age 86 20.574163\n",
"Fare 1 0.239234"
],
"text/html": "\n\n
\n \n \n | \n Total | \n Percent | \n
\n \n \n \n Cabin | \n 327 | \n 78.229665 | \n
\n \n Age | \n 86 | \n 20.574163 | \n
\n \n Fare | \n 1 | \n 0.239234 | \n
\n \n
\n
"
},
"metadata": {},
"execution_count": 7
},
{
"output_type": "display_data",
"data": {
"text/plain": "",
"image/svg+xml": "\n\n\n\n",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"missingdata(test_df)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"30.272590361445783"
]
},
"metadata": {},
"execution_count": 8
}
],
"source": [
"test_df['Age'].mean()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"train_df['Embarked'].fillna(train_df['Embarked'].mode()[0], inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"test_df['Fare'].fillna(test_df['Fare'].median(), inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"drop_column = ['Cabin']\n",
"train_df.drop(drop_column, axis=1, inplace = True)\n",
"test_df.drop(drop_column,axis=1,inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"test_df['Age'].fillna(test_df['Age'].median(), inplace = True)\n",
"train_df['Age'].fillna(train_df['Age'].median(), inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"check the nan value in train data\nPassengerId 0\nSurvived 0\nPclass 0\nName 0\nSex 0\nAge 0\nSibSp 0\nParch 0\nTicket 0\nFare 0\nEmbarked 0\ndtype: int64\n__________________________________________________________________________________________\ncheck the nan value in test data\nPassengerId 0\nPclass 0\nName 0\nSex 0\nAge 0\nSibSp 0\nParch 0\nTicket 0\nFare 0\nEmbarked 0\ndtype: int64\n"
]
}
],
"source": [
"print('check the nan value in train data')\n",
"print(train_df.isnull().sum())\n",
"print('___'*30)\n",
"print('check the nan value in test data')\n",
"print(test_df.isnull().sum())"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [],
"source": [
"all_data=[train_df,test_df]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [],
"source": [
"for dataset in all_data:\n",
" dataset['FamilySize'] = dataset['SibSp'] + dataset['Parch'] + 1"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"import re\n",
"# Define function to extract titles from passenger names\n",
"def get_title(name):\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",
"# Create a new feature Title, containing the titles of passenger names\n",
"for dataset in all_data:\n",
" dataset['Title'] = dataset['Name'].apply(get_title)\n",
"# Group all non-common titles into one single grouping \"Rare\"\n",
"for dataset in all_data:\n",
" dataset['Title'] = dataset['Title'].replace(['Lady', 'Countess','Capt', 'Col','Don', \n",
" 'Dr', 'Major', 'Rev', 'Sir', 'Jonkheer', 'Dona'], 'Rare')\n",
"\n",
" dataset['Title'] = dataset['Title'].replace('Mlle', 'Miss')\n",
" dataset['Title'] = dataset['Title'].replace('Ms', 'Miss')\n",
" dataset['Title'] = dataset['Title'].replace('Mme', 'Mrs')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"## create bin for age features\n",
"for dataset in all_data:\n",
" dataset['Age_bin'] = pd.cut(dataset['Age'], bins=[0,12,20,40,120], labels=['Children','Teenage','Adult','Elder'])"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"## create bin for fare features\n",
"for dataset in all_data:\n",
" dataset['Fare_bin'] = pd.cut(dataset['Fare'], bins=[0,7.91,14.45,31,120], labels=['Low_fare','median_fare',\n",
" 'Average_fare','high_fare'])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"### for our reference making a copy of both DataSet start working for copy of dataset\n",
"traindf=train_df\n",
"testdf=test_df"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"all_dat=[traindf,testdf]"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"for dataset in all_dat:\n",
" drop_column = ['Age','Fare','Name','Ticket']\n",
" dataset.drop(drop_column, axis=1, inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"drop_column = ['PassengerId']\n",
"traindf.drop(drop_column, axis=1, inplace = True)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" PassengerId Pclass Sex SibSp Parch Embarked FamilySize Title \\\n",
"0 892 3 male 0 0 Q 1 Mr \n",
"1 893 3 female 1 0 S 2 Mrs \n",
"\n",
" Age_bin Fare_bin \n",
"0 Adult Low_fare \n",
"1 Elder Low_fare "
],
"text/html": "\n\n
\n \n \n | \n PassengerId | \n Pclass | \n Sex | \n SibSp | \n Parch | \n Embarked | \n FamilySize | \n Title | \n Age_bin | \n Fare_bin | \n
\n \n \n \n 0 | \n 892 | \n 3 | \n male | \n 0 | \n 0 | \n Q | \n 1 | \n Mr | \n Adult | \n Low_fare | \n
\n \n 1 | \n 893 | \n 3 | \n female | \n 1 | \n 0 | \n S | \n 2 | \n Mrs | \n Elder | \n Low_fare | \n
\n \n
\n
"
},
"metadata": {},
"execution_count": 23
}
],
"source": [
"testdf.head(2)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"traindf = pd.get_dummies(traindf, columns = [\"Sex\",\"Title\",\"Age_bin\",\"Embarked\",\"Fare_bin\"],\n",
" prefix=[\"Sex\",\"Title\",\"Age_type\",\"Em_type\",\"Fare_type\"])"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"testdf = pd.get_dummies(testdf, columns = [\"Sex\",\"Title\",\"Age_bin\",\"Embarked\",\"Fare_bin\"],\n",
" prefix=[\"Sex\",\"Title\",\"Age_type\",\"Em_type\",\"Fare_type\"])"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
" PassengerId Pclass SibSp Parch FamilySize Sex_female Sex_male \\\n",
"0 892 3 0 0 1 0 1 \n",
"1 893 3 1 0 2 1 0 \n",
"2 894 2 0 0 1 0 1 \n",
"3 895 3 0 0 1 0 1 \n",
"4 896 3 1 1 3 1 0 \n",
"\n",
" Title_Master Title_Miss Title_Mr ... Age_type_Teenage Age_type_Adult \\\n",
"0 0 0 1 ... 0 1 \n",
"1 0 0 0 ... 0 0 \n",
"2 0 0 1 ... 0 0 \n",
"3 0 0 1 ... 0 1 \n",
"4 0 0 0 ... 0 1 \n",
"\n",
" Age_type_Elder Em_type_C Em_type_Q Em_type_S Fare_type_Low_fare \\\n",
"0 0 0 1 0 1 \n",
"1 1 0 0 1 1 \n",
"2 1 0 1 0 0 \n",
"3 0 0 0 1 0 \n",
"4 0 0 0 1 0 \n",
"\n",
" Fare_type_median_fare Fare_type_Average_fare Fare_type_high_fare \n",
"0 0 0 0 \n",
"1 0 0 0 \n",
"2 1 0 0 \n",
"3 1 0 0 \n",
"4 1 0 0 \n",
"\n",
"[5 rows x 23 columns]"
],
"text/html": "\n\n
\n \n \n | \n PassengerId | \n Pclass | \n SibSp | \n Parch | \n FamilySize | \n Sex_female | \n Sex_male | \n Title_Master | \n Title_Miss | \n Title_Mr | \n ... | \n Age_type_Teenage | \n Age_type_Adult | \n Age_type_Elder | \n Em_type_C | \n Em_type_Q | \n Em_type_S | \n Fare_type_Low_fare | \n Fare_type_median_fare | \n Fare_type_Average_fare | \n Fare_type_high_fare | \n
\n \n \n \n 0 | \n 892 | \n 3 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n ... | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n
\n \n 1 | \n 893 | \n 3 | \n 1 | \n 0 | \n 2 | \n 1 | \n 0 | \n 0 | \n 0 | \n 0 | \n ... | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 1 | \n 0 | \n 0 | \n 0 | \n
\n \n 2 | \n 894 | \n 2 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n ... | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n
\n \n 3 | \n 895 | \n 3 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n ... | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n
\n \n 4 | \n 896 | \n 3 | \n 1 | \n 1 | \n 3 | \n 1 | \n 0 | \n 0 | \n 0 | \n 0 | \n ... | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n
\n \n
\n
5 rows × 23 columns
\n
"
},
"metadata": {},
"execution_count": 26
}
],
"source": [
"testdf.head()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "",
"image/svg+xml": "\n\n\n