三百余条EIS曲线与SOH、SOC及环境温度数据集:全面详尽的CSV与M文件格式解析
电池数据这玩意儿玩过的都懂,找份靠谱的EIS+SOH+SOC的组合数据比找对象还难。最近搞到个包含三百多条EIS曲线的数据集,自带环境温度参数,CSV和MATLAB双格式支持,实测能直接塞进各种算法模型里开跑。颜色映射对应测试频率,高频区(暖色)的点应该密集分布在左下角,如果出现离散的离群点,八成是接触阻抗异常。注意第0列是实部,第1列是虚部,搞反了阻抗谱图会画成抽象派。EIS.SOH.SOC,环
EIS.SOH.SOC,环境温度都有的数据集,csv或m文件两种格式,共计三百余条eis曲线,具体信息见图3,较全的一份数据。
电池数据这玩意儿玩过的都懂,找份靠谱的EIS+SOH+SOC的组合数据比找对象还难。最近搞到个包含三百多条EIS曲线的数据集,自带环境温度参数,CSV和MATLAB双格式支持,实测能直接塞进各种算法模型里开跑。

先看数据结构的门道。用Python加载CSV时记得处理复数阻抗,这里有个坑点:
import pandas as pd
import ast
raw_data = pd.read_csv('battery_dataset.csv', converters={'Z': lambda s: np.array(ast.literal_eval(s))})
print(raw_data.iloc[0]['Z'][:,0]) # 取出首条曲线的实部
这个ast.literal_eval魔法能把字符串格式的数组转成真正的numpy数组,避免后期处理时被字符串格式坑到怀疑人生。注意第0列是实部,第1列是虚部,搞反了阻抗谱图会画成抽象派。
MATLAB党也别慌,m文件里藏着结构体套娃:
load('dataset.mat');
first_cell = data(1).cells;
freq_range = first_cell.EIS(1).Frequency; % 扫频范围
Z_real = real(first_cell.EIS(1).Z); % 别直接用abs()会丢失相位信息
这里每个电芯的EIS数据按不同SOC状态分层存储,用点运算符能像剥洋葱一样逐层拆解。特别注意当环境温度字段为NaN时,说明该条数据是在恒温箱失控时记录的——这种异常数据做模型训练时记得先过滤。

可视化阶段最能暴露问题。用Seaborn画EIS散点图时:
plt.figure(figsize=(10,6))
sns.scatterplot(x=raw_data.iloc[5]['Z'][:,0], y=-raw_data.iloc[5]['Z'][:,1],
hue=raw_data.iloc[5]['Frequency'], palette='viridis', edgecolor='none')
plt.gca().invert_yaxis() # 虚部取反是行业潜规则
颜色映射对应测试频率,高频区(暖色)的点应该密集分布在左下角,如果出现离散的离群点,八成是接触阻抗异常。SOC值低于20%的曲线如果出现双容抗弧,说明该电芯可能已经产生析锂。
处理温度相关特征时,试试分箱操作:
raw_data['temp_bin'] = pd.cut(raw_data['Temperature'],
bins=[-20, 0, 25, 45],
labels=['低温', '常温', '高温'])
这样分组后跑线性回归,能明显看出-20℃下的欧姆阻抗比常温区高30%-50%。不过要注意某些电芯在低温区会出现SOC突降现象,这时候得结合开路电压做数据校正。

最后给个忠告:别直接用原始EIS数据扔进神经网络。先做Kramers-Kronig检验,筛掉不符合物理规律的数据点,不然训练出来的模型会比玄学更玄乎。三百条数据量不算大,但足够玩转等效电路建模和健康状态预测的基础实验了。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)