[LSTM学习笔记1]LSTM数据准备

LSTM-代码讲解(股票预测) 本模型对ZHW_AI课题组.2021的LSTM(股票预测)代码进行讲解。本文对代码的难以理解的、重点的部分进行了注释,并对需要注意的点进行了文字提醒。同时,本文最大的特点,是结合本人自制的数据集制作图、LSTM网络结构图,深入浅出的对由数据-->网络的具体过程进行了讲解演示。 阅读详情

       本系列笔记是学习《Long Short Term Memory Networks with Python》时练习和记录,该书主要针对各种LSTM网络使用keras进行实现,我可以将自己码的Jupyter notebook代码和笔记分享。

一.Prepare Numeric Data

缩放数据通常有两种方式:normalizaiton和standardization,都可以使用scikit-learn实现

1.Normalize Series Data

将数据放缩到0~1的区间,当数据变化太大,这种方式不适合使用。

from pandas import Series
from sklearn.preprocessing import MinMaxScaler
#定义数据
data = [10.0,20.0,30.,40.0,50.0,60.0,70.0,80.0,90.0,100.0]
series = Series(data)
print(series)
#prepare data for normalization
values = series.values
values = values.reshape((len(values),1))
print(values.shape)
#train the normalization
scaler = MinMaxScaler(feature_range=(0,1))
scaler = scaler.fit(values)
print('Min:%f,Max:%f \n' % (scaler.data_min_,scaler.data_max_))
#normalizer  the dataset and print
normalized = scaler.transform(values)
print(normalized)
#inverse transform and print
inversed = scaler.inverse_transform(normalized)
print(inversed)

输出:

0     10.0
1     20.0
2     30.0
3     40.0
4     50.0
5     60.0
6     70.0
7     80.0
8     90.0
9    100.0
dtype: float64
(10, 1)
Min:10.000000,Max:100.000000 

[[ 0.        ]
 [ 0.11111111]
 [ 0.22222222]
 [ 0.33333333]
 [ 0.44444444]
 [ 0.55555556]
 [ 0.66666667]
 [ 0.77777778]
 [ 0.88888889]
 [ 1.        ]]
[[  10.]
 [  20.]
 [  30.]
 [  40.]
 [  50.]
 [  60.]
 [  70.]
 [  80.]
 [  90.]
 [ 100.]]

 

2.Standardize Series data

将数据放缩为均值0,标准差1,这种方式比min-max方式更加稳定。使用sklearn中的StandardScaler。

from pandas import Series
from sklearn.preprocessing import StandardScaler
from math import sqrt

#定义数据
data = [1.0,5.0,6.0,8.0,2.5,4.1,7.9,6.3]
series = Series(data)
print(series)
#prepare data for normalization
values = series.values
values = values.reshape((len(values),1))
print(values.shape)
#train the normalization
scaler = StandardScaler()
scaler = scaler.fit(values)
print('mean:%f,stardardDeviation:%f \n' % (scaler.mean_,sqrt(scaler.var_)))
#normalizer  the dataset and print
stardardized = scaler.transform(values)
print(stardardized)
#inverse transform and print
inversed = scaler.inverse_transform(stardardized)
print(inversed)

输出:

 

0    1.0
1    5.0
2    6.0
3    8.0
4    2.5
5    4.1
6    7.9
7    6.3
dtype: float64
(8, 1)
mean:5.100000,stardardDeviation:2.320560 

[[-1.7668147 ]
 [-0.04309304]
 [ 0.38783737]
 [ 1.2496982 ]
 [-1.12041908]
 [-0.43093041]
 [ 1.20660516]
 [ 0.5171165 ]]
[[ 1. ]
 [ 5. ]
 [ 6. ]
 [ 8. ]
 [ 2.5]
 [ 4.1]
 [ 7.9]
 [ 6.3]]

 

二.准备类别数据

两种方式:

1.整数编码

 对于分类变量有顺序特征的比较使用,可以使用sklearn中的LabelEncoder

2.one-hot编码

 对于分类变量无顺序特征的比较使用,可以使用sklearn中的onehotEncoder
from numpy import array
from numpy import argmax
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder

#define example
data = ['cold','cold','warm','hot','hot','cold','warm','hot','hot','cold','warm']
values = array(data)
print(values)
#整数编码
label_encoder = LabelEncoder()
integer_encoded = label_encoder.fit_transform(values)
print(integer_encoded)

#one hot
onehot_enoder = OneHotEncoder(sparse=False)
integer_encoded = integer_encoded.reshape(len(integer_encoded),1)
onehot_encoded = onehot_enoder.fit_transform(integer_encoded)
print(onehot_encoded)

#inverse first example
inverted = label_encoder.inverse_transform([argmax(onehot_encoded[0,:])])
print(inverted)

 输出:

['cold' 'cold' 'warm' 'hot' 'hot' 'cold' 'warm' 'hot' 'hot' 'cold' 'warm']
[0 0 2 1 1 0 2 1 1 0 2]
[[ 1.  0.  0.]
 [ 1.  0.  0.]
 [ 0.  0.  1.]
 [ 0.  1.  0.]
 [ 0.  1.  0.]
 [ 1.  0.  0.]
 [ 0.  0.  1.]
 [ 0.  1.  0.]
 [ 0.  1.  0.]
 [ 1.  0.  0.]
 [ 0.  0.  1.]]
['cold']

三.准备变长序列

1.使用keras中的pad_sequance()函数,可以在序列开头或结尾填充给定数据,默认填充0.0,默认padding='pre'

import keras
from keras.preprocessing.sequence import pad_sequences
#define sequence
sequence = [
    [1,2,3,4],
    [1,2,3],
    [1]
]
#pad sequence
padded = pad_sequences(sequence)
print('padded_pre:\n',padded)
padded_post = pad_sequences(sequence,padding='post')
print('padded_post:\n',padded_post)
输出:
padded_pre:
 [[1 2 3 4]
 [0 1 2 3]
 [0 0 0 1]]
padded_post:
 [[1 2 3 4]
 [1 2 3 0]
 [1 0 0 0]]

2.序列裁剪

可以从序列首裁剪也可以从序列尾部,默认truncating='pre'

import keras
from keras.preprocessing.sequence import pad_sequences
#define sequence
sequence = [
    [1,2,3,4],
    [1,2,3],
    [1]
]
#truncate sequence
truncated_pre = pad_sequences(sequence,maxlen=2)
print('truncated_pre:\n',truncated_pre)
truncated_post = pad_sequences(sequence,maxlen=2,truncating='post')
print('truncated_post:\n',truncated_post)
输出:
truncated_pre:
 [[3 4]
 [2 3]
 [0 1]]
truncated_post:
 [[1 2]
 [1 2]
 [0 1]]

 

四.将监督学习用于序列预测的方式

由于监督学习需要有数据和标记,因此如果将监督学习用于序列预测,当前时间需要滞后当前时间一个时间步 可以使用pandas的shift()函数实现

from pandas import DataFrame

#define sequence
df = DataFrame()
df['t'] = [x for x in range(10)]
print(df)

#shift forward
df['t-1'] = df['t'].shift(1)
print("shift forward:\n",df)
#shift backward
df['t+1'] = df['t'].shift(-1)
print("\n shift backward:\n",df)

输出: 

   t
0  0
1  1
2  2
3  3
4  4
5  5
6  6
7  7
8  8
9  9
shift forward:
    t  t-1
0  0  NaN
1  1  0.0
2  2  1.0
3  3  2.0
4  4  3.0
5  5  4.0
6  6  5.0
7  7  6.0
8  8  7.0
9  9  8.0

 shift backward:
    t  t-1  t+1
0  0  NaN  1.0
1  1  0.0  2.0
2  2  1.0  3.0
3  3  2.0  4.0
4  4  3.0  5.0
5  5  4.0  6.0
6  6  5.0  7.0
7  7  6.0  8.0
8  8  7.0  9.0
9  9  8.0  NaN
LSTM的数据集准备 前言 一、遇到的问题: 我一开始是以为将nc文件里面的数据提取出来,然后我直接创建csv文件,设置好行、列将数据导入就行。但是事情并没有那么的简单 1.首先你必须清楚nc文件里面的数据到底是什么?它的结构是怎样的?我怎么去利用?包含的哪些内容,哪些是我要导入的?我的范围又是什么? 2.我一开始是把每一个维度都当成是一个数据,然后导入到我csv文件里面。然后就发现数据量很大,然后我的csv文件是根本打不开的。然后当时我都没意识到,我根本没有弄清楚我的数据集,根本不知道我到底要的是哪部分的东西。 3.我当时是把 阅读详情

