1. 项目背景

在智慧城市和共享经济的背景下,如何通过历史租车数据、天气状况和时间因素,精准预测未来的共享单车需求量?这不仅是一个经典的回归预测问题,更是机器学习初学者掌握完整项目闭环(数据处理 -> 可视化 -> 建模 -> 评价)的最佳实践。

本项目基于 UCI 的 Bike Sharing Dataset,通过对比多种算法,最终利用随机森林实现了 R 2 R^2 R2 高达 0.94 的精准预测。

在这里插入图片描述


2. 核心任务流程

项目遵循标准的数据科学工作流:

  1. 数据准备:自动下载并解压 UCI 官方数据集。
  2. 特征工程:解析小时、季节、天气、温度等 12 个核心特征。
  3. 探索性数据分析 (EDA):通过可视化洞察租车量随时间和天气的变化规律。
  4. 模型比拼:对比线性回归、决策树、随机森林及梯度提升树。
  5. 误差分析:分析模型在哪些样本上“栽了跟头”,为后续优化提供方向。

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=1nyiy^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=1n(yiy^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 关键发现

  1. 时间是第一要素:通过特征重要性分析,hr (小时) 对预测结果的影响最大,早晚高峰特征显著。
  2. 非线性关系的胜利:线性回归表现较差( R 2 R^2 R2 仅 0.38),说明租车量与天气、时间之间存在复杂的非线性映射,而基于树的集成模型(随机森林)能完美捕捉这些规律。

在这里插入图片描述


7. 如何运行

  1. 下载博文末尾提供的 bike_sharing_project.zip 并解压。
  2. 运行 bike_sharing_student_code.py
  3. outputs/ 文件夹下查看自动生成的 8 张可视化图表与 CSV 评估报告。

8. 总结与反思

通过本项目,我深入理解了随机森林在处理结构化数据时的强大威力。未来的优化方向可以考虑:

  • 特征衍生:提取是否为“通勤高峰”的二值特征。
  • 超参数调优:使用 GridSearch 对随机森林的 max_depth 进行精细化调整。

项目源码下载
数据集来源:UCI Machine Learning Repository.


如果你在运行代码时遇到任何问题,欢迎在评论区留言交流!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