【实战项目】Python 机器学习:随机森林回归预测共享单车租赁量(附全流程源码)
·
1. 项目背景
在智慧城市和共享经济的背景下,如何通过历史租车数据、天气状况和时间因素,精准预测未来的共享单车需求量?这不仅是一个经典的回归预测问题,更是机器学习初学者掌握完整项目闭环(数据处理 -> 可视化 -> 建模 -> 评价)的最佳实践。
本项目基于 UCI 的 Bike Sharing Dataset,通过对比多种算法,最终利用随机森林实现了 R 2 R^2 R2 高达 0.94 的精准预测。

2. 核心任务流程
项目遵循标准的数据科学工作流:
- 数据准备:自动下载并解压 UCI 官方数据集。
- 特征工程:解析小时、季节、天气、温度等 12 个核心特征。
- 探索性数据分析 (EDA):通过可视化洞察租车量随时间和天气的变化规律。
- 模型比拼:对比线性回归、决策树、随机森林及梯度提升树。
- 误差分析:分析模型在哪些样本上“栽了跟头”,为后续优化提供方向。
3. 数据集说明
数据集包含 17,379 条小时级记录。
- 特征 (Features):
season,hr,temp,hum,workingday等。 - 目标变量 (Target):
cnt(总租赁量)。

4. 环境准备
pip install pandas numpy matplotlib scikit-learn
5. 核心代码解析
5.1 数据读取与函数化建模
我们将每个步骤封装为函数,提高代码的可读性和复用性。
# 核心评价函数示例
def train_and_compare_models(data):
X = data[FEATURES]
y = data[TARGET]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
models = {
"Random Forest": RandomForestRegressor(n_estimators=100, random_state=42),
"Linear Regression": LinearRegression(),
# ... 其他模型
}
# 循环训练并记录 MAE, RMSE, R²
5.2 评价指标公式
本项目使用以下指标衡量模型效果:
- 平均绝对误差 (MAE): M A E = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ MAE = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1∑n∣yi−y^i∣
- 均方根误差 (RMSE): R M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 RMSE = \sqrt{\frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2} RMSE=n1i=1∑n(yi−y^i)2
- 决定系数 ( R 2 R^2 R2): 衡量模型对数据波动的解释能力,越接近 1 效果越好。
6. 实验结果与可视化
6.1 模型表现对比
经过实验,各模型在测试集上的表现如下表:
| 模型 | MAE | RMSE | R 2 R^2 R2 |
|---|---|---|---|
| Random Forest | 24.90 | 42.07 | 0.944 |
| Decision Tree | 34.18 | 58.25 | 0.893 |
| Gradient Boosting | 47.15 | 69.04 | 0.849 |
| Linear Regression | 104.80 | 139.21 | 0.388 |
6.2 关键发现
- 时间是第一要素:通过特征重要性分析,
hr(小时) 对预测结果的影响最大,早晚高峰特征显著。 - 非线性关系的胜利:线性回归表现较差( R 2 R^2 R2 仅 0.38),说明租车量与天气、时间之间存在复杂的非线性映射,而基于树的集成模型(随机森林)能完美捕捉这些规律。


7. 如何运行
- 下载博文末尾提供的
bike_sharing_project.zip并解压。 - 运行
bike_sharing_student_code.py。 - 在
outputs/文件夹下查看自动生成的 8 张可视化图表与 CSV 评估报告。
8. 总结与反思
通过本项目,我深入理解了随机森林在处理结构化数据时的强大威力。未来的优化方向可以考虑:
- 特征衍生:提取是否为“通勤高峰”的二值特征。
- 超参数调优:使用 GridSearch 对随机森林的
max_depth进行精细化调整。
项目源码下载
数据集来源:UCI Machine Learning Repository.
如果你在运行代码时遇到任何问题,欢迎在评论区留言交流!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)