基于遗传算法和粒子群优化算法优化LSTM(Python代码实现)

 👨‍🎓个人主页:研学社的博客  

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Python代码实现


💥1 概述

遗传算法是一种基于选择搜索的全局寻优算法,模拟了遗传和选择过程中的繁殖、杂交和突变现象。在遗传算法开始的时候会随机产生一
个体,根据在GA算法里自定义的适应度函数分别对每一个个体进行计算评估,给出一个适应度值。基于此适应度值,选择一些个体用来产生下一代,然后选择出来的个体再经过交叉和变异进行再组合从而生成新的一代,以此类推朝着最优解的方向进化。全局寻优算法GA的模型流程如图1所示。

 循环神经网络RNN只能存储短期记忆,会遗忘长期记忆信息,为了记住有用的长期信息,后面引入了长短时记忆神经网络模型LSTM ,该模型是RNN的拓展网络结构l8]。该模型可以有效地同时利用短期记忆信息和长期记忆信息,从而可以有效的避免梯度消失导致某些信息丢失的问
题[9I,在处理较长间隔的时间序列方面具有很大的优势。LSTM模型是在RNN基础上增加了记忆细胞,使得该模型可以记住长期序列中的有用信息[10]通过已有的激活函数Relu、Sigmoid、Tanh 与
soft-max来控制输出值的范围,激活函数是在输入数据前已经确定好的,连接层是通过不同大小的权重相连接11].

引入GA遗传算法的双向长短时记忆神经网络LSTM模型,是指利用GA算法对预测模型LSTM进行全局参数寻优,模型结构如图3所示。

📚2 运行结果

 

 

部分代码:

# Compute macro-average ROC curve and ROC area
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
from scipy import interp
from itertools import cycle

# First aggregate all false positive rates
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))

# Then interpolate all ROC curves at this points
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
    mean_tpr += interp(all_fpr, fpr[i], tpr[i])

# Finally average it and compute AUC
mean_tpr /= n_classes

fpr["macro"] = all_fpr
tpr["macro"] = mean_tpr
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])

# Plot all ROC curves
plt.figure(figsize=(10,6))
plt.plot(fpr["micro"], tpr["micro"],
         label='micro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["micro"]),
         color='deeppink', linestyle=':', linewidth=4)

plt.plot(fpr["macro"], tpr["macro"],
         label='macro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["macro"]),
         color='navy', linestyle=':', linewidth=4)

colors = cycle(['aqua', 'darkorange', 'cornflowerblue', 'blue','green','red','cyan','orange','yellow','olive'])
for i, color in zip(range(n_classes), colors):
    plt.plot(fpr[i], tpr[i], color=color, lw=lw,
             label='ROC curve of class {0} (area = {1:0.2f})'
             ''.format(i, roc_auc[i]))

plt.plot([0, 1], [0, 1], 'k--', lw=lw)
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC curve for driver behaviour analysis')
plt.legend(loc="lower right")
plt.show()

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]王德忠,朱国宏,王禹,王神虎.基于GA-LSTM的综采面瓦斯浓度预测模型[J].煤炭技术,2023,42(01):219-221.DOI:10.13301/j.cnki.ct.2023.01.046.

[2]杨语蒙,李兴东.基于GA-LSTM组合模型的股票价格预测[J].现代计算机,2021,27(33):1-7.

[3]满建峰,侯磊,杨凯,刘珈铨,张鑫儒,伍星光,贺思宸.基于PSO-LSTM混合模型的天然气管道多用气节点负荷预测研究[J].油气与新能源,2022,34(06):91-100.

🌈4 Python代码实现

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值