Как починить этот нестандартный трансформатор в склеарне? - PullRequest
0 голосов
/ 24 декабря 2018

Я написал этот простой пользовательский преобразователь, который заполняет n в определенных столбцах 0. Когда я подгоняю fit_transform к моему набору данных, он не заполняет nas в указанных столбцах.Мне не удалось увидеть проблему в моем коде.

class CustomImputer(BaseEstimator, TransformerMixin): 
    def fit(self, X, y=None):
        return self
    def transform(self, X, y=None):
        for col in ('PavedDrive', 'GarageQual', 'GarageFinish', 'FireplaceQu', 'KitchenQual', 'CentralAir', 'HeatingQC', 'BsmtExposure', 'BsmtCond', 'BsmtQual', 'ExterCond', 'ExterQual', 'Street'):
            X[col].fillna(0)
        return X

Я ожидал, что возвращенный фрейм данных будет таким, где указанные столбцы заполнены nas 0, однако я получаю фрейм данных с теми же нулевыми значениями.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2018

Одно решение для лайнера будет

cols = ['PavedDrive', 'GarageQual', 'GarageFinish', 'FireplaceQu', 'KitchenQual', 'CentralAir', 'HeatingQC', 'BsmtExposure', 'BsmtCond', 'BsmtQual', 'ExterCond', 'ExterQual', 'Street']

X.loc[:,cols] = X[cols].fillna(0)
0 голосов
/ 24 декабря 2018

Вы никогда не назначали операцию fillna новой переменной.Использование

X[col].fillna(0)

не происходит на месте.Вместо этого используйте:

X.loc[:,col] = X[col].fillna(0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...