gpt4 book ai didi

python - 为什么 ColumnTransformer 在运行时不接受转换器参数?

转载 作者:行者123 更新时间:2023-12-01 07:11:50 24 4
gpt4 key购买 nike

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

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

TRUE
FALSE
------
FALSE
FALSE

当我调用 fit_transform 时,为什么两个 BlankTransformer 都使用默认值进行初始化?

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)

最佳答案

您缺少在 __ init__ 步骤中将 test_bool bool 值分配给 self 的操作。完成此操作后,您将从打印语句中获得预期结果:

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

关于python - 为什么 ColumnTransformer 在运行时不接受转换器参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com