Skip to content

XingYihang1/airline-passenger-satisfaction-prediction

Repository files navigation

航空公司乘客满意度预测项目

项目简介

本项目使用多种机器学习算法对航空公司乘客满意度进行二分类预测。通过分析乘客的基本信息、飞行体验、服务质量等多个维度的特征,构建了多个预测模型,并进行了详细的性能比较和特征工程分析。

数据集

  • 训练集: 103,904 条记录
  • 测试集: 25,976 条记录
  • 特征数量: 23个特征
  • 目标变量: 满意度 (Satisfied/Dissatisfied)
  • 数据平衡性: 满意乘客占56.67%,不满意乘客占43.33%

主要特征类别

  1. 乘客基本信息: 性别、年龄、客户类型、出行类型
  2. 飞行信息: 舱位等级、飞行距离、延误时间
  3. 服务质量评价: 在线服务、机上服务、座位舒适度等多项评分

项目结构

airline-passenger-satisfaction-prediction/
├── src/                          # 源代码目录
│   ├── main.py                   # 主程序文件(数据加载和预处理)
│   ├── models.py                 # 机器学习模型实现
│   └── feature_engineering.py    # 特征工程模块
├── data/                         # 数据目录
│   ├── train.csv                 # 训练数据
│   └── test.csv                  # 测试数据
├── results/                      # 结果目录
│   ├── figures/                  # 图片结果
│   ├── models/                   # 模型文件
│   └── model_performance_summary.csv  # 性能汇总
├── docs/                         # 文档目录
├── run_analysis.py               # 主运行脚本
├── requirements.txt              # 依赖包列表
└── README.md                     # 项目说明

模型算法

本项目实现了以下机器学习算法:

1. 支持向量机 (SVM)

  • 核函数: RBF核
  • 超参数优化: 网格搜索和随机搜索
  • 最佳参数: C=10, gamma=0.1
  • 性能: 精确率95.23%, F1分数94.19%, 召回率93.17%

2. 多层感知机 (MLP)

  • 网络结构: 15-20个神经元的隐藏层
  • 激活函数: tanh
  • 优化算法: SGD
  • 性能: 精确率96.54%, F1分数94.15%, 召回率91.89%

3. K近邻算法 (KNN)

  • K值: √n = 322 (基于训练集大小)
  • 距离度量: 欧几里得距离
  • 性能: 精确率95.31%, F1分数87.61%, 召回率81.07%

4. 决策树 (Decision Tree)

  • 算法: CART算法
  • 剪枝: 成本复杂度剪枝 (ccp_alpha)
  • 性能: 精确率92.10%, F1分数92.49%, 召回率92.88%

5. 随机森林 (Random Forest)

  • 树的数量: 100棵
  • 特征选择: log2
  • 性能: 精确率97.13%, F1分数95.31%, 召回率93.56%

6. XGBoost

  • 目标函数: 二分类逻辑回归
  • 性能: 在特征重要性分析中表现优异

特征工程

主成分分析 (PCA)

  • 保留方差比例: 95%
  • 主成分数量: 根据数据自动确定
  • 结果: PCA降维后模型性能略有下降,说明原始特征均包含重要信息

特征选择

  • 方法: 基于随机森林和XGBoost的特征重要性
  • 阈值: 2%
  • 重要特征:
    • Online boarding (在线登机服务)
    • Type of Travel (出行类型)
    • Inflight wifi service (机上WiFi服务)
    • Business class (商务舱)

特征重要性分析

根据分析结果,最重要的特征包括:

  1. Online boarding - 在线登机服务
  2. Type of Travel - 出行类型
  3. Inflight wifi service - 机上WiFi服务
  4. Business class - 商务舱等级

数据预处理

缺失值处理

  • 缺失特征: Arrival Delay in Minutes (到达延误时间)
  • 处理方法: 用0填充(基于该特征的数据分布特征)

特征编码

  • 分类变量: 使用虚拟变量编码
    • 性别: Male=1, Female=0
    • 客户类型: Loyal Customer=1, disloyal Customer=0
    • 出行类型: Business travel=1, Personal Travel=0
    • 舱位等级: 独热编码 (Business, Eco Plus, Eco)

数据标准化

  • 方法: Min-Max标准化
  • 目的: 确保所有特征在同一量纲上

模型性能对比

模型 准确率 精确率 召回率 F1分数
Random Forest 0.9571 0.9713 0.9356 0.9531
MLP 0.9445 0.9654 0.9189 0.9415
SVM 0.9402 0.9523 0.9317 0.9419
KNN 0.8798 0.9531 0.8107 0.8761
Decision Tree 0.9288 0.9210 0.9288 0.9249

