def taxiny_evaluation(): # parameters DATAPATH = '../data' CACHEDATA = True # cache data or NOT T = 24 # number of time intervals in one day lr = 0.00035 # learning rate len_closeness = len_c = 4 # length of closeness dependent sequence - should be 6 len_period = len_p = 4 # length of peroid dependent sequence len_trend = len_t = 4 # length of trend dependent sequence nb_flow = 2 # there are two types of flows: inflow and outflow days_test = 7 * 4 len_test = T * days_test map_height, map_width = 16, 8 # grid size path_cache = os.path.join(DATAPATH, 'CACHE', 'MST3D') # cache path if CACHEDATA and os.path.isdir(path_cache) is False: os.mkdir(path_cache) # load data print("loading data...") fname = os.path.join(path_cache, 'TaxiNYC_C{}_P{}_T{}.h5'.format(len_c, len_p, len_t)) if os.path.exists(fname) and CACHEDATA: X_train, Y_train, \ X_test, Y_test, mmn, external_dim, \ timestamp_train, timestamp_test = read_cache( fname, 'preprocessing_taxinyc.pkl') print("load %s successfully" % fname) else: X_train, Y_train, \ X_test, Y_test, mmn, external_dim, \ timestamp_train, timestamp_test = TaxiNYC.load_data( T=T, nb_flow=nb_flow, len_closeness=len_c, len_period=len_p, len_trend=len_t, len_test=len_test, preprocess_name='preprocessing_taxinyc.pkl', meta_data=True, meteorol_data=True, holiday_data=True, datapath=DATAPATH) if CACHEDATA: cache(fname, X_train, Y_train, X_test, Y_test, external_dim, timestamp_train, timestamp_test) print("\n days (test): ", [v[:8] for v in timestamp_test[0::T]]) print('=' * 10) # build model model = build_model('NY', len_c, len_p, len_t, nb_flow, map_height, map_width, external_dim) model_fname = 'TaxiNYC1.c4.p4.t4.lr_0.00034.batchsize_16.best.h5' model.load_weights(os.path.join('../best_models', 'MST3D', model_fname)) # evaluate and save results dict_multi_score = multi_step_2D(model, X_test, Y_test, mmn, len_c, step=5) for i in range(len(dict_multi_score)): csv_name = os.path.join('results', f'taxiny_step{i+1}.csv') save_to_csv(dict_multi_score[i], csv_name)
def bikenyc_evaluation(): # parameters DATAPATH = '../data' # data path, you may set your own data path with the global envirmental variable DATAPATH CACHEDATA = True # cache data or NOT path_cache = os.path.join(DATAPATH, 'CACHE', 'ST-ResNet') # cache path T = 24 # number of time intervals in one day lr = 0.0002 # learning rate len_closeness = 3 # length of closeness dependent sequence len_period = 4 # length of peroid dependent sequence len_trend = 4 # length of trend dependent sequence nb_residual_unit = 4 # paper says 4 for BikeNYC nb_flow = 2 days_test = 10 len_test = T * days_test map_height, map_width = 16, 8 # grid size if CACHEDATA and os.path.isdir(path_cache) is False: os.mkdir(path_cache) # load data print("loading data...") ts = time.time() fname = os.path.join( path_cache, 'BikeNYC_C{}_P{}_T{}.h5'.format(len_closeness, len_period, len_trend)) if os.path.exists(fname) and CACHEDATA: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = read_cache( fname, 'preprocessing_bikenyc.pkl') print("load %s successfully" % fname) else: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = BikeNYC.load_data( T=T, nb_flow=nb_flow, len_closeness=len_closeness, len_period=len_period, len_trend=len_trend, len_test=len_test, preprocess_name='preprocessing_bikenyc.pkl', meta_data=True, datapath=DATAPATH) if CACHEDATA: cache(fname, X_train, Y_train, X_test, Y_test, external_dim, timestamp_train, timestamp_test) print("\n days (test): ", [v[:8] for v in timestamp_test[0::T]]) print("\nelapsed time (loading data): %.3f seconds\n" % (time.time() - ts)) # build model model = build_model(external_dim, nb_residual_unit, map_height, map_width, len_closeness, len_period, len_trend) model_fname = 'BikeNYC.c3.p4.t4.resunit4.iter0.cont.best.h5' model.load_weights(os.path.join('../best_models', 'ST-ResNet', model_fname)) # evaluate and save results dict_multi_score = multi_step_2D(model, X_test, Y_test, mmn, len_closeness, step=5) for i in range(len(dict_multi_score)): csv_name = os.path.join('results', f'bikenyc_step{i+1}.csv') save_to_csv(dict_multi_score[i], csv_name)
def taxiny_evaluation(): # params DATAPATH = '../data' CACHEDATA = True T = 24 # number of time intervals in one day len_closeness = 3 # length of closeness dependent sequence len_period = 1 # length of peroid dependent sequence len_trend = 1 # length of trend dependent sequence nb_residual_unit = 4 nb_flow = 2 days_test = 7 * 4 len_test = T * days_test map_height, map_width = 16, 8 # grid size path_cache = os.path.join(DATAPATH, 'CACHE', 'ST-ResNet') # cache path if CACHEDATA and os.path.isdir(path_cache) is False: os.mkdir(path_cache) # load data print("loading data...") fname = os.path.join( path_cache, 'TaxiNYC_C{}_P{}_T{}.h5'.format(len_closeness, len_period, len_trend)) if os.path.exists(fname) and CACHEDATA: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = read_cache( fname, 'preprocessing_taxinyc.pkl') print("load %s successfully" % fname) else: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = TaxiNYC.load_data( T=T, nb_flow=nb_flow, len_closeness=len_closeness, len_period=len_period, len_trend=len_trend, len_test=len_test, preprocess_name='preprocessing_taxinyc.pkl', meta_data=True, meteorol_data=True, holiday_data=True, datapath=DATAPATH) if CACHEDATA: cache(fname, X_train, Y_train, X_test, Y_test, external_dim, timestamp_train, timestamp_test) print("\n days (test): ", [v[:8] for v in timestamp_test[0::T]]) print('=' * 10) # build model model = build_model(external_dim, nb_residual_unit, map_height, map_width, len_closeness, len_period, len_trend, bn=True) model_fname = 'TaxiNYC4.c3.p1.t1.resunits_4.lr_0.0001.batchsize_16.best.h5' model.load_weights(os.path.join('../best_models', 'ST-ResNet', model_fname)) # evaluate and save results dict_multi_score = multi_step_2D(model, X_test, Y_test, mmn, len_closeness, step=5) for i in range(len(dict_multi_score)): csv_name = os.path.join('results', f'taxiny_step{i+1}.csv') save_to_csv(dict_multi_score[i], csv_name)
def taxibj_evaluation(): # parameters DATAPATH = '../data' # data path, you may set your own data path with the global envirmental variable DATAPATH CACHEDATA = True # cache data or NOT path_cache = os.path.join(DATAPATH, 'CACHE', 'ST-ResNet') # cache path T = 48 # number of time intervals in one day lr = 0.0002 # learning rate len_closeness = 3 # length of closeness dependent sequence len_period = 1 # length of peroid dependent sequence len_trend = 1 # length of trend dependent sequence nb_residual_unit = 12 # paper says 12 for taxiBJ nb_flow = 2 days_test = 7 * 4 len_test = T * days_test map_height, map_width = 32, 32 # grid size if CACHEDATA and os.path.isdir(path_cache) is False: os.mkdir(path_cache) # load data print("loading data...") fname = os.path.join( path_cache, 'TaxiBJ_onlyMeta_C{}_P{}_T{}.h5'.format(len_closeness, len_period, len_trend)) if os.path.exists(fname) and CACHEDATA: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = read_cache( fname, 'preprocessing_taxibj.pkl') print("load %s successfully" % fname) else: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = TaxiBJ.load_data( T=T, nb_flow=nb_flow, len_closeness=len_closeness, len_period=len_period, len_trend=len_trend, len_test=len_test, preprocess_name='preprocessing_taxibj.pkl', meta_data=True, meteorol_data=False, holiday_data=False, datapath=DATAPATH) if CACHEDATA: cache(fname, X_train, Y_train, X_test, Y_test, external_dim, timestamp_train, timestamp_test) print("\n days (test): ", [v[:8] for v in timestamp_test[0::T]]) print('=' * 10) # build model model = build_model(external_dim, nb_residual_unit, map_height, map_width, len_closeness, len_period, len_trend) model_fname = 'TaxiBJ.c3.p1.t1.resunit12.iter8.cont.best.h5' model.load_weights(os.path.join('../best_models', 'ST-ResNet', model_fname)) # evaluate and save results dict_multi_score = multi_step_2D(model, X_test, Y_test, mmn, len_closeness, step=5) for i in range(len(dict_multi_score)): csv_name = os.path.join('results', f'taxibj_step{i+1}.csv') save_to_csv(dict_multi_score[i], csv_name)
def taxibj_evaluation(): # parameters DATAPATH = '../data' CACHEDATA = True # cache data or NOT T = 48 # number of time intervals in one day lr = 0.0002 # learning rate len_closeness = 4 # length of closeness dependent sequence - should be 6 len_period = 4 # length of peroid dependent sequence len_trend = 4 # length of trend dependent sequence nb_flow = 2 days_test = 7 * 4 len_test = T * days_test map_height, map_width = 32, 32 # grid size path_cache = os.path.join(DATAPATH, 'CACHE', 'MST3D') # cache path if CACHEDATA and os.path.isdir(path_cache) is False: os.mkdir(path_cache) # load data print("loading data...") ts = time.time() fname = os.path.join( path_cache, 'TaxiBJ_C{}_P{}_T{}.h5'.format(len_closeness, len_period, len_trend)) if os.path.exists(fname) and CACHEDATA: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = read_cache( fname, 'preprocessing.pkl') print("load %s successfully" % fname) else: X_train, Y_train, X_test, Y_test, mmn, external_dim, timestamp_train, timestamp_test = TaxiBJ.load_data( T=T, nb_flow=nb_flow, len_closeness=len_closeness, len_period=len_period, len_trend=len_trend, len_test=len_test, preprocess_name='preprocessing.pkl', meta_data=True, meteorol_data=True, holiday_data=True, datapath=DATAPATH) if CACHEDATA: cache(fname, X_train, Y_train, X_test, Y_test, external_dim, timestamp_train, timestamp_test) print("\n days (test): ", [v[:8] for v in timestamp_test[0::T]]) print("\nelapsed time (loading data): %.3f seconds\n" % (time.time() - ts)) print('=' * 10) mmn._max = 1292 # just to be sure it's correct # build model model = build_model('BJ', len_closeness, len_period, len_trend, nb_flow, map_height, map_width, external_dim) model_fname = 'TaxiBJ.c4.p4.t4.iter6.best.h5' model.load_weights(os.path.join('../best_models', 'MST3D', model_fname)) # evaluate and save results dict_multi_score = multi_step_2D(model, X_test, Y_test, mmn, len_closeness, step=5) for i in range(len(dict_multi_score)): csv_name = os.path.join('results', f'taxibj_step{i+1}.csv') save_to_csv(dict_multi_score[i], csv_name)