Pytorch实现的小波去噪优化后的LSTM股票预测算法

本文介绍了使用PyWavelets库进行小波去噪的方法,并结合LSTM模型对去噪后的股票数据进行训练。通过重新训练模型,对归一化的数据进行还原和画图,展示去噪效果及预测结果。
摘要由CSDN通过智能技术生成

1.小波去噪的实现

使用Pywavelets包进行小波去噪

实现代码如下:

#小波去噪处理

training_set_scaled=training_set_scaled.reshape(-1)

w = pywt.Wavelet('db8')  # 选用Daubechies8小波
maxlev = pywt.dwt_max_level(len(training_set_scaled), w.dec_len)
threshold = 0.05  # Threshold for filtering

coeffs = pywt.wavedec(training_set_scaled, 'db8', level=maxlev)  # 将信号进行小波分解
print(coeffs[0].shape)
print(len(coeffs))
for i in range(1, len(coeffs)):
    coeffs[i] = pywt.threshold(coeffs[i], threshold*max(coeffs[i]))  # 将噪声滤波

training_set_scaled = pywt.waverec(coeffs, 'db8')  # 将信号进行小波重构

plt.plot(training_set_scaled,"b--")

training_set_scaled=np.array(training_set_scaled)
training_set_scaled=training_set_scaled.reshape(-1,1)
print(training_set_scaled.shape)

2.对去噪后的训练集进行重新训练

代码同之前的基本lstm模型的训练代码

3.对归一化后的数据进行还原并画图

maxv=max(training_set)
minv=min(training_set)
print(maxv,minv)
pred=np.array(pred)
for i in range(pred.shape[0]):
    pred[i]=pred[i].detach().numpy()*(maxv-minv)+minv
np.savetxt(tc+'_'+sd+'_'+ed+'_pred.txt', pred,  fmt="%.2f")
plt.figure(figsize=(8, 4))
plt.plot(pred,"b-")

plt.figure()
plt.plot(rmse,"r-")
plt.plot(mae,"b--")


plt.figure()
plt.plot(pred_t,"g-")
plt.plot(testing_set_scaled[11:],"r-")

结果:(蓝色为原始数据,红色为去噪后的数据,绿色为预测数据)

完整代码:

#基本lstm+wavelet优化
#对原始数据使用小波进行降噪处理

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import tushare as ts 
import datetime
import torch
from torch.utils.data import Dataset, DataLoader
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值