3 回答
TA贡献1815条经验 获得超6个赞
我最终也编写了自定义数据集,尽管它与上面的答案有点不同:
class TimeseriesDataset(torch.utils.data.Dataset):
def __init__(self, X, y, seq_len=1):
self.X = X
self.y = y
self.seq_len = seq_len
def __len__(self):
return self.X.__len__() - (self.seq_len-1)
def __getitem__(self, index):
return (self.X[index:index+self.seq_len], self.y[index+self.seq_len-1])
用法如下:
train_dataset = TimeseriesDataset(X_lstm, y_lstm, seq_len=4)
train_loader = torch.utils.data.DataLoader(train_dataset, batch_size = 3, shuffle = False)
for i, d in enumerate(train_loader):
print(i, d[0].shape, d[1].shape)
>>>
# shape: tuple((batch_size, seq_len, n_features), (batch_size))
0 torch.Size([3, 4, 2]) torch.Size([3])
TA贡献1951条经验 获得超3个赞
您可以编写 TensorDataset 的模拟。为此,您需要从 Dataset 类继承。
from torch.utils.data import Dataset, DataLoader
class MyDataset(Dataset):
def __init__(self, data_frame, q):
self.data = data_frame.values
self.q = q
def __len__(self):
return self.data.shape[0] // self.q
def __getitem__(self, index):
return self.data[index * self.q: (index+1) * self.q]
TA贡献1887条经验 获得超5个赞
另一种方法是使用开源库 pytorch_forecasting。
时间序列数据集的链接可以在这里找到
使用此数据集的摘录:
该数据集自动执行常见任务,例如
变量的缩放和编码
标准化目标变量
有效地将 pandas 数据帧中的时间序列转换为火炬张量
持有关于未来已知和未知的静态和时变变量的信息
持有相关类别的信息(如假期)
数据增强的下采样
生成推理、验证和测试数据集
添加回答
举报