# ============================================ # Fichier: trainers/cuml/logistic_regression_trainer.py # ============================================ from cuml.linear_model import LogisticRegression from cuml_trainer import CuMLTrainer from config import Config from interfaces.cuml_tfidf_vectorizer import CuMLTfidfVectorizer from interfaces.metrics_calculator import DefaultMetricsCalculator class LogisticRegressionTrainer(CuMLTrainer): """ Entraîneur spécifique utilisant un classifieur LogisticRegression de la librairie cuML. Hérite de CuMLTrainer, qui hérite lui-même de BaseTrainer. Cette classe implémente les méthodes spécifiques à l'utilisation d'un modèle de régression logistique pour la classification binaire ou multi-classes. """ def __init__(self, config: Config, data_path: str, target_column: str) -> None: """ Initialise un LogisticRegressionTrainer avec la configuration et les paramètres du parent CuMLTrainer. :param config: Configuration globale du système. :param data_path: Chemin vers le fichier de données. :param target_column: Nom de la colonne cible. """ super().__init__(config, data_path, target_column) def _build_classifier(self) -> None: """ Crée et configure un classifieur LogisticRegression selon les paramètres spécifiés dans la configuration. Utilise directement les paramètres de la configuration pour initialiser le modèle avec les hyperparamètres appropriés. """ params = self.config.model.params or {} self.classifier = LogisticRegression(**params) def build_components(self) -> None: """ Instancie le vectorizer, le classifieur LogisticRegression et le calculateur de métriques. Cette méthode configure tous les composants nécessaires au fonctionnement du trainer, en se basant sur les paramètres spécifiés dans la configuration. """ # Récupération de la méthode et des paramètres de vectorisation vector_method = self.config.vectorization.method vector_params = self.config.vectorization.dict().get(vector_method, {}) self.vectorizer = CuMLTfidfVectorizer(**vector_params) # Construction du classifieur self._build_classifier() # Initialisation du calculateur de métriques self.metrics_calculator = DefaultMetricsCalculator() def train(self) -> None: """ Entraîne le classifieur LogisticRegression sur les données vectorisées. Utilise l'implémentation fournie par la classe parente CuMLTrainer, qui s'occupe du chargement des données, de la vectorisation et de l'entraînement. """ super().train() def evaluate(self) -> dict: """ Évalue le classifieur LogisticRegression et calcule les métriques appropriées. Utilise l'implémentation fournie par la classe parente CuMLTrainer, qui s'occupe du chargement des données, de la vectorisation, de la prédiction et du calcul des métriques via le metrics_calculator. :return: Dictionnaire contenant les métriques calculées. """ return super().evaluate()