相关推荐

利用Pytorch与Sklearn使用LSTM时序预测

from sklearn.model_selection import train_test_split import pandas as pd import numpy as np from sklearn.preprocessing import MinMaxScaler import matplotlib.pyplot as plt import torch from torch import nn, optim from torch.autograd import Variable from tor

梦码城博客中心 2962

时间序列预测03:如何为CNN/LSTM模型构建数据集

时间序列数据必须经过变换才能用来拟合有监督的学习模型。在这种形式下,数据可以立即用于拟合有监督的机器学习算法,甚至多层感知器神经网络。为了使数据适合卷积神经网络(CNN)或长短期记忆(LSTM)神经网络,还需要进一步的转换。即监督学习数据的二维结构必须转换为三维结构,这也是在做时间序列预测时很让人头疼的问题。本文介绍了如何将时间序列数据集转换为三维结构,以便适合CNN或LSTM模型。

全性保真,不以物累形。 2万+

机器学习算法解析:长短时记忆网络(LSTM)

长短时记忆网络(LSTM)是一种循环神经网络(Recurrent Neural Network,RNN)的变种,专门用于处理序列数据。与传统的RNN相比,LSTM在捕捉序列数据中的长期依赖关系时表现更出色。这使得它成为自然语言处理、时间序列分析、机器翻译等领域的首选算法之一。LSTM的名字中包含了两个关键概念:“长时”和“短时”。它的设计初衷是解决传统RNN在处理长序列时的梯度消失和梯度爆炸问题。通过引入一种特殊的记忆单元,LSTM可以在不损失长期记忆的情况下,更好地处理序列数据。

DeepViewInsight的博客 4313

pytorch框架下时序预测中LSTM数据集构建

在pytorch中LSTM的输入格式为(batch_size, seq_len, input_size),seq_len原意是指LSTM处理翻译问题中每条句子序列的长度,在时序数据处理中对应着一条样本中包含前多少时刻的样本数据,具体数据处理的代码如下: # 构建自己的数据集,输入为自变量x,输出为因变量y class MyDataSet(Dataset): def __init__(self, x, y): super(MyDataSet, self).__init__()...

qq_38603174的博客 3921

LSTM长短时记忆网络

作者:禅与计算机程序设计艺术 1.简介 “LSTM(Long Short-Term Memory)长短时记忆网络”是一种非常先进、高效、强大的神经网络结构,可以用于处理序列数据,如文本、音频、视频等。相比传统的神经网络模型,LSTM可以记住时间上的先后顺序,从而更好地捕捉到信息的时间关联性。在自然语言处

AI天才研究院 2116

长短时记忆网络LSTM原理与代码实例讲解

长短时记忆网络LSTM原理与代码实例讲解 作者:禅与计算机程序设计艺术 / Zen and the Art of Computer Programming 1. 背景介绍 1.1 问题的由来 随着自然语言处理、语音识别、机

AI天才研究院 1346

LSTM 01:为LSTM准备数据

本文介绍了LSTM模型训练中的数据预处理步骤

全性保真,不以物累形。 1万+

CANoe开发入门到精通读书笔记(2)——CAPL编程

CAPL函数的语法跟C语言很类似,但也包含一些C语言所不具备的功能大部分CAPL支持的数据类型都可以直接声明为函数参数, 例如,整型、浮点型、枚举、结构、定时器以及它们的引用。但有一些类型不能被直接声明,而需要加上*号(注意该符号并不是C语言中 指针的意思)。例 如 : signal * s 、 envvarInt * ev 、 sysvarFloat * sv 、 diagRequest * dr、diagResponse * dr、int matrix[][],以及。

weixin_66275497的博客 6457

神经网络学习笔记3——LSTM长短期记忆网络

