城乡建设管理局网站,渭南做网站哪家好,自豪地采用wordpress 怎么去掉,吴忠建设网站目录
1 风速数据EMD分解与可视化
1.1 导入数据
1.2 EMD分解
2 数据集制作与预处理
2.1 先划分数据集#xff0c;按照8#xff1a;2划分训练集和测试集
2.2 设置滑动窗口大小为7#xff0c;制作数据集
3 基于Pytorch的EMD-LSTM-Attention模型预测
3.1 数据加载#…目录
1 风速数据EMD分解与可视化
1.1 导入数据
1.2 EMD分解
2 数据集制作与预处理
2.1 先划分数据集按照82划分训练集和测试集
2.2 设置滑动窗口大小为7制作数据集
3 基于Pytorch的EMD-LSTM-Attention模型预测
3.1 数据加载训练数据、测试数据分组数据分batch
3.2 定义EMD-LSTM-Attention预测模型
第一步先定义自注意力层
第二步定义预测模型
3.3 定义模型参数
3.4 模型训练
3.5 结果可视化 往期精彩内容
时序预测LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较
风速预测一数据集介绍和预处理
风速预测一数据集介绍和预处理
前言
本文基于前期介绍的风速数据文末附数据集先经过经验模态EMD分解,然后通过数据预处理制作和加载数据集与标签最后通过Pytorch实现EMD-LSTM-Attention模型对风速数据的预测。风速数据集的详细介绍可以参考下文
风速预测一数据集介绍和预处理
1 风速数据EMD分解与可视化
1.1 导入数据
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc(font, familyMicrosoft YaHei)# 读取已处理的 CSV 文件
df pd.read_csv(wind_speed.csv )
# 取风速数据
winddata df[Wind Speed (km/h)].tolist()
winddata np.array(winddata) # 转换为numpy
# 可视化
plt.figure(figsize(15,5), dpi100)
plt.grid(True)
plt.plot(winddata, colorgreen)
plt.show() 1.2 EMD分解
from PyEMD import EMD# 创建 EMD 对象
emd EMD()
# 对信号进行经验模态分解
IMFs emd(winddata)# 可视化
plt.figure(figsize(20,15))
plt.subplot(len(IMFs)1, 1, 1)
plt.plot(winddata, r)
plt.title(原始信号)for num, imf in enumerate(IMFs):plt.subplot(len(IMFs)1, 1, num2)plt.plot(imf)plt.title(IMF str(num1), fontsize10)
# 增加第一排图和第二排图之间的垂直间距
plt.subplots_adjust(hspace0.8, wspace0.2)
plt.show() 2 数据集制作与预处理
2.1 先划分数据集按照82划分训练集和测试集 2.2 设置滑动窗口大小为7制作数据集 3 基于Pytorch的EMD-LSTM-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, workers2):# 训练集train_set load(train_set)train_label load(train_label)# 测试集test_set load(test_set)test_label load(test_label)# 加载数据train_loader Data.DataLoader(datasetData.TensorDataset(train_set, train_label),batch_sizebatch_size, num_workersworkers, drop_lastTrue)test_loader Data.DataLoader(datasetData.TensorDataset(test_set, test_label),batch_sizebatch_size, num_workersworkers, drop_lastTrue)return train_loader, test_loaderbatch_size 64
# 加载数据
train_loader, test_loader dataloader(batch_size)
3.2 定义EMD-LSTM-Attention预测模型
第一步先定义自注意力层 第二步定义预测模型 注意输入风速数据形状为 [64, 10, 7] batch_size64, 维度10维代表10个分量7代表序列长度滑动窗口取值。
3.3 定义模型参数
# 定义模型参数
batch_size 64
input_dim 10 # 输入维度为10个分量
hidden_layer_sizes [16, 32, 64, 128] # LSTM隐藏层
attention_dim hidden_layer_sizes[-1] # 注意力层维度 默认为 LSTM输出层维度
output_size 1 # 单步输出model EMDLSTMAttention(batch_size, input_dim, hidden_layer_sizes, attention_dim) # 定义损失函数和优化函数
model model.to(device)
loss_function nn.MSELoss() # loss
learn_rate 0.003
optimizer torch.optim.Adam(model.parameters(), learn_rate) # 优化器
3.4 模型训练 训练结果 采用两个评价指标MSE 与 MAE 对模型训练进行评价100个epochMSE 为0.009660MAE 为 0.0004948EMD-LSTM-Attention预测效果良好适当调整模型参数还可以进一步提高模型预测表现。只要模块加上去效果没有变得太差调一调就显得模型很立体了。 注意调整参数 可以适当增加 LSTM层数和隐藏层的维度微调学习率 调整注意力层维度增加更多的 epoch 注意防止过拟合 可以改变滑动窗口长度设置合适的窗口长度
3.5 结果可视化