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

科技   2024-09-02 17:09   浙江  

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

分析师:Weiqiao Jue

CNN - LSTM - Attention 是一种强大的深度学习模型组合,通常用于处理序列数据,尤其在具有复杂时空特征的任务中表现出色。这个组合结合了三种不同类型的神经网络架构,以充分挖掘数据中的空间和时间信息,并具有以下独特结构:点击文末“阅读原文”获取完整代码数据


卷积神经网络(CNN):CNN 擅长捕捉序列数据中的空间特征。它通过多个卷积核在输入数据上进行滑动操作,从局部区域提取关键特征,能够有效地检测输入序列中的局部模式和特定结构。在 CNN 层之后,常常会引入池化层来降低数据的空间维度,从而减少计算量并提取更抽象的特征表示。


长短时记忆网络(LSTM):LSTM 是一种专门为处理序列数据而设计的循环神经网络变体。它通过独特的门控机制(输入门、遗忘门和输出门),能够有选择地控制对过去信息的保留和遗忘,从而成功地处理长序列中的依赖关系。在涉及序列预测的任务中,LSTM 可以深入学习序列数据中的长期依赖,精准捕捉序列中的时间演化规律和模式。


注意力机制(Attention):Attention 机制使模型能够聚焦于输入序列中的重要部分。通过计算不同位置的注意力权重,模型可以对输入序列进行有针对性的加权求和。在处理序列数据时,Attention 机制帮助模型在不同时间步或位置上分配不同的重要性,从而更好地提取关键信息。在序列任务中,它可以用于强调序列中对当前预测最为关键的时间步或特征。


结合这三种架构,模型首先利用 CNN 层提取输入序列的空间特征,接着通过 LSTM 层捕捉时间相关性,最后借助 Attention 机制更好地理解序列内部的重要关系。这种综合结构能够更全面地处理具有复杂时空特征的序列数据,适用于诸如视频分类、语音识别、时间序列预测等众多领域。它的创新之处在于巧妙地融合了不同类型的神经网络架构,使其能够适应广泛的应用场景,极大地提高了对序列数据的建模和分析能力。


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

相关视频


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

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

任务/目标

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

数据源准备

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

模型构建

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

词向量输入CNN中,CNN中分别定义了3个大小不同的卷积核,经过卷积+池化后将3个向量拼接输入双向LSTM中。接着,经过Attention,在Attention中经过线性变化得到key,再将key与query相乘得到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 = 1for label in charging\_labels:fig, ax = plt.subplots(1, figsize=(207))fig1, ax1 = plt.subplots(1, figsize=(207))fig2, ax2 = plt.subplots(1, figsize=(207))fig3, ax3=plt.subplots(1, figsize=(207))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 = 1for label in charging\_labels:fig, ax = plt.subplots(1, figsize=(207))fig1, ax1 = plt.subplots(1, figsize=(207))fig2, ax2 = plt.subplots(1, figsize=(207))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(-11))

电池 SOC 的 CNN-BiLSTM-Attention 模型

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

INPUT\_DIMS = 4TIME\_STEPS = 10lstm\_units = 64#Normalizeddata,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 框架。



本文中分析的数据、代码分享到会员群,扫描下面二维码即可加群! 




资料获取


在公众号后台回复“领资料”,可免费获取数据分析、机器学习、深度学习等学习资料。



点击文末“阅读原文”

获取全文完整代码数据资料


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


点击标题查阅往期内容

视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据
【视频讲解】Python用LSTM长短期记忆网络GARCH对SPX指数金融时间序列波动率滚动预测
Python对商店数据进行lstm和xgboost销售量时间序列建模预测分析
【视频讲解】Python用LSTM、Wavenet神经网络、LightGBM预测股价|数据分享
Python股票预测:注意力多层Attention RNN LSTM应用
在Python中使用LSTM和PyTorch进行时间序列预测
Python TensorFlow双向Bi-LSTM长短期记忆神经网络深度学习可视化用户传感器活动数据
【视频讲解】LSTM神经网络模型在微博中文文本评论情感分析和股市预测应用附代码数据
TensorFlow、Keras的LSTM神经网络异常检验、预测股市价格时间序列数据可视化python实例附代码数据
【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享




拓端数据部落
拓端(tecdat.cn)创立于2016年,提供专业的数据分析与挖掘服务,致力于充分挖掘数据价值。
 最新文章