(self)
| 219 | self.__read_data__() |
| 220 | |
| 221 | def __read_data__(self): |
| 222 | self.scaler = StandardScaler() |
| 223 | df_raw = pd.read_csv(os.path.join(self.root_path, |
| 224 | self.data_path)) |
| 225 | |
| 226 | ''' |
| 227 | df_raw.columns: ['date', ...(other features), target feature] |
| 228 | ''' |
| 229 | cols = list(df_raw.columns) |
| 230 | cols.remove(self.target) |
| 231 | cols.remove('date') |
| 232 | df_raw = df_raw[['date'] + cols + [self.target]] |
| 233 | # print(cols) |
| 234 | num_train = int(len(df_raw) * 0.7) |
| 235 | num_test = int(len(df_raw) * 0.2) |
| 236 | num_vali = len(df_raw) - num_train - num_test |
| 237 | border1s = [0, num_train - self.seq_len, len(df_raw) - num_test - self.seq_len] |
| 238 | border2s = [num_train, num_train + num_vali, len(df_raw)] |
| 239 | border1 = border1s[self.set_type] |
| 240 | border2 = border2s[self.set_type] |
| 241 | |
| 242 | if self.features == 'M' or self.features == 'MS': |
| 243 | cols_data = df_raw.columns[1:] |
| 244 | df_data = df_raw[cols_data] |
| 245 | elif self.features == 'S': |
| 246 | df_data = df_raw[[self.target]] |
| 247 | |
| 248 | if self.scale: |
| 249 | train_data = df_data[border1s[0]:border2s[0]] |
| 250 | self.scaler.fit(train_data.values) |
| 251 | # print(self.scaler.mean_) |
| 252 | # exit() |
| 253 | data = self.scaler.transform(df_data.values) |
| 254 | else: |
| 255 | data = df_data.values |
| 256 | |
| 257 | df_stamp = df_raw[['date']][border1:border2] |
| 258 | df_stamp['date'] = pd.to_datetime(df_stamp.date) |
| 259 | if self.timeenc == 0: |
| 260 | df_stamp['month'] = df_stamp.date.apply(lambda row: row.month, 1) |
| 261 | df_stamp['day'] = df_stamp.date.apply(lambda row: row.day, 1) |
| 262 | df_stamp['weekday'] = df_stamp.date.apply(lambda row: row.weekday(), 1) |
| 263 | df_stamp['hour'] = df_stamp.date.apply(lambda row: row.hour, 1) |
| 264 | data_stamp = df_stamp.drop(['date'], 1).values |
| 265 | elif self.timeenc == 1: |
| 266 | data_stamp = time_features(pd.to_datetime(df_stamp['date'].values), freq=self.freq) |
| 267 | data_stamp = data_stamp.transpose(1, 0) |
| 268 | |
| 269 | self.data_x = data[border1:border2] |
| 270 | self.data_y = data[border1:border2] |
| 271 | self.data_stamp = data_stamp |
| 272 | |
| 273 | def __getitem__(self, index): |
| 274 | s_begin = index |
no test coverage detected