LSTM之时间序列预测

python利用LSTM进行时间序列分析预测 关键词:python、Keras、LSTM、Time-Series-Prediction      关于理论部分,可以参考这两篇文章(RNN、LSTM),本文主要从数据、代码角度,利用LSTM进行时间序列预测。(1)原始时间序列数据(只列出了18行)1455.219971 1399.420044 1402.109985 1403.449951 1441.469971 1457.599976 14 阅读详情
#-*- coding: utf-8 -*-

import os
import sys
import time
import numpy as np
from keras.models import Sequential
from keras.models import load_model
from numpy import newaxis
import matplotlib.pyplot as plt
from keras.layers import LSTM,Dense,Activation,Dropout

reload(sys)
sys.setdefaultencoding('utf-8')


def load_data():
    data = open('data.txt', 'r').read()
    data=data.split('\n')
    sequence_length = 50
    result = []
    for index in range(len(data) - sequence_length):
        result.append(data[index: index + sequence_length+1])
    print np.shape(result)
    result = np.array(result)
    row = int(round(0.9 * result.shape[0]))
    train = result[:row, :]
    np.random.shuffle(train)
    x_train = train[:, :-1]
    y_train = train[:, -1]
    x_test = result[row:, :-1]
    y_test = result[row:, -1]
    x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
    x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
    return x_train, y_train, x_test, y_test


def build_model(layers=[1, 50, 100, 1]):
    model = Sequential()
    model.add(LSTM(
        input_shape=(50,1),
        units=layers[1],
        return_sequences=True))
    model.add(Dropout(0.2))

    model.add(LSTM(
        units=layers[2],
        return_sequences=False))
    model.add(Dropout(0.2))

    model.add(Dense(
        units=layers[3]))
    model.add(Activation("linear"))

    start = time.time()
    model.compile(loss="mse", optimizer="rmsprop")
    print "Compilation Time : ", time.time() - start
    return model

def predict_point_by_point(model, data):
    #直接对测试数据进行预测
    predicted = model.predict(data)
    predicted = np.reshape(predicted, (predicted.size,))
    return predicted

def predict_sequence_full(model, data, window_size):
    #将每次新预测的值作为最后一个,插入到下一个预测队列中
    curr_frame = data[0]
    predicted = []
    for i in range(len(data)):
        predicted.append(model.predict(curr_frame[newaxis,:,:])[0,0])
        curr_frame = curr_frame[1:]
        curr_frame = np.insert(curr_frame, window_size-2, predicted[-1], axis=0)
    return predicted

def predict_sequences_multiple(model, data, window_size, prediction_len):
    #每prediction_len步后重新获取初始预测数据,每prediction_len内将本次预测插入预测数据作为下一次预测的数据
    prediction_seqs = []
    for i in range(int(len(data)/prediction_len)):
        curr_frame = data[i*prediction_len]
        predicted = []
        for j in range(prediction_len):
            predicted.append(model.predict(curr_frame[newaxis,:,:])[0,0])
            curr_frame = curr_frame[1:]
            curr_frame = np.insert(curr_frame, window_size-2, predicted[-1], axis=0)
        prediction_seqs.append(predicted)
    return prediction_seqs


def plot_results(predicted_data, true_data):
    fig = plt.figure(facecolor='white')
    ax = fig.add_subplot(111)
    ax.plot(true_data, label='True Data')
    plt.plot(predicted_data, label='Prediction')
    plt.legend()
    plt.show()


if __name__=='__main__':
    epochs  = 5
    seq_len = 50
    print 'Loading data... '
    X_train, y_train, X_test, y_test = load_data()
    print '\nData Loaded. Compiling...\n'
    model = build_model([1, 50, 100, 1])
    model.fit(
        X_train,
        y_train,
        batch_size=512,
        epochs=epochs,
        validation_split=0.05)
    # model.save('./lstm_time_series.model')
    # model=load_model('./lstm_time_series.model')
    predicted = predict_point_by_point(model, X_test)
    sub=np.array(predicted).astype('float64')-np.array(y_test).astype('float64')
    print np.sqrt(np.sum(map(lambda x:x**2,sub)))
    plot_results(predicted,y_test)

