Source code for deephyper.predictor.sklearn._predictor_sklearn

import pickle

from typing import List

from sklearn.base import BaseEstimator, ClassifierMixin
from deephyper.predictor import Predictor, PredictorFileLoader


[docs] class SklearnPredictor(Predictor): """Represents a frozen Scikit-Learn model that can only predict.""" def __init__(self, model: BaseEstimator): self.model = model self._predict_func = "predict" if isinstance(self.model, ClassifierMixin) and hasattr(self.model, "predict_proba"): self._predict_func = "predict_proba"
[docs] def predict(self, X): if self._predict_func == "predict": y = self.model.predict(X) else: y = self.model.predict_proba(X) return y
[docs] class SklearnPredictorFileLoader(PredictorFileLoader): """Loads a predictor from a file for the Scikit-Learn backend. Args: path_predictor_file (str): the path to the predictor file. """ def __init__(self, path_predictor_file: str): super().__init__(path_predictor_file)
[docs] def load(self) -> SklearnPredictor: with open(self.path_predictor_file, "rb") as f: model = pickle.load(f) return SklearnPredictor(model)
[docs] @staticmethod def find_predictor_files(path_directory: str, file_extension: str = "pkl") -> List[str]: """Finds the predictor files in a directory given a specific extension. Args: path_directory (str): the directory path. file_extension (str, optional): the file extension. Defaults to ``"pkl"``. Returns: List[str]: the list of predictor files found in the directory. """ return PredictorFileLoader.find_predictor_files(path_directory, file_extension)