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

您所在的位置:网站首页 scipy遗传算法 基于遗传算法和粒子群优化算法优化LSTM(Python代码实现)

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

#基于遗传算法和粒子群优化算法优化LSTM(Python代码实现)| 来源: 网络整理| 查看: 265

个人主页:研学社的博客

欢迎来到本博客❤️❤️

博主优势: 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。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 运行结果

部分代码:

# 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代码实现



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3