Exemple #1
0
 def __init__(self,  demo_raw,
             train_start_time = '2014-02-01',train_end_time = '2018-10-31',
             test_start_time = '2018-11-01 00:00:00', test_end_time = '2019-05-01 23:00:00' ):
     # self.raw_df = raw_df
     # demongraphic data [32, 32, 14]
     self.demo_raw = demo_raw
     self.train_start_time = train_start_time
     #self.train_end_time = '2018-03-31'
     self.train_end_time = train_end_time
     # set train/test set
     self.test_start_time = test_start_time
     self.test_end_time = test_end_time
     # prediction window: use one week's data to predict next hour
     self.window = datetime.timedelta(hours=24 * 7)
     self.step = datetime.timedelta(hours=1)
     # predict_start_time should be '2018-04-08 00:00:00'
     # e.g. use '2018-04-01 00:00:00' -> '2018-04-07 23:00:00', in total 168 time stamps
     # to predict  '2018-04-08 00:00:00'
     # however, test_start_time + window = predict_start_time
     # e.g. '2018-04-01 00:00:00'  + 168 hour window = '2018-04-08 00:00:00'
     # this is calculated by time interval, there is 1 hour shift between timestamp and time interval
     self.predict_start_time = datetime_utils.str_to_datetime(self.test_start_time) + self.window
     # predict_end_time = test_end_time = '2018-04-30 23:00:00'
     self.predict_end_time = datetime_utils.str_to_datetime(self.test_end_time)
     # if window = 7 days, test_end_time  = '2018-04-30 23:00:00', actual_end_time =  04/23 - 23:00
     self.actual_end_time = self.predict_end_time - self.window
     # 41616
     self.train_hours = datetime_utils.get_total_hour_range(self.train_start_time, self.train_end_time)
Exemple #2
0
    def __init__(self, raw_df, window=168):
        self.raw_df = raw_df
        self.train_start_time = '2014-02-01'
        self.train_end_time = '2018-10-31'
        self.test_start_time = '2018-11-01 00:00:00'
        self.test_end_time = '2019-04-30 23:00:00'

        # if not speficied, prediction window: use one week's data to predict next hour
        #self.window = datetime.timedelta(hours=24 * 7)
        self.window = datetime.timedelta(hours=window)
        self.step = datetime.timedelta(hours=1)

        # predict_start_time should be '2018-04-08 00:00:00'
        # e.g. use '2018-04-01 00:00:00' -> '2018-04-07 23:00:00', in total 168 time stamps
        # to predict  '2018-04-08 00:00:00'
        # however, test_start_time + window = predict_start_time
        # e.g. '2018-04-01 00:00:00'  + 168 hour window = '2018-04-08 00:00:00'
        # this is calculated by time interval, there is 1 hour shift between timestamp and time interval
        self.predict_start_time = datetime_utils.str_to_datetime(
            self.test_start_time) + self.window
        # predict_end_time = test_end_time = '2018-04-30 23:00:00'
        self.predict_end_time = datetime_utils.str_to_datetime(
            self.test_end_time)
        # if window = 7 days, test_end_time  = '2018-04-30 23:00:00', actual_end_time =  04/23 - 23:00
        self.actual_end_time = self.predict_end_time - self.window

        self.train_df = raw_df[self.train_start_time:self.train_end_time]
        self.test_df = raw_df[self.test_start_time:self.test_end_time]
    def __init__(self,
                 raw_df,
                 demo_raw,
                 train_start_time='2014-02-01',
                 train_end_time='2018-10-31',
                 test_start_time='2018-11-01',
                 test_end_time='2019-05-01'):
        self.raw_df = raw_df
        # demongraphic data [32, 32, 14]
        self.demo_raw = demo_raw
        self.train_start_time = train_start_time
        #self.train_end_time = '2018-03-31'
        self.train_end_time = train_end_time
        # set train/test set
        self.test_start_time = test_start_time
        self.test_end_time = test_end_time
        # prediction window: use one week's data to predict next hour
        self.window = datetime.timedelta(days=7)
        self.step = datetime.timedelta(hours=1)

        # this is calculated by time interval, there is 1 hour shift between timestamp and time interval
        self.predict_start_time = datetime_utils.str_to_datetime(
            self.test_start_time) + self.window
        # predict_end_time = test_end_time = '2018-04-30 23:00:00'
        self.predict_end_time = datetime_utils.str_to_datetime(
            self.test_end_time)
        # if window = 7 days, test_end_time  = '2018-04-30 23:00:00', actual_end_time =  04/23 - 23:00
        self.actual_end_time = self.predict_end_time - self.window

        self.train_df = raw_df[self.train_start_time:self.train_end_time]
        self.test_df = raw_df[self.test_start_time:self.test_end_time]
        self.grid_list = list(raw_df)
Exemple #4
0
    def arr_to_df(self):
        convlstm_predicted = pd.DataFrame(
            np.nan,
            index=self.test_df_cut[self.train_obj.predict_start_time:self.
                                   train_obj.predict_end_time].index,
            columns=list(self.test_df_cut))

        sample_pred_squeeze = np.squeeze(self.predicted_vals)
        # test_squeeze = np.squeeze(self.test_data.y)
        pred_shape = self.predicted_vals.shape

        # loop through time stamps
        for i in range(0, pred_shape[0]):
            temp_image = sample_pred_squeeze[i]
            # test_image = test_squeeze[i]
            # rotate
            temp_rot = np.rot90(temp_image, axes=(1, 0))
            #     test_rot= np.rot90(test_image, axes=(1,0))

            dt = datetime_utils.str_to_datetime(
                self.train_obj.test_start_time) + datetime.timedelta(hours=i)
            # dt_str = pd.to_datetime(datetime_utils.datetime_to_str(dt))
            predicted_timestamp = dt + self.train_obj.window
            predicted_timestamp_str = pd.to_datetime(
                datetime_utils.datetime_to_str(predicted_timestamp))
            # print('predicted_timestamp_str: ', predicted_timestamp_str)

            for c in range(pred_shape[1]):
                for r in range(pred_shape[2]):
                    temp_str = str(r) + '_' + str(c)

                    if temp_str in self.intersect_pos_set:
                        #print('temp_str: ', temp_str)
                        # count +=1

                        convlstm_predicted.loc[predicted_timestamp_str,
                                               temp_str] = temp_rot[r][c]
        return convlstm_predicted