LSTM网络理解与人数预测

python基础教程:Python中利用LSTM模型进行时间序列预测分析的实现 @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要介绍了Python中利用LSTM模型进行时间序列预测分析的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题... 阅读详情

文章开头,我们要做一个假设,假设你有个女朋友,好了我们可以了.

这个问题很重要,涉及到我们网络的理解.

一、网络简介

LSTM我们一般称之为递归神经网络或是长短时记忆网络,为什么我们这样称呼这个网络,因为在我们的训练过程中我们要让他像人一样的思考,比如我们举一个例子,你现在有一个女朋友,他突然生气了,我们得想想他为啥生气。

哦,我们都知道,这是一个复杂的问题,按照我们的思路怎么找到问题呢,我们得从开始交流开始回想我们之间得任何话题和话题得延申,我们从第一句聊天开始思考我们怎么让他这样得生气,我们的结果就是计算出我们生气得原因,我们根据我们得一步步推理,前面得话造成得心情反应和语言状态推理后面得反应,这样一步步得来,我们也就能得到我们得问题所在了。

我们得LSTM网络就像这一个流程,就是前面得计算可以影响到我们后面得结果。说了这么多我们来看看我们得网络啥样吧。

二、LSTM思路

LSTM网络可以解决RNN网络长距离无法依赖得问题,因为在我们的网络中我们比RNN网络多了个 记忆门(简称 C )

如下图:

640?wx_fmt=png&wxfrom=5&wx_lazy=1

可以来记录下这个时刻的细胞状态,我们的函数一般是一个输入对应一个输出我们在这里定义我们的当前时刻的输出为当前时刻的输出 H ,我们当然还有一个我们数据的输入 X ,我们的定义暂时就这么多.

现在我们看看我们的RNN网络结构:

这里写图片描述

我们的结构中,我们可以看到的是我们的网络的输入输出了x,输出了H,然后我们上面的输出是将上一次的输出和当次的输入作为模型的输入,在将当次的输出和下一次的输入一起输出,中间经过了tanh激活函数,这就是RNN网络.

下面该看看LSTM网络咯:

LSTM网络结构

​ 我们理解了上面的RNN网络,我们在看我们下面的这个结构,我们首先去除中间的操作,我们发现我们的网络比上面的网络是不是多了一个输出,而这个输出又成了下面模块的输入,我们想想我们最开始是不是说过我们的网络中,LSTM解决了RNN的啥问题?-------长距离依赖.,说的简单点就是看看是不是又没得关联,就像你女朋友生气,肯定不是一下子就来了,这得是问题得积累,对不对啊?

三、LSTM核心思想

​ 首先我们要知道的是在我们网络中间的黑匣子里面我们包含了四个东西**( 细胞状态 , 遗忘门 F ,输入门 Xi ,输出门 Hi)**,这是我们里面最重要的四个东西.

现在我们看看我们得中间得东西是啥:

这里写图片描述

​ 首先我们看到的这个横线是细胞状态 © ,来记录你的当前得神经细胞状态然后传送到下一个模块.他就像一个流水线,一个接一个的传送.在这里我们的遗忘门就起了作用对我们的细胞状态进行处理,遗忘 0 or 保留 1(数字是介于0,1之间的数),通过添加和删除信息的方式,再由输出门**—由一个sifmoid网络层和一个成对乘法组成.决定信息的流通,是不是要一直保留,还是要适当的删除某一些状态

这里写图片描述

四、详细讲解

第一步

这里写图片描述

我们的第一步是决定什么信息可以通过细胞传送带,在这里我们的决策门为遗忘门,使用sigmoid函数来控制,根据上一时刻的输出通过或者一部分通过.

第二步

这里写图片描述

在我们这里我们定义我们的新信息,我们有两个部分,第一部分是根据我们的输入层经过sigmoid函数来决定那些信息是要更新的,然后就是tanh函数生成一个行的后选值,然后相加得到了新的候选值.

第三步

这里写图片描述

到了这里我们开始定义我们的输出,先是通过sigmoid函数来得到一个初始的输出,然后在经过tanh经过tanh函数将我们的输出归一到0-1之间,然后在和sigmoid得到的输出逐队的相乘,从而就得到了我们模型的输出.

最终

我们的模型是一个模块一个模块的进行迭代的,所以这是一个模块结构,我们还需要将我们的上一次的输出和当前的输入和上一次的细胞状态进行输入进行计算.

可以理解,首先sigmoid函数的输出是不考虑先前时刻学到的信息的输出,tanh函数是对先前学到信息的压缩处理,起到稳定数值的作用,两者的结合学习就是递归神经网络的学习思想。至于模型是如何学习的,那就是后向传播误差学习权重的一个过程了。

四、人数预测model
######################################################
# step 1 : 导入库文件
######################################################
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from pandas import read_csv
import math
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import mean_squared_error


######################################################
# step 2 : 导入原始数据
######################################################
dataset = read_csv('D:/lstm_data/true_data.csv', usecols=[1], engine='python', skipfooter=3)
# 提取并转置
dataset = dataset.values.transpose()
dataset = np.asarray(dataset)
print("datafemage shape: ",dataset.shape)
dataset = np.array(dataset).reshape(-1,1)
dataset = dataset.astype('float32')
plt.figure("resart data")

# 绘制原始图像
plt.plot(dataset)
plt.show()

######################################################
# step 3 : 划分数据集
######################################################
def creat_dataset(dataset,look_back=1):
    datax, datay = list(), list()
    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back),0]
        datax.append(a)
        datay.append(dataset[i+look_back,0])
    return np.array(datax), np.array(datay)

# 定义随机数种子
np.random.seed(7)

# 归一化数据
scaler = MinMaxScaler(feature_range=(0,1))
dataset = scaler.fit_transform(dataset)

#  划分数据集合,70%是训练集其余是测试集
trian_size = int(len(dataset)*0.7)
train,test = dataset[:trian_size,:], dataset[trian_size:,:]

# 定义超参数
look_back = 1

# 划分数据和标签
train_x,train_y = creat_dataset(train, look_back)
test_x,test_y = creat_dataset(test, look_back)

# 定义输入结构
train_x = np.reshape(train_x, (train_x.shape[0], 1, train_x.shape[1]))
test_x = np.reshape(test_x, (test_x.shape[0], 1, test_x.shape[1]))

######################################################
# step 4 : 定义网络结构
######################################################
model = Sequential()
model.add(LSTM(4,input_shape=(1,look_back)))
model.add(Dense(1))
model.compile(loss='mean_squared_error',optimizer='adam')
model.fit(train_x,train_y,epochs=30,batch_size=1,verbose=2)

######################################################
# step 5 : 进行预测
######################################################
train_predict = model.predict(train_x)
test_predict = model.predict(test_x)

# 计算误差
train_predict = scaler.inverse_transform(train_predict)
train_y = scaler.inverse_transform([train_y])
test_predict = scaler.inverse_transform(test_predict)
test_y = scaler.inverse_transform([test_y])

# 计算均方差
trainScore = math.sqrt(mean_squared_error(train_y[0],train_predict[:,0]))
testScore = math.sqrt((mean_squared_error(test_y[0],test_predict[:,0])))
print("Train Score is {}, Test Score is {}".format(trainScore,testScore))

######################################################
# step 6 : 绘图输出
######################################################
# 绘制输出
train_predict_plot = np.empty_like(dataset)
train_predict_plot[:,:] = np.nan
train_predict_plot[look_back:len(train_predict)+look_back, :] = train_predict

test_predict_plot = np.empty_like(dataset)
test_predict_plot[:,:] = np.nan
test_predict_plot[len(train_predict)+look_back*2+1:len(dataset)-1,:] = test_predict

# 绘图
plt.figure('pre_data')
plt.plot(scaler.inverse_transform(dataset))

