Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用于LSTM输入的熊猫数据成形

用于LSTM输入的熊猫数据成形
EN

Stack Overflow用户
提问于 2021-07-23 10:10:53
回答 2查看 582关注 0票数 0

我有一个简单的数据集,只有两列(年份和油价)。现在,我需要对它们进行造型,以便keras的LSTM层能够接受它们的input_shape

我的代码如下所示,我基本上需要黄色标记的区域的帮助。我认为我需要改变/转换X_train和X_test之前(数组,规范化等)。但我只有尝试时才会犯错误..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-24 04:43:06

我认为如果您将X_train和X_test保持为二维数据帧,您的代码就能工作。所以如果你定义

代码语言:javascript
运行
AI代码解释
复制
X_train = train[["Year"]]
X_test = test[["Year"]]

之后,您可以定义LSTM体系结构,就像您在问题中所做的那样。

票数 2
EN

Stack Overflow用户

发布于 2021-07-25 06:04:02

一种解决方案是重塑类似于X_trainX_train.reshape((X_train.shape[0], 1, 1)),并在第一个LSTM层中省略input_shape参数。LSTM层的输入形状总是(批量大小、时间步长、特性)。请参阅有关此这里的更多信息。

另一件要考虑的事情是在“小”范围(如0,1)内缩放数据,这样训练过程就能很好地顺利地收敛,因为我们不希望权重在更新时变得疯狂,但它也取决于具体的实现/应用程序。

您可能需要工作旋钮(超参数,如激活函数、抛出、单位、批大小等,以获得更好的预测性能)。

下面是一个完整的工作示例,其中包含了一些评论:

代码语言:javascript
运行
AI代码解释
复制
# imports
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from keras.models import Sequential
from keras.layers import Dense, LSTM, Dropout
from keras.activations import relu

# data setup
years = [i for i in range(1861, 2021)]
oil = [0.49, 1.05, 3.15, 8.06, 6.59, 3.74, 2.41, 3.63, 3.64, 3.86, 4.34, 3.64, 1.83, 1.17, 1.35, 2.56, 2.42, 1.19, 0.86, 0.95, 0.86, 0.78, 1, 0.84, 0.88, 0.71, 0.67, 0.88, 0.94, 0.87, 0.67, 0.56, 0.64, 0.84, 1.36, 1.18, 0.79, 0.91, 1.29, 1.19, 0.96, 0.8, 0.94, 0.86, 0.62, 0.73, 0.72, 0.72, 0.7, 0.61, 0.61, 0.74, 0.95, 0.81, 0.64, 1.1, 1.56, 1.98, 2.01, 3.07, 1.73, 1.61, 1.34, 1.43, 1.68, 1.88, 1.3, 1.17, 1.27, 1.19, 0.65, 0.87, 0.67, 1, 0.97, 1.09, 1.18, 1.13, 1.02, 1.02, 1.14, 1.19, 1.2, 1.21, 1.05, 1.12, 1.9, 1.99, 1.78, 1.71, 1.71, 1.71, 1.93, 1.93, 1.93, 1.93, 1.9, 2.08, 2.08, 1.9, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 1.8, 2.24, 2.48, 3.29, 11.58, 11.53, 12.8, 13.92, 14.02, 31.61, 36.83, 35.93, 32.97, 29.55, 28.78, 27.56, 14.43, 18.43503937, 14.9238417, 18.22611328, 23.72582031, 20.0009144, 19.32083658, 16.97163424, 15.81762646, 17.01667969, 20.66848837, 19.09258755, 12.71566148, 17.97007782, 28.49544922, 24.44389105, 25.02325581, 28.83070313, 38.265, 54.52108949, 65.1440625, 72.38907843, 97.25597276, 61.67126482, 79.4955336, 111.2555976, 111.6697024, 108.6585178, 98.94600791, 52.38675889, 43.73416996, 54.19244048, 71.31005976, 64.21057312, 41.83834646]

data = pd.DataFrame(np.vstack((years, oil)).T, columns = ["Year", "Oil Crude Price ($)"]).astype({'Year': int})

# train percentage, thus test percentage = 1 - train_split
train_split = 0.8

# scaler for inputs and outputs
scaler = MinMaxScaler()

# scaling data between 0 and 1
data_scaled = scaler.fit_transform(data.values)

# splitting data into train set 0.6 * 160 = first 96 rows
X_train = data_scaled[:int(train_split * len(data_scaled)),0]
y_train = data_scaled[:int(train_split * len(data_scaled)),1]

# splitting data into test set 0.4 * 160 = last 64 rows
X_test = data_scaled[int(train_split * len(data_scaled)):,0]
y_test = data_scaled[int(train_split * len(data_scaled)):,1]

# sanity check, adding rows in X_train and X_test MUST add to total rows in data
assert len(X_train) + len(X_test) == len(data)

# reshaping inputs for LSTM
X_train_lstm = X_train.reshape((X_train.shape[0], 1, 1))
X_test_lstm = X_test.reshape((X_test.shape[0], 1, 1))

# building model with several LSTM, dropouts, and dense layers
model = Sequential()
model.add(LSTM(units = 512, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 128, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 64, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 32, return_sequences = True))
model.add(Dropout(0.2))
model.add(LSTM(units = 16))
model.add(Dropout(0.2))
model.add(Dense(units = 1))

# compiling model with rmsprop (my preferred optimizer, and loss)
model.compile(optimizer="adam", loss="mse")

# training model for 500 epocs and 40 samples per batch
history = model.fit(X_train_lstm, y_train, epochs=100, batch_size = 20, verbose=1)

# making predictions using test set
y_pred_scaled = model.predict(X_test_lstm)

def original_scale(scaler, x, y):
    return scaler.inverse_transform(np.concatenate((x.reshape((x.shape[0], 1)), y), axis=1))

# transforming values back to original scale 
y_pred = original_scale(scaler, X_test, y_pred_scaled)[:,1] # predicted price
y_test = data.values[int(train_split * data_scaled.shape[0]):,1] #
y_test_years = data.values[int(train_split * data_scaled.shape[0]):,0]

# wrapping up putting results together in a dataframe
output = pd.DataFrame(data = np.vstack((y_test_years, y_test, y_pred)).T, columns = ["Year", "Oil Crude Price ($)", "Predicted Oil Crude Price ($)"]).astype({'Year': int})

print(output)

输出:

代码语言:javascript
运行
AI代码解释
复制
    Year  Oil Crude Price ($)  Predicted Oil Crude Price ($)
0   1989            18.226113                      22.428251
1   1990            23.725820                      23.613170
2   1991            20.000914                      24.847811
3   1992            19.320837                      26.132980
4   1993            16.971634                      27.469316
5   1994            15.817626                      28.857338
6   1995            17.016680                      30.297413
7   1996            20.668488                      31.789748
8   1997            19.092588                      33.334372
9   1998            12.715661                      34.931136
10  1999            17.970078                      36.579701
11  2000            28.495449                      38.279516
12  2001            24.443891                      40.029859
13  2002            25.023256                      41.829785
14  2003            28.830703                      43.678103
15  2004            38.265000                      45.573485
16  2005            54.521089                      47.514343
17  2006            65.144063                      49.498909
18  2007            72.389078                      51.525253
19  2008            97.255973                      53.591203
20  2009            61.671265                      55.694481
21  2010            79.495534                      57.832594
22  2011           111.255598                      60.002952
23  2012           111.669702                      62.202827
24  2013           108.658518                      64.429348
25  2014            98.946008                      66.679673
26  2015            52.386759                      68.950699
27  2016            43.734170                      71.239459
28  2017            54.192440                      73.542838
29  2018            71.310060                      75.857814
30  2019            64.210573                      78.181272
31  2020            41.838346                      80.510184

包版本:

代码语言:javascript
运行
AI代码解释
复制
keras                     2.4.3
numpy                     1.19.2
pandas                    1.1.5
scikit-learn              0.23.2
tensorflow                2.4.1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68503489

复制
相关文章
使用Python将SVG文件转换为PNG文件
SVG(Scalable Vector Graphics)是一种基于XML的矢量图像格式,它可以在不失真的情况下无限放大。然而,不是所有的设备和应用都支持SVG格式,而PNG(Portable Network Graphics)格式在互联网上得到了广泛的支持,它支持透明度并且无损压缩。因此,有时我们需要将SVG文件转换为PNG文件,以便在更多的环境中使用。
运维开发王义杰
2023/08/10
2K0
使用Python将SVG文件转换为PNG文件
将png格式的图像转换为jpg
import osfrom PIL import Imagedirname_read="D:\dataset\cityscapes\cityscape_voc_clean\JPEGImages_png\\"dirname_write="D:\dataset\cityscapes\cityscape_voc_clean\JPEGImages_jpg\\"names=os.listdir(dirname_read)count=0for name in names: img=Image.open(dirna
狼啸风云
2020/07/16
2.4K0
Python完成SVG转PNG格式
一、完成目标: 将SVG格式的图标转换为PNG格式的图标,并预览 二、任务分析: svg是什么格式 : svg格式的图像可任意放大图形显示,而且边缘异常清晰,生成的文件很小,方便传输,文字在svg图像中保留可编辑和可搜寻的状态,没有字体的限制 png是什么格式 : PNG. ( 1996-10-01 ). 便携式网络图形 (英语: Portable Network Graphics , PNG ) 是一种支持 无损压缩 的 位图 图形格式,支持索引、 灰度 、 RGB 三种颜色方案以及 Alpha通道
Elsa_阿尼
2021/07/15
4K0
Python完成SVG转PNG格式
将tensor转换为图像_tensor转int
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/07
12.5K0
Python完成SVG转PNG格式——方法二
1、有很多博客是让大家去github的GTK+ for Windows Runtime Environment Installer: 64-bit去下载,但是有时会加载不了网页
Elsa_阿尼
2021/07/16
5.5K0
Python完成SVG转PNG格式——方法二
将图片转换为像素风svg
阿超
2023/06/23
2390
将图片转换为像素风svg
WPF 将 SVG 转 XAML 的工具
团队的设计师喜欢输出 SVG 格式的图片,而咱如果想要在 WPF 中高性能呈现出来,最好还是转换为 XAML 代码。本文来安利大家一些 SVG 转 XAML 的工具
林德熙
2021/04/15
4.2K0
BMP、GIF、TIFF、PNG、JPG和SVG格式图像的特点
一张图片可以储存为多种格式,为什么有的几十KB,有的几百MB,有的静止不动,有的是好几个画面循环播放?在项目开发的过程中经常会读取或保存图像文件,不同类型的图像特点不同,适用的范围也不同,简要介绍BMP、GIF、TIFF、PNG、JPG和SVG格式图像的特点。
不脱发的程序猿
2021/01/20
4.6K0
小技巧:如何用 Chrome 将 SVG 转成 PNG
怎么把 SVG 转成 PNG ?用 Chrome 吧,非常好用,还能设定自己想要的尺寸。
GoCoding
2021/05/06
2.5K0
小技巧:如何用 Chrome 将 SVG 转成 PNG
R将SVG文件转换成pdf或者png
svg是一种矢量图文件,一般的图片查看工具是无法打开的。那么如何正常打开svg格式的文件?下面小编就给大家介绍一下打开svg格式文件的方法,希望对大家有所帮助。
生信交流平台
2022/09/21
1.2K0
R将SVG文件转换成pdf或者png
小谈PNG转SVG的方法 在线转换网站与illustrator
本文主要探讨JPG/PNG转SVG矢量格式并支持FILL的方法,介绍在线转换网站和通过illustator转换的经验。
零云
2023/07/24
2.8K0
小谈PNG转SVG的方法 在线转换网站与illustrator
python将webp格式的图片转换为png格式
#!/usr/bin/env python # -*- coding:utf-8 -*- import os import time from multiprocessing.dummy import Pool from PIL import Image # tinypng 批量将文件夹下的webp文件转换为png格式 def convert(pic): pic_list = pic.split('.') name = pic_list[0] # print(name)
槽痞
2020/06/23
2.5K0
PHP开发之将jpng的图片转换为png格式
上午遇到了一个需求.就是将小程序生成的码拼接个文字.小程序生成二维码也好.小程序码也罢.这些之前都有接触过.三下五除二就生成了.接下来的工作也是需要进行文字的拼接.
桑先生
2020/02/13
1.6K0
Python3.7将普通图片(png)转换为SVG图片格式并且让你的网站Logo(图标)从此”动”起来
    首先第一步,先要将静态图做一步转换,以本站的logo作为例子,原理就是在普通的RGB图像阵列中将其像素进行转码操作,并且输出为svg特有的路径属性,当然了使用python进行图像操作少不了会用到鼎鼎大名的pillow模块
用户9127725
2022/08/08
1K0
Python3.7将普通图片(png)转换为SVG图片格式并且让你的网站Logo(图标)从此”动”起来
图像裁剪
PNG (460, 460) RGB {'srgb': 0, 'gamma': 0.45455, 'dpi': (96, 96)} None
裴来凡
2022/05/29
1.7K0
图像裁剪
PHP将png透明背景图片转换为白色背景
前一篇文章中,刚介绍了如何读取PDF文件并转换为png图片,最终图片能正常生成,但遇到了一个问题,生成的图片背景是透明的,那么如何将透明的图片转换为白色背景呢?
用户8851537
2021/08/19
2.5K0
PHP将png透明背景图片转换为白色背景
前一篇文章中,刚介绍了如何读取PDF文件并转换为png图片,最终图片能正常生成,但遇到了一个问题,生成的图片背景是透明的,那么如何将透明的图片转换为白色背景呢?
Petrochor
2022/06/07
8980
点击加载更多

相似问题

裁剪svg图像并将其转换为png

110

将SVG转换为PNG图像

20

将svg转换为png时,svg中的嵌入图像消失

35

尝试将SVG图像转换为PNG图像

012

SkiaSharp将SVG转换为PNG图像

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档