news 2026/5/1 7:38:39

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

作者头像

张小明

前端开发工程师

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/5/1 6:17:39

小白必看!GME多模态向量一键部署教程,轻松实现跨模态搜索

小白必看!GME多模态向量一键部署教程,轻松实现跨模态搜索 你是否试过用一句话描述一张图,却找不到匹配的图片?或者上传一张产品截图,想立刻找到对应的说明书、评测视频甚至用户反馈?又或者,面对…

作者头像 李华
网站建设 2026/4/29 23:29:56

一键部署Pi0机器人控制模型,打造你的专属AI助手

一键部署Pi0机器人控制模型,打造你的专属AI助手 你有没有想过,让机器人真正听懂你的话,看懂眼前的场景,然后精准执行动作?不是科幻电影里的桥段,而是今天就能上手的真实技术——Pi0视觉-语言-动作流模型。…

作者头像 李华
网站建设 2026/5/1 0:55:23

agent-tools 技能分析报告

agent-tools 技能分析报告技能用途agent-tools 基于 inference.sh CLI,提供对 150 AI 应用的统一调用能力,覆盖图像/视频生成、LLM 调用、搜索与社媒自动化等场景。适合以下用途:图像生成:通过 FLUX、Gemini、Grok 等模型生成图片…

作者头像 李华
网站建设 2026/5/1 7:24:18

【2026】 LLM 大模型系统学习指南 (55)

大型语言模型修炼史(第三阶段):参与实战,打磨技巧大型语言模型的第三阶段修炼,是在前两阶段基础上的质的升华—— 第一阶段的无监督预训练让模型完成了知识积累,第二阶段的指令微调让模型学会了响应人类意图…

作者头像 李华
网站建设 2026/4/25 7:00:04

无需代码!Qwen2-VL-2B-Instruct图文相似度计算工具使用指南

无需代码!Qwen2-VL-2B-Instruct图文相似度计算工具使用指南 1. 引言:让机器看懂图片和文字的关系 你有没有遇到过这样的场景?电脑里存了几千张产品图片,想找一张“阳光下的沙滩度假照”,只能一张张翻看文件名&#x…

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

【2026】 LLM 大模型系统学习指南 (56)

以大型语言模型打造的 AI Agent—— 从指令工具到自主智能体的跨越基于大型语言模型(LLM)打造的 AI Agent,是大模型技术从被动的指令执行工具向主动的自主智能体的核心进化方向。如果说普通 LLM 是 “听令行事的助手”,那么 AI Ag…

作者头像 李华