Python for Data Science: Titanic Survival Prediction Exercise

Table of Contents

  1. Introduction
  2. Prerequisites
  3. Setup
  4. Data Exploration
  5. Data Cleaning
  6. Feature Engineering
  7. Model Building
  8. Model Evaluation
  9. Conclusion

Introduction

In this tutorial, we will walk through the steps of building a machine learning model to predict the survival of passengers on the Titanic. This exercise is a classic problem in the field of data science and will allow us to gain hands-on experience with data cleaning, feature engineering, and model building using Python.

By the end of this tutorial, you will have a complete understanding of the data science workflow and be able to apply it to other predictive modeling tasks.

Prerequisites

Before starting this tutorial, you should have a basic understanding of Python programming and familiarity with the pandas, numpy, and scikit-learn libraries. Additionally, you should have Jupyter Notebook or any Python IDE installed on your machine.

Setup

To get started, we need to download the Titanic dataset from Kaggle. You can find the dataset at the following link: Titanic Dataset

Once you have downloaded the dataset, create a new folder on your local machine and place the dataset file inside it.

Now, let’s open Jupyter Notebook or your preferred Python IDE and create a new Python script to work on.

Data Exploration

Before diving into the actual modeling process, it is important to understand the data we are working with. Let’s start by loading the dataset into a pandas DataFrame and exploring its structure. ```python import pandas as pd

# Load the dataset into a DataFrame
data = pd.read_csv('path/to/titanic_dataset.csv')

# Display the first few rows of the DataFrame
data.head()
``` This will give us a sneak peek at the columns and values present in the dataset. We can also use various pandas functions to gather statistics and insights about the data. For example:
```python
# Check the summary statistics of numeric columns
data.describe()

# Check the data types and missing values in each column
data.info()
``` ## Data Cleaning Now that we have a basic understanding of the data, let's clean it up by handling missing values and removing unnecessary columns.
```python
# Drop columns with high missing value proportions
data = data.drop(columns=['Cabin'])

# Fill missing values in numeric columns with median
data['Age'] = data['Age'].fillna(data['Age'].median())
data['Fare'] = data['Fare'].fillna(data['Fare'].median())

# Fill missing values in categorical columns with mode
data['Embarked'] = data['Embarked'].fillna(data['Embarked'].mode()[0])
``` We can also create new columns based on existing ones to extract useful information. For example, we can create a new column to represent the title of each passenger:
```python
# Extract title from the Name column
data['Title'] = data['Name'].str.extract(' ([A-Za-z]+)\.', expand=False)
``` ## Feature Engineering Feature engineering plays a crucial role in predictive modeling. Let's create some meaningful features from the existing columns to enhance our model's performance.
```python
# Create a new column to represent family size
data['FamilySize'] = data['SibSp'] + data['Parch'] + 1

# Create a new column to represent whether the passenger is traveling alone
data['IsAlone'] = 1
data.loc[data['FamilySize'] > 1, 'IsAlone'] = 0

# Convert categorical variables into numeric using one-hot encoding
data = pd.get_dummies(data, columns=['Sex', 'Embarked'])
``` ## Model Building Now that our data is cleaned and features are engineered, we can proceed with building a machine learning model. In this tutorial, we will use the popular Random Forest algorithm.
```python
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(data.drop(columns=['Survived']), data['Survived'], test_size=0.2, random_state=42)

# Initialize the Random Forest classifier
rf_model = RandomForestClassifier()

# Fit the model to the training data
rf_model.fit(X_train, y_train)
``` ## Model Evaluation It is important to evaluate the performance of our model to understand its accuracy and generalization capability. Let's make predictions on the test set and calculate the accuracy score.
```python
from sklearn.metrics import accuracy_score

# Make predictions on the test set
y_pred = rf_model.predict(X_test)

# Calculate the accuracy score
accuracy = accuracy_score(y_test, y_pred)
``` ## Conclusion Congratulations! You have successfully built a machine learning model to predict the survival of passengers on the Titanic. In this tutorial, we covered data exploration, data cleaning, feature engineering, model building, and model evaluation.

The techniques and concepts used in this tutorial can be applied to other data science projects as well. Keep exploring and practicing to gain more hands-on experience in the field of data science.