Я пытаюсь передать аргумент в метод преобразования пользовательского преобразователя, но он выдает ошибку. Также я попробовал это решение Передача параметров к настроенному преобразователю , но это не помогло.
Код выглядит следующим образом:
class DFFeatureUnion(TransformerMixin):
def __init__(self, transformer_list):
self.transformer_list = transformer_list
def fit(self, X, y=None, mode = None, **kwargs):
for (name, t) in self.transformer_list:
t.fit(X, y)
return self
def transform(self, X, y=None, mode = None, **kwargs):
Xts = [t.transform(X) for name, t in self.transformer_list]
Xunion = reduce(lambda X1, X2: pd.merge(X1, X2, left_index=True, right_index=True), Xts)
return Xunion
class test1(TransformerMixin):
""" Custom Define Transformer for Cleaning the Dataset """
def __init__(self, **kwargs):
return
def transform(self, X, y = None, mode = None, **kwargs):
""" Transforms the given dataset to a required form """
print("test1 transform")
print(mode)
return X
def fit(self, X, y = None, mode = None, **kwargs):
print("test1 fit")
return self
class test2(TransformerMixin):
""" Custom Define Transformer for Cleaning the Dataset """
def __init__(self, **kwargs):
return
def transform(self, X, y = None, mode = None, **kwargs):
""" Transforms the given dataset to a required form """
print("test2 transform")
print(mode)
return X
def fit(self, X, y = None, mode = None, **kwargs):
print("test2 fit")
return self
конвейер содержит следующий код:
test_pip = Pipeline([
('features', DFFeatureUnion([
('features_clean', Pipeline([
('extract', test1()),
('tokenization', test2())
]))
]))
])
Когда я выполняю следующий метод подбора:
test_pip.fit(X_train, mode = "train")
Выдает ошибку, говорящую, что:
ValueError: Pipeline.fit does not accept the mode parameter. You can pass parameters to specific steps of your pipeline using the stepname__parameter format, e.g. `Pipeline.fit(X, y, logisticregression__sample_weight=sample_weight)`.
КАК я могу передать аргумент mode
в конвейер. ?? Также я знаю, что мы можем передать аргумент в функцию init класса, но я хотел, чтобы он был только в методе fit и transform. Как я могу его достичь ??