import numpy as np
from sklearn.metrics import mean_squared_error, mean_absolute_error
def mean_absolute_percentage_error(y_true, y_pred):
y_true, y_pred = np.array(y_true), np.array(y_pred)
non_zero = y_true != 0
return np.mean(np.abs((y_true[non_zero] - y_pred[non_zero]) / y_true[non_zero])) * 100
# Example true and predicted values for training and validation
train_true = [100, 120, 130, 150, 170]
train_pred = [102, 118, 128, 149, 172]
val_true = [110, 115, 140, 160, 180]
val_pred = [130, 140, 160, 190, 210]
# Calculate metrics
train_mse = mean_squared_error(train_true, train_pred)
val_mse = mean_squared_error(val_true, val_pred)
train_mae = mean_absolute_error(train_true, train_pred)
val_mae = mean_absolute_error(val_true, val_pred)
train_mape = mean_absolute_percentage_error(train_true, train_pred)
val_mape = mean_absolute_percentage_error(val_true, val_pred)
print(f"Training MSE: {train_mse:.2f}, Validation MSE: {val_mse:.2f}")
print(f"Training MAE: {train_mae:.2f}, Validation MAE: {val_mae:.2f}")
print(f"Training MAPE: {train_mape:.2f}%, Validation MAPE: {val_mape:.2f}%")