云计算百科
云计算领域专业知识百科平台

【机器学习案列-42】NASA 电池寿命预测数据集:从数据到机器学习模型的完整实战(附完整数据和代码下载)

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907)

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

【机器学习案列-42】NASA 电池寿命预测数据集:从数据到机器学习模型的完整实战(附完整数据和代码下载)

    • 一、项目背景
    • 二、数据集概况
      • 1. 数据量级
      • 2. 核心特征
    • 三、任务目标
    • 四、特征工程思路
    • 五、模型与评估方案
      • 1. 模型选择
      • 2. 数值处理
      • 3. 划分策略
      • 4. 评价指标
    • 六、实战结果
      • 1、可视化分析
    • 七、代码说明
    • 八、后续提升方向
    • 九、总结

一、项目背景

电池寿命预测是电动汽车、储能系统等领域的重要问题。本项目基于一个清洗后的 NASA 电池数据集,目标是通过放电循环数据预测电池放电容量(Capacity),进而为电池健康评估提供参考,项目的具体介绍请参考:https://www.kaggle.com/datasets/patrickfleith/nasa-battery-dataset。

数据结构如下:

本次分析使用的数据来自 cleaned_dataset:

  • metadata.csv:每个循环的元数据,包括 type(charge/discharge/impedance)、ambient_temperature、battery_id、filename、Capacity 等。
  • data/:每个循环对应的时序数据文件,比如 00001.csv。

最终实现了一个可直接运行的脚本 test_AI.py,它可以读取数据、提取特征、训练模型并输出预测结果。


二、数据集概况

1. 数据量级

  • 共有 34 块电池
  • discharge 类型循环约 2794 条
  • 每条放电循环包含电压、电流、温度、时间等时序数据

2. 核心特征

放电循环数据包含:

  • Voltage_measured
  • Current_measured
  • Temperature_measured
  • Time

元数据则包含:

  • battery_id
  • test_id
  • ambient_temperature
  • Capacity

其中,Capacity 是要预测的目标值,如果缺失则会通过当前循环数据补算。


三、任务目标

本次任务的目标非常明确:

  • 利用放电循环特征预测当前循环的放电容量 Capacity
  • 使用回归模型完成预测
  • 按 battery_id 分组划分训练/测试集,确保测试集为真实未见电池,避免过拟合

四、特征工程思路

本文采用的是“统计特征 + 电池身份信息”方案。

对于每个放电循环,提取以下特征:

  • 循环编号:cycle_number
  • 环境温度:ambient_temperature
  • 放电时长:duration_sec
  • 采样点数量:n_points
  • 电压统计特征:平均值、最小值、最大值、标准差
  • 电流统计特征:平均值、绝对平均值、最小值、最大值、标准差
  • 温度统计特征:平均值、标准差
  • 能量估算:energy_wh

如果当前循环 Capacity 缺失,则通过电流对时间积分计算一个近似容量,用于补齐数据。


五、模型与评估方案

1. 模型选择

本次使用的是经典树模型:RandomForestRegressor。

2. 数值处理

  • 数值特征使用 StandardScaler 标准化
  • battery_id 使用 OneHotEncoder 编码

3. 划分策略

为了模拟真实预测场景,使用 GroupShuffleSplit 按 battery_id 分组划分训练集和测试集,避免同一块电池既出现在训练集也出现在测试集。

4. 评价指标

  • RMSE(均方根误差)

六、实战结果

模型实际运行结果如下:

  • 训练数据样本:2568 条放电循环
  • 测试数据样本:329 条放电循环
  • RMSE:约 0.072 Ah
  • R²:约 0.951

这个结果表明:在当前特征集和模型下,模型对放电容量的预测效果非常好,说明统计特征对放电容量具有较强的解释力。

1、可视化分析

为了更直观地理解数据和模型表现,脚本会生成多张图:

  • output/figures/capacity_distribution.png:放电容量分布图

  • output/figures/actual_vs_predicted.png:真实容量与预测容量散点对比图

  • output/figures/feature_importance.png:Top 10 特征重要性柱状图

  • output/figures/battery_cycle_count.png:每块电池放电循环次数分布图

  • output/figures/capacity_vs_temperature.png:容量与环境温度关系散点图

  • output/figures/capacity_vs_energy.png:放电能量与容量关系散点图

这几张图辅助从多个角度分析数据:

  • 容量分布可以检查样本是否偏斜,以及是否存在离群容量值;
  • 真实 vs 预测图展示了模型拟合精度与偏差趋势;
  • 特征重要性图揭示了哪些统计特征对容量预测贡献最大;
  • 循环次数分布图说明不同电池的数据量是否均衡,避免训练集中某些电池占比过高;
  • 容量与温度散点图帮助判断环境温度是否对容量有明显影响;
  • 能量与容量关系图则可以观察能量估算是否与容量呈线性或非线性相关。

这些EDA图表对数据理解非常关键,能让你在后续建模时更有依据地选择特征和调参策略。


七、代码说明

本项目的核心代码已经整理到 test_AI.py,你只需执行:

python test_AI.py

脚本会完成以下步骤:

  • 读取 cleaned_dataset/metadata.csv
  • 过滤出 discharge 循环
  • 提取每个循环的统计特征
  • 创建回归模型并训练
  • 评估模型并输出预测结果
  • 将预测结果保存到 prediction_results.csv

  • 八、后续提升方向

    如果想继续升级这篇分析,可以考虑:

    • 使用时间序列模型(如 1D 卷积网络、LSTM)直接处理放电曲线
    • 加入 impedance 数据一起建模,做多任务学习
    • 进一步提取电压/电流波形的峰值、斜率等高级特征
    • 引入 SoH、循环次数衰减趋势等长期特征

    九、总结

    本文从数据理解、特征工程、模型选择、评价指标到结果解释,完整呈现了电池放电容量预测的落地流程。

    如果你也在做电池寿命或健康预测,这个项目可以作为一个很好的入门实战模板。

    数据集和的代码截图和gitee地址:https://gitee.com/zhang-xufang/nasa_battery


      注: 博主目前收集了6900+份相关数据集,有想要的可以领取部分数据,关注下方公众号或添加微信:

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 【机器学习案列-42】NASA 电池寿命预测数据集:从数据到机器学习模型的完整实战(附完整数据和代码下载)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!