利用LSTM(Long Short-Term Memory)进行回归预测的原理和python代码

这篇具有很好参考价值的文章主要介绍了利用LSTM(Long Short-Term Memory)进行回归预测的原理和python代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

lstm回归,Python程序代码,机器学习回归算法,机器学习算法,python,lstm,回归


一、LSTM(Long Short-Term Memory)是什么?

LSTM(Long Short-Term Memory)是一种递归神经网络,主要用于时序数据建模和预测。相对于普通的循环神经网络,LSTM在解决长期依赖问题方面表现更为优异。

二、使用LSTM进行回归预测时需要以下几个步骤

1.数据预处理:

根据实际情况进行缩放、归一化、特征提取等操作,使之适合LSTM模型输入要求。

2.构建LSTM模型:

使用keras或tensorflow框架搭建LSTM模型,包括定义模型结构、选择损失函数以及评价方法等。

3.模型训练:

将数据集分为训练集和验证集,并使用LSTM模型对训练集进行训练。

4.模型预测:

使用LSTM模型对测试集进行预测,将预测结果与实际结果进行比较得出模型效果。

三、Python实现的简单LSTM回归预测程序代码

代码如下(示例):

# 导入库
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, LSTM

# 定义函数,生成训练集和测试集
def generate_train_test_data(data,window_size):
    train_X,train_Y,test_X,test_Y=[],[],[],[]
    for i in range(len(data)-window_size-1):
        # 取出训练数据
        train_X.append(data[i:(i+window_size),0])
        # 取出训练集对应的输出
        train_Y.append(data[i+window_size, 0])
    for j in range(len(data)-window_size-1,len(data)-1):
        # 取出测试数据
        test_X.append(data[j:(j+window_size),0])
        # 取出测试集对应的输出
        test_Y.append(data[j+1,0])
    return np.array(train_X), np.array(train_Y), np.array(test_X), np.array(test_Y)

# 加载和准备数据集 
data = [10,13,17,25,29,12,35,47,31,18,28,39,41,26,20,17,22,15,10,28,33]
data = np.reshape(data, (len(data), 1))

# 划分数据集并设置窗口大小
window_size=3
train_X,train_Y,test_X,test_Y=generate_train_test_data(data,window_size)

# 建立模型
model = Sequential()
model.add(LSTM(64, input_shape=(window_size,1)))
model.add(Dense(1))
 
# 编译模型并定义损失和优化方法
model.compile(loss='mean_squared_error', optimizer='adam')
 
# 训练模型 
model.fit(train_X, train_Y, epochs=300, batch_size=3, verbose=2)
 
# 预测
train_predict=model.predict(train_X)
test_predict=model.predict(test_X)

# 输出结果
print("Train Mean Absolute Error:",np.mean(np.abs(train_predict - train_Y)))
print("Train Root Mean Squared Error:",np.mean(np.sqrt((train_predict - train_Y)**2)))
print("Test Mean Absolute Error:",np.mean(np.abs(test_predict - test_Y)))
print("Test Root Mean Squared Error:",np.mean(np.sqrt((test_predict - test_Y)**2)))


总结

在这个例子中,输入的原始数据为一个长度为21的数组,然后通过generate_train_test_data()函数生成训练集和测试集。接下来,会建立一个LSTM模型来对数据进行回归预测,使用model.fit()函数来训练模型并对其进行优化。最后输出模型的误差和准确性结果,以便分析模型的表现。文章来源地址https://www.toymoban.com/news/detail-726383.html

