Spaces:
Sleeping
Sleeping
# ============================================ | |
# Fichier: trainers/cuml/linear_regression_trainer.py | |
# ============================================ | |
from cuml.linear_model import LinearRegression | |
from cuml_trainer import CuMLTrainer | |
from config import Config | |
from interfaces.cuml_tfidf_vectorizer import CuMLTfidfVectorizer | |
from interfaces.metrics_calculator import DefaultMetricsCalculator | |
class LinearRegressionTrainer(CuMLTrainer): | |
""" | |
Entraîneur spécifique utilisant un classifieur LinearRegression 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 linéaire pour la prédiction de valeurs continues. | |
""" | |
def __init__(self, config: Config, data_path: str, target_column: str) -> None: | |
""" | |
Initialise un LinearRegressionTrainer 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 LinearRegression 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 = LinearRegression(**params) | |
def build_components(self) -> None: | |
""" | |
Instancie le vectorizer, le classifieur LinearRegression 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 LinearRegression 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. | |
""" | |
# Inheriting from CuMLTrainer => loads data, vectorizes, fits | |
super().train() | |
def evaluate(self) -> dict: | |
""" | |
Évalue le classifieur LinearRegression 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. | |
""" | |
# Inheriting from CuMLTrainer => loads data, vectorizes, calls the metrics calculator | |
return super().evaluate() | |