当前位置: 首页 > news >正文

想创办一个本地的人才招聘网站_如何做市场调查问卷上海优化公司有哪些

想创办一个本地的人才招聘网站_如何做市场调查问卷,上海优化公司有哪些,微信如何制作自己的公众号,兰州网站建设价往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(一)EMD-CSDN博客 EMD、EEM…

 往期精彩内容:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较

全是干货 | 数据集、学习资料、建模资源分享!

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(一)EMD-CSDN博客

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(二)EEMD

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(三)FEEMD-CSDN博客

EMD、EEMD、FEEMD、CEEMD、CEEMDAN的区别、原理和Python实现(四)CEEMD-CSDN博客

EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客

拒绝信息泄露!VMD滚动分解 + Informer-BiLSTM并行预测模型-CSDN博客

风速预测(一)数据集介绍和预处理_风速数据在哪里下载-CSDN博客

风速预测(二)基于Pytorch的EMD-LSTM模型-CSDN博客

风速预测(三)EMD-LSTM-Attention模型-CSDN博客

风速预测(四)基于Pytorch的EMD-Transformer模型-CSDN博客

风速预测(五)基于Pytorch的EMD-CNN-LSTM模型-CSDN博客

风速预测(六)基于Pytorch的EMD-CNN-GRU并行模型-CSDN博客

前言

本文基于前期介绍的风速数据(文末附数据集),介绍一种综合应用完备集合经验模态分解CEEMDAN与混合预测模型(BiLSTM-Attention + ARIMA)的方法,以提高时间序列数据的预测性能。该方法的核心是使用CEEMDAN算法对时间序列进行分解,接着利用BiLSTM-Attention模型和ARIMA模型对分解后的数据进行建模,最终通过集成方法结合两者的预测结果。

风速数据集的详细介绍可以参考下文:

风速预测(一)数据集介绍和预处理_weather in szeged 2006-2016-CSDN博客

1 风速数据CEEMDAN分解与可视化

1.1 导入数据

1.2 CEEMDAN分解

根据分解结果看,CEEMDAN一共分解出11个分量,我们大致把前7个高频分量作为BiLSTM-Attention模型的输入进行预测,后4个低频分量作为ARIMA模型的输入进行预测

2 数据集制作与预处理

2.1 划分数据集

按照8:2划分训练集和测试集, 然后再按照前7后4划分分量数据

2.2 设置滑动窗口大小为7,制作数据集

​​​​​​


# 定义滑动窗口大小
window_size = 7
# 分量划分分界
imf_no  = 7  # 第一步,划分数据集
dataset1, dataset2 = make_wind_dataset(wind_emd_imfs, imf_no)
# 第二步,制作数据集标签  滑动窗口
# BiLSTM-Attention 模型数据
train_set1, train_label1 = data_window_maker(dataset1[0], window_size)
test_set1, test_label1 = data_window_maker(dataset1[1], window_size)# ARIMA 模型数据
train_data_arima = dataset2[0]
test_data_arima = dataset2[1]# 保存数据
dump(train_set1, 'train_set1')
dump(train_label1, 'train_label1')
dump(test_set1, 'test_set1')
dump(test_label1, 'test_label1')dump(train_data_arima, 'train_data_arima')
dump(test_data_arima, 'test_data_arima')

分批保存数据,用于不同模型的预测

3 基于CEEMADN的BiLSTM-Attention模型预测

3.1 数据加载,训练数据、测试数据分组,数据分batch


# 加载数据
import torch
from joblib import dump, load
import torch.utils.data as Data
import numpy as np
import pandas as pd
import torch
import torch.nn as nn
# 参数与配置
torch.manual_seed(100)  # 设置随机种子,以使实验结果具有可重复性
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")# 加载数据集
def dataloader(batch_size, workers=2):# 训练集train_set = load('train_set1')train_label = load('train_label1')# 测试集test_set = load('test_set1')test_label = load('test_label1')# 加载数据train_loader = Data.DataLoader(dataset=Data.TensorDataset(train_set, train_label),batch_size=batch_size, num_workers=workers, drop_last=True)test_loader = Data.DataLoader(dataset=Data.TensorDataset(test_set, test_label),batch_size=batch_size, num_workers=workers, drop_last=True)return train_loader, test_loaderbatch_size = 64
# 加载数据
train_loader, test_loader = dataloader(batch_size)

3.2 定义CEEMDAN-BiLSTM-Attention预测模型

注意:输入风速数据形状为 [64, 7, 7], batch_size=64,  维度7维代表7个分量,7代表序列长度(滑动窗口取值)。

3.3 定义模型参数

# 定义模型参数
batch_size = 64
input_len = 48   # 输入序列长度为96 (窗口值)
input_dim = 7    # 输入维度为7个分量
hidden_layer_sizes = [32, 64] # LSTM 层 结构 隐藏层神经元个数
attention_dim = hidden_layer_sizes[-1]  # 注意力层维度 默认为 LSTM输出层维度
output_size = 1 # 单步输出model = BiLSTMAttentionModel(batch_size, input_len, input_dim, attention_dim, hidden_layer_sizes, output_size=1)  # 定义损失函数和优化函数
model = model.to(device)
loss_function = nn.MSELoss()  # loss
learn_rate = 0.003
optimizer = torch.optim.Adam(model.parameters(), learn_rate)  # 优化器

