【问题标题】:Sklearn Pipeline to add new featuresSklearn Pipeline 添加新功能
【发布时间】:2020-09-25 23:29:00
【问题描述】:

假设我有一个包含大量数字特征的数据集。我不确定在模型中使用数值特征的最佳方法是什么,因此我决定对它们应用不同的转换并将这些结果添加到数据集中。这些转换可以是 MinMax Scaling、StandardScaling、LogTransform,......任何你能想到的。

所以基本上,在原始数据中,我可能只有“Value_in_Dollars”特征,经过所有转换后,我还希望在数据集中拥有转换后的特征:

"Value_in_Dollars_MinMax", "Value_in_Dollars_SS", "Value_in_Dollars_Log"

除了原来的列。

我知道如何手动执行此操作,但如何在 Sklearn 管道中执行此操作?这甚至可能吗?

【问题讨论】:

  • 您可以尝试使用“named_steps”的输出,并以您喜欢的方式将转换后的值添加到数据集

标签: python scikit-learn pipeline


【解决方案1】:

使用FeatureUnion 可能还有ColumnTransformer,例如

union = FeatureUnion([("MinMax", MinMaxScaler()),
                      ("SS", StandardScaler()),
                      ("Log", FunctionTransformer(np.log1p)])
proc = ColumnTransformer([('trylots', union, ['Value_In_Dollars'])],
                         remainder='passthrough')

【讨论】:

  • 很好,我很好奇这一切看起来会如何包装到一个管道中。这行得通吗?
  • 还有,有没有一种方法可以创建自定义转换,从而在单个管道中创建新功能?类似于pipeline([('make_bin', lambda x: 0 if x < 5 else 1)])
  • 对于您的第一个问题,是的,您可以使用proc 作为管道中的一个步骤。您的第二个问题似乎应该是一个新问题,只是文档很容易回答:看看FunctionTransformer,可能连同这里的想法。
  • 谢谢!我会检查一下。我想我会通过更多搜索找到它,但我认为在这里放一个面包屑可能对社区有用。
猜你喜欢
  • 2015-07-15
  • 2017-12-21
  • 2018-07-15
  • 1970-01-01
  • 2022-01-12
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2016-12-20
相关资源
最近更新 更多