TimeDataset.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from torch.utils.data import Dataset, DataLoader
  2. import pandas as pd
  3. import torch
  4. import numpy as np
  5. from utils.Arg import Arg
  6. arg = Arg()
  7. time_split = arg.time_split
  8. powermax = arg.power_max
  9. powermin = arg.power_min
  10. class TimeSeriesDataset(Dataset):
  11. def __init__(self, file_inputs_2, file_inputs_3):
  12. self.inputs_3 = pd.read_csv(file_inputs_3)#18维度
  13. self.inputs_3 = self.inputs_3.iloc[:,1:-1]
  14. self.target = pd.read_csv(file_inputs_2 ,usecols=[1])#1维
  15. self.time = pd.read_csv(file_inputs_2,usecols=[0])
  16. self.inputs_3.iloc[:,4:12] = np.sin(self.inputs_3.iloc[:,4:12] / 180 * np.pi)
  17. self.inputs_3.iloc[:,:4] = (self.inputs_3.iloc[:,:4] - self.inputs_3.iloc[:,:4].min()) / (self.inputs_3.iloc[:,:4].max() - self.inputs_3.iloc[:,:4] .min())
  18. self.inputs_3.iloc[:, 12:] = (self.inputs_3.iloc[:, 12:] - self.inputs_3.iloc[:, 12:].min()) / (
  19. self.inputs_3.iloc[:, 12:].max() - self.inputs_3.iloc[:, 12:].min())
  20. # print(self.inputs_3.iloc[:, 13].max())
  21. # print(self.inputs_3.iloc[:, 13].min())
  22. self.target.iloc[:, 0] = (self.target.iloc[:, 0] - powermin) / (powermax)
  23. assert len(self.inputs_3) == len(self.target) == len(self.time)
  24. def __len__(self):
  25. return len(self.target) - time_split
  26. def __getitem__(self, idx):
  27. inputs_3 = self.inputs_3.iloc[idx:idx + time_split, :]
  28. #print(inputs_3)
  29. target = self.target.iloc[idx + time_split - 1, :]
  30. inputs_3 = torch.tensor(inputs_3.values, dtype=torch.float32).unsqueeze(1)
  31. inputs_3 = (inputs_3.view(inputs_3.size()[0],inputs_3.size()[2]))
  32. target = torch.tensor(target.values, dtype=torch.float32)
  33. return inputs_3, target
  34. # class TimeSeriesDataset(Dataset):
  35. # def __init__(self, file_inputs_2,file_inputs_3):
  36. # self.inputs_3 = pd.read_csv(file_inputs_3,usecols=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])#18维度
  37. # self.target = pd.read_csv(file_inputs_2,usecols=[2])#1维
  38. # self.time = pd.read_csv(file_inputs_2,usecols=[0])
  39. # self.inputs_3.iloc[:,0:6] = np.sin(self.inputs_3.iloc[:,0:6] / 180 * np.pi)
  40. # self.inputs_3.iloc[:,7:] = (self.inputs_3.iloc[:,7:] - self.inputs_3.iloc[:,7:].min()) / (self.inputs_3.iloc[:,7:].max() - self.inputs_3.iloc[:,7:] .min())
  41. # self.target.iloc[:, 0] = (self.target.iloc[:, 0] - powermin) / (powermax - powermin)
  42. # assert len(self.inputs_3) == len(self.target) == len(self.time)
  43. #
  44. # def __len__(self):
  45. # return len(self.target) - 16
  46. #
  47. # def __getitem__(self, idx):
  48. # inputs_3 = self.inputs_3.iloc[idx:idx+16,:]
  49. # target=self.target.iloc[idx+7,:]
  50. # inputs_3 = torch.tensor(inputs_3.values, dtype=torch.float32)
  51. # target = torch.tensor(target.values, dtype=torch.float32)
  52. # # print(inputs_3.size())
  53. # # print(target.size())
  54. # return inputs_3, target