python - 将时间序列数据转换为适当的时间步长
问题描述
我有一个包含 20331 行和 6 列的数据集。它基于每小时采样的时间序列数据。我想将其转换为类似于 [samples, timesteps, features] 的格式。
我尝试了以下代码:
train.reshape((20331, 30, 6))
生成的样本在每个样本中应该有 30 个时间步和 6 个特征。
但我得到一个错误:
ValueError:无法将大小为 121986 的数组重塑为形状 (20331,30,6)
在进行整形之前我需要做任何预处理吗?
解决方案
您不能使用numpy.reshape
. 它只是为了重塑基础数据。
因此,在您的情况下,您从 20'331 * 6 = 121'986 个数据点开始,并且希望将它们排列成 (20'331 * 30 * 6) = 3'659'580 个数据点,这是 30 倍以上你开始了。
你的二维数据应该是什么?考虑一下。Numpy 不能凭空创建数据。
编辑:
如果你想拥有 30 个数据点的切片,你可以这样做:
bs = 30 # your chosen batch-size
tail = len(train) % bs # the leftover for the last batch
train_crop = train[:-tail].reshape((-1, bs, 6))
最后一行将丢弃最后的项目,因此您的长度可以被批量大小整除。重塑的形状6
在最后一个特征维度、bs
第二个维度和-1
第一个维度中,这让 pytorch 可以自行确定大小。
推荐阅读
- java - 使用 Mockito 和来自 Cloud Firestore 的异步调用编写测试时出错
- java - 无法向 Firebase 实时数据库添加权限
- javascript - 将值映射到堆积条形图
- node.js - 在本地 VS Code 中调试 Puppeteer NodeJS 应用程序时启动 Chrome
- ruby-on-rails - Ruby 2.4 和 BigDecimal 错误(无效值)
- imagemagick - 使用 ImageMagick 将 PDF 转换为具有不同分辨率的图像
- r - 按日期转置行相乘
- python - 用于将 pandas 功能与 keras CSVLogger 混合的 Python 面向对象的解决方案
- react-native - React Native 应用程序包中的 .tflite 文件是什么以及如何删除它们
- python - 将参数传递给包回调