plt.plot(train_predict_plot)
plt.plot(test_predict_plot)
plt.show()
致谢
  1. https://blog.csdn.net/m0epNwstYk4/article/details/79124800?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param
  2. https://blog.csdn.net/zhengxqq27/article/details/90481590
Python项目开发实战:如何基于Keras的深度学习来预测国际旅行人数 在预测国际旅行人数这一问题上,我们可以利用深度学习技术,尤其是基于Keras框架(现在通常作为TensorFlow的一部分)来构建预测模型。Keras以其简洁的API和高度模块化的特性,成为快速实现深度学习模型的理想选择。以下是一个简化的项目开发实战指南,旨在介绍如何使用Keras进行国际旅行人数的预测。 阅读详情

相关推荐

python神经网络预测的例子,python神经网络预测模型

谷歌人工智能写作项目:神经网络伪原创文案狗。用jupyter设计银行精准客户存款预测可以使用python语言构建神经网络设计,因为设计银行精准客户存款预测需要使用聚类和回归等算法,在python语言库中有很多相关的算法可以使用,所以使用python语言构建神经网络设计。时间序列模型时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结

aifans_bert的博客 4910

基于PaddlePaddle的LSTM神经网络实现中国人口预测

AI达人特训营第二期,依据中国人口逐年变化数据集,使用Paddle搭建LSTM神经网络,实现人口预测。项目流程包括数据预处理、模型构建、模型训练、模型预测、预测结果可视化等。

m0_63642362的博客 4650

使用LSTM进行航空旅客人数预测:时间序列分析实战

LSTM(Long Short-Term Memory)是一种特殊的循环神经网络(RNN),其设计旨在解决传统RNN在长序列数据中表现不佳的问题。LSTM通过引入记忆单元和门控机制,能够有效捕捉长时间依赖关系。在时间序列预测中,LSTM因其优越的表现而被广泛应用。在本实战中,我们将使用某航空公司提供的旅客人数数据集。该数据集记录了多个时间点的航空旅客数量。日期旅客人数2022-01-012002022-01-02210......本文介绍了使用LSTM进行航空旅客人数预测的完整流程。

斌擎科技 720

基于LSTM模型的时间序列预测(车厢重量预测),Python中Keras库实现LSTM,实现预测未来未知数据,包括参数详解、模型搭建,预测数据

基于LSTM模型的时间序列预测,Python中Keras库实现LSTM,实现预测未来未知数据,保姆级教程包括参数详解、模型搭建,预测数据

m0_55948437的博客 9873

LSTM航班乘客数量预测实战教程

本文还有配套的精品资源,点击获取 简介:本项目采用长短期记忆网络(LSTM)模型,通过时间序列分析来预测航班乘客数量。LSTM是递归神经网络的变体,擅长处理序列数据,对航空业务规划(如资源调度和票价设定)具有重要意义。通过项目提供的数据集和代码,学习者可以了解如何使用LSTM对历史航班乘客数据进行训练和未来乘客量的预测。数据预处理、模型构建、训练、验证和预测等关键步骤均有详...

weixin_32306683的博客 1082

基于长短期神经网络的城市人口预测,基于LSTM的城市人口预测(代码完整,数据齐全)

基于MATLAB编程,用长短期神经网络LSTM进行城市人口预测,城市人口是一种时间序列的数据,用LSTM比一般神经网络更适合,代码完整,包含数据,有注释,方便扩展应用 1,如有疑问,不会运行,可以私信, 2,需要创新,或者修改可以扫描二维码联系博主, 3,本科及本科以上可以下载应用或者扩展, 4,内容不完全匹配要求或需求,可以联系博主扩展。

【Keras】学习笔记18:LSTM时间序列问题预测:国际旅行人数预测

一、LSTM处理回归问题 import numpy as np from matplotlib import pyplot as plt from pandas import read_csv import math from keras.models import Sequential from keras.layers import Dense from keras.layers import LSTM from sklearn.preprocessing import MinMaxScaler fro

