项目简介:基于公开数据集 Hotel Booking Demand(119,390 条原始记录,覆盖 2015–2017 年葡萄牙 City Hotel 与 Resort Hotel 两类酒店),完整走通数据清洗 → 探索性分析(EDA)→ 特征工程 → 机器学习建模 → 模型解释 → 可视化交付的数据分析标准链路。
核心目标:① 洞察客源结构、价格规律与预订取消模式;② 构建高精度取消预测模型,为酒店运营(客房规划、餐饮备货等)提供决策支持。
成果:清洗后 119,210 条有效预订、取消率 37.1%;四模型 4 折交叉验证中,调参后的增强随机森林以 86.81% 准确率夺冠;并配套一套深色科技风 Streamlit 数据大屏,支持交互式探索与单条预订取消概率预测。
一、项目背景
酒店经营者为了提高客房出租率,常提前将客房预订一空,但顾客预订后可能因各种原因取消,给酒店带来未来出租的不确定性。本项目基于葡萄牙两家酒店(H1 阿尔加维度假区 Resort Hotel、H2 里斯本市中心 City Hotel,相距约 280 公里)在 2015-07-01 ~ 2017-08-31 期间的预订数据,完成数据分析与取消预测,帮助酒店提前预判哪些订单可能「爽约」。
二、数据与预处理
- 数据来源:Kaggle「Hotel Booking Demand」公开数据集(119,390 条原始记录,32 个字段,含分类与数值特征)。
- 数据规模:清洗后 119,210 条有效预订,总体取消率 37.1%。
- EDA 关注问题:客人来自哪里?每晚房费多少?一年中价格如何变化?哪个月最忙?住多久?按市场细分的预订情况?取消集中在哪几个月?
三、分析链路与模型
| 步骤 | 内容 |
|---|---|
| 数据清洗 | 缺失值处理、异常值过滤、类别编码 |
| EDA | 客源国分布、房价(房型 / 月度 / 渠道)、入住时长、月度客流、取消率、相关性分析 |
| 特征工程 | 分类特征 One-Hot / Label 编码、数值特征标准化 |
| 建模评估 | 4 折交叉验证,比较四类模型准确率 |
| 模型解释 | 特征重要性排序,识别影响取消的关键因素 |
| 可视化交付 | Streamlit 数据大屏 + 单条预订取消概率预测 |
模型表现(4 折交叉验证准确率)
| 模型 | 准确率 | 说明 |
|---|---|---|
| 决策树 Decision Tree | 82.46% | 基线模型,可解释性强 |
| 随机森林 Random Forest | 86.64% | 集成提升,默认参数 |
| 逻辑回归 Logistic Regression | 79.37% | 线性基线(StandardScaler 缩放) |
| 增强随机森林 Enhanced RF ★ | 86.81% | 调参后最佳(n_estimators=160, max_features=0.4) |
1 | # 建模评估核心流程(摘要) |
四、Streamlit 数据大屏
深色科技风交互看板,包含三大功能模块:
| 模块 | 功能 |
|---|---|
| 📊 数据概览 | KPI 大屏卡(总预订量 / 取消数 / 提前天数 / 均价)、两类酒店预订量对比、预订渠道占比、缺失值检查与数据预览 |
| 🔍 探索性分析 | 客源国分布(饼图 + 世界地图)、房价分析(房型 / 月度趋势 / 渠道×房型)、入住时长、月度客流、取消率、相关性 Top10 |
| 🤖 取消预测 | 混淆矩阵、特征重要性,单条预订取消概率预测(仪表盘 + 风险等级) |
1 | # 启动 Streamlit 数据大屏 |
五、技术栈与项目结构
技术栈:Python 3 · pandas / numpy / matplotlib / seaborn / plotly / xgboost / scikit-learn / Streamlit / Jupyter。
| 文件 / 目录 | 说明 |
|---|---|
hotel_bookings.csv |
酒店预订数据(119,390 条原始) |
酒店预订分析预测.ipynb |
完整分析 Notebook(EDA + 建模) |
streamlit_app.py |
Streamlit 数据大屏 |
requirements.txt |
Python 依赖 |
index.html |
项目介绍页 |

