agritech-api / src /modeling /evaluate.py
github-actions
Deploy API from GitHub Actions
42dfbed
Raw
History Blame Contribute Delete
2.01 kB
"""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