"""Module d'évaluation des modèles de régression. Ce module contient une fonction pour évaluer les performances d'un modèle de régression en calculant des métriques telles que MAE, RMSE et R², à la fois sur l'échelle log et sur l'échelle réelle après transformation inverse avec expm1. Les métriques sont retournées dans un dictionnaire""" import numpy as np from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score def evaluate_regression_model(y_true_log, y_pred_log): """ Calcule les métriques d'évaluation pour un modèle de régression. Les métriques sont calculées : - sur l'échelle log - sur l'échelle réelle après transformation inverse avec expm1 Args: y_true_log: valeurs réelles de la target en log y_pred_log: valeurs prédites par le modèle en log Returns: dict: dictionnaire contenant MAE, RMSE et R² en log et en réel """ try: # Métriques sur l'échelle log mae_log = mean_absolute_error(y_true_log, y_pred_log) rmse_log = np.sqrt(mean_squared_error(y_true_log, y_pred_log)) r2_log = r2_score(y_true_log, y_pred_log) # Retour à l'échelle réelle y_true_real = np.expm1(y_true_log) y_pred_real = np.expm1(y_pred_log) # Sécurité : éviter valeurs négatives éventuelles après inversion y_pred_real = np.maximum(y_pred_real, 0) # Métriques sur l'échelle réelle mae_real = mean_absolute_error(y_true_real, y_pred_real) rmse_real = np.sqrt(mean_squared_error(y_true_real, y_pred_real)) r2_real = r2_score(y_true_real, y_pred_real) return { "mae_log": mae_log, "rmse_log": rmse_log, "r2_log": r2_log, "mae_real": mae_real, "rmse_real": rmse_real, "r2_real": r2_real, } except Exception as e: print(f"Erreur lors de l'évaluation du modèle : {e}") return None