基于LSTM的股票时间序列预测(附数据集和代码) LSTM数据集实战 如果对LSTM原理不懂得小伙伴可以看博主下一篇博客,因为博主水平有限,结合其他文章尽量把原理写的清楚些。 数据集 首先附上数据集 链接:https://pan.baidu.com/s/1AKsz-ohmYHr9mBEEh76P5g 提取码:6owv 这个数据集是关于股票的,里面有日期,开盘价等信息。 既然是时间序列预测,我们最关心的是预测值在时间维度上的走势如何,那我们只要最后一列volume和第一列date这两列就好了。 实战 先是导入相关包,一些常见的包就不详细说了,我们需要的Se 阅读详情

相关推荐

MATLAB实现基于SCA-LSTM正弦余弦算法(SCA)结合长短期记忆网络(LSTM)进行时间序列预测的详细项目实例

MATLAB实现SCA-LSTM时间序列预测项目摘要 本项目提出了一种基于正弦余弦算法(SCA)优化的长短期记忆网络(LSTM)模型(SCA-LSTM)用于时间序列预测。该方法融合了智能优化算法与深度学习的优势,通过SCA全局搜索LSTM关键超参数,克服了传统梯度下降方法易陷入局部最优的缺陷。项目在MATLAB环境下实现了完整工作流程,包括数据预处理、SCA参数优化、LSTM模型训练和预测评估。实验结果表明,该方法在电力负荷、金融数据等多种时间序列上具有更高的预测精度和稳定性。项目创新性地设计了振幅递减机制

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1649

LSTM滑窗-预测(二)

import os import time import warnings import numpy as np from numpy import newaxis from keras.layers.core import Dense, Activation, Dropout from keras.layers.recurrent import LSTM from keras.models im...

左手coding,右手cooking 2378

MATLAB实现基于AOA-LSTM算术优化算法(AOA)优化长短期记忆网络(LSTM)进行时间序列预测的详细项目实例

本项目提出了一种基于算术优化算法(AOA)优化长短期记忆网络(LSTM)的时间序列预测方法。通过AOA算法自动调整LSTM的关键超参数(如隐藏单元数、学习率、dropout率等),有效提升了模型的预测精度和泛化能力。项目在MATLAB环境下实现完整流程,包括数据预处理、AOA-LSTM模型训练、预测和性能评估,并设计了可视化GUI界面。实验结果表明,该方法能够准确预测金融市场、工业设备监测等领域的时间序列数据,具有较高的工程应用价值。项目创新性地融合了群体智能优化算法与深度学习技术,为时间序列分析提供了高效

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1972

基于RNN的时间序列预测

1. 这是整个项目的文件结构 2. 配置文件 config.py # data_provider: data_power_consumption path_to_dataset = '../data/household_power_consumption.txt' sequence_length = 50 ratio= 0.5 epochs = 1 save_path = "../model...

君子不器 4405

Python实现基于VMD-LSTM变分模态分解(VMD)结合长短期记忆网络(LSTM)进行时间序列预测的详细项目实例

本项目提出了一种基于变分模态分解(VMD)和长短期记忆网络(LSTM)的混合时间序列预测方法。主要内容包括: 创新性地结合VMD信号分解技术和LSTM深度学习模型,实现对复杂非平稳时间序列的高精度预测。VMD将原始信号自适应分解为多个模态,LSTM分别学习各模态时序特征。 建立了完整的预测流程:数据预处理→VMD分解→模态LSTM建模→预测结果融合。采用模块化设计,包含数据处理、模型训练、评估可视化等功能模块。 项目实现了一个交互式GUI系统,支持参数设置、模型训练、预测评估和结果导出。通过多种指标和可视化

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1988

