多项式特征变换

时间:2019-07-06 22:28:47

标签: python scikit-learn feature-selection

在对我的一组特征进行多项式变换时,我正在阅读sklearn.preprocessing PolynomialFeatures变换器,但是我意识到,即使使用interaction_only=True参数,变换也包括所有可能的组合。我想知道是否有一种方法可以指定仅需要某些交互(组合)。例如,

给出以下数据框:

    a   b   c  Z   X   W
0   1   2   3  0   1   0
1   1   2   3  1   0   1
2   1   2   3  0   0   1

让我们说a,b,c属于一种特征,而Z W X属于另一种特征,而我们只是对不同类型的特征之间的相互作用感兴趣。

因此,所需的输出将仅包含原始特征以及不同类型特征之间的交互。当然,通过设置interact_only = True,您将获得“真实的交互”,并避免使用a ^ 2,Z ^ 2等功能……

         a   b   c   Z  X   W  a*Z  a*X   a*W   b*Z  b*X  b*W  c*Z  c*X  c*W
 0       0   1   2   3  0   1   0    0     1     0    0    2    0    0    3
 3       1   1   2   3  1   0   1    1     0     1    2    0    2    3    0
 3       2   1   2   3  0   0   1    0     0     1    0    0    2    0    0

我只想在列a,b,c和Z,X,W之间执行交互 并避免使用a*cZ*X

之类的组合

1 个答案:

答案 0 :(得分:2)

用scikit Learn提供的转换器似乎无法获得您所讨论的转换,但是您可以构建自己的转换器对其进行点缀

  • 您可以使用自定义转换器see here
  • 删除您不感兴趣的交互。
  • 按照here
  • 的说明创建自定义多项式特征变换器。