import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error, mean_absolute_error
# Sample target and predicted values
y_true = np.array([3, 7, 4, 1, 8, 5])
y_pred = np.array([4, 6, 5, 3, 7, 6])
# Calculate MSE and MAE
mse = mean_squared_error(y_true, y_pred)
mae = mean_absolute_error(y_true, y_pred)
# Huber Loss implementation
def huber_loss(y_true, y_pred, delta=1.0):
error = np.abs(y_true - y_pred)
loss = np.where(error <= delta, 0.5 * error**2, delta * error - 0.5 * delta**2)
return np.mean(loss)
huber_delta1 = huber_loss(y_true, y_pred, delta=1.0)
# Plot the loss functions
losses = [mse, mae, huber_delta1]
labels = ['MSE', 'MAE', 'Huber Loss (delta=1)']
# Providing x-values explicitly for plotting
x = np.arange(len(losses))
plt.figure(figsize=(10, 6))
plt.bar(x, losses, tick_label=labels)
plt.xlabel('Loss Function')
plt.ylabel('Loss Value')
plt.title('Comparison of Loss Functions')
plt.show()