找回密码
 立即注册
查看: 181|回复: 0

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

[复制链接]
发表于 2024-7-15 17:57 | 显示全部楼层 |阅读模式
   ‍ 个人主页:研学社的博客

     欢迎来到本博客❤️❤️  


  博主优势:   
博客内容尽量做到思维缜密,逻辑清晰,为了便利读者。r/>
⛳️座右铭:行百里者,半于九十。
1 概述

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



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




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



2 运行成果














部门代码:
  1. # Compute macro-average ROC curve and ROC area
  2. from sklearn.metrics import roc_curve, auc
  3. import matplotlib.pyplot as plt
  4. from scipy import interp
  5. from itertools import cycle
  6. # First aggregate all false positive rates
  7. all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))
  8. # Then interpolate all ROC curves at this points
  9. mean_tpr = np.zeros_like(all_fpr)
  10. for i in range(n_classes):
  11.     mean_tpr += interp(all_fpr, fpr[i], tpr[i])
  12. # Finally average it and compute AUC
  13. mean_tpr /= n_classes
  14. fpr[”macro”] = all_fpr
  15. tpr[”macro”] = mean_tpr
  16. roc_auc[”macro”] = auc(fpr[”macro”], tpr[”macro”])
  17. # Plot all ROC curves
  18. plt.figure(figsize=(10,6))
  19. plt.plot(fpr[”micro”], tpr[”micro”],
  20.          label='micro-average ROC curve (area = {0:0.2f})'
  21.                ''.format(roc_auc[”micro”]),
  22.          color='deeppink', linestyle=':', linewidth=4)
  23. plt.plot(fpr[”macro”], tpr[”macro”],
  24.          label='macro-average ROC curve (area = {0:0.2f})'
  25.                ''.format(roc_auc[”macro”]),
  26.          color='navy', linestyle=':', linewidth=4)
  27. colors = cycle(['aqua', 'darkorange', 'cornflowerblue', 'blue','green','red','cyan','orange','yellow','olive'])
  28. for i, color in zip(range(n_classes), colors):
  29.     plt.plot(fpr[i], tpr[i], color=color, lw=lw,
  30.              label='ROC curve of class {0} (area = {1:0.2f})'
  31.              ''.format(i, roc_auc[i]))
  32. plt.plot([0, 1], [0, 1], 'k--', lw=lw)
  33. plt.xlim([0.0, 1.0])
  34. plt.ylim([0.0, 1.05])
  35. plt.xlabel('False Positive Rate')
  36. plt.ylabel('True Positive Rate')
  37. plt.title('ROC curve for driver behaviour analysis')
  38. plt.legend(loc=”lower right”)
  39. 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代码实现

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-21 20:29 , Processed in 0.180405 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表