qq_49189614的博客 1714

基于长短期神经网络LSTM的客流量预测,基于长短期神经网络的短期客流量预测

基于MATLAB编程的的实现,用长短期神经网络LSTM实现对客流量的预测,代码可以运行,包含数据,完整的M文件,和运行结果

基于长短期记忆网络的数据回归预测LSTM

原始数据文件包含7列特征列数据和1列输出标签列数据,一共包含103条样本数据,具体如图所示。其次,构建并训练LSTM网络结构(包含输入层、4单元LSTM层、ReLU激活层、全连接层和回归层),使用Adam优化器进行1500轮训练并实施学习率分段衰减策略;最后,对训练集和测试集进行预测,通过反归一化还原预测值,并综合计算RMSE、R²、MAE和MBE四种评价指标,同时绘制预测结果对比图和散点图进行可视化分析。此外程序包含简要注释,便于理解。5.Excel数据,可直接修改数据,替换数据后直接运行即可。

weixin_47760707的博客 576

从零到一:STM32 CubeMX与WS2812B的DMA驱动艺术

本文详细介绍了如何使用STM32 CubeMX和DMA技术驱动WS2812B RGB LED灯条,从硬件设计到软件实现的全过程。通过CubeMX配置定时器和DMA,实现高效的PWM波形生成与数据传输,解决传统GPIO控制资源占用高的问题。文章还提供了颜色编码、动画效果实现及常见问题解决方案,助力开发者快速掌握智能LED控制技术。

weixin_28278377的博客 975

HMMER实战:从零部署到序列分析

本文详细介绍了HMMER工具的安装与使用,从源码编译到环境配置,再到核心工具hmmbuild、hmmsearch等的实战应用。通过球蛋白序列分析案例,展示了HMMER在生物信息学中的强大功能,帮助读者快速掌握序列分析技巧。

weixin_42529366的博客 239

LSTM模型学习:深入掌握LSTM预测模型的实战应用

LSTM模型学习:深入掌握LSTM预测模型的实战应用 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在深度学习领域,LSTM(长短期记忆网络)是一种极具影响力的模型,尤其在处理序列数据方面表现优异。今天,我们将为您介绍一个名为“LSTM模型学习”的开源项目。该项目基于Python 3.6和Keras框架,致力于帮助用户通过实践操作,深入了解并掌握LSTM模型在多种应用...

gitblog_06793的博客 401

Cesium实战:5分钟搞定离线地图与地形加载(附避坑指南)

本文详细介绍了Cesium在内网环境下的离线部署实战方案,重点解决了影像与地形数据的本地加载问题。通过逐步指导项目配置、本地瓦片与自定义地形数据的处理,并优化相机控制体验,帮助开发者快速构建安全、高效的三维地球应用,避免常见的401错误与加载失败陷阱。

weixin_30632089的博客 278

LSTM实战详细代码——匈牙利水痘病例时间序列预测

本文为机器学习大作业选题——匈牙利水痘病例预测(Prediction of the Hungarian case of chicken pox)的LSTM解决方法,参与答辩并获得优秀,主要是使用LSTM对病例数进行时间序列预测,包含数据集、LSTM原理简述、代码及解析和结果展示四部分。

陨落成河,越过沙丘 2223

混合精度训练与推理:平衡性能与效率

在深度学习领域,模型的训练和推理通常需要大量的计算资源和时间。随着模型规模的不断增大,如大型语言模型、复杂的视觉模型等,对计算资源的需求也呈指数级增长。混合精度训练与推理技术应运而生,它通过在训练和推理过程中同时使用不同精度的数据类型,在保证模型性能的前提下,显著提高计算效率,减少内存占用。本文的目的是全面介绍混合精度训练与推理技术,包括其原理、实现方法、应用场景以及相关工具和资源,帮助读者深入理解并掌握该技术,从而在实际项目中更好地平衡性能与效率。

