Python用CNN+LSTM+Attention对新闻文本分类、锂离子电池健康、寿命数据预测

全文链接:https://tecdat.cn/?p=37561

原文出处:拓端数据部落公众号

 分析师:Weiqiao Jue

在当今的数字化时代,数据的爆炸式增长既带来了机遇,也带来了挑战。如何从海量的数据中高效地提取有价值的信息,并进行准确的分类和预测,成为了众多领域亟待解决的关键问题。

本研究通过CNN+LSTM+Attention模型提高新闻文本分类的精确性的案例,结合Attention+CNN+BiLSTM锂离子电池健康、寿命预测的代码数据,深入探讨 Python 在不同领域的应用以及深度学习技术在数据处理和预测中的强大潜力,为推动相关领域的发展提供有益的参考和借鉴。

CNN+LSTM+Attention模型提高新闻文本分类的精确性

新闻文本分类,准确地将海量新闻文本划分到不同类别中,有助于信息的高效检索和利用。为了实现更高的分类精确性,我们引入了 CNN+LSTM+Attention 模型。该模型利用大规模的训练集和测试集数据,经过精心的数据处理和复杂的模型架构设计,能够有效地捕捉新闻文本中的语义特征和上下文关系,从而显著提高分类的准确性,减少误差。

 

任务/目标

使用CNN+LSTM+Attention模型提高新闻文本分类的准确性,减少误差

数据源准备

训练集为20w条样本,测试集为10w条样本。将训练集分为10份,前9份为训练集,最后1份为验证集。定义并创建vacabVacab有两份,一份是自创建的,另一份是外部加载的。得到词与字典对应的embedding

模型构建

按照vacab将文本转换为对应的索引,最后返回的数据是list,里面的每一个元素是tuple。进而将每一个batch转换成tensor,生成训练数据。

词向量输入CNN中,CNN中分别定义了3个大小不同的卷积核,经过卷积+池化后将3个向量拼接输入双向LSTM中。接着,经过Attention,在Attention中经过线性变化得到key,再将keyquery相乘得到output,表示每个句子所分配到的权重,再进行softmax。最后进入FC层得到分类概率的向量。

最后测试集得分为74.10。相较于单一模型的文本分类其效果有显著提升。

Attention+CNN+BiLSTM锂离子电池健康、寿命预测

锂离子电池的健康状态(State of Health,SOH)和剩余使用寿命(Remaining Useful Life,RUL)是电池化学的重要方面,从不同角度描述了电池的当前老化程度。为提高电池健康评估模型的有效性和准确性,本文实现了一种利用卷积神经网络(Convolutional Neural Networks,CNN)、双向长短期记忆网络(Bidirectional Long Short-Term Memory,BiLSTM)和注意力机制(Attention Mechanism,AM)对锂离子电池的 SOH 和 RUL 进行估计的方法,构建了用于锂离子电池容量估计的混合网络模型,并计算 SOH 和 RUL。

引言

锂离子电池在现代社会中有着广泛的应用,准确评估其健康状态和剩余使用寿命对于确保设备的可靠运行至关重要。传统的电池健康评估方法存在一定的局限性,而深度学习方法在处理复杂数据和挖掘潜在特征方面具有优势。因此,本文提出了一种基于注意力机制的 CNN-BiLSTM 混合网络模型,以提高锂离子电池健康状态预测的准确性。

数据来源

本文使用的锂离子电池数据来自美国国家航空航天局艾姆斯预测数据存储库(NASA Ames Prognostics Data Repository)[1]。此外,还包括一个用于对该数据集进行初步数据探索的笔记本以及一个用于荷电状态(State of Charge,SOC)预测的支持向量机(Support Vector Machine,SVM)模型。

模型概述

该模型首先使用卷积神经网络(CNN)进行特征提取和数据降维。这些特征作为双向长短期记忆网络(BiLSTM)的输入。BiLSTM 用于双向学习输入时间序列局部特征中的时间相关性信息。注意力机制通过为重要特征分配权重,更加关注对输出结果影响最大的输入关键特征,并进行电池 SOH 的多步预测。总体而言,卷积层提取时间序列数据的内在特征,BiLSTM 可以基于提取的特征预测电池容量,而注意力机制为这些特征分配权重。混合神经网络模型的结构示意图如下图 [2] 所示。

 

结果与分析

不同电池的容量绘制。

绘制不同电池的容量曲线,如下所示:


