Source code for deepextractor.utils.metrics
import numpy as np
[docs]
def calculate_mse(target, output):
"""Mean Squared Error between target and output arrays."""
if target.shape != output.shape:
raise ValueError("Target and output must have the same shape.")
return np.mean((target.flatten() - output.flatten()) ** 2)
[docs]
def calculate_rmse(target, output):
"""Root Mean Squared Error between target and output arrays."""
return np.sqrt(calculate_mse(target, output))
[docs]
def calculate_mae(target, output):
"""Mean Absolute Error between target and output arrays."""
return np.mean(np.abs(target.flatten() - output.flatten()))
[docs]
def calculate_snr(target, output):
"""Signal-to-Noise Ratio (dB) of the reconstruction."""
signal_power = np.mean(target.flatten() ** 2)
noise_power = np.mean((target.flatten() - output.flatten()) ** 2)
return 10 * np.log10(signal_power / noise_power)
[docs]
def calculate_psnr(target, output, max_value=1.0):
"""Peak Signal-to-Noise Ratio (dB)."""
mse = calculate_mse(target, output)
return 10 * np.log10(max_value**2 / mse)
[docs]
def calculate_r2(target, output):
"""Coefficient of determination (R²)."""
target_flat = target.flatten()
output_flat = output.flatten()
ss_res = np.sum((target_flat - output_flat) ** 2)
ss_tot = np.sum((target_flat - np.mean(target_flat)) ** 2)
return 1 - (ss_res / ss_tot)
[docs]
def calculate_mape(target, output):
"""
Mean Absolute Percentage Error (MAPE), expressed as a percentage.
Parameters
----------
target : numpy.ndarray
The target values.
output : numpy.ndarray
The predicted values.
Returns
-------
float
MAPE value as a percentage.
"""
if target.shape != output.shape:
raise ValueError("Target and output values must have the same shape.")
epsilon = 1e-10
target = np.where(target == 0, epsilon, target)
return np.mean(np.abs((target - output) / target)) * 100