news 2026/4/16 17:20:41

基于LSTM的时间序列单输入单输出预测之旅

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于LSTM的时间序列单输入单输出预测之旅

基于长短期记忆网络算法LSTM的时间序列预测 单输入单输出预测 代码含详细注释,不负责 数据存入Excel,替换方便,指标计算有决定系数R2,平均绝对误差MAE,平均相对误差MBE

在数据的海洋中,时间序列预测就像一座神秘的岛屿,吸引着无数数据爱好者和工程师前去探索。今天咱们就借着长短期记忆网络(LSTM)这股“东风”,开启时间序列单输入单输出预测的奇妙旅程。

为什么是LSTM

传统的神经网络在处理时间序列时,往往会遇到“梯度消失”或“梯度爆炸”的问题,就好像人走太远路会累垮一样,时间序列稍长一点,传统神经网络就“歇菜”了。而LSTM就像是给神经网络装上了一个“记忆背包”,能够很好地处理长期依赖问题,记住时间序列中的重要信息,让预测更靠谱。

数据准备

咱们的数据要存在Excel里,替换起来方便。假设我们的数据是简单的时间序列数值,例如每月的销售额。我们可以用pandas库来读取数据。

import pandas as pd # 读取Excel数据 data = pd.read_excel('time_series_data.xlsx') # 提取特征列(这里假设只有一列数值) features = data.iloc[:, 0].values

这段代码很简单,pd.read_excel就是把Excel文件里的数据读进来,存到data这个变量里。然后通过iloc方法,我们提取出第一列(索引从0开始)的数据,这就是我们的特征值,存到features里。

数据预处理

在把数据喂给LSTM之前,得给它“打扮打扮”。我们通常要把数据归一化到0 - 1之间,就像给数据排排队,让它们在一个合适的“身高范围”内。

from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler(feature_range=(0, 1)) scaled_features = scaler.fit_transform(features.reshape(-1, 1))

这里MinMaxScaler就是负责归一化的“小能手”,featurerange=(0, 1)指定了归一化的范围。reshape(-1, 1)是因为fittransform方法要求数据是二维的,所以把一维的features变成二维。

创建数据集

LSTM需要特定格式的输入数据,一般是以序列的形式。我们要创建输入输出对。

def create_dataset(dataset, look_back=1): dataX, dataY = [], [] for i in range(len(dataset)-look_back): a = dataset[i:(i+look_back), 0] dataX.append(a) dataY.append(dataset[i + look_back, 0]) return np.array(dataX), np.array(dataY) look_back = 1 X, Y = create_dataset(scaled_features, look_back)

createdataset这个函数就是干这个事的。lookback表示我们用过去多少个时间步的数据来预测下一个时间步,这里设为1。循环里每次取look_back个数据作为输入a,然后下一个数据作为输出,分别存到dataXdataY里,最后返回处理好的XY

构建LSTM模型

现在到了搭建LSTM模型的关键环节。

from keras.models import Sequential from keras.layers import LSTM, Dense import numpy as np # 重塑输入数据为 [样本数, 时间步数, 特征数] X = np.reshape(X, (X.shape[0], X.shape[1], 1)) model = Sequential() model.add(LSTM(4, input_shape=(look_back, 1))) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam')

先把X数据重塑成LSTM要求的三维格式:[样本数, 时间步数, 特征数]。然后创建一个顺序模型Sequential,添加一个LSTM层,这里设置了4个隐藏单元,输入形状就是我们之前设置的lookback和特征数1。再添加一个全连接层Dense,输出维度为1,因为我们是单输出预测。最后用均方误差meansquared_error作为损失函数,adam优化器来编译模型。

模型训练

model.fit(X, Y, epochs=100, batch_size=1, verbose=2)

这行代码就是让模型开始训练啦,epochs表示训练的轮数,这里是100轮;batch_size是每次训练用的数据量,设为1;verbose控制训练过程中输出信息的详细程度,2表示每个epoch输出一行信息。

模型评估

