| |
| import numpy as np |
| from sklearn.preprocessing import LabelEncoder |
| from xgboost import XGBClassifier |
|
|
| from core.data_bundle import DataBundle |
| from models.base import BaseModel |
|
|
|
|
| class XGBClassifierWrapper(BaseModel): |
| def __init__(self, config: dict) -> None: |
| super().__init__(config) |
| self.label_encoder: LabelEncoder = LabelEncoder() |
|
|
| def train(self, data: DataBundle) -> None: |
| merged_config = self._merge_hyperparameter_overrides(data) |
| |
| merged_config.pop("use_label_encoder", None) |
| |
| |
| y_train_encoded = self.label_encoder.fit_transform(data.common.y_train) |
| self.model = XGBClassifier(**merged_config) |
| self.model.fit(data.common.X_train, y_train_encoded) |
|
|
| def predict(self, X: np.ndarray) -> np.ndarray: |
| |
| encoded_predictions = self.model.predict(X) |
| return self.label_encoder.inverse_transform(encoded_predictions) |
|
|