Sklearn Pipeline - Как наследовать get_params в пользовательском Transformer (не Estimator)

У меня есть конвейер в scikit-learn, который использует настраиваемый трансформатор, который я определяю, как показано ниже:

class MyPipelineTransformer(TransformerMixin):

который определяет функции

__init__, fit() and transform()

Однако, когда я использую конвейер внутри RandomizedSearchCV, я получаю следующую ошибку:

Объект MyPipelineTransformer не имеет атрибута get_params

Я читал онлайн (например, ссылки ниже)

(Python - sklearn) Как передать параметры для настройки класса ModelTransformer с помощью gridsearchcv

http://scikit-learn.org/stable/auto_examples/hetero_feature_union.html

что я мог бы получить "get_params", наследуя от BaseEstimator, вместо моего текущего кода, наследующего только от TransformerMixin. Но мой трансформатор не является оценщиком. Есть ли недостаток, связанный с тем, что у него нет оценки наследования от BaseEstimator? Или это рекомендуемый способ получить get_params для любого трансформатора (оценщика или нет) в конвейере?

Ответ 1

Да, похоже, что это стандартный способ достижения этого. Например в источнике для sklearn.preprocessing мы имеем

class FunctionTransformer(BaseEstimator, TransformerMixin)