基于机器学习的酒店数据分析及流失预测系统
本系统是一个面向酒店行业的客户数据分析与流失预测平台,基于 Antonio et al. (2019) 公开的酒店预订需求数据集,采用 Flask + SQLite + ECharts + scikit-learn 技术栈,实现数据可视化分析、机器学习流失预测、模型管理等功能,帮助酒店管理者识别流失风险客户并制定针对性挽留策略。
项目封面

项目说明
基于机器学习的酒店数据分析及流失预测系统
项目简介
本系统是一个面向酒店行业的客户数据分析与流失预测平台,基于 Antonio et al. (2019) 公开的酒店预订需求数据集,采用 Flask + SQLite + ECharts + scikit-learn 技术栈,实现数据可视化分析、机器学习流失预测、模型管理等功能,帮助酒店管理者识别流失风险客户并制定针对性挽留策略。
功能模块
| 模块 | 功能说明 |
|---|---|
| 用户认证 | 用户登录、注册、角色权限管理(管理员/普通用户) |
| 数据概览 | 核心KPI仪表盘(总预订量、取消率、流失率、平均ADR)、月度预订与流失趋势折线图、酒店类型分布环形图、Top10客源国柱状图、市场细分占比环形图 |
| 数据分析 | 城市酒店与度假酒店对比、膳食类型分布、客户类型分析、提前预订天数分布、ADR价格区间分布、市场细分取消率、市场细分详细数据表格 |
| 流失分析 | 押金类型与流失率、流失关键因素分析、提前预订天数与流失率关系、ADR区间与流失率关系、客户类型流失对比、流失因素统计表 |
| 流失预测 | 单条客户流失预测(输入预订信息,输出流失概率与风险等级)、批量预测验证(最近50条数据验证)、预测历史记录 |
| 模型管理 | 支持随机森林/梯度提升/逻辑回归三种算法训练、混淆矩阵热力图、ROC曲线、特征重要性Top10排名、训练历史记录 |
| 数据管理 | 多条件筛选查询(酒店类型/流失状态/取消状态/关键词)、分页浏览、CSV数据导出 |
| 报表中心 | 综合数据报表、流失分析报表、模型评估报表(支持打印) |
| 用户管理 | 管理员专属页面,用户列表查看与删除 |
数据来源
| 数据集 | 文件 | 记录数 | 说明 |
|---|---|---|---|
| Hotel Booking Demand | hotels.csv | ~119,390 条 | 来源于 Antonio, Almeida and Nunes (2019),包含城市酒店和度假酒店的预订数据 |
数据集下载地址:TidyTuesday - Hotel Booking Demand
流失定义
客户流失标签(churn_label)定义规则:
- 流失(1):预订取消(is_canceled = 1),或非回头客且有历史取消记录
- 未流失(0):不符合上述条件的客户
标准版目录结构
python-hotel-booking-fenxi-liushi/
├── app.py # Flask 应用主入口,路由定义与API接口
├── config.py # 应用配置(数据库路径、密钥、分页参数)
├── database.py # SQLite 数据库连接管理、建表、数据导入
├── init_system.py # 系统初始化脚本(建库、导入数据、训练模型)
├── requirements.txt # Python 依赖包清单
├── data/
│ └── hotels.csv # 酒店预订数据集
├── database/
│ └── hotel.db # SQLite 数据库文件(自动生成)
├── ml/
│ ├── __init__.py
│ ├── preprocess.py # 数据预处理(特征工程、编码)
│ ├── train.py # 模型训练(随机森林/梯度提升/逻辑回归)
│ └── predict.py # 预测服务(单条预测、批量预测)
├── models/
│ ├── churn_model.pkl # 训练好的模型文件(自动生成)
│ ├── model_metrics.json # 模型评估指标(自动生成)
│ └── feature_importance.json # 特征重要性(自动生成)
├── services/
│ ├── __init__.py
│ ├── auth_service.py # 认证服务(登录、注册、用户管理)
│ └── analysis_service.py # 数据分析服务(统计、检索、导出)
├── static/
│ ├── css/
│ │ └── custom.css # 自定义样式
│ └── js/
│ ├── common.js # 全局工具函数与ECharts封装
│ ├── dashboard.js # 数据概览页图表
│ ├── analysis.js # 数据分析页图表
│ ├── churn_analysis.js # 流失分析页图表
│ ├── model.js # 模型管理页图表
│ ├── predict.js # 流失预测页交互
│ ├── data.js # 数据管理页交互
│ └── reports.js # 报表中心页交互
├── templates/
│ ├── base.html # 基础模板(导航栏、CDN引用)
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── dashboard.html # 数据概览页
│ ├── analysis.html # 数据分析页
│ ├── churn_analysis.html # 流失分析页
│ ├── predict.html # 流失预测页
│ ├── model.html # 模型管理页
│ ├── data.html # 数据管理页
│ ├── reports.html # 报表中心页
│ └── admin/
│ └── users.html # 用户管理页
├── 运行步骤必看/
│ └── window.md # Windows 运行步骤说明
├── mac_run.sh # macOS/Linux 一键启动脚本
├── window_run.bat # Windows 一键启动脚本
├── 训练手册.md # 模型训练手册
├── 项目说明.md # 本文档
└── README.md # 项目简介
技术栈
| 类别 | 技术 |
|---|---|
| 后端 | Python 3.12 + Flask 3.0 |
| 数据库 | SQLite 3 |
| 前端 | HTML5 + Bootstrap 5.3 + ECharts 5.5 |
| 机器学习 | scikit-learn 1.5(随机森林 / 梯度提升 / 逻辑回归) |
| 数据处理 | pandas 2.2 + numpy 1.26 |
| 模型持久化 | joblib 1.4 |
| 密码安全 | SHA-256 哈希 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 2GB 以上(模型训练时使用) |
| 磁盘 | 约 300MB(含依赖和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
| 普通用户 | analyst | analyst123 |
管理员拥有用户管理页面访问权限,可删除普通用户。新注册用户默认为普通用户角色。
模型评估
系统默认使用随机森林分类器,典型指标:
- 准确率 (Accuracy): ~87%
- F1 分数: ~80%
- AUC: ~93%
实际指标取决于数据集导入和训练结果。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

电商用户行为漏斗与CRO转化率优化分析
电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

多组学癌症预后预测分析系统
基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

基于 Apriori 算法的中药配伍审查系统
本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

基于 Python 的城市共享单车骑行需求时空分析系统
本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

基于 Python 的短视频用户行为分析系统
基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。