3.4 模型训练

训练结果

100个epoch,MSE 为0.00559,BiLSTM-Attention预测效果良好,适当调整模型参数,还可以进一步提高模型预测表现。

注意调整参数:

  • 可以适当增加BiLSTM层数和隐藏层的维度,微调学习率;

  • 调整注意力维度数,增加更多的 epoch (注意防止过拟合)

  • 可以改变滑动窗口长度(设置合适的窗口长度)

保存训练结果和预测数据,以便和后面ARIMA模型的结果相组合。

4 基于ARIMA的模型预测

传统时序模型(ARIMA等模型)教程如下:

时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较

4.1 数据加载

训练数据、测试数据分组,四个分量,划分四个数据集


# 加载数据
from joblib import dump, load
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')# 训练集
train_set = load('train_data_arima')
# 测试集
test_set = load('test_data_arima')# IMF1-Model1
model1_train = train_set[0, :]
model1_test = test_set[0, :]
# IMF2-Model2
model2_train = train_set[1, :]
model2_test = test_set[1, :]
# IMF3-Model3
model3_train = train_set[2, :]
model3_test = test_set[2, :]
# IMF4-Model4
model4_train = train_set[3, :]
model4_test = test_set[3, :]

4.2 介绍一个分量预测过程(其他分量类似)

第一步,单位根检验和差分处理

ADF检验P值远小于0.05,故拒绝原假设,即数据是平稳的时间序列数据,也确定了d=0

第二步,模型识别,采用AIC指标进行参数选择

采用AIC指标进行参数选择,得到最小的AIC值的组合为p=2,q=0,选择其作为模型进行拟合,因此针对原数据可知最终确定模型为ARIMA(2,0,0)(结合代码指标结果来看)

第三步,模型预测

第四步,模型评估

保存预测的数据,其他分量预测与上述过程一致,保留最后模型结果即可。

5 结果可视化和模型评估

5.1 组合预测,加载各模型的预测结果


# 训练集
arima_train_set = load('train_data_arima')
# 测试集
arima_test_set = load('test_data_arima')# IMF1-Model1
model1_imf_arima_pre = load('model1_imf_arima_pre')
# IMF2-Model2
model2_imf_arima_pre = load('model2_imf_arima_pre')
# IMF3-Model3
model3_imf_arima_pre = load('model3_imf_arima_pre')
# IMF4-Model4
model4_imf_arima_pre = load('model4_imf_arima_pre')# BiLSTM-Attention
original_label_bilstmatt = load('original_label_bilstmatt')
pre_data_bilstmatt = load('pre_data_bilstmatt')

5.2 结果可视化

5.3 模型评估

由分量预测结果可见,前7个分量在BiLSTM-Attention预测模型下拟合效果良好,分量9在ARIMA模型的预测下,拟合程度比较好,其他低频分量拟合效果弱一点,调整参数可增强拟合效果。

6  代码、数据整理如下:

http://www.hengruixuexiao.com/news/26289.html

相关文章:

  • 重庆网站建设吧北京seo顾问服务公司
  • 宛城区网站制作流量神器
  • 有经验的南昌网站制作可以推广网站
  • 做网站去青鸟学什么专业链接提交
  • 社区门户网站模板郑州网站运营实力乐云seo
  • wordpress卡在 wpseo服务是什么
  • 网站建设管理意见杭州网站设计制作
  • b2b网站如何策划网站排名查询站长之家
  • 网站的毕业设计怎么做百度电话客服24小时
  • 重庆垫江网站建设电子商务网站建设多少钱
  • 微信订阅号做微网站龙华线上推广
  • 网站建设文案关键词优化排名工具
  • 淘宝联盟里的网站推广怎么做教育培训机构有哪些
  • 六安新闻网揭阳seo推广公司
  • 西宁做网站的公司力请君博d国外域名注册
  • 全国知名网站建设万维网域名注册查询
  • 短网址生成器在线aso关键词优化计划
  • 长沙网站设计培训学校百度快速收录教程
  • 大连专业手机自适应网站建设电子商务主要干什么
  • 免费w网站建设百度推广seo怎么学
  • 域名注册网站排行高端网站建设哪个好
  • wordpress集成微信收款seo还能赚钱吗
  • 全屏网站怎么做的百度平台营销宝典
  • 网站品牌建设方案沧州网站建设公司
  • 长沙斌网网络博客seo教程
  • 网站建设程序员招聘泉州排名推广
  • wordpress无法发布文章seo营销推广多少钱
  • 网站的百度快照如何做高端网站设计定制
  • 烟台城乡建设局网站网络营销和传统营销的关系
  • cdr里做网站超级链接电脑培训学校课程