news 2026/6/19 19:48:05

基于小波神经网络的时间序列预测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于小波神经网络的时间序列预测

基于小波神经网络的时间序列预测 内涵详细的代码注释

时间序列预测是一个广泛的研究领域,涉及金融、气象、股票等多方面的应用。小波神经网络(Wavelet Neural Network, WNN)结合了小波变换(Wavelet Transform, WT)和神经网络(Neural Network, NN)的优势,能够有效处理非平稳时间序列数据。本文将介绍如何利用小波神经网络进行时间序列预测,并附上详细的代码示例。

1. 数据预处理

首先,我们需要加载并预处理数据。这里使用一个简单的股票价格数据集,数据集包含时间戳和对应的股票收盘价。

import pandas as pd import numpy as np import pywt import matplotlib.pyplot as plt from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import Dense, LSTM # 加载数据集 data = pd.read_csv('stock_price.csv') time = data['Time'].values price = data['Price'].values # 数据归一化 scaler = MinMaxScaler() price_scaled = scaler.fit_transform(price.reshape(-1, 1))
2. 小波分解

接下来,我们对时间序列数据进行小波分解。小波变换可以将信号分解为不同尺度(分辨率)的系数,从而提取信号的特征。

# 选择小波基 wavelet = 'db4' level = 3 # 分解的层数 # 小波分解 coeffs = pywt.wavedec(price_scaled, wavelet, level=level) # 可视化小波系数 plt.figure(figsize=(12, 6)) for i, coeff in enumerate(coeffs): plt.subplot(2, 2, i+1) plt.plot(coeff) plt.title(f'Level {i}') plt.suptitle('Wavelet Decomposition Coefficients') plt.show()
3. 特征提取

从分解结果中选择一个合适的分辨率作为输入特征。通常,较高分辨率的系数能够更好地捕捉局部特征,而较低分辨率的系数则能够捕捉全局特征。

# 选择中间分辨率作为输入特征 feature = coeffs[level]
4. 构建神经网络模型

我们使用LSTM(Long Short-Term Memory)神经网络来建模时间序列数据,因为LSTM适合处理序列数据中的长期依赖关系。

# 定义模型 model = Sequential() model.add(Dense(32, activation='relu', input_dim=feature.shape[1])) model.add(LSTM(16, activation='relu', return_sequences=False)) model.add(Dense(1)) # 编译模型 model.compile(optimizer='adam', loss='mean_squared_error') # 训练模型 model.fit(feature, price_scaled, epochs=100, batch_size=10, verbose=2)
5. 模型评估

在训练完成后,我们需要评估模型在验证集上的表现。

# 使用模型进行预测 predicted_price = model.predict(feature) # 反归一化 predicted_price = scaler.inverse_transform(predicted_price) # 可视化预测结果 plt.figure(figsize=(12, 6)) plt.plot(time, price, label='Actual Price') plt.plot(time, predicted_price, label='Predicted Price') plt.title('Stock Price Prediction') plt.xlabel('Time') plt.ylabel('Price') plt.legend() plt.show()
6. 代码分析
  • 数据预处理:使用MinMaxScaler对数据进行归一化,以提高神经网络的训练效率。
  • 小波分解:使用PyWavelets库进行小波分解,选择db4作为小波基,并分解到3层。这样可以提取不同尺度的特征。
  • 特征提取:选择第3层的小波系数作为输入特征,认为这些系数能够更好地捕捉股票价格的短期波动。
  • 模型构建:使用一个简单的LSTM结构,包含一个全连接层和一个LSTM层,激活函数选择relu,优化器选择Adam。
  • 模型评估:通过绘制实际价格和预测价格的对比图,直观评估模型的预测效果。
7. 总结

通过上述步骤,我们构建了一个基于小波神经网络的时间序列预测模型。小波变换帮助提取了信号的特征,而神经网络则用于建模和预测。这种方法在处理非平稳和非线性时间序列数据时具有显著优势。

基于小波神经网络的时间序列预测 内涵详细的代码注释

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/17 20:58:50

Qwen3-TTS语音生成实测:10秒搞定多语种配音

Qwen3-TTS语音生成实测:10秒搞定多语种配音 1. 前言:当文字有了声音 你有没有想过,给一段文字配上声音,能有多简单? 过去,想要一段专业的配音,要么得花钱请人录,要么得自己学复杂…

作者头像 李华
网站建设 2026/6/14 5:36:31

Qwen-Image应用案例:生成产品展示图的技巧

Qwen-Image应用案例:生成产品展示图的技巧 1. 为什么电商团队都在悄悄用Qwen-Image做主图? 你有没有遇到过这些场景: 运营同事凌晨三点发来消息:“明天大促,20张新品主图还没做,能加急吗?”设计…

作者头像 李华
网站建设 2026/6/15 16:13:36

一键部署UI-TARS-desktop:自然语言控制电脑不求人

一键部署UI-TARS-desktop:自然语言控制电脑不求人 [【免费下载链接】UI-TARS-desktop A GUI Agent application based on UI-TARS (Vision-Language Model) that allows you to control your computer using natural language. 项目地址: https://gitcode.com/Git…

作者头像 李华
网站建设 2026/6/15 5:20:12

OFA图像描述服务实战:Docker一键部署+Web界面调用教程

OFA图像描述服务实战:Docker一键部署Web界面调用教程 你是否遇到过这样的场景:面对一张精美的图片,却苦于无法用文字精准地描述它的内容?无论是为电商商品图配文、为社交媒体图片写说明,还是整理个人相册,…

作者头像 李华
网站建设 2026/5/28 21:56:35

5步搞定:通义千问1.5-1.8B-Chat-GPTQ-Int4部署与调用

5步搞定:通义千问1.5-1.8B-Chat-GPTQ-Int4部署与调用 想快速体验一个轻量级但功能强大的中文对话AI吗?今天,我将带你用最简单的方式,在5个步骤内完成通义千问1.5-1.8B-Chat-GPTQ-Int4模型的部署与调用。这个模型虽然参数规模不大…

作者头像 李华
网站建设 2026/5/28 20:27:22

MiniCPM-V-2_6零基础入门:5分钟搞定多模态AI部署与使用

MiniCPM-V-2_6零基础入门:5分钟搞定多模态AI部署与使用 1. 快速了解MiniCPM-V-2_6 MiniCPM-V-2_6是目前最强大的视觉多模态模型之一,它不仅能看懂图片,还能理解视频内容,甚至能同时分析多张图片之间的关系。这个模型只有80亿参数…

作者头像 李华