使用 sklearn 转换器,我希望能够将转换应用于列列表,并让转换器使用转换后的值创建新列,而不是将它们应用于现有列。这可能吗?变压器还需要插入管道中。
我的目标是比较原始列和转换后的列。围绕变压器的包装类可以工作,但我想知道是否有更简单的方法?谢谢。
最佳答案
您可以使用FeatureUnion
并将您的变压器与身份变压器连接起来,使您的列保持不变。
from sklearn.pipeline import FeatureUnion
from sklearn.preprocessing import FunctionTransformer
import numpy as np
union = FeatureUnion([("id", FunctionTransformer(lambda x: x)),
("add_one", FunctionTransformer(lambda x: x + 1))])
X = np.array([[0, 1, 2], [3, 4, 5]])
union.fit_transform(X)
>>> array([[0, 1, 2, 1, 2, 3], [3, 4, 5, 4, 5, 6]])
目前 sklearn 中似乎没有 IdentityTransformer 类。我使用了带有恒等函数的FunctionTransformer
,但我不知道是否有更聪明的方法来做到这一点。
关于python - 在列列表上使用 sklearn 转换器并保留输入列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68869466/