Exemple #1
0
    def build_graph(self, graph_name):
        AM, LM = None, None
        if graph_name.lower() == 'distance':
            lat_lng_list = np.array([[float(e1) for e1 in e[2:4]]
                                     for e in self.dataset.node_station_info])
            AM = self.distance_adjacent(lat_lng_list[self.traffic_data_index],
                                        threshold=float(
                                            self.threshold_distance))
            LM = self.adjacent_to_laplacian(AM)

        if graph_name.lower() == 'interaction':
            monthly_interaction = self.dataset.node_monthly_interaction[:,
                                                                        self.
                                                                        traffic_data_index, :][:, :,
                                                                                               self
                                                                                               .
                                                                                               traffic_data_index]

            monthly_interaction, _ = SplitData.split_data(
                monthly_interaction, self.train_test_ratio)

            annually_interaction = np.sum(monthly_interaction[-12:], axis=0)
            annually_interaction = annually_interaction + annually_interaction.transpose(
            )

            AM = self.interaction_adjacent(annually_interaction,
                                           threshold=float(
                                               self.threshold_interaction))
            LM = self.adjacent_to_laplacian(AM)

        if graph_name.lower() == 'correlation':
            AM = self.correlation_adjacent(
                self.train_data[-30 * int(self.daily_slots):],
                threshold=float(self.threshold_correlation))
            LM = self.adjacent_to_laplacian(AM)

        if graph_name.lower() == 'neighbor':
            LM = self.adjacent_to_laplacian(
                self.dataset.data.get('contribute_data').get(
                    'graph_neighbors'))

        if graph_name.lower() == 'line':
            LM = self.adjacent_to_laplacian(
                self.dataset.data.get('contribute_data').get('graph_lines'))
            LM = LM[self.traffic_data_index]
            LM = LM[:, self.traffic_data_index]

        if graph_name.lower() == 'transfer':
            LM = self.adjacent_to_laplacian(
                self.dataset.data.get('contribute_data').get('graph_transfer'))
        return AM, LM
Exemple #2
0
args = vars(parser.parse_args())

data_loader = NodeTrafficLoader(dataset=args["dataset"],
                                city=args['city'],
                                closeness_len=int(params['CT']),
                                period_len=int(params['PT']),
                                trend_len=int(params['TT']),
                                data_range=args['DataRange'],
                                train_data_length=args['TrainDays'],
                                test_ratio=args['test_ratio'],
                                with_lm=False,
                                normalize=False,
                                MergeIndex=args['MergeIndex'],
                                MergeWay=args['MergeWay'])

train_closeness, val_closeness = SplitData.split_data(
    data_loader.train_closeness, [0.9, 0.1])
train_period, val_period = SplitData.split_data(data_loader.train_period,
                                                [0.9, 0.1])
train_trend, val_trend = SplitData.split_data(data_loader.train_trend,
                                              [0.9, 0.1])

train_y, val_y = SplitData.split_data(data_loader.train_y, [0.9, 0.1])

hm_obj = HM(c=data_loader.closeness_len,
            p=data_loader.period_len,
            t=data_loader.trend_len)

test_prediction = hm_obj.predict(closeness_feature=data_loader.test_closeness,
                                 period_feature=data_loader.test_period,
                                 trend_feature=data_loader.test_trend)
Exemple #3
0
data_loader = NodeTrafficLoader(
    dataset=args['dataset'],
    city=args['city'],
    data_range=args['DataRange'],
    train_data_length=args['TrainDays'],
    test_ratio=0.1,
    closeness_len=int(args['CT']),
    period_len=0,
    trend_len=0,
    with_lm=False,
    with_tpe=False,
    normalize=False,
    MergeIndex=args['MergeIndex'],
    MergeWay="max" if args["dataset"] == "ChargeStation" else "sum")

train_closeness, val_closeness = SplitData.split_data(
    data_loader.train_closeness, [0.9, 0.1])
train_y, val_y = SplitData.split_data(data_loader.train_y, [0.9, 0.1])

val_prediction_collector = []
test_prediction_collector = []

print('*************************************************************')

for i in tqdm(range(data_loader.station_number)):

    try:
        model_obj = ARIMA(
            time_sequence=train_closeness[:, i, -1, 0],
            order=[args['ar'], args['d'], args['ma']],
            seasonal_order=[args['sar'], args['sd'], args['sma'], args['sp']])
Exemple #4
0
    external_lstm_len=args['external_lstm_len'],
    threshold_distance=args['threshold_distance'],
    threshold_correlation=args['threshold_correlation'],
    threshold_interaction=args['threshold_interaction'],
    normalize=args['normalize'],
    graph=args['graph'],
    with_lm=True,
    with_tpe=True if args['st_method'] == 'gal_gcn' else False,
    workday_parser=is_work_day_america
    if args['dataset'] == 'Bike' else is_work_day_china,
    external_use=args['external_use'],
    MergeIndex=args['MergeIndex'],
    MergeWay="max" if args["dataset"] == "ChargeStation" else "sum")

# split data
train_closeness, val_closeness = SplitData.split_data(
    data_loader.train_closeness, [0.9, 0.1])
train_period, val_period = SplitData.split_data(data_loader.train_period,
                                                [0.9, 0.1])
train_trend, val_trend = SplitData.split_data(data_loader.train_trend,
                                              [0.9, 0.1])
if data_loader.external_dim > 0:
    train_ef_closeness, val_ef_closeness = SplitData.split_data(
        data_loader.train_ef_closeness, [0.9, 0.1])
    train_ef_period, val_ef_period = SplitData.split_data(
        data_loader.train_ef_period, [0.9, 0.1])
    train_ef_trend, val_ef_trend = SplitData.split_data(
        data_loader.train_ef_trend, [0.9, 0.1])
    train_ef, val_ef = SplitData.split_data(data_loader.train_ef, [0.9, 0.1])
    train_lstm_ef, val_lstm_ef = SplitData.split_data(
        data_loader.train_lstm_ef, [0.9, 0.1])
if data_loader.poi_dim is not None and data_loader.poi_dim > 0: