我有一个包含多个时间序列的数据集,其中有两个功能,一个时间和一个对应的事件。时间序列的长度不相等。我用表示该系列结束的值填充了较短的那些,并且在系列中从未在其他地方使用过,但是我不确定这是否是最好的方法。
我的数据基本上看起来像这样:
[[[ -1.00, Event <],
[ 0.00, Event A],
[ 6.19, Event B],
[ 55.41, Event C],
[ 66.68, Event B],
...
[293.54, Event G],
[300.99, Event H],
[ -0.50, Event >],
[ -0.50, Event >],
[ -0.50, Event >],
[ -0.50, Event >]]]
形状是
(1459,76,2)
目标是生成与我的数据集中的时间序列相似的时间序列,包含这两个特征。
由于我对神经网络这个话题还很陌生,所以我一直在努力寻找解决问题的合适方法。我通过许多相关的教程来学习自己,并搜索了类似的问题,但是到那时我有点迷茫,不胜感激,并且会有所帮助。
答案 0 :(得分:1)
如果您的目标是生成与您所拥有的时间序列相同的时间序列,那么我会将将生成(可能有效)的动作序列的问题建模为语言生成问题。我们首先从火车数据集中学习动作的语言模型,这将有可能学习动作的有效组合。训练语言模型后,我们可以生成随机的(可能有效的)动作序列。
我的动作是说数字(表示为字符串),并且这些数字的有效组合是倍数(乘法表)。给我要生成随机数字序列的倍数
from nltk.lm.preprocessing import padded_everygram_pipeline
from nltk.lm import MLE,Laplace
from nltk.lm import Vocabulary
# Generate Data
event = []
for i in range(1,100):
event.append(["{0}".format(n*i) for n in range(10)])
# Train model
train_data, padded_vocab = padded_everygram_pipeline(3, event)
model = MLE(3)
model.fit(train_data, padded_vocab)
# Generate a random sequence of 10 numbers
model.generate(10)
注意:忽略生成的序列中的</s>
和<s>
,因为它们代表序列的开始和结束。
您可能无法使用相同的方法来生成时间戳(功能1),因为在这种情况下词汇量会很大。