MATLAB实现基于MIC-LSTM最大信息系数(MIC)结合长短期记忆网络(LSTM)进行时间序列预测的详细项目实例

本项目基于最大信息系数(MIC)与长短期记忆网络(LSTM)相结合,构建了一套高效的时间序列预测系统。通过MIC筛选与目标变量强相关的特征,显著提升了LSTM模型的预测精度和训练效率。系统在MATLAB平台实现了完整流程,包括数据预处理、特征筛选、模型训练和预测评估,并配备了可视化界面和多维度性能指标。 主要创新点包括: 深度融合MIC特征选择与LSTM时序建模能力 设计多层LSTM架构优化长期依赖捕捉 开发高效的非线性特征筛选机制 提供全面的模型评估体系和可视化工具 项目适用于金融预测、工业监测、环境分析

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 1553

对LSTM中间变量形状shape的理解, 附keras中LSTM的各个变量的shape理解

假设输入的shape是[bs, length, d], bs是批数量, length是预定义的最大序列长度, d是序列中每个step的维度(对于图像序列,可以理解为每一帧的特征向量维度). 下面说对于bs中1个样本的情况, 也就是shape为[1, length, d] LSTM(或者RNN)有多个cell, 1个cell对应1个step(1个时刻的状态), 这些cell之间的网络层是共享的, ...

人生虚空 6765

【Matlab光伏功率预测】基于LSTM长短期记忆网络的光伏功率时间序列预测(附MATLAB代码)

基于LSTM长短期记忆网络的光伏功率时间序列预测(附MATLAB代码)

k8291121的博客 1645

深度学习之LSTM时间序列预测

LSTM(long short-term memory,LSTM):长短时记忆网络,是循环神经网络(recurrent neural network,RNN)的一个重要结构,循环神经的主要用途是处理和预测序列数据。全连接神经网络(感知机,BP神经网络,RBF 神经网络等)或卷积神经网络模型中,网络结构都是从输入层到隐含层再到输出层,层与层之间是全连接或部分连接,每层节点之间是无连接的。然而循环神经...

Melo琦 2万+

【回归预测-Lstm预测】基于长短期记忆网络LSTM实现电价时间序列单步预测附matlab代码

​时间序列数据往往反映了某个事件发展的规律,蕴含着丰富的潜在信息。长短期记忆(LSTM)神经网络由于其网络结构的特殊性可以储存信息,解决长期依赖问题,常被用于时间序列预测。对LSTM的研究有利于高效挖掘出时序数据中的重要信息,对社会、经济等各个方面的发展均有着重要的影响。智能优化算法。

qq_59747472的博客 982

DeepSeek绝了!3分钟生成PPT,专治“五彩斑斓的黑“!!(保姆教程)

DeepSeek绝了!3分钟生成PPT,专治"五彩斑斓的黑"!!(保姆教程)

yizhen91y的博客 4万+

时间序列预测——LSTM模型(附代码实现)

长短时记忆网络( Long short-term memory,LSTM )是一种循环神经网络 (Recurrent neural network, RNN)的特殊变体。

JJJAY 9万+

MATLAB与STK互联23:卫星对象操作(14)—仿真分析案例1,建立8个地面站,分析对卫星的可见性

学习到这里,我们有必要做个仿真分析案例,把之前我们学习的零散知识点串起来,看一下在真实的分析中怎么应用。 分析要求:建立8个地面站,分析每个地面站对某个轨道高度500km、倾角60°圆轨道的卫星,1天内的可见次数、可见弧长以及可见弧段间隔列表。 基本约束:地面站仰角8°~90°,作用距离<2000km,太阳矢量与地面站到卫星视线夹角不小于15°,可见弧段应大于30s。地面站站址可随机生成,但要求在南北纬50°范围内。 下面上代码: uiap = actxserver(‘STK11.application’)

