from .base import BaseEnsembler ENSEMBLE_DICT = {} def register_ensembler(name): def register_ensembler_cls(cls): if name in ENSEMBLE_DICT: raise ValueError("Cannot register duplicate ensembler ({})".format(name)) if not issubclass(cls, BaseEnsembler): raise ValueError( "Model ({}: {}) must extend BaseEnsembler".format(name, cls.__name__) ) ENSEMBLE_DICT[name] = cls return cls return register_ensembler_cls from .voting import Voting from .stacking import Stacking def build_ensembler_from_name(name: str) -> BaseEnsembler: """ Parameters ---------- name: ``str`` the name of ensemble module. Returns ------- BaseEnsembler: the ensembler built using default parameters Raises ------ AssertionError If an invalid name is passed in """ assert name in ENSEMBLE_DICT, "ensemble module do not have name " + name return ENSEMBLE_DICT[name]() __all__ = ["BaseEnsembler", "Voting", "Stacking", "build_ensembler_from_name"]