首页 > 编程语言 >Python用CNN+LSTM+Attention对新闻文本分类、锂离子电池健康、寿命数据预测

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

时间:2024-09-07 14:22:49浏览次数:11  
标签:plot plt Python 模型 Attention CNN 电池


 分析师:Weiqiao Jue

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

本研究通过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,生成训练数据。

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

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

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

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

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] 所示。

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

 

结果与分析

不同电池的容量绘制。

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

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')

 

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

充电数据绘制

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

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")

 

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

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

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

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

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

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

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

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

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

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

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

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

放电数据绘制

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

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")

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

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

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

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

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

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

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

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

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

SVM

 SVM 模型应用

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

 

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

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

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

 

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

电池 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()

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

print(train_X.shape,train_Y.shape)

m = attention_model()
m.summary()

 

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

绘制模型平均绝对误差(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()

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

 

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

 

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

 

 

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

结论

本文提出的基于注意力机制的 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对新闻文本分类、锂离子电池健康、寿命数据预测_人工智能_33

 

标签:plot,plt,Python,模型,Attention,CNN,电池
From: https://blog.51cto.com/tecdat/11944906

相关文章

  • 关于卷积神经网络(CNN)的详解
    一、基本概念卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks,FNN),是深度学习的代表算法之一。它仿造生物的视觉机制构建,能够进行监督学习和非监督学习,广泛应用于图像识别、视频分析、自然语言处......
  • opencv-python学习笔记2-opencv基本操作
    目录 一、opencv架构:(1)OpenCV的主要模块包括:(2)OpenCV的架构特点:(3)OpenCV的应用场景:二、图像输入输出模块imgcodecs: a.imread:b. imwrite:三、opencv界面编程:(1)创建窗口:(2)显示图像:(3)添加滑块:(4)处理鼠标事件:(5)等待用户输入(6)销毁窗口四、单窗口显示多图片:(1)np.hstack()......
  • 【保姆级教程】使用 PyTorch 自定义卷积神经网络(CNN) 实现图像分类、训练验证、预测全
    《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。......
  • 【小白深度教程 1.11】手把手教你使用 PSMNet 估计视差和计算深度,并映射到 3D 点云(含
    【小白深度教程1.11】手把手教你使用PSMNet估计视差和计算深度,并映射到3D点云(含Python代码)1.PSMNet简介2.环境配置3.下载预训练模型4.修改推理代码5.用PSMNet估计视差6.报错解决7.映射到3D点云8.对比传统方法9.点云可视化在之前的章节......
  • 计算机毕业设计选题-基于python的企业人事管理系统【源码+文档+数据库】
    ......
  • Python教程(二十一) : 从零开始制作计算器应用【PyQt6】
    文章目录专栏列表环境准备代码解析主要组件初始化界面布局设置事件处理计算逻辑运行应用完整代码示例截图总结注意专栏列表Python教程(十):面向对象编程(OOP)Python教程(十一):单元测试与异常捕获Python教程(十二):面向对象高级编程详解Python教程(十三):常用内置模块详解Python......
  • 【Python系列】使用切片移动元素位置
    ......
  • python镜像库替换为国内镜像
    全局生效,而非单个项目!!windows系统使用命令:type%USERPROFILE%\pip\pip.ini查看是否有pip.ini文件,没有的话创建该文件,可以在C:\Users\username下使用notepad++等编辑pip.ini文件,添加下面代码:[global]index-url=https://mirrors.aliyun.com/pypi/simple/[install]trust......
  • Python 中文分词
    Python中文分词结巴中文分词https://github.com/fxsjy/jieba安装 pipinstalljiebapipinstallpaddlepaddle 20.5.1. 分词演示 #encoding=utf-8importjiebaimportpaddlepaddle.enable_static()jieba.enable_paddle()#启动paddle模式。strs=[......
  • Python 语音识别
    STT(SpeechToText)语音转文本17.2.1. SpeechRecognitionhttps://github.com/Uberi/speech_recognition17.2.1.1. 安装 pipinstallSpeechRecognition 麦克风相关 brewinstallportaudiopipinstallpyaudio 运行下面命令授权访问麦克风 ......