ltylty001的博客 7491

基于ANN和LSTM的时间序列预测

如何使用python开发一个基于Keras+ANN+LSTM的时间序列预测程序? 本文的目的是解释人工神经网络(ANN)和长期短期记忆递归神经网络(LSTM RNN),使您能够在现实生活中使用它们,并为预测时间序列构建最简单的ANN和LSTM递归神经网络。 数据 股票代码VIX是著名的芝加哥期权交易所波动率指数,它是衡量S&P500(标准普尔500)指数期权并预示股市波动预期的一种流...

weixin_42608414的博客 1万+

Linux实战:rMATS可变剪切分析从零到一,避坑指南与结果深度解析

本文详细介绍了在Linux系统上从零开始部署rMATS进行可变剪切分析的完整流程,包括环境搭建、安装避坑指南、参数优化及结果解读。特别针对gfortran依赖、数学库配置等常见问题提供解决方案,并深入解析JC与JCEC结果的差异及可视化技巧,帮助生物信息学研究者高效完成可变剪切分析。

weixin_30394669的博客 410

光学系统设计:波段、光源、光纤与探测器匹配指南

在光学测量和光纤通信系统中,波段、光源、光纤和探测器的匹配关系是系统设计的核心基础。波段指电磁波谱中的特定波长范围,光源负责产生特定波长的光信号,光纤作为传输介质需要与波长匹配以降低损耗,探测器则负责将光信号转换为电信号。理解各组件的光谱特性对于系统性能至关重要,例如在850nm短波长多模光纤系统中,VCSEL激光器与PIN光电二极管的组合能提供最佳性价比。典型应用场景包括生物医学成像、光纤通信和气体传感,其中光谱重叠优化、模场直径匹配和偏振特性协调是关键技术要点。通过实测数据对比不同组合的传输性能,可以为

weixin_33812433的博客 338

时间序列预测股票数据—以LSTM模型为例

时间序列是按照一定时间间隔排列的数据,时间间隔可以是任意时间单位,通过对时间序列的分析,我们可以探寻到其中的现象以及变化规律,并将这些信息用于预测。这就需要一系列的模型,用于将原始时间序列数据放进模型中进行训练,并用训练好的时间序列模型来预测未知的时间序列。提供的数据:“中国平安”2016-2018年股票数据,背景为平安保险集团。

m0_52051577的博客 1万+

HackRF实战:用Portapack扩展板玩转GPS信号模拟(附固件刷写教程)

本文详细介绍了如何使用HackRF与Portapack扩展板进行GPS信号模拟,包括固件刷写、信号生成与发射配置等实战操作。通过专业工具和优化技巧,读者可以掌握软件无线电的高级应用,解决手机定位难题,同时强调安全合规使用的重要性。

weixin_28717431的博客 363

时序预测 | MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测 替换数据可以直接使用,注释清楚,适合新手

在金融市场、气象预测、股票走势等领域,时间序列预测一直是一个重要的问题。随着人工智能和机器学习的发展,越来越多的方法被应用于时间序列预测中。本文将介绍一种基于长短期记忆网络(LSTM)结合AdaBoost的时间序列预测方法。长短期记忆网络是一种特殊的循环神经网络,它在处理时间序列数据时表现出色。LSTM网络能够学习长期依赖关系,对于时间序列数据中的趋势和周期性变化有着较好的表现。然而,单独的LSTM网络可能无法充分捕捉时间序列数据中的复杂特征,因此需要结合其他方法进行预测。

m0_57702748的博客 1052

智慧矿山无人机空地一体化解决方案