操作系统内核探秘的博客 1065

撸毛笔记-朴朴超市 v1.01

朴朴超市 v1.01脚本地址:自动签到和组队赚朴分, 朴分可以抵扣50%的金额组队瓜分需要4人成团, 每个号每天只能开团和入队各一次每天跑一两次即可使用扫码或自己想办法捉refreshToken扫码获取token: (先微信进入朴朴超市小程序并登录注册过账号再扫码)把获取的refreshToken和备注(非必须)填到文件pupuCookie.txt里(第一次运行会自动创建), 多账号换行或&或@隔开。

xiaoshun007的专栏 1799

Python中利用LSTM模型进行时间序列预测分析

时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。 举个栗子:根据过去两年某股票的每天的股价数据推测之后一周的股价变化;根据过去2年某店铺每周想消费人数预测下周来店消费的人数等等 RNN

木东的博客 1万+

2、TrustZone(内含链接)——长期学习内容

ARM系列学习路径整理,希望对大家有用。

HoneyIC的博客 229

深度学习入门系列20:LSTM循环神经网络解决国际航空乘客预测问题

大家好,我技术人Howzit,这是深度学习入门系列第二十篇,欢迎大家一起交流! 深度学习入门系列1:多层感知器概述 深度学习入门系列2:用TensorFlow构建你的第一个神经网络 深度学习入门系列3:深度学习模型的性能评价方法 深度学习入门系列4:用scikit-learn找到最好的模型 深度学习入门系列5项目实战:用深度学习识别鸢尾花种类 深度学习入门系列6项目实战:声纳回声识别 深度学习入门系列7项目实战:波士顿房屋价格回归 深度学习入门系列8:用序列化保存模型便于继续训练 深度学习入门系列9:用检查

Howzit 2590

支付域——“清算、结算、清结算”

本文深入探讨了支付系统中的清算和结算流程,包括核心流程、模块设计及特殊场景处理。文章详细阐述了交易收单、资金冻结、清分规则、清算批处理、结算出账等关键步骤,并讨论了交易失败、数据不一致、退款、汇率波动等异常情况的处理方法。

庄小焱 2549

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

万物皆可LSTM

大家好,我是XFXZ,咱今天吃顿好的(抢一下B站碳水教父徐大骚的台词),不过,咱今天,是在我的博客里吃顿好的。猪蹄镇楼。 这里我先声明我这篇博客的定位,属于应用篇,理论不是重点,我要全,而追求精的童鞋们可以去查其他人的博客。 什么是LSTM? 全名为长短时记忆网络,英文是Long short term memory,属于循环神经网络中非常常用和重要的一类循环层。(在我的上一篇博客上有讲过层的概念...

XFXZ_XFXZ的博客 2187

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

LSTM-理解 Part-1(RNN:循环神经网络)

RNN的理解。

早起CaiCai的学习空间 753

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

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

Python(Keras)实现 LSTM 对销售额的预测+TensorFlow2安装

深度学习模型LSTM的学习与实践。

早起CaiCai的学习空间 3312

计算机毕业设计之基于LSTM的新型病毒传播风险预测研究

数据看板集成了多个功能模块,为用户提供直观的数据展示和分析能力,爬取数据后将这些非结构化数据导入到Hadoop分布式文件系统中进行存储和管理,利用Spark框架对这些大规模数据进行快速的计算和分析,将处理后的结果存入MySQL数据库中以方便后续查询和检索,后端采用Django框架搭建Web应用服务器,前端则使用Vue.js库来创建交互式界面,并通过Echarts图表库绘制各种可视化图形。接下来是核心的数据可视化模块,它能够将复杂的预测结果转化为直观易懂的可视化图表,便于研究人员和非专业人士理解和使用。

2501_92338134的博客 338
上一篇: 贝叶斯和EM算法简介
下一篇: DL学习1--从零开始线性回归
yy13138
博客等级 码龄7年 14粉丝 23原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值