mapeTM, pd.DataFrame(np.reshape(np.array([altMAPE, mapeGroundTruth]), newshape=(1, 2)), columns=['TM', 'GT']) ]) negLLTM = pd.concat([negLLTM, pd.DataFrame([negLL], columns=['TM'])]) lstmExptDir = 'results/nyc_taxi_experiment_continuous_likelihood_noise/' noiseList = ['0.0', '0.020', '0.040', '0.060', '0.080', '0.10'] negLLLSTM = pd.DataFrame([], columns=['LSTM']) noiseStrengthLSTM = [] for noise in noiseList: experiment = lstmExptDir + 'noise' + noise expResult = ExperimentResult(experiment) truth = np.concatenate((np.zeros(5333), expResult.truth)) error = np.concatenate((np.zeros(5333), expResult.error)) noiseValue = (truth - data['value']) / data['value'] noiseStrengthLSTM.append(np.std(noiseValue[8000:])) if not np.isclose(noiseStrengthLSTM[-1], float(noise), rtol=0.1): print "Warning: Estimated noise strength is different from the given noise" negLL = np.nanmean(error[startFrom:]) negLLLSTM = pd.concat([negLLLSTM, pd.DataFrame([negLL], columns=['LSTM'])]) lstmExptDir = 'results/nyc_taxi_experiment_continuous_noise/' noiseList = ['0.0', '0.020', '0.040', '0.060', '0.080', '0.10']
figPath = './result/' plt.close('all') # use datetime as x-axis dataSet = 'nyc_taxi' filePath = './data/' + dataSet + '.csv' data = pd.read_csv(filePath, header=0, skiprows=[1, 2], names=['datetime', 'value', 'timeofday', 'dayofweek']) xaxisDatetime = pd.to_datetime(data['datetime']) expResultPerturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(1001.0) + '/') negLLLSTM1000Perturb = expResultPerturb.error truthLSTM1000Perturb = expResultPerturb.truth expResultPerturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(3001.0) + '/') negLLLSTM3000Perturb = expResultPerturb.error truthLSTM3000Perturb = expResultPerturb.truth expResultPerturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(6001.0) + '/') negLLLSTM6000Perturb = expResultPerturb.error truthLSTM6000Perturb = expResultPerturb.truth
return np.sqrt(np.nanmean(squareDeviation)) / np.nanstd(truth) def loadExperimentResult(filePath): expResult = pd.read_csv(filePath, header=0, skiprows=[1, 2], names=['step', 'value', 'prediction5']) groundTruth = np.roll(expResult['value'], -5) prediction5step = np.array(expResult['prediction5']) return (groundTruth, prediction5step) if __name__ == "__main__": xaxisDate = getDatetimeAxis() expResult = ExperimentResult( 'results/nyc_taxi_experiment_continuous/learning_window6001.0/') # ### Figure 1: Continuous vs Batch LSTM # fig = plt.figure() # # NRMSE_StaticLSTM = plotLSTMresult('results/nyc_taxi_experiment_one_shot/', # # window, xaxis=xaxis_datetime, label='static lstm') # (nrmseLSTM6000, expResultLSTM6000) = \ # plotLSTMresult('results/nyc_taxi_experiment_continuous/learning_window6001.0/', # window, xaxis=xaxisDate, label='continuous LSTM-6000') # plt.legend() # plt.savefig(figPath + 'continuousVsbatch.pdf') # ### Figure 2: Continuous LSTM with different window size fig = plt.figure()
figPath = './result/' plt.close('all') # use datetime as x-axis dataSet = 'nyc_taxi' filePath = './data/' + dataSet + '.csv' data = pd.read_csv(filePath, header=0, skiprows=[1, 2], names=['datetime', 'value', 'timeofday', 'dayofweek']) xaxis_datetime = pd.to_datetime(data['datetime']) expResult_perturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(1001.0) + '/') negLL_LSTM1000_perturb = expResult_perturb.error truth_LSTM1000_perturb = expResult_perturb.truth expResult_perturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(3001.0) + '/') negLL_LSTM3000_perturb = expResult_perturb.error truth_LSTM3000_perturb = expResult_perturb.truth expResult_perturb = ExperimentResult( 'results/nyc_taxi_experiment_continuous_likelihood_perturb/learning_window' + str(6001.0) + '/') negLL_LSTM6000_perturb = expResult_perturb.error truth_LSTM6000_perturb = expResult_perturb.truth