未来,随着技术的不断进步和应用场景的不断拓展,智慧矿山无人机空地一体化解决方案将在矿业领域发挥更加重要的作用,为矿山的可持续发展提供更加有力的保障。该系统能够实现矿山的全方位、全天候监测与管理,提升矿山生产效率,降低安全风险,并为矿山的可持续发展提供有力支持。智慧矿山无人机空地一体化解决方案是当前矿业领域技术创新的重要方向,旨在通过集成无人机技术、物联网、大数据、人工智能等先进技术,实现矿山的智能化、高效化和安全化运营。在矿山爆破、挖掘等危险作业中,无人机可进行远程监控和指挥,降低人员安全风险。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 1110

多准则决策方法体系(AHP、熵权法、随机森林、加权线性法、TOPSIS、模糊综合评价)

多准则决策方法体系的基础,是由三大赋权方法和三大评价框架构成的 “3+3” 核心模块。赋权方法聚焦于准则重要性的量化,评价框架则专注于多准则信息的综合集成,二者共同覆盖了从 “确定权重” 到 “输出结果” 的全流程决策需求。

```On Earth, Be Water, By Coding``` 522

时间序列预测 | Matlab基于长短期记忆网络(LSTM)的时间序列预测

​时间序列预测是一项重要的任务,它在许多领域中具有广泛的应用,如金融、气象、交通等。准确地预测未来的时间序列趋势对于决策制定和规划具有重要意义。近年来,深度学习技术在时间序列预测中取得了显著的进展,其中长短期记忆网络(LSTM)成为了一种非常有效的方法。LSTM是一种递归神经网络(RNN)的变体,专门用于处理具有长期依赖关系的序列数据。相比于传统的RNN,LSTM能够更好地捕捉时间序列中的长期依赖关系,并且能够避免梯度消失或爆炸的问题。这使得LSTM成为了时间序列预测中的一种首选方法。

m0_60703264的博客 257

微信小程序推广策略,打开小程序领域流量大门

本文旨在为小程序开发者、运营者和企业主提供一套完整的微信小程序推广策略体系,帮助他们在竞争激烈的小程序生态中获得更多流量和用户。内容涵盖从0到1的冷启动策略,到成熟期的增长技巧。本文将首先介绍小程序的基础推广设置,然后深入探讨各种流量获取渠道,接着分析数据驱动的优化方法,最后展望未来发展趋势。小程序:无需下载安装即可使用的应用,运行在微信生态内:独立访客数:页面浏览量转化率:完成目标行为的用户比例留存率:用户在一定时间后仍活跃的比例自然流量获取:通过优化搜索、完善资料等方式获得基础流量社交裂变。

小程序开发 1031

【Matlab股票价格预测】基于LSTM长短期记忆网络的股票价格时间序列预测(附MATLAB代码)

股票价格预测是金融领域中一项极具挑战性的任务。随着人工智能和机器学习技术的不断发展,基于深度学习的股票价格预测模型变得越来越受到关注。在这篇博文中,我们将探讨一种基于LSTM双向长短期记忆网络的股票价格时间序列预测模型。股票价格预测是指利用历史股票价格和相关数据,通过建立数学模型,来预测未来股票价格的变化趋势。这对于投资者和金融机构来说具有重要意义,因为准确的股票价格预测可以帮助他们做出更明智的投资决策。

matlab_dingdang的博客 1254

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

WOA-LSTM时序预测 | MATLAB实现WOA-LSTM鲸鱼算法优化长短期记忆网络时间序列预测

长短期记忆网络 (LSTM) 作为一种有效的循环神经网络,在时间序列预测领域展现出强大的能力。然而,LSTM 网络的性能高度依赖于其超参数的设置,而这些参数的优化往往需要耗费大量的时间和精力。本文提出了一种基于鲸鱼优化算法 (WOA) 优化的 LSTM 时间序列预测模型 (WOA-LSTM)。该模型利用 WOA 算法对 LSTM 网络的超参数进行全局寻优,从而有效提升模型的预测精度和泛化能力。

j_jinger的博客 1231

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: LSTM之文本分类实例
下一篇: 文本主题模型之潜在语义分析(LSA)
data_scientist
博客等级 码龄10年 52粉丝 38原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值