LSTM, GRU, and MNN Model Performance Comparison: Error Analysis and MAPE Calculation
import pandas as pd import numpy as np import matplotlib.pyplot as plt
y_hat = pd.read_csv('y_hat.csv') # len = 93 predict_Y = pd.read_csv('predict_Y.csv') # len = 92 original = pd.read_csv('original.csv') # len = 100 y_pred = pd.read_csv('y_pred_mnn.csv') # len = 100
plt.figure(figsize=(10, 10)) plt.xlabel('Longitude Error (degree)') plt.ylabel('Latitude Error (degree)')
LSTM
a_lat_LSTM = [] b_lon_LSTM = [] for i in range(len(y_hat)): long = original.iloc[i + 7, 1] - y_hat.iloc[i, 1] lat = original.iloc[i+7, 0] - y_hat.iloc[i, 0] a_lat_LSTM.append(long) b_lon_LSTM.append(lat)
GRU
a_lat_GRU = [] b_lon_GRU = [] for i in range(len(predict_Y)): long = original.iloc[i+8, 1] - predict_Y.iloc[i, 1] lat = original.iloc[i+8, 0] - predict_Y.iloc[i, 0] a_lat_GRU.append(long) b_lon_GRU.append(lat)
MNN
a_lat_MNN = [] b_lon_MNN = [] for i in range(len(y_pred)): long = original.iloc[i, 1] - y_pred.iloc[i, 2] lat = original.iloc[i, 0] - y_pred.iloc[i, 1] a_lat_MNN.append(long) b_lon_MNN.append(lat)
MAPE
def MAPE(y_true, y_pred): y_true, y_pred = np.array(y_true), np.array(y_pred) return np.mean(np.abs((y_true - y_pred) / y_true)) * 100
mape_LSTM = MAPE(original.iloc[7:len(y_hat)+7, :2], y_hat) mape_GRU = MAPE(original.iloc[8:len(predict_Y)+8, :2], predict_Y) mape_MNN = MAPE(original.iloc[:, :2], y_pred.iloc[:, 1:3])
print('MAPE for LSTM: {:.2f}%'.format(mape_LSTM)) print('MAPE for GRU: {:.2f}%'.format(mape_GRU)) print('MAPE for MNN: {:.2f}%'.format(mape_MNN))
绘制误差散点图和误差密度图
plt.figure(figsize=(10, 10)) plt.scatter(a_lat_LSTM, b_lon_LSTM, label='LSTM') plt.scatter(a_lat_GRU, b_lon_GRU, label='GRU') plt.scatter(a_lat_MNN, b_lon_MNN, label='MNN') plt.legend()
plt.figure(figsize=(10, 10)) plt.hist(a_lat_LSTM, bins=30, alpha=0.5, label='LSTM') plt.hist(a_lat_GRU, bins=30, alpha=0.5, label='GRU') plt.hist(a_lat_MNN, bins=30, alpha=0.5, label='MNN') plt.legend()
原文地址: https://www.cveoy.top/t/topic/l6Ke 著作权归作者所有。请勿转载和采集!