扩展时间序列数据以进行深度学习

问题描述

如果我想从当前拥有的传感器中对数据集进行深度学习,则需要大量数据,否则我们可能会发现拟合过度。不幸的是,传感器仅启用了一个月,因此数据需要扩充。我目前拥有数据框形式的数据,如下所示:

index   timestamp              cas_pre        fl_rat         ...
0       2017-04-06 11:25:00    687.982849     1627.040283    ...
1       2017-04-06 11:30:00    693.427673     1506.217285    ...
2       2017-04-06 11:35:00    692.686310     1537.114807    ...
....
101003  2017-04-06 11:35:00    692.686310     1537.114807    ...

现在,我想用tsaug package增加一些特定的列。增强形式可以是:

my_aug = (    
    RandomMagnify(max_zoom=1.2,min_zoom=0.8) * 2
    + RandomTimeWarp() * 2
    + RandomJitter(strength=0.1) @ 0.5
    + RandomTrend(min_anchor=-0.5,max_anchor=0.5) @ 0.5
)

扩充库的文档按以下方式继续使用扩充:

X_aug,Y_aug = my_aug.run(X,Y)

this网站上进行的进一步调查显示,扩充似乎影响了numpy数组。虽然它说这是一个多元增数,但不确定如何有效地进行。

我想在诸如cas_prefl_rat之类的浮点数值列上应用这种一致的增幅,以免与原始数据和各列之间的关系相去甚远。我不想为其应用诸如timestamp之类的行。我不确定如何在Pandas中执行此操作。

解决方法

这是我的尝试

#Convert Pandas dataframe to Numpy array and apply tsaug transformations

import numpy as np
import pandas as pd
from tsaug import TimeWarp,Crop,Quantize,Drift,Reverse

df = pd.DataFrame({"timestamp": [1,2],"cas_pre": [687.982849,693.427673],"fl_rat": [1627.040283,1506.217285]})

my_aug = (    
    Drift(max_drift=(0.1,0.5))
)

aug = my_aug.augment(df[["timestamp","cas_pre","fl_rat"]].to_numpy())

print("Input:")
print(df[["timestamp","fl_rat"]].to_numpy()) #debug
print("Output:")
print(aug)

控制台输出:

Input:
[[1.00000000e+00 6.87982849e+02 1.62704028e+03]
 [2.00000000e+00 6.93427673e+02 1.50621728e+03]]
Output:
[[1.00000000e+00 9.13389853e+02 2.03588979e+03]
 [2.00000000e+00 1.01536282e+03 1.43177109e+03]]

您可能需要将时间戳转换为数字。

您使用的tsaug函数似乎不存在,因此我仅以drift()为例。经过一些试验,默认情况下,TimeWarp()不会影响时间戳(第1列),但TimeWarp()* 5会通过将每个时间戳克隆5次来插入新样本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...