这个项目解决什么问题
共享单车需求预测(Kaggle Bike Sharing Demand 数据集)看起来是个回归问题,实质上是时间特征工程的问题:需求随小时、星期、季节、天气呈现强规律,谁能把"时间"用好,谁就赢。本项目还特意纠正了一个教程里常见的错误——时间数据随机切分——并补上了多数教程缺失的"残差诊断"环节,让模型误差可以被读懂、被改进。
核心亮点
- 分场景子模型:工作日与非工作日分开建模,对应"通勤双峰"和"休闲单峰"两种截然不同的需求机制,对比表直接证明"分而治之"的收益。
- 手写傅里叶周期特征:用小时谐波 + 年周期刻画需求的周期性,解决 23 点和 0 点在 one-hot 编码下"完全不相连"的问题——为什么这样做、带来了多少收益,项目里都有交代。
- 按时间顺序切分:用"过去预测未来"的正确姿势组织训练与测试,而不是随机打乱——这是时间类问题最容易踩、也最容易被问到的坑。
- 残差诊断:用"小时 × 月份"的残差热力图定位系统性低估的时段,并给出对应的业务解释——这个环节在教程里普遍缺席,但在课程汇报和实验报告里最能体现分析深度。
- 同期均值基线:自实现"小时 × 星期"的历史均值作为基线,量化机器学习模型带来的真实提升——不跟基线比的提升都是自说自话。
- 四模型横向对比:线性回归 / 随机森林 / XGBoost / LightGBM 在统一的时间切分与 RMSLE 评估体系下同场竞技。
效果预览
工作日与周末的分时需求曲线——"通勤双峰"与"休闲单峰"两种机制一眼可见,这正是分场景建模的依据:

预测值与真实值的 7 天对照曲线,整体走势与早晚高峰的贴合程度一目了然:

残差的"小时 × 月份"热力图,系统性低估的时段被直接定位出来:

预览图基于模拟数据演示实际运行效果,真实数据运行结果以你下载的数据集为准。
你将学到
- 时间特征工程的系统做法:小时 / 星期 / 月份的展开、周期性的傅里叶建模
- 时间序列切分的正确姿势,以及随机切分为什么会"作弊"
- 残差分析方法:如何从误差中找到下一个改进方向
- 为什么要有基线模型,以及怎么量化的 ML 的真实提升
- RMSLE 这类相对误差指标适合什么场景、为什么
适合谁
需要完成回归 / 时间序列方向毕业设计、或想把"特征工程 + 误差分析"能力补到实战水准的学习者。难度 ★★★,主流程清晰易跑;分场景建模与残差诊断两个模块能支撑起实验报告里最有分析深度的章节。
交付内容:完整可运行源码、README.md(逐步运行方法与实现说明)、requirements.txt。
数据集:第三方数据受原始授权限制不随包分发,按 README.md 里的官方链接下载放入 data/ 即可跑通全流程。
许可:个人使用,可用于自己的学习、课程实验与研究报告,请勿转售或公开传播。