python - 为什么 ColumnTransformer 在运行时不采用转换器参数?
问题描述
我正在尝试使用参数定义自定义转换器,并在 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)
解决方案
您在步骤中缺少test_bool
布尔值的分配。完成此操作后,您将从 print 语句中获得预期的结果:self
__ init__
def __init__(self, test_bool=False):
self.test_bool = test_bool
if self.test_bool:
print("TRUE")
else:
print("FALSE")
推荐阅读
- python - 数据类中的属性
- swiftui - 如何对齐小部件前沿旁边的子视图,而不是 ZStack 中的背景图像?
- javascript - 我想在 ul 列表中有一个边框底部
- python-3.x - 计算 0 和 1 列的高度以及全高的 Bool 值
- bash - 替换文件名中的占位符,包括子文件夹
- php - 下一步我该怎么做才能阻止登录表单对数据库的 MySQL 查询尝试?
- python - 如何更新 mongoDB 中特定嵌套字典中的项目
- php - 将数组按字母顺序排序为北欧/语言环境顺序
- python - 在 Windows 10 上设置 Python(在 Visual Studio Code 中)
- flutter - 如何在颤动后退按钮的同时显示侧边栏图标?