为什么ColumnTransformer在运行时不接受transformer参数?

2024-10-01 15:44:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试用参数定义自定义转换器,并在sklearn.compose.ColumnTransformer中使用它们。 我不明白为什么在ColumnTransformer上运行fit\u transform()时不考虑我的自定义transformers参数

下面的脚本显示了我所面临的问题的一个过于简单的例子。脚本的控制台输出为:

TRUE
FALSE
------
FALSE
FALSE

当我调用fit\u transform时,为什么两个BlankTransformers都用默认值初始化

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)

Tags: composeimportself脚本falsetruedf参数
1条回答
网友
1楼 · 发布于 2024-10-01 15:44:17

__ init__步骤中,缺少对test_bool布尔值的赋值。完成后,您将从打印语句中获得预期结果:

def __init__(self, test_bool=False):
    self.test_bool = test_bool
    if self.test_bool:
        print("TRUE")
    else:
        print("FALSE")

相关问题 更多 >

    热门问题