Почему ColumnTransformer не принимает аргументы преобразователя во время работы? - PullRequest
1 голос
/ 30 сентября 2019

Я пытаюсь определить пользовательские трансформаторы с параметрами и использовать их в sklearn.compose.ColumnTransformer. Я не понимаю, почему мои параметры настраиваемых преобразователей не учитываются при запуске fit_transform () в ColumnTransformer.

В приведенном ниже сценарии показан упрощенный пример проблемы, с которой я сталкиваюсь. Консольный вывод сценария:

TRUE
FALSE
------
FALSE
FALSE

Почему оба BlankTransformers инициализируются значением по умолчанию, когда я вызываю fit_transform?

import numpy as np
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.base import BaseEstimator, TransformerMixin


class BlankTransformer(BaseEstimator, TransformerMixin):
    def __init__(self, test_bool=False):
        if(test_bool):
            print("TRUE")
        else:
            print("FALSE")

    def fit(self, X, y=None):
        return self

    def transform(self, X, y=None):
        return X


df = pd.DataFrame(np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]]), 
                            columns=['a', 'b', 'c', 'd'])

column_transformer = ColumnTransformer(
      [('true', BlankTransformer(True), ['a', 'b']),
       ('false', BlankTransformer(False), ['c', 'd'])],
    remainder='passthrough')

print("------")

df = column_transformer.fit_transform(df)

1 Ответ

1 голос
/ 01 октября 2019

Вы пропускаете назначение логического значения test_bool для self на шаге __ init__. Как только вы это сделаете, вы получите ожидаемые результаты из своего заявления на печать:

def __init__(self, test_bool=False):
    self.test_bool = test_bool
    if self.test_bool:
        print("TRUE")
    else:
        print("FALSE")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...