(self)
| 319 | self.__read_data__() |
| 320 | |
| 321 | def __read_data__(self): |
| 322 | self.scaler = StandardScaler() |
| 323 | df_raw = pd.read_csv(os.path.join(self.root_path, |
| 324 | self.data_path)) |
| 325 | ''' |
| 326 | df_raw.columns: ['date', ...(other features), target feature] |
| 327 | ''' |
| 328 | if self.cols: |
| 329 | cols = self.cols.copy() |
| 330 | cols.remove(self.target) |
| 331 | else: |
| 332 | cols = list(df_raw.columns) |
| 333 | cols.remove(self.target) |
| 334 | cols.remove('date') |
| 335 | df_raw = df_raw[['date'] + cols + [self.target]] |
| 336 | border1 = len(df_raw) - self.seq_len |
| 337 | border2 = len(df_raw) |
| 338 | |
| 339 | if self.features == 'M' or self.features == 'MS': |
| 340 | cols_data = df_raw.columns[1:] |
| 341 | df_data = df_raw[cols_data] |
| 342 | elif self.features == 'S': |
| 343 | df_data = df_raw[[self.target]] |
| 344 | |
| 345 | if self.scale: |
| 346 | self.scaler.fit(df_data.values) |
| 347 | data = self.scaler.transform(df_data.values) |
| 348 | else: |
| 349 | data = df_data.values |
| 350 | |
| 351 | tmp_stamp = df_raw[['date']][border1:border2] |
| 352 | tmp_stamp['date'] = pd.to_datetime(tmp_stamp.date) |
| 353 | pred_dates = pd.date_range(tmp_stamp.date.values[-1], periods=self.pred_len + 1, freq=self.freq) |
| 354 | |
| 355 | df_stamp = pd.DataFrame(columns=['date']) |
| 356 | df_stamp.date = list(tmp_stamp.date.values) + list(pred_dates[1:]) |
| 357 | if self.timeenc == 0: |
| 358 | df_stamp['month'] = df_stamp.date.apply(lambda row: row.month, 1) |
| 359 | df_stamp['day'] = df_stamp.date.apply(lambda row: row.day, 1) |
| 360 | df_stamp['weekday'] = df_stamp.date.apply(lambda row: row.weekday(), 1) |
| 361 | df_stamp['hour'] = df_stamp.date.apply(lambda row: row.hour, 1) |
| 362 | df_stamp['minute'] = df_stamp.date.apply(lambda row: row.minute, 1) |
| 363 | df_stamp['minute'] = df_stamp.minute.map(lambda x: x // 15) |
| 364 | data_stamp = df_stamp.drop(['date'], 1).values |
| 365 | elif self.timeenc == 1: |
| 366 | data_stamp = time_features(pd.to_datetime(df_stamp['date'].values), freq=self.freq) |
| 367 | data_stamp = data_stamp.transpose(1, 0) |
| 368 | |
| 369 | self.data_x = data[border1:border2] |
| 370 | if self.inverse: |
| 371 | self.data_y = df_data.values[border1:border2] |
| 372 | else: |
| 373 | self.data_y = data[border1:border2] |
| 374 | self.data_stamp = data_stamp |
| 375 | |
| 376 | def __getitem__(self, index): |
| 377 | s_begin = index |
no test coverage detected