训练完了,得看看模型表现咋样,这就用到决定系数R2、平均绝对误差MAE和平均相对误差MBE。

from sklearn.metrics import r2_score, mean_absolute_error import numpy as np # 预测 predictions = model.predict(X) # 反归一化 predictions = scaler.inverse_transform(predictions) Y = scaler.inverse_transform([Y]) # 计算指标 r2 = r2_score(Y[0], predictions[:, 0]) mae = mean_absolute_error(Y[0], predictions[:, 0]) # 计算MBE mbe = np.mean((Y[0] - predictions[:, 0]) / Y[0]) * 100 print(f'R2: {r2}') print(f'MAE: {mae}') print(f'MBE: {mbe}%')

先让模型对训练数据进行预测predictions,然后把预测结果和真实值反归一化回原始数据范围。接着用r2scoremeanabsolute_error计算R2和MAE,MBE则通过公式自己计算。最后打印出这几个指标,看看模型的预测效果到底如何。

基于长短期记忆网络算法LSTM的时间序列预测 单输入单输出预测 代码含详细注释,不负责 数据存入Excel,替换方便,指标计算有决定系数R2,平均绝对误差MAE,平均相对误差MBE

通过以上步骤,我们就完成了基于LSTM的时间序列单输入单输出预测,从数据准备到模型评估,每一步都充满了乐趣与挑战,希望大家在这个过程中也能收获满满!

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

Vosk 中文离线语音识别-Android studio软件源代码-java语言

Vosk 中文离线语音识别:简介与使用说明 一、软件简介 🎙️ 软件名称:Vosk 离线语音识别核心功能:一款基于 Vosk 开源引擎的中文离线语音识别工具,支持麦克风实时语音转文字和音频文件识别,全程无需联网&…

作者头像 李华
网站建设 2026/4/16 9:03:40

STM32 通过 WIFI 实现远程 OTA 升级

stm32 远程升级 OTA升级 使用WIFI连接升级 芯片 stm32f103系列 升级方式:wifi模块?自建服务器 升级文件为BIN文件,需要使用配套的exe文件将原来的bin文件内的数据,每隔128个字节进行crc16检验,并添加到后面。 单片机下载后,每下载…

作者头像 李华
网站建设 2026/4/16 9:06:31

加州理工与斯坦福联合揭秘大语言模型推理失误的真相

这项由加州理工学院和斯坦福大学联合开展的研究发表于2026年1月的《机器学习研究汇刊》,研究人员首次系统性地梳理和分析了大语言模型在推理过程中的各种失误表现。有兴趣深入了解的读者可以通过OpenReview平台的论文编号vnX1WHMNmz查询完整论文。你有没有想过&…

作者头像 李华
网站建设 2026/4/16 10:59:47

AI应用架构师进阶:容量规划中的GPU虚拟化技术与资源调度

AI应用架构师进阶:容量规划中的GPU虚拟化技术与资源调度 1. 引入与连接 1.1 引人入胜的开场 在当今数字化浪潮中,人工智能(AI)技术犹如一颗璀璨的明星,照亮了各个领域的发展道路。从智能语音助手到自动驾驶汽车&#x…

作者头像 李华
网站建设 2026/4/16 9:04:10

Hadoop与社交网络:关系图谱挖掘技术

Hadoop与社交网络:大规模关系图谱挖掘的技术实践与案例解析 一、引言:当社交网络遇到“数据洪流” 清晨打开微信,你收到3条好友请求;刷抖音时,系统推荐了“可能认识的人”;微博热搜里,某明星的绯…

作者头像 李华
网站建设 2026/4/16 11:07:24

如何均衡模拟链路的各个模块的性能指标以达到最高的信噪比

目录 一、 理解关键性能指标及其冲突 二、 均衡策略与设计准则 1. 噪声最优分配(级联公式的应用) 2. 增益分布策略 3. 线性度规划与预算 4. 动态范围管理 三、 系统设计与优化流程 四、 一个简化的设计范例(接收机) 总结 …

作者头像 李华