LSTM长短期记忆网路从原理到编程实现

weixin_56619527的博客 1万+

国产AI芯片实战:用寒武纪MLU370低成本部署DeepSeek-R1,实测推理效果与成本分析

本文详细介绍了寒武纪MLU370芯片在部署DeepSeek-R1大模型时的实战效果与成本优势。通过实测数据对比,MLU370在推理速度、能效比和本地化服务方面表现突出,尤其适合智能客服、内容生成等场景,可显著降低硬件投入和运维成本。

weixin_30613727的博客 455

3GPP LTE/NR信道模型

CDL(Clustered Delay Line):簇延迟线模型,包括CDL-A、CDL-B、CDL-C三个用于NLOS的信道模型,以及CDL-D、CDL-E两个用于LOS的信道模型。

LinkEverything的博客 1万+

长短期记忆网络(LSTM)

定义LSTM层数和隐藏单元数layers = [LSTM作为一种强大的序列模型,通过引入门控机制,有效地解决了传统RNN在处理长序列时的梯度消失和梯度爆炸问题,能够更好地捕捉长距离依赖关系。在实际应用中,LSTM已经取得了显著的成果,在自然语言处理、时间序列预测等领域发挥着重要作用。然而,LSTM也存在一些不足之处,如计算复杂度较高、训练时间较长等。未来的研究方向可能包括进一步优化LSTM的结构和算法,提高其计算效率和性能;

1796

手把手教学:利用AutoDL与vLLM快速部署DeepSeek-R1大模型实战指南

本文详细介绍了如何利用AutoDL平台和vLLM框架快速部署DeepSeek-R1大模型的实战指南。从服务器配置、vLLM安装优化到模型部署的两种方案,再到性能调优和生产环境建议,手把手教你高效完成大模型部署。特别针对国内开发者遇到的网络问题提供了稳定解决方案,并分享了显存优化、磁盘清理等实用技巧。

weixin_42531779的博客 326

回归预测|基于蜣螂优化长短期记忆网络的数据回归预测Matlab程序DBO-LSTM 多特征输入单输出 含基础LSTM

回归预测|基于蜣螂优化长短期记忆网络的数据回归预测Matlab程序DBO-LSTM 多特征输入单输出 含基础LSTM

2401_86241083的博客 1533

uni踩坑笔记 - 离线打包调起微信分享后从微信返回APP时黑屏

apk能成功调起微信并进行分享操作,但分享完成后点击回到应用后应用出现黑屏的情况,并在约3-5秒后自动重启。

weixin_46737742的博客 5215

基于 FPGA 的 CNN 卷积神经网络之池化层 Verilog 实现

池化层是卷积神经网络(CNN)中的关键组件,用于降低特征图的维度,减少计算量和防止过拟合。常见的池化操作包括最大池化和平均池化。FPGA 提供了高效的并行处理能力,可以加速这些操作。池化层在 CNN 中扮演重要角色,通过降低数据维度提升计算效率。在 FPGA 上实现池化层,可以充分利用硬件资源实现高效的并行计算,有助于提高实时应用中的推理速度。

走向CTO的路上... 1253

python基于长短期记忆网络LSTM模型数据预测

随着金融数据的不断增长和复杂化,传统的统计方法和机器学习技术面临着挑战。深度学习算法通过多层神经网络的构建,以及大规模数据的训练和优化,可以从数据中提取更加丰富、高级的特征表示,从而提供更准确、更稳定的预测和决策能力。在金融领域,深度学习算法已经被广泛应用于多个关键任务。首先,风险评估是金融机构必须面对的重要问题之一。深度学习算法可以通过学习大规模的历史数据,识别隐藏在数据中的潜在风险因素,并预测未来的风险情况。其次,欺诈检测是金融行业必不可少的任务。

1万+

C# 与蓝牙 BLE 设备通信:基于 Windows.Devices.Bluetooth 实现手环/传感器数据读取

本文介绍了如何利用C#的Windows.Devices.Bluetooth命名空间实现与蓝牙BLE设备的通信。首先概述了BLE技术特性及其在物联网中的应用场景,包括智能穿戴设备和传感器。随后讲解了BLE的GATT协议架构,解析了服务(Service)和特性(Characteristic)的概念。文章重点展示了通过C#实现设备扫描、连接、数据读取的完整代码示例,并详细说明了如何使用通知(Notifications)功能实现实时数据更新。最后提供了订阅心率测量特性变化的实现代码,为开发者提供了完整的BLE设备通

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1321

长短期记忆网络LSTM识别验证码、车牌识别

长短期记忆网络LSTM-Seq2Seq识别验证码 使用LSTM结合Seq2Seq结构实现验证码识别 验证码样式如下图: 代码生成42000张验证码(train:40000, test:2000),验证码有清晰的,有低度模糊的,也有中度模糊的,位置也随机。 验证码和标签采用DataLoader加载,标签采用4*10的one-hot编码,网络输出每个图片也是4*10,训练30轮即达到了正确率100%...

吉良的博客 6168

Trae的付费之路还挺艰难,茫茫多的人想付付不了(附解决办法)

不得不说,Trae国际版这个付费其实整的挺复杂的,但没办法,毕竟有政策限制,付费成功后,你就是尊贵的Pro用户啦,使用Claude 4不排队还是挺爽的,而且600次其实不算少了,有一个小技巧,简单的问题就把模型切到Gemini-2.5-flag,因为使用这个模型是没有次数限制的。其次付费的时候有个ZIP Code,这东西也是个迷之存在,有的地区节点需要填,有的不需要,如果你选到了不需要填的节点,那很好,付费就行了,如果需要填,可以填一个51800试试。

cpp加油站的专栏 5877

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python异常检测 - LSTM(长短期记忆网络)

在时间序列分析中,异常值检测是一个重要的任务,它可以帮助我们发现数据中的异常情况,比如突发的异常波动、异常值等。

qq_40821260的博客 1982

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

LSTM处理时序数据:深入解析与实战

LSTM,全称为Long Short-Term Memory,是一种特殊的RNN结构,旨在解决传统RNN在处理长序列时容易出现的梯度消失或爆炸问题。LSTM通过引入“门”机制和细胞状态,使得网络能够更好地保留长期记忆。

异构算力老群群(在读985计算机博士生)的技术博客 2614

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

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

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【LSTM分类】基于长短期记忆网络的数据分类预测附matlab代码

基于长短期记忆网络(Long Short-Term Memory, LSTM)的数据分类预测是一种常见的序列数据分析方法。LSTM是一种特殊的循环神经网络(Recurrent Neural Network, RNN),具有记忆单元和门控机制,能够更好地处理序列数据中的长期依赖关系。下面是基于LSTM的数据分类预测的步骤:数据准备:首先,需要准备用于分类预测的训练数据集和测试数据集。序列数据应具有标签,以便进行监督学习。LSTM模型搭建:构建LSTM模型。

m0_57702748的博客 1919

基于Matlab的粒子群(PSO)优化的长短期记忆网络(LSTM)代码

长短期记忆网络(LSTM)凭借其在时间序列分析中的强大能力,尤其在天气预测等领域显示出其重要性。

frankgis的博客 1353

深度学习-长短期记忆网络(LSTM)

LSTM 通过精妙的门控机制解决了 RNN 的长期依赖问题,成为处理文本等时序数据的强大工具。本文从原理出发,结合手动实现和 PyTorch 内置 API 的代码,展示了 LSTM 的工作流程。实际应用中,可根据需求调整隐藏层维度、序列长度等参数,进一步提升模型性能。

guoke_tg的博客 1601

1. 一文搞懂LSTM(长短期记忆网络)

LSTM(长短期记忆网络)是一种特殊的RNN(递归神经网络)架构,用于处理序列数据。与传统的RNN相比,LSTM的关键优势在于它能够学习长期依赖关系,避免了在训练过程中出现的梯度消失和梯度爆炸问题。这使得LSTM在许多需要考虑时间序列数据的任务中非常有效,比如自然语言处理、语音识别和时间序列预测等。

pj5624的博客 1029
上一篇: 【论文阅读笔记】Evaluation and accurate diagnoses of pediatric diseases using artificial intelligence
下一篇: [LSTM学习笔记2]使用Keras开发LSTM
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值