ax.plot(B0005_capacity[0], B0005_capacity[1], color='blue', label='Battery-05')
ax.plot(B0006_capacity[0], B0006_capacity[1], color='green', label='Battery-06')
ax.plot(B0007_capacity[0], B0007_capacity[1], color='red', label='Battery-07')

 

充电数据绘制

针对充电数据进行绘制,代码如下:

indx = 1
for label in charging_labels:
    fig, ax = plt.subplots(1, figsize=(20, 7))
    fig1, ax1 = plt.subplots(1, figsize=(20, 7))
    fig2, ax2 = plt.subplots(1, figsize=(20, 7))
    fig3, ax3=plt.subplots(1, figsize=(20, 7))

    ax.plot(B0005_charging[5], B0005_charging[indx], color='red' ,label="B0005")
    ax1.plot(B0006_charging[5], B0006_charging[indx], color='orange', label="B0006")

 

放电数据绘制

对于放电数据进行绘制,代码如下:

indx = 1
for label in charging_labels:
    fig, ax = plt.subplots(1, figsize=(20, 7))
    fig1, ax1 = plt.subplots(1, figsize=(20, 7))
    fig2, ax2 = plt.subplots(1, figsize=(20, 7))
    
    ax.plot(B0005_discharging[5], B0005_discharging[indx], color='red' ,label="B0005")
    ax1.plot(B0006_discharging[5], B0006_discharging[indx], color='orange', label="B0006")
    ax2.plot(B0007_discharging[5], B0007_discharging[indx], color='blue' ,label="B0007")

SVM

 SVM 模型应用

  1. 获取 B0005 的数据框并绘制残差图:
dfB0005 = getDataframe(B0005)
sns.residplot(dfB0005['cycle'], dfB0005['capacity'])

 

使用最佳支持向量回归(Support Vector Regression,SVR)进行预测 

y_pred = best_svr.predict(X.values.reshape(-1, 1))

 

电池 SOC 的 CNN-BiLSTM-Attention 模型

定义模型参数:INPUT_DIMS = 4TIME_STEPS = 10lstm_units = 64。对数据进行归一化处理 

INPUT_DIMS = 4
TIME_STEPS = 10
lstm_units = 64
#Normalized
data,normalize = NormalizeMult(dfB0007)
capacity_data = data[:,0].reshape(len(dfB0007),1)

 打印数据集形状并构建注意力模型

train_X, _ = create_dataset(data,TIME_STEPS)
_ , train_Y = create_dataset(capacity_data,TIME_STEPS)

print(train_X.shape,train_Y.shape)

m = attention_model()
m.summary()

print(train_X.shape,train_Y.shape)

m = attention_model()
m.summary()

 

绘制模型平均绝对误差(Mean Absolute Error,MAE)曲线和真实值与预测值对比曲线 

plt.plot(history.history['mae'])
plt.plot(history.history['val_mae'])
plt.title('model MAE')
plt.ylabel('MAE')
plt.xlabel('epoch')
plt.legend(['train', 'validation'], loc='upper left')
plt.show()

 

 

plt.plot(test_Y[:100])
plt.title('real vs pred')
plt.ylabel('value')
plt.xlabel('epoch')
plt.legend(['pred', 'real'], loc='upper left')

 

 

结论

本文提出的基于注意力机制的 CNN-BiLSTM 混合网络模型在锂离子电池健康状态预测方面表现出了较好的性能。通过对来自 NASA 数据存储库的锂离子电池数据进行实验,验证了该模型在特征提取、时间相关性学习和关键特征关注方面的有效性。未来,可以进一步优化模型结构和参数,提高预测的准确性和稳定性,并将该模型应用于实际的电池管理系统中,为电池的安全运行和维护提供有力支持。

 

参考文献 

[1] B. Saha and K. Goebel (2007). "Battery Data Set", NASA Ames Prognostics Data Repository (https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/#battery), NASA Ames Research Center, Moffett Field, CA

[2] Zhu Z, Yang Q, Liu X, Gao D. Attention-based CNN-BiLSTM for  SOH and RUL estimation of  lithium-ion batteries. Journal of Algorithms & Computational Technology. 2022;16. doi:10.1177/17483026221130598

关于分析师 

在此对 Weiqiao Jue 对本文所作的贡献表示诚挚感谢,他完成了计算机科学与技术专业的硕士学位,专注深度学习、NLP、图像处理领域。擅长使用 PyCharm、Pytorch 框架。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值