python - 在列列表上使用 sklearn 转换器并保留输入列

标签 python scikit-learn

使用 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/

相关文章:

python - 连接到索引以创建单个选择器

python - SVM决策函数: visualizing class separation

python - 是否可以向 SVM 模型添加协变量(控制不感兴趣的变量)?

python - 解包从函数返回的可变长度列表

Python - 将行拆分为列 - csv 数据

python - python 的 war 卡牌游戏

scikit-learn - scikit-learn TSNE 中的 random_state 参数是什么?

python - 如何计算 DecisionTreeClassifier 的 0-1 确定性分数?

python - 特征缩放(标准化)以及 LabelEncode 和 OneHotEncode 数据的最佳实践是什么

python - 查找 NetCDF 中多个经纬度中心的半径内的值