到了这里,关于利用LSTM(Long Short-Term Memory)进行回归预测的原理和python代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [论文阅读笔记20]MotionTrack: Learning Robust Short-term and Long-term Motions for Multi-Object Tracking

    论文地址: https://arxiv.org/pdf/2303.10404.pdf 代码: 未开源 目前是MOT20的第二名 这篇文章着力于解决 长时 跟踪的问题. 当前大多数方法只能依靠Re-ID特征来进行长时跟踪, 也就是轨迹长期丢失后的再识别. 然而, Re-ID特征并不总是有效的. 尤其是在拥挤和极度遮挡的情况下. 为此, 这篇

    2024年02月16日
    浏览(35)
  • C++:整数(short ,int,long,long long)表示范围

    C++用short、int、long 、long long来表示整数的整形,同一整形也分为有符号(signed)和无符号(unsigned)两种。数据长度与操作系统和编译器的位数有关,其能够表示的范围也有所不同。接下来本文将用代码的形式展示不同数据类型能表示的数据范围。 注释:climits 头文件包含了

    2023年04月08日
    浏览(33)
  • 利用python进行回归分析

    通常大家会认为曲线拟合和回归分析类似,但其实回归分析中是包含曲线拟合的。拟合是研究因变量和自变量的函数关系的。而回归是研究随机变量间的相关关系的。拟合侧重于调整参数,使得与给出的数据相符合。而回归则是侧重于研究变量的关系,对拟合问题做统计分析

    2023年04月22日
    浏览(32)
  • 论文笔记_2018_IV_户外环境中高效Long-Term视觉定位的地图管理

    目录 基本情况 摘要 I. 简介 II. 相关工作 III. 方法论 A. 地图更新

    2024年02月11日
    浏览(34)
  • 时间序列(Time-Series)exp_long_term_forecasting.py代码解析

    from data_provider.data_factory import data_provider from exp.exp_basic import Exp_Basic from utils.tools import EarlyStopping, adjust_learning_rate, visual from utils.metrics import metric import torch import torch.nn as nn from torch import optim import os import time import warnings import numpy as np warnings.filterwarnings(\\\'ignore\\\') #长期预测类 cla

    2024年01月22日
    浏览(35)
  • 论文笔记:FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting

    2022 ICML 长时间序列问题是一个研究很广泛的问题 RNN以及变体会遇到梯度消失/梯度爆炸,这会在很大程度上限制他们的表现 Transformer的方法会导致很高的计算复杂度,以及很大的内存消耗,这也会使得在长时间序列上使用Transformer很吃力 近来有方法优化Transformer,使其计算复

    2024年02月11日
    浏览(31)
  • 保持长期高效的七个法则(一)7 Rules for Staying Productive Long-Term(2)

    If your system is going to be liberating rather than suffocating, however, you need to follow a few guidelines: 然而,如果你的系统想要解放而不是扼制,就需要遵循一些准则: Rule #1 - Your system needs to fit your work(not the other way around) 准则一:系统需要适配你的工作(而不是反过来) Any system is designed

    2024年03月15日
    浏览(39)
  • 论文笔记:A Time Series is Worth 64 Words: Long-term Forecasting with Transformers

    ICLR 2023 比较简单,就不分intro、model这些了 给定每个时间段的长度、划分的stride,将时间序列分成若干个时间段 时间段之间可以有重叠,也可以没有 每一个时间段视为一个token 降低复杂度 Attention 的复杂度是和 token 数量成二次方关系。 如果每一个 patch 代表一个 token,而不是

    2024年02月07日
    浏览(37)
  • 使用自己的数据利用pytorch搭建全连接神经网络进行回归预测

    引入必要的库,包括PyTorch、Pandas等。 这里使用sklearn自带的加利福尼亚房价数据,首次运行会下载数据集,建议下载之后,处理成csv格式单独保存,再重新读取。 后续完整代码中,数据也是采用先下载,单独保存之后,再重新读取的方式。

    2024年02月13日
    浏览(33)
  • Python利用逻辑回归分类器对乳腺肿瘤进行良性/恶性预测实战(超详细 附源码)

    需要源码请点赞关注收藏后评论区留言并且私信~~~ 在本案例中,利用逻辑回归分类器对乳腺肿瘤进行良性/恶行预测,并对预测模型进行指标测算与评价。 本案例数据集采用乳腺癌数据集,原始数据集的下载地址为数据集下载地址 数据特征包括细胞厚度、细胞大小、形状等九

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包