[英]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_pre
和fl_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.