Titanic Survival Prediction

基于 Titanic 数据集的完整机器学习项目,涵盖数据清洗、特征工程、多模型对比和模型解释的端到端流程。

入门 Completed 2023
PythonPandasNumPyScikit-learnXGBoostMatplotlibSeaborn
Overview

Project Details

Tags

PythonMachine LearningData ScienceClassification

Keywords

TitanicEDAFeature EngineeringRandom ForestXGBoostCross Validation

Architecture

标准数据科学流程:数据获取 → 探索性数据分析(EDA) → 数据清洗 → 特征工程 → 模型训练 → 评估优化 → 结果解释。使用 Jupyter Notebook 进行交互式开发。

项目背景

Titanic 生存预测是机器学习领域的经典入门项目。本项目的目标不仅是获得高准确率,更重要的是展示完整的数据科学工作流:从原始数据到可解释的最终模型。

核心流程

ML Pipeline Workflow
graph LR
  A[Raw Data] --> B[EDA & Cleaning]
  B --> C[Feature Engineering]
  C --> D[Model Training]
  D --> E[Cross Validation]
  E --> F[Hyperparameter Tuning]
  F --> G[Model Ensemble]
  G --> H[Interpretation]

核心功能

  • 数据清洗:缺失值处理、异常值检测、数据类型转换
  • EDA:统计分布、相关性热力图、生存率分析
  • 特征工程:Title 提取、FamilySize、FareBin、AgeBin、Embarked 编码
  • 模型对比:Logistic Regression、Random Forest、XGBoost、SVM
  • 超参数调优:Grid Search + Random Search
  • 模型解释:特征重要性、SHAP 值分析

关键特征

特征原始形式工程后
Name字符串Title (Mr/Mrs/Miss)
Age数值AgeBin + Title 分组填充
SibSp + Parch两个字段FamilySize (组合)
Ticket字符串TicketPrefix + 数值
Cabin字符串HasCabin (布尔)

项目结构

Project Directory Structure
ml-practice/
└── titanic-survival-prediction/
  ├── data/
  │   ├── train.csv
  │   └── test.csv
  ├── notebooks/
  │   ├── 01-eda.ipynb
  │   ├── 02-feature-engineering.ipynb
  │   └── 03-modeling.ipynb
  ├── src/
  │   ├── preprocess.py
  │   ├── features.py
  │   └── model.py
  └── README.md

核心代码

数据探索

Data Exploration - Loading, EDA & Visualization
Loading code...

特征工程

Feature Engineering - Title Extraction & Family Size
Loading code...

效果展示

技术要点

缺失值处理策略

  • Age: 按 Title (Mr/Mrs/Miss/Master) 分组计算中位数填充
  • Embarked: 使用众数填充
  • Fare: 按 Pclass 分组中位数填充
  • Cabin: 转换为 HasCabin 布尔特征(有无 cabin 信息本身就是信号)

模型融合

使用 Stacking(堆叠集成):

  • Level-0: Random Forest + XGBoost + Gradient Boosting
  • Level-1: Logistic Regression 作为元学习器
  • 通过 out-of-fold 预测避免数据泄露

评估指标

  • Accuracy: 总体准确率
  • Precision/Recall: 关注生存者的识别能力
  • ROC-AUC: 模型区分能力
  • Cross-Validation: 5-Fold Stratified K-Fold
Problems Solved

Challenges & Solutions

01

缺失值处理策略:Age 使用 Title 分组中位数填充,Cabin 转换为二进制特征

02

特征工程:从 Name 提取 Title、从 Ticket 提取前缀、FamilySize 组合特征

03

模型融合:Stacking 整合 Random Forest、XGBoost、SVM 的预测结果

Reflections

Key Takeaways

理解了特征工程对模型性能的决定性影响

掌握了交叉验证和超参数调优的系统方法

学会了使用 SHAP/LIME 解释模型预测原因