关键发现

  1. 最佳模型: 随机森林在整体性能上表现最佳,准确率达到95.71%
  2. 特征重要性: 在线登机服务是最重要的预测特征
  3. 数据质量: 原始数据特征均包含有用信息,PCA降维会导致性能下降
  4. 业务洞察:
    • 商务出行乘客满意度更高
    • 在线服务体验对满意度影响最大
    • 舱位等级与服务质量的关联性强

安装和使用

环境要求

  • Python 3.7+
  • 所需包见 requirements.txt

安装依赖

pip install -r requirements.txt

运行分析

完整分析 (推荐):

python run_analysis.py

⏱️ 预计运行时间: 30-60分钟 (取决于硬件配置) 📊 包含6个模型的完整训练和特征工程分析

快速演示:

python simple_demo.py

⏱️ 预计运行时间: 1-2分钟 🎬 演示训练进度提示,只训练1个快速模型

测试项目:

python test_project.py

⏱️ 预计运行时间: 1-2分钟 ✅ 验证项目是否正常工作

使用保存的模型:

python use_saved_models.py

📂 检查和使用已保存的模型进行预测 🔮 演示如何加载模型并进行预测

进度提示功能

项目现在包含详细的训练进度提示:

  • 🎯 阶段进度: 显示当前执行的分析阶段
  • 时间信息: 显示开始时间、耗时和完成时间
  • 📊 模型进度: 显示当前训练的模型和参数
  • 🔍 超参数搜索: 显示网格搜索和随机搜索的进度
  • 完成状态: 每个步骤完成时显示耗时和结果

模型保存和加载功能

项目现在支持自动保存训练好的模型:

  • 💾 自动保存: 训练完成后自动保存所有模型到 results/models/ 目录
  • 📂 分类保存: 按数据类型分类保存(原始数据、PCA、特征选择等)
  • 🔄 模型加载: 支持加载保存的模型进行预测
  • 🎯 便捷使用: 提供 use_saved_models.py 脚本演示模型使用

保存的模型类型

  • original_*_model.pkl - 原始数据训练的模型
  • pca_*_model.pkl - PCA降维后训练的模型
  • rf_selected_*_model.pkl - RandomForest特征选择后的模型
  • xgb_selected_*_model.pkl - XGBoost特征选择后的模型

支持的模型

  • SVM (支持向量机)
  • MLP (多层感知机)
  • KNN (K近邻)
  • DecisionTree (决策树)
  • RandomForest (随机森林)
  • XGBoost (梯度提升)

单独运行模块

# 数据预处理
python src/main.py

# 模型训练
python -c "from src.models import MLModels; print('模型模块加载成功')"

# 特征工程
python -c "from src.feature_engineering import FeatureEngineering; print('特征工程模块加载成功')"

结果文件说明

图片文件

  • correlation_heat_map.png - 特征相关性热力图
  • *_confusion_matrix.png - 各模型混淆矩阵
  • pca_components_loadings.png - PCA主成分载荷图
  • *_feature_importance.png - 特征重要性排序图
  • *_hyperparameter_search.png - 超参数搜索热力图

数据文件

  • model_performance_summary.csv - 模型性能汇总表
  • feature_importance_ranking.xlsx - 特征重要性排序表

模型文件

  • original_*_model.pkl - 原始数据训练的模型文件
  • pca_*_model.pkl - PCA降维后的模型文件
  • rf_selected_*_model.pkl - RandomForest特征选择后的模型文件
  • xgb_selected_*_model.pkl - XGBoost特征选择后的模型文件

技术特点

  1. 模块化设计: 代码结构清晰,易于维护和扩展
  2. 完整流程: 从数据预处理到模型评估的完整机器学习流程
  3. 多算法对比: 实现了6种主流机器学习算法
  4. 特征工程: 包含PCA降维、特征选择等高级技术
  5. 可视化分析: 丰富的图表展示分析结果
  6. 性能优化: 使用网格搜索和随机搜索进行超参数优化
  7. 模型持久化: 自动保存和加载训练好的模型
  8. 进度监控: 详细的训练进度提示和时间统计
  9. 便捷使用: 提供多种运行方式和演示脚本

项目贡献

本项目展示了完整的机器学习项目开发流程,包括:

  • 探索性数据分析 (EDA)
  • 数据预处理和特征工程
  • 多种机器学习算法实现
  • 模型性能评估和对比
  • 业务洞察和结果解释

未来改进方向

  1. 深度学习: 尝试使用神经网络进行更复杂的特征学习
  2. 集成学习: 探索更多集成学习方法
  3. 特征工程: 创建更多衍生特征
  4. 超参数优化: 使用更先进的优化算法
  5. 模型解释: 增加模型可解释性分析

许可证

本项目仅供学习和研究使用。

联系方式

如有问题或建议,欢迎提出Issue或Pull Request。

About

使用多种机器学习模型预测航空公司乘客满意度(二分类问题),并比较不同模型的效果

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages