簡體   English   中英

為深度學習增加時間序列數據

[英]Augmenting Time Series Data for Deep Learning

如果我想將深度學習應用到我目前擁有的傳感器的數據集上,我需要大量的數據,否則我們可能會看到過度擬合。 不幸的是,傳感器只活躍了一個月,因此數據需要增加。 我目前擁有數據框形式的數據,如下所示:

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增加一些特定的列。 增強可以采用以下形式:

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)

站點上進一步調查后,似乎增強會影響 numpy 數組。 雖然它聲明它是一種多元增強,但不確定它是如何有效地發生的。

我想在cas_prefl_rat等浮點數值列上應用這種一致的增強, cas_pre與原始數據和每列之間的關系偏離太多。 我不想應用它的行,例如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","cas_pre","